{"version":3,"sources":["tabs/flowBuilder/components/ResponseTab/styles.module.scss","helpers/index.js","tabs/authorization/actions/security.js","configs.js","tabs/authorization/component/Input.js","tabs/authorization/component/PasswordInput.js","tabs/authorization/component/Button.js","helpers/isStringEmpty.js","tabs/authorization/component/LoginForm.js","tabs/authorization/api/admin.js","uiKit/loaders/loaderSmall/index.js","uiKit/loaders/loaderOverlay/index.js","tabs/authorization/component/FormMessage.js","helpers/emailValidation.js","tabs/authorization/component/ForgotPasswordForm.js","tabs/authorization/component/UnavailableSmall.js","tabs/authorization/component/ResetPasswordForm.js","tabs/authorization/component/SignUpForm.js","tabs/home/actions/snackBar.js","api/index.js","tabs/authorization/component/Login.js","tabs/authorization/api/login.js","tabs/authorization/actions/adminUser.js","security.js","tabs/home/actions/activeBot.js","tabs/home/actions/bots.js","tabs/home/api/bots.js","tabs/support/actions/supportRequest.js","tabs/support/api/support.js","uiKit/icons/Icons.js","uiKit/NoChartData/index.tsx","tabs/dashboard/constants/channelColors.tsx","tabs/dashboard/constants/chartsTexts.ts","constants/colors.ts","uiKit/Checkbox/index.tsx","helpers/isObjectEmpty.js","helpers/sortArrayOfArraysByIndex.ts","tabs/dashboard/components/AreaChart/index.tsx","tabs/dashboard/components/CircleChart/index.tsx","uiKit/loaders/loader/index.js","tabs/dashboard/constants/daysModel.ts","tabs/dashboard/components/DayModel/index.tsx","tabs/dashboard/components/GridChart/index.js","tabs/dashboard/components/GradientBar/index.tsx","tabs/dashboard/components/HourlyChart/index.tsx","uiKit/texts/Headline.js","uiKit/DateRange/index.tsx","uiKit/DateControl/index.js","uiKit/HeadlineWrapWithDateControl/index.tsx","uiKit/buttons/DownloadButton/index.tsx","tabs/dashboard/components/AreaChartButton/index.tsx","tabs/dashboard/constants/covertHeaders.tsx","tabs/dashboard/components/CircleChartButton/index.tsx","constants/byTimeOfDayHeaders.tsx","tabs/dashboard/components/HourlyChartButton/index.tsx","uiKit/icons/InfoButton.js","uiKit/TooltipInfo/Tooltip.js","uiKit/TooltipInfo/TooltipStyles.js","uiKit/ChartContainer/index.tsx","tabs/dashboard/components/NamedCounter/index.tsx","helpers/getPercentage.ts","tabs/dashboard/components/ChannelsCircleChart/index.tsx","tabs/dashboard/components/ChannelsChartButton/index.tsx","tabs/dashboard/actions/popularHoursStatistics.js","tabs/dashboard/actions/supportStatistics.js","tabs/dashboard/actions/usersStatistics.js","tabs/dashboard/api/dashboard.js","uiKit/loaders/loaderScreen/index.tsx","tabs/dashboard/Dashboard.tsx","uiKit/icons/TextIcon.js","uiKit/icons/GalleryIcon.js","uiKit/icons/AttachmentMessageIcon.js","uiKit/icons/TypingIcon.js","tabs/flowBuilder/constants/messageTypes.js","tabs/flowBuilder/components/messages/AvailableMessages.js","uiKit/Modal.js","uiKit/icons/SetAttributeIcon.js","uiKit/icons/SaveUserInputIcon.js","uiKit/icons/TagIcon.js","uiKit/icons/RedirectToAtomIcon.js","uiKit/icons/RandomRedirectIcon.js","uiKit/icons/APICallIcon.tsx","tabs/flowBuilder/components/ActionModalItem/ActionModalItem.js","tabs/flowBuilder/components/ActionModalItem/styles.js","helpers/deepCopyFunction.js","tabs/flowBuilder/components/AddActionModal/AddActionModal.js","tabs/flowBuilder/components/AddActionModal/styles.js","tabs/flowBuilder/components/NewMessage/NewMessage.js","tabs/flowBuilder/components/NewMessage/styles.js","tabs/flowBuilder/actions/searchAtoms.js","tabs/flowBuilder/actions/atom.js","tabs/flowBuilder/actions/flows.js","tabs/flowBuilder/actions/atoms.js","tabs/flowBuilder/api/flow.js","helpers/atomFormat.js","tabs/flowBuilder/api/atom.js","tabs/flowBuilder/components/messages/NewMessage.js","tabs/nlp/actions/contextSize.js","tabs/nlp/actions/contexts.js","tabs/nlp/api/context.js","tabs/nlp/components/DeleteTrigger.js","uiKit/AtomSelect/styles.js","tabs/nlp/actions/nlpRequests.js","tabs/nlp/actions/intents.js","tabs/nlp/actions/intentsSize.js","tabs/nlp/api/nlp.js","tabs/nlp/hooks/useSelectIntents/useSelectIntents.ts","tabs/nlp/hooks/useSelectIntents/constants.ts","tabs/nlp/components/IntentSelect/index.tsx","tabs/nlp/components/IntentSelect/configs.module.ts","uiKit/AtomSelect/AtomSelect.tsx","tabs/nlp/components/TriggerItem.js","tabs/nlp/components/AtomNLPModal.js","tabs/flowBuilder/actions/tags.js","tabs/flowBuilder/api/tag.js","uiKit/inputs/InputHolder.js","uiKit/buttons/SubmitButton.js","tabs/flowBuilder/components/messages/TagModal.js","tabs/flowBuilder/components/messages/Tags.js","tabs/flowBuilder/components/messages/TagAction.js","tabs/settings/actions/botAccessors.js","tabs/settings/api/settings.js","tabs/flowBuilder/components/MessagesWrap/styles.js","uiKit/icons/SearchIcon.js","uiKit/Search/Search.js","uiKit/Search/styles.js","uiKit/LaguageSelector/styles.js","uiKit/icons/LanguageArrowDown.tsx","uiKit/icons/LanguageArrowUp.tsx","uiKit/LaguageSelector/LaguageSelector.js","uiKit/icons/PlusIcon.js","uiKit/buttons/SecondaryButton/SecondaryButton.js","uiKit/buttons/SecondaryButton/styles.js","uiKit/icons/TrashIcon.js","uiKit/AttributeSelectItem/AttributeSelectItem.js","uiKit/AttributeSelectItem/styles.js","tabs/settings/components/general/AttributesModalList/AttributesModalList.js","tabs/settings/components/general/AttributesModalList/styles.js","tabs/settings/actions/attributes.js","tabs/settings/api/attributes.js","tabs/settings/components/general/AttributesModal/styles.js","tabs/settings/components/general/AttributesModal/AttributesModal.js","helpers/getModifiedObject.js","constants/keyCodes.js","uiKit/InputAutosuggest/InputAutosuggest.js","uiKit/InputAutosuggest/styles.js","hooks/usePrevious.js","constants/attributeTypes.js","helpers/getAttributeColor.js","helpers/formatOption.js","uiKit/AttributeSelect/styles.js","uiKit/InputWithParams/config.js","helpers/getScrollableParent.js","uiKit/AttributeSelect/AttributeSelect.js","tabs/flowBuilder/components/PostbackAttributes/PostbackAttributes.js","tabs/flowBuilder/components/PostbackAttributes/styles.js","tabs/flowBuilder/components/messages/MessageButton.js","tabs/flowBuilder/components/messages/QuickReply.js","tabs/flowBuilder/components/messages/MessageQuickReplies.js","uiKit/AttributeItem/AttributeItem.js","uiKit/AttributeItem/styles.js","uiKit/AttributesList/config.js","uiKit/AttributesList/AttributesList.js","uiKit/AttributesList/styles.js","uiKit/inputs/Input.js","tabs/flowBuilder/components/messages/LinkTemplate.js","uiKit/inputs/LinkTemplateModal.tsx","uiKit/icons/AttributeIcon.js","uiKit/inputs/InputWithParamsAndLinks/helpers/frontDataProcessing/frontDataProcessing.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/handleCtrlC.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/getSelectionHtml.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/backEndProcessing/backEndProcessing.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/handleCtrlV.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/getPopupPosition.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/setCaretAfterNode.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/checkForSelection.ts","uiKit/inputs/InputWithParamsAndLinks/index.tsx","uiKit/inputs/InputWithParamsAndLinks/helpers/selectionChangeListener.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/calculateSelectedChildNodeIndex.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/checkAttributeForExistingAndConnection.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/generateAttribute.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/removeExtraBracketsAfterAttributeIsAdded.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/addAttributeToAfterTag.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/addAttributeToAfterText.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/addAttributeToEmptyField.ts","uiKit/inputs/InputWithParamsAndLinks/helpers/createSpan/createSpan.ts","tabs/flowBuilder/components/TextMessage/TextMessage.js","tabs/flowBuilder/components/TextMessage/styles.js","uiKit/inputs/FileDropzone.js","helpers/regexIndexOf.js","uiKit/InputWithParams/InputWithParams.js","uiKit/InputWithParams/styles.js","tabs/flowBuilder/components/messages/GenericTemplate.js","tabs/flowBuilder/components/messages/ListTemplate.js","tabs/flowBuilder/components/messages/Template.js","tabs/flowBuilder/components/messages/Attachment.js","tabs/flowBuilder/components/messages/RandomTextMessage.js","tabs/flowBuilder/components/messages/RandomAttachment.js","tabs/flowBuilder/components/messages/Typing.js","tabs/flowBuilder/components/messages/UserInput.js","tabs/flowBuilder/components/MessageTemplate/MessageTemplate.tsx","tabs/flowBuilder/components/SetAttribute/SetAttribute.js","tabs/flowBuilder/components/SetAttribute/styles.js","tabs/flowBuilder/components/ValidationSelect/styles.js","tabs/flowBuilder/components/ValidationSelect/ValidationSelect.js","tabs/flowBuilder/components/SaveUserInput/SaveUserInput.js","tabs/flowBuilder/components/SaveUserInput/styles.js","tabs/flowBuilder/components/OperatorSelect/styles.js","tabs/flowBuilder/components/OperatorSelect/OperatorSelect.js","tabs/flowBuilder/components/ConjunctionSelect/styles.js","tabs/flowBuilder/components/ConjunctionSelect/ConjunctionSelect.js","tabs/flowBuilder/components/ConditionExpression/ConditionExpression.js","tabs/flowBuilder/components/ConditionExpression/styles.js","helpers/generateId.js","tabs/flowBuilder/components/ConditionGroup/ConditionGroup.js","tabs/flowBuilder/components/ConditionGroup/styles.js","tabs/flowBuilder/components/SmartRedirect/SmartRedirect.js","tabs/flowBuilder/components/SmartRedirect/styles.js","tabs/flowBuilder/components/RandomAtoms/RandomAtomsStyles.js","tabs/flowBuilder/components/RandomAtoms/RandomAtomConfig.js","tabs/flowBuilder/components/RandomAtoms/RandomAtoms.js","tabs/flowBuilder/components/RequestTypeSelect/styles.js","tabs/flowBuilder/components/RequestTypeSelect/RequestTypeSelect.tsx","uiKit/FieldInput/FieldInput.tsx","tabs/flowBuilder/components/HeaderField/HeaderField.tsx","tabs/flowBuilder/components/ResponseMappingField/ResponseMappingField.tsx","tabs/flowBuilder/components/ItemsListTab/ItemsListTab.tsx","uiKit/icons/SquareIcon.js","uiKit/icons/SquareCheckedIcon.js","uiKit/buttons/HoverButton/HoverButton.tsx","tabs/flowBuilder/components/BodyTab/BodyTab.tsx","tabs/flowBuilder/components/HeadersPreview/HeadersPreview.tsx","tabs/flowBuilder/components/ResponseTab/ResponseTab.tsx","helpers/formatAtomSave.js","uiKit/UsersSelect/styles.js","tabs/support/api/users.js","constants/userSize.js","uiKit/UsersSelect/UsersSelect.js","tabs/flowBuilder/components/TestRequestScreen/TestRequestScreen.tsx","tabs/flowBuilder/components/ApiCallTabs/ApiCallTabs.tsx","tabs/flowBuilder/components/ApiCall/ApiCall.tsx","tabs/flowBuilder/components/MessagesWrap/MessagesWrap.js","helpers/expressionValidation.ts","tabs/flowBuilder/components/AtomEditor.js","tabs/flowBuilder/components/NewAtom.js","tabs/flowBuilder/components/DeleteFlow.js","tabs/flowBuilder/components/NewFlow.js","tabs/flowBuilder/components/DeleteAtom.js","tabs/settings/actions/twilioCredentials.js","constants/time.js","tabs/settings/api/twilioCredetials.js","tabs/flowBuilder/Builder.js","tabs/nlp/components/DeleteIntent.js","tabs/nlp/components/NoNlpData.js","tabs/nlp/components/discuss.png","uiKit/table/TablePaginationActionsWrapped.js","uiKit/table/Pagination.js","tabs/nlp/components/IntentModal/IntentModalStyles.js","uiKit/TabTemplate.js","tabs/nlp/components/UserSays.js","tabs/nlp/components/IntentModal/IntentModal.js","tabs/nlp/components/Intents.js","tabs/nlp/components/Triggers.js","tabs/nlp/components/training/Training-styles.js","tabs/nlp/components/training/TrainButton.js","tabs/nlp/components/training/TrainingRequest-view.js","helpers/getNestedProps.js","tabs/nlp/components/training/Training-config.js","tabs/nlp/components/training/Training-requests-view.js","tabs/nlp/components/training/TrainingHeader-view.js","tabs/nlp/components/training/Training-container.js","routes/nlpRoutes.js","uiKit/submenu/Submenu.js","uiKit/texts/Heading.js","tabs/nlp/components/EmptyNlp.js","tabs/nlp/NLP.js","tabs/support/components/TabsWrap/config.js","tabs/support/components/TabsWrap/TabsWrap.js","tabs/support/components/TabsWrap/styles.js","uiKit/icons/Search.js","tabs/support/components/Search/Search.js","tabs/support/components/Search/styles.js","tabs/support/components/UserDialogPreview/config.js","tabs/support/actions/activeUser.js","uiKit/Badge/Badge.js","uiKit/Badge/BadgeStyles.js","helpers/getMinutesLeft.js","tabs/support/components/InteractionTimer/config.js","tabs/support/components/InteractionTimer/InteractionTimer.js","tabs/support/components/InteractionTimer/styles.js","hooks/useTimer.js","constants/chatPlatform.js","tabs/support/components/UserNameBlock/UserNameBlock.js","tabs/support/components/UserNameBlock/styles.js","uiKit/UserIcon/config.ts","uiKit/UserIcon/index.tsx","tabs/support/components/UserDialogPreview/UserDialogPreview.js","tabs/support/components/UserDialogPreview/styles.js","tabs/support/components/DialogsSection/DialogsSection.js","tabs/support/components/DialogsSection/styles.js","tabs/support/actions/users.js","hooks/useDebounce.js","helpers/getUrlEnd.js","helpers/isElementBottom.js","helpers/isUrlEndsWithSupport.js","tabs/support/components/OpenRequests/OpenRequests.js","tabs/support/components/OpenRequests/styles.js","tabs/support/components/SolvedRequests/SolvedRequests.js","tabs/support/components/SolvedRequests/styles.js","tabs/support/components/DialogsContainer/DialogsContainer.js","tabs/support/components/DialogsContainer/styles.js","uiKit/icons/TreeDotsIcon.js","tabs/support/api/user.js","tabs/support/components/CloseRequestButton/styles.js","tabs/support/components/CloseRequestButton/CloseRequestButton.js","tabs/support/components/AssignToMeButton/AssignToMeButton.js","tabs/support/components/AssignToMeButton/styles.js","tabs/support/components/AssignToPopover/AssignToPopover.js","tabs/support/components/AssignToPopover/styles.js","helpers/shortenUrl.js","tabs/support/components/UserWebsite/UserWebsite.js","tabs/support/components/UserWebsite/styles.js","helpers/copyValueToClipboard.js","tabs/support/components/UserName/UserName.js","tabs/support/components/UserName/styles.js","constants/suportStatuses.js","constants/chatStatus.js","tabs/support/components/ChatHeader/ChatHeader.js","tabs/support/components/ChatHeader/styles.js","tabs/support/components/MessageWrap/MessageWrap.js","tabs/support/components/MessageWrap/styles.js","tabs/support/components/TextMessage/TextMessage.js","tabs/support/components/TextMessage/styles.js","tabs/support/components/Buttons/Buttons.js","tabs/support/components/Buttons/styles.js","tabs/support/components/TextMessageButton/TextMessageButton.js","tabs/support/components/TextMessageButton/styles.js","tabs/support/components/ImageMessage/ImageMessage.js","tabs/support/components/ImageMessage/styles.js","tabs/support/components/AudioMessage/AudioMessage.js","tabs/support/components/VideoMessage/VideoMessage.js","tabs/support/components/GenericMessage/GenericMessage.js","tabs/support/components/GenericMessage/styles.js","uiKit/slider/ArrowIconsStyles.js","uiKit/slider/Next.js","uiKit/icons/NextIcon.js","uiKit/slider/Prev.js","uiKit/icons/PrevIcon.js","uiKit/slider/Slider.js","uiKit/slider/SliderStyles.js","tabs/support/components/CarouselMessage/CarouselMessage.js","tabs/support/components/CarouselMessage/styles.js","tabs/support/components/Message/Message.js","tabs/support/components/Message/styles.js","tabs/support/components/MessageGroup/MessageGroup.js","tabs/support/components/MessageGroup/styles.js","helpers/formatDate/formatDate.ts","helpers/isElementTop.js","tabs/support/components/MessagesWrap/MessagesWrap.js","tabs/support/components/MessagesWrap/styles.js","uiKit/icons/SendIcon.js","helpers/retryCallback/retryCallback.ts","hooks/users/useUpdatedSupportUser/index.ts","services/notificationService.js","constants/notificationsPermissions.js","contexts/webSockets.js","helpers/isOpenBot.js","helpers/isSupportTab.js","uiKit/icons/AttachmentIcon.js","tabs/support/components/UploadButton/styles.js","tabs/support/components/UploadButton/UploadButton.js","tabs/flowBuilder/api/fileService.js","tabs/support/components/ChatInput/ChatInput.js","tabs/support/components/ChatInput/styles.js","tabs/support/components/ChatContainer/ChatContainer.js","tabs/support/components/ChatContainer/styles.js","tabs/support/components/NoChatScreen/NoChatScreen.js","tabs/support/components/NoChatScreen/styles.js","tabs/support/SupportContainer.js","tabs/support/styles.js","tabs/broadcast/actions/broadcasts.js","tabs/broadcast/api/broadcast.js","tabs/broadcast/components/ConfirmModal.js","tabs/broadcast/components/NewBroadcastsList.js","tabs/broadcast/components/BroadcastModal.js","tabs/broadcast/Broadcasts.js","tabs/settings/components/general/NameBlock/NameBlock.js","tabs/settings/components/general/NameBlock/styles.js","uiKit/texts/Paragraph.js","tabs/settings/components/general/AttributeBlock/AttributeBlock.js","tabs/settings/components/general/AttributeBlock/styles.js","uiKit/icons/DownloadIcon.js","uiKit/icons/UploadIcon.js","uiKit/ImportButton/ImportButton.js","uiKit/ImportButton/styles.js","tabs/settings/api/export.js","tabs/settings/components/general/UpdateBotModal/styles.js","tabs/settings/components/general/UpdateBotModal/UpdateBotModal.js","tabs/settings/components/general/VersionBlock/VersionBlock.js","tabs/settings/components/general/VersionBlock/styles.js","tabs/settings/components/general/DeleteBotModal/DeleteBotModal.js","tabs/settings/components/general/DeleteBotModal/styles.js","tabs/settings/components/general/DeleteBotBlock/DeleteBotBlock.js","tabs/settings/components/general/DeleteBotBlock/styles.js","tabs/settings/components/general/General/General.js","tabs/settings/components/general/General/styles.js","tabs/settings/components/hours/HoursSpecification.js","tabs/settings/components/hours/hoursOptions.js","tabs/settings/components/hours/Hours.js","tabs/settings/components/persistentMenu/CustomPopover.js","tabs/settings/components/persistentMenu/MenuItem.js","tabs/settings/components/persistentMenu/Level.js","tabs/settings/components/persistentMenu/PersistentMenu.js","uiKit/icons/FacebookIcon.js","uiKit/inputs/ParamsList.js","uiKit/inputs/Params.js","tabs/settings/components/integrations/greeting/GreetingText.js","tabs/settings/components/integrations/greeting/Greeting.js","tabs/settings/actions/settingsPages.js","tabs/settings/api/facebook.js","tabs/settings/components/integrations/facebook/FacebookPage.js","tabs/settings/actions/facebookToken.js","tabs/settings/components/integrations/facebook/Facebook.js","tabs/settings/components/integrations/facebook/FacebookConfig.js","tabs/settings/components/integrations/DialogflowIntegrationTemplate.js","tabs/settings/api/dialogflow.js","helpers/phoneNumberValidation.js","tabs/settings/components/integrations/twilioIntegration/TwilioIntegration.js","tabs/settings/components/integrations/WitAiIntegrationTemplate.js","tabs/settings/api/telegram.js","tabs/settings/components/integrations/telegram/Telegram.tsx","tabs/settings/api/whatsApp360Dialog.js","tabs/settings/components/integrations/dialog360WhatsApp/WhatsApp360Dialog.tsx","tabs/settings/components/integrations/NewIntegrations.js","uiKit/table/TableRow.js","uiKit/table/TableCell.js","uiKit/table/Table.js","uiKit/UI/Dialog/Dialog.js","uiKit/UI/DialogTitle/DialogTitle.js","uiKit/UI/DialogActions/DialogActions.js","uiKit/UI/DialogActions/styles.js","tabs/settings/components/users/DeleteAccess.js","tabs/home/components/ShareModal.js","tabs/settings/components/users/Users.js","tabs/settings/components/languages/languagesStyles.js","tabs/settings/components/languages/HeaderView.js","tabs/settings/components/languages/ActiveLanguagesListView.js","tabs/settings/components/languages/RowView.js","tabs/settings/components/languages/NewLanguageModal.js","tabs/settings/components/languages/config.js","tabs/settings/components/languages/Languages.js","routes/settingsRoutes.js","tabs/settings/Settings.js","uiKit/texts/Label/index.tsx","tabs/widget/actions/botWidget.js","tabs/widget/actions/widgetDefaultSettings.js","tabs/widget/api/widget.js","tabs/widget/components/LogoDropzone/index.tsx","constants/dataSize.js","uiKit/inputs/InputContent.js","tabs/widget/components/ColorSelector/index.tsx","uiKit/icons/CrossIcon.tsx","tabs/widget/components/WidgetChatScreen/index.tsx","helpers/setErrors/setErrors.ts","helpers/deepCompare.js","uiKit/Switch/index.tsx","tabs/widget/components/AppearanceTab/index.tsx","tabs/widget/components/StartWidgetScreen/index.tsx","tabs/widget/components/WelcomeScreenTab/index.tsx","uiKit/Popover/index.tsx","uiKit/icons/ThreeIcon.js","uiKit/icons/DeleteIcon.tsx","uiKit/icons/EditIcon.tsx","tabs/widget/components/GreetingsTable/index.tsx","tabs/widget/components/DeleteGreetingModal/index.tsx","uiKit/ModalTemplate/index.tsx","uiKit/RadioButtonGroup/index.tsx","tabs/widget/components/EditDefaultModal/index.tsx","tabs/widget/components/GeneralTab/index.tsx","tabs/widget/components/CustomizationTab/index.tsx","helpers/validateStringLength.js","tabs/widget/components/AddGreetingModal/index.tsx","tabs/widget/components/EditGreetingModal/index.tsx","tabs/widget/components/GreetingTab/index.tsx","tabs/widget/components/Url.js","helpers/urlValidation.js","tabs/widget/components/Urls.js","tabs/widget/components/CopySnippet/index.tsx","routes/widgetRoutes.js","tabs/widget/components/IntegrationTab/index.tsx","tabs/widget/WidgetContainer.tsx","tabs/analytics/constants/chartConfigs.ts","tabs/analytics/components/Chart/index.tsx","tabs/analytics/actions/analytics.js","tabs/analytics/api/analytics.js","tabs/analytics/constants/commentsListConfig.ts","uiKit/icons/CheckIcon.js","tabs/analytics/components/PopoverItem/index.tsx","tabs/analytics/constants/commentsFilterOptions.tsx","tabs/analytics/components/CommentsFilter/index.tsx","uiKit/icons/TreeDots.js","tabs/analytics/components/PopoverSupport/index.tsx","tabs/analytics/components/Comment/index.tsx","tabs/analytics/components/CommentsList/index.tsx","tabs/analytics/components/AnalyticsHeader/index.tsx","tabs/analytics/components/AnalyticsWrap/index.tsx","tabs/analytics/components/FunnelsHeader/index.tsx","tabs/analytics/constants/tableTitles.ts","tabs/analytics/components/FunnelsTable/index.tsx","uiKit/Divider/index.tsx","uiKit/AtomMultiSelect/styles.js","uiKit/AtomMultiSelect/AtomMultiSelect.tsx","tabs/analytics/components/FunnelModalFooter/index.tsx","tabs/analytics/constants/elements.ts","services/api.ts","tabs/analytics/actions/funnels.ts","tabs/analytics/actions/funnel.ts","tabs/analytics/api/funnels.ts","tabs/analytics/components/FunnelModal/index.tsx","hooks/useStateCallback.ts","tabs/analytics/components/DeleteModal/index.tsx","tabs/analytics/components/FunnelsWrap/index.tsx","tabs/analytics/components/Analytics/index.tsx","uiKit/Tooltip/index.tsx","tabs/analytics/components/CompletionRateChart/index.tsx","tabs/analytics/components/ConversationsSelector/styles.js","tabs/analytics/components/ConversationsSelector/index.js","uiKit/Pagination/index.tsx","uiKit/icons/ExternalLinkIcon.tsx","tabs/analytics/components/UserInfo/index.tsx","tabs/analytics/components/TranscriptsHeader/index.tsx","tabs/analytics/components/Messages/index.tsx","tabs/analytics/components/Transcripts/index.tsx","tabs/analytics/components/Funnel/index.tsx","tabs/analytics/AnalyticsContainer.tsx","constants/componentNames.js","routes/mainRoutes.js","containers/404/404.js","containers/404/styles.js","uiKit/icons/Robot.js","containers/ErrorScreen/ErrorScreen.js","containers/ErrorScreen/styles.js","containers/ErrorBoundary/ErrorBoundary.js","tabs/account/actions/account.js","tabs/account/api/account.js","tabs/account/components/UserMenu/UserMenu.js","tabs/account/components/UserMenu/index.js","tabs/account/components/UserMenu/styles.js","uiKit/icons/ArrowLeft.tsx","containers/Menu/Menu.js","containers/Menu/styles.js","tabs/home/components/NewBotModal.js","tabs/home/components/BotPlate.js","tabs/home/components/CreateNewBot.js","tabs/account/components/HomeHeader/index.js","tabs/account/components/HomeHeader/styles.js","tabs/account/components/HomeHeader/HomeHeader.js","tabs/home/components/Bots.js","tabs/home/Home.js","uiKit/Notification/Notification.js","containers/Unavailable/Unavailable.js","tabs/home/components/MobileSupport.js","tabs/authorization/component/EmailConfirmation.js","tabs/authorization/component/AfterSignUp.js","uiKit/StyledToastContainer.js","tabs/account/components/UserImageDropzone/index.js","tabs/account/components/UserImageDropzone/styles.js","tabs/account/components/UserImageDropzone/UserImageDropzone.js","tabs/account/components/UserImageDropzone/config.js","tabs/account/components/AccountSettingsForm/index.js","tabs/account/components/AccountSettingsForm/styles.js","tabs/account/components/AccountSettingsForm/AccountSettingsForm.js","tabs/account/AccountContainer.js","containers/App.js","tabs/analytics/reducers/analytics.js","tabs/analytics/reducers/funnels.ts","tabs/analytics/reducers/funnel.ts","tabs/authorization/reducers/security.js","tabs/authorization/reducers/adminUser.js","tabs/broadcast/reducers/broadcasts.js","tabs/dashboard/reducers/supportStatistics.js","tabs/dashboard/reducers/usersStatistics.js","tabs/dashboard/reducers/popularHoursStatistics.js","tabs/flowBuilder/reducers/flows.js","tabs/flowBuilder/reducers/atom.js","tabs/flowBuilder/reducers/atoms.js","tabs/flowBuilder/reducers/tags.js","tabs/flowBuilder/reducers/searchAtoms.js","tabs/home/reducers/bots.js","tabs/home/reducers/activeBot.js","tabs/home/reducers/snackBar.js","tabs/nlp/reducers/intents.js","tabs/nlp/reducers/intentsSize.js","tabs/nlp/reducers/contextSize.js","tabs/nlp/reducers/contexts.js","tabs/nlp/reducers/nlpRequests.js","tabs/settings/reducers/botAccessors.js","tabs/settings/reducers/facebookToken.js","tabs/settings/reducers/settingsPages.js","tabs/settings/reducers/twilioCredentials.js","tabs/support/reducers/supportRequests.js","tabs/support/reducers/users.js","tabs/support/reducers/activeUser.js","tabs/widget/reducers/widgetSettings.js","tabs/widget/reducers/widgetDefaultSettings.js","tabs/account/reducers/account.js","tabs/settings/reducers/attributes.js","reducers/index.js","constants/theme.js","index.js","tabs/dashboard/styles.module.scss","tabs/flowBuilder/components/ApiCallTabs/styles.module.scss","tabs/settings/components/integrations/dialog360WhatsApp/styles.module.scss","uiKit/ModalTemplate/styles.module.scss","uiKit/RadioButtonGroup/styles.module.scss","uiKit/Pagination/styles.module.scss","tabs/dashboard/components/GradientBar/styles.module.scss","uiKit/inputs/InputWithParamsAndLinks/styles.module.scss","tabs/flowBuilder/components/ApiCall/styles.module.scss","tabs/widget/components/AppearanceTab/styles.module.scss","tabs/widget/components/DeleteGreetingModal/styles.module.scss","tabs/analytics/components/Comment/styles.module.scss","tabs/analytics/components/FunnelsTable/styles.module.scss","tabs/analytics/components/DeleteModal/styles.module.scss","tabs/analytics/components/CompletionRateChart/styles.module.scss","tabs/analytics/components/TranscriptsHeader/styles.module.scss","tabs/flowBuilder/components/MessageTemplate/styles.module.scss","tabs/flowBuilder/components/HeaderField/styles.module.scss","tabs/flowBuilder/components/ResponseMappingField/styles.module.scss","tabs/settings/components/integrations/telegram/styles.module.scss","tabs/widget/components/GreetingsTable/styles.module.scss","tabs/widget/components/AddGreetingModal/styles.module.scss","tabs/widget/components/EditGreetingModal/styles.module.scss","tabs/analytics/components/CommentsList/styles.module.scss","tabs/analytics/components/AnalyticsHeader/styles.module.scss","tabs/dashboard/components/NamedCounter/styles.module.scss","tabs/flowBuilder/components/ItemsListTab/styles.module.scss","tabs/flowBuilder/components/TestRequestScreen/styles.module.scss","tabs/widget/components/ColorSelector/styles.module.scss","tabs/widget/components/WelcomeScreenTab/styles.module.scss","tabs/widget/components/GreetingTab/styles.module.scss","tabs/widget/components/IntegrationTab/styles.module.scss","tabs/analytics/components/CommentsFilter/styles.module.scss","tabs/analytics/components/FunnelModal/styles.module.scss","tabs/analytics/components/UserInfo/styles.module.scss","tabs/analytics/components/Messages/styles.module.scss","tabs/analytics/components/Funnel/styles.module.scss","uiKit/NoChartData/styles.module.scss","tabs/dashboard/components/AreaChart/styles.module.scss","uiKit/Checkbox/styles.module.scss","tabs/dashboard/components/DayModel/styles.module.scss","uiKit/DateRange/styles.module.scss","uiKit/HeadlineWrapWithDateControl/styles.module.scss","tabs/flowBuilder/components/HeadersPreview/styles.module.scss","uiKit/UserIcon/styles.module.scss","uiKit/Switch/styles.module.scss","tabs/analytics/components/PopoverSupport/styles.module.scss","tabs/analytics/components/AnalyticsWrap/styles.module.scss","tabs/analytics/components/FunnelsHeader/styles.module.scss","uiKit/AtomMultiSelect/styles.module.scss","tabs/analytics/components/FunnelsWrap/styles.module.scss","tabs/analytics/components/Analytics/styles.module.scss","tabs/analytics/components/Transcripts/styles.module.scss","tabs/widget/components/WidgetChatScreen/styles.module.scss","tabs/dashboard/components/CircleChart/styles.module.scss","tabs/dashboard/components/HourlyChart/styles.module.scss","uiKit/buttons/DownloadButton/styles.module.scss","tabs/dashboard/components/ChannelsCircleChart/styles.module.scss","uiKit/loaders/loaderScreen/styles.module.scss","tabs/nlp/components/IntentSelect/styles.module.scss","uiKit/AtomSelect/styles.module.scss","uiKit/FieldInput/styles.module.scss","uiKit/buttons/HoverButton/styles.module.scss","tabs/flowBuilder/components/BodyTab/styles.module.scss","uiKit/texts/Label/styles.module.scss","tabs/widget/components/EditDefaultModal/styles.module.scss","tabs/widget/components/CopySnippet/styles.module.scss","tabs/analytics/components/Chart/styles.module.scss","tabs/analytics/components/PopoverItem/styles.module.scss","uiKit/Divider/styles.module.scss","tabs/analytics/components/FunnelModalFooter/styles.module.scss","uiKit/Tooltip/styles.module.scss","tabs/widget/components/StartWidgetScreen/styles.module.scss","uiKit/ChartContainer/styles.module.scss","tabs/widget/components/LogoDropzone/styles.module.scss"],"names":["module","exports","String","prototype","addQueryStringParameter","key","value","this","indexOf","IS_AUTHENTICATED","IS_NOT_AUTHENTICATED","authenticate","token","store","dispatch","type","security","authenticated","logout","cookie","path","isLocalhost","window","location","hostname","SERVER_URL","process","REACT_APP_SERVER_URL","protocol","BACKEND_URL","REACT_APP_BACKEND_URL","BASE_URL","REACT_APP_BASE_URL","HOME_PATH","REACT_APP_HOME_PATH","USE_MESSAGE_KEYS","REACT_APP_USE_MESSAGE_KEYS","withStyles","theme","inputContainer","position","display","flexDirection","width","textAlign","input","height","margin","padding","border","borderRadius","fontFamily","boxSizing","webkitBoxSizing","outline","borderColor","color","fontSize","fontWeight","backgroundColor","label","errorLabel","right","withTheme","id","name","required","placeholder","hasError","onChange","onBlur","defaultValue","disabled","minLength","pressEnterCallback","classes","className","onKeyPress","e","passwordInputContainer","showPasswordButton","top","cursor","maxWidth","maxHeight","eyeIcon","otherProps","useState","hidePassword","setHidePassword","inputType","useMemo","iconType","onClick","preventDefault","tabIndex","button","lineHeight","background","palette","primary","main","boxShadow","transform","transition","title","isStringEmpty","text","trim","length","defaultErrorMessage","LoginForm","props","handleChangeUsername","setState","username","target","handleChangePassword","password","trowError","customErrorMessage","errorMessage","state","error","handleSubmitLogin","user","fetch","method","credentials","login","base64","encode","then","response","ok","headers","get","save","from","pathname","authenticateWithReferrer","status","json","message","catch","styles","isSignUpEnable","demoForm","formTitle","demoDiv","Link","forgotPasswordLink","to","bottomText","React","Component","withRouter","LoaderSmall","showLoader","src","alt","loaderOverlayContainer","justifyContent","alignItems","bottom","left","zIndex","subtitle","marginTop","marginBottom","buttonTitle","buttonUrl","history","push","emailValidation","email","test","ForgotPasswordForm","handleChangeEmail","emailError","handleRequestPasswordReset","processingForgotPassword","Headers","append","body","JSON","stringify","requestPasswordReset","submitFormSuccessfully","renderForgotPasswordForm","forgotPasswordForm","forgotPasswordNoteText","imageNotFound","titleClass","paragraphClass","ResetPasswordForm","handlePasswordChange","passwordError","passwordConfirmError","passwordConfirm","handlePasswordConfirmChange","handleHidePasswordToggle","processingPasswordChange","newPassword","changeAdminPasswordWithResetToken","resetPasswordToken","passwordChangedSuccessfully","resetPasswordFormContent","resetTokenValidationFinished","failToValidateResetToken","resetTokenIsValid","resetPasswordFormWrapper","linkExpired","queryString","parse","search","t","sessionStorage","getItem","replace","setItem","validateResetPasswordToken","valid","flexBasis","SignUpForm","handleChange","event","checkValidity","validatePasswordConfirm","inputPasswordConfirmError","inputEmailIsRegisteredError","inputEmailError","togglePassword","handleSubmitRegister","invited","isFormValid","encodedPassword","signUpInvitedUser","signUpUser","checkEmptyString","inputNameError","inputPasswordError","errorState","redirectToLogin","redirectToError","redirectToUsedLink","redirectToConfirmEmail","hidePasswordConfirm","processInviteCode","code","match","params","getBotInviteInfo","Redirect","SHOW_SNACKBAR","showSnackBar","snackBar","createJsonHeaders","load","logoutOnRequestOrResponseJson","redirected","contentType","Error","alertSuccess","duration","open","success","ifStringEmpty","alertError","Login","redirectToReferrer","subTitle","imagePath","callback","element","style","backgroundSize","Route","component","exact","PrivateRoute","rest","render","flex","SAVE_ADMIN_USER","ROLE","ROLE_OPTIONS","features","access","userRole","botAccesses","loadRole","adminUser","hasPermissionForBot","botId","featureName","botAccess","filter","ba","Number","find","role","includes","CLEAR_STATE","SET_ACTIVE_BOT","SET_DIALOG_FLOW","setActiveBot","activeBot","SAVE_BOTS","getBots","bots","getBot","updateBot","bot","getBotPersistentMenu","language","href","url","updateGreetingText","greetingText","successCallback","errorCallback","err","SAVE_SUPPORT_REQUESTS","getSupportRequests","requests","CreateLinkIcon","viewBox","fill","xmlns","fillRule","clipRule","d","NoChartDataIcon","BroadcastIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Chevron","rotate","DashboardIcon","FlowsIcon","NlpIcon","SupportIcon","WidgetIcon","SettingsIcon","AnalyticsIcon","PlusIcon","CloseIcon","SearchIcon","TrashIcon","OtherIcon","DoneIcon","LeftArrowIcon","RightArrowIcon","DownArrowIcon","EditIcon","OvalIcon","CalendarIcon","PenIcon","PhotoIcon","EnterIcon","fillOpacity","UpIcon","DownIcon","Icon404","x","y","filterUnits","colorInterpolationFilters","floodOpacity","result","in","values","dy","stdDeviation","mode","in2","x1","y1","x2","y2","gradientUnits","stopColor","offset","ThreeIcon","CopyIcon","NoChartData","container","channelColors","Map","circleChartColors","r","g","b","noDataText","SPUN_PEARL_GREY","WHITE","DULL_LAVANDER_BLUE","DANUBE_BLUE","Checkbox","checked","checkmark","isObjectEmpty","obj","Object","keys","sortArrayOfArraysByIndex","arr","index","order","sort","a","getEnabledInLocalStorage","localStorage","split","connect","usersStatistics","chartData","isMultipleChannels","enabledPlatforms","setEnabledPlatforms","lineChartData","points","map","platform","data","forEach","userCount","resultEntry","getDataForLineChart","colors","getColorsForLineChart","linePoints","usersBetweenDates","concat","entries","pair","isData","min","legend","checkboxes","copyEnabledPlatforms","assign","toString","handleCheckboxChange","supportStatistics","byChatBot","byCustomerSupport","Loader","days","dayModel","time","amount","DayModel","model","day","getDayData","dayToAmount","dayOfWeek","colorOpacity","opacity","gridItem","tooltip","place","effect","grid","flexFlow","contrastText","marginRight","gridColumn","gridItemTransp","gridItemText","verticalAlign","textCenter","valuesArr","maxPerHour","dayName","dayHours","findIndex","daysData","averageConversationByTimeOfDay","dayShort","substr","toLowerCase","elem","charAt","toUpperCase","slice","GradientBar","step","gridItemsCount","i","start","end","gradientBarWrapper","gradientBar","gradientBarColumn","gradientBarItem","gradientBarItemText","uuid","popularHoursStatistics","GridChart","Headline","topContainer","wordBreak","DateRange","setDate","startDate","endDate","dateRangePickerContainer","onApply","picker","format","FREQUENCIES","Index","updateDate","pickerOpen","usersTitle","frequency","loadData","setFromDateCallback","setToDateCallback","request","setCustomDate","setActiveFrequency","hourly","moment","subtract","add","custom","HeadlineWrapWithDateControl","DateControl","DownloadButton","csvData","csvOnDownload","csvFilename","csvHeaders","filename","textDecoration","convertAreaChartDataCsv","k","entry","getAreaChartHeadersCsv","covertHeaders","convertCircleChartDataCsv","pieChartData","ByTimeOfDayHeaders","convertHourlyChartDataCsv","hoursChartData","InfoButton","dataTip","dataFor","tooltipWrap","marginLeft","tooltipId","tooltipText","DashboardContainer","children","activeUsers","totalUsers","header","titleWrapper","statsText","statsNumber","NamedCounter","counter","getPercentage","currentValue","total","Math","floor","otherChannels","setOtherChannels","getChartData","getOrderedData","getChartDataWithOther","formattedPieChartData","mainPlatforms","otherPlatforms","otherPlatformsCount","reduce","libraryOptions","tooltips","callbacks","tooltipItem","dataset","datasets","datasetIndex","previousValue","percentage","labels","channel","join","library","date","SAVE_POPULAR_HOURS_STATISTICS","SAVE_SUPPORT_STATISTICS","SAVE_USERS_STATISTICS","loadUsersStatistics","loadDataUrl","responseJson","stats","loadSupportStatistics","loadPopularHoursStatistics","LoaderScreen","loader","setLoader","containerRef","useRef","useEffect","current","scrollTo","platformsNumber","activeUsersNumber","acc","count","containerLoader","ref","row","ChartContainer","flexBlockColumn","flexBlock","TextIcon","GalleryIcon","clipPath","AttachmentMessageIcon","TypingIcon","USER_INPUT_TYPE","SET_ATTRIBUTE_TYPE","TEXT_TYPE","SAVE_USER_INPUT_TYPE","CONDITIONAL_REDIRECT_TYPE","RANDOM_REDIRECT_TYPE","API_CALL_TYPE","availableDefaultMessages","icon","iconLarge","description","newMessage","texts","attachment","payload","template_type","elements","image_url","buttons","iconName","senderAction","availableOtherMessages","parameter","next_atom","randomRedirectInitialState","randomRedirect","randomAtoms","atomName","number","sendFirstAtomOnlyOnce","setAttributeMessage","attributes","saveUserInput","validation","customValidationRegex","onValidationSuccessAtomId","onValidationFailAtomId","saveAsAttribute","smartRedirect","conditionalRedirect","conditionGroups","defaultRedirect","conditionGroup","expressions","attribute","operator","conjunction","redirectTo","apiCall","addUserData","getModalStyle","overflowY","CustomizedModal","disableBackdropClick","disableClose","onClose","paper","btnClose","shadows","headerText","root","menuButton","buttonHolder","SetAttributeIcon","SaveUserInputIcon","TagIcon","RedirectToAtomIcon","RandomRedirectIcon","APICallIcon","item","messageName","messageDescription","deepCopyFunction","inObject","outObject","Array","isArray","titleWrap","gap","section","atom","updateAtom","newAtom","messages","uuidv1","handleCreateNewMessage","some","tags","listItem","borderBottomLeftRadius","borderTopLeftRadius","borderBottomRightRadius","borderTopRightRadius","setOpen","SET_SEARCH_ATOMS","setSearchAtoms","searchAtoms","CLEAR_ATOM","SAVE_ATOM","editAtom","SAVE_FLOWS","ADD_NEW_FLOW","SAVE_ATOMS","getFlows","flows","saveAtoms","createNewFlow","flow","addNewFlow","formatAtom","copyAtom","res","fieldErrors","formattedAtom","getAtom","atomId","deleteAtom","searchQuery","testApiRequest","userId","NewMessage","anchorEl","selectedIndex","handleOpen","handleClose","quickReplies","createNewMessage","addRedirect","addTags","addRandomRedirect","addSetAttribute","addSaveUserInput","listBoxContainer","listBox","borderLeft","otherItem","closeAndAddMessage","variant","size","float","SAVE_CONTEXTS_SIZE","spacing","unit","fab","overflowX","ADD_CONTEXTS_SIZE","UPDATE_CONTEXTS_SIZE","ADD_CONTEXT","DELETE_CONTEXT","SAVE_CONTEXTS","UPDATE_CONTEXT","CLEAR_CONTEXTS","saveContexts","contexts","getContextsPages","page","contextSize","contextDTOList","createNewContext","context","addContextsSize","addContext","updateContext","updateExistedContext","deleteContext","contextId","deleteOldContexstSize","removeContext","Transition","direction","DeleteTrigger","newContext","changeNewContext","triggerId","PaperProps","keepMounted","deleteTrigger","customStyles","control","provided","hasValue","isFocused","selectProps","touched","indicatorSeparator","singleValue","option","menu","overflow","SAVE_NLP_REQUESTS","UPDATE_NLP_REQUEST","CLEAR_NLP_REQUESTS","saveNlpRequests","clearNlpRequests","ADD_INTENT","CLEAR_INTENTS","DELETE_INTENT","SAVE_INTENTS","UPDATE_INTENT","saveIntents","intents","SAVE_INTENTS_SIZE","ADD_INTENT_SIZE","UPDATE_INTENTS_SIZE","getIntents","faq","getPagingIntents","query","intentsSize","intentDTOList","getAllPagingIntents","getAllPagingIntentsForTriggers","getTrainingData","shortName","getHistoryData","createNewIntent","intent","addIntent","addIntentsSize","trainIntent","updateTrainedNlpRequest","updateIntent","updateExistedIntent","deleteIntent","intentId","deleteOldIntent","deleteOldIntentsSize","isValueSmallTalk","createIntentObject","onElementSelected","selectedOption","setSelectedOption","stateIntents","setStateIntents","mappedIntents","getIntentLabel","useSelectIntents","getSelectedIntentObject","processSelectedOptionForStateChange","undefined","containert","options","newOption","isSearchable","onInputChange","action","onFocus","setOptions","isOverflowed","setIsOverflowed","atomValue","val","atoms","handleOverflow","maxMenuHeight","minMenuHeight","menuPlacement","components","SingleValue","scrollHide","TriggerItem","triggerAtomId","modalTriggerId","currentAtom","customSearch","mainSelected","selectItem","desc","previousAtom","closeTriggerModal","closeTrigger","nextProps","prevState","borderRight","states","AtomNLPModal","rowsPerPage","triggerAtom","handleChangePage","handleChangeRowsPerPage","minWidth","createIntentButton","createTrigger","textTransform","table","ADD_NEW_TAG","SAVE_TAGS","loadTags","createTag","tag","addNewTag","InputHolder","holderStyle","inputStyle","maxLength","rtl","inputHolder","handleKeyPress","dir","red","SubmitButton","classButton","empty","buttonSizeClass","sizeSm","sizeLg","light","secondary","default","gray","noStyle","cancel","TagModal","changeName","tagValue","allTags","closeTagModal","Tags","handleChangeTags","handleDelete","tagsSelected","chipToDelete","splice","openCreateTagModal","openTagModal","closeCreateTagModal","isMulti","convertValuesToOptions","tag1","tag2","disableNew","createNewTagLink","flowBuilderTags","TagAction","styleSelect","onDelete","SAVE_BOT_ACCESSORS","loadBotAccessors","botAccessors","removeBotAccessor","accessorId","inviteAccessId","getBotLanguages","botLanguages","defaultLanguage","activeLanguages","isDefault","unshift","console","log","onKeyDown","dropdownIndicator","LanguageArrowDown","LanguageArrowUp","arrow","activeBotId","setActiveLanguages","isOpen","setIsOpen","selectedLanguageOption","setSelectedLanguageOption","fullName","originValue","isRtl","languageOptions","onMenuOpen","onMenuClose","attributeWrap","attributeNameWrap","inputWrap","warning","attributeName","textOverflow","whiteSpace","iconWrap","handleUpdateAttributeName","handleUpdateAttributeValue","handleEnterAttributeName","handleFocus","handleDeleteAttribute","focus","isExtraWidth","setIsExtraWidth","currentAttribute","attributeContainer","offsetWidth","isNew","isValid","autoFocus","searchValue","setAttributes","setShowError","allAttributes","setFocus","attributeId","attributesUpdate","SET_ATTRIBUTES","ADD_ATTRIBUTE","CLEAR_ATTRIBUTES","getAttributes","lang","createAttribute","addAttribute","searchWrap","borderBottom","footer","borderTop","buttonsWrap","noAttribute","setSearchValue","attributesCopy","setAttributesCopy","setLanguage","chatbotAttributes","handleValidate","every","newAttribute","random","object","updateAttributes","ARROW_UP_KEY","DELETE_KEY","BACKSPACE_KEY","containerStyle","menuStyle","suggestions","setAutoSuggest","upward","setUpward","autocompleteRef","getAttribute","menuPos","firstChild","childNodes","getBoundingClientRect","innerHeight","handleKeyUp","keyCode","charCode","handleBlur","onClickAway","getItemValue","suggestion","items","onSelect","wrapperStyle","renderInput","onKeyUp","renderItem","isHighlighted","renderMenu","usePrevious","DEFAULT","CHATBOT","WIDGET","FACEBOOK","WHATSAPP","TWILIO","getAttributeColor","FormatOption","allowedAttributes","groupHeading","base","menuList","noOptionsMessage","clearIndicator","ATTRIBUTE_REGEX","ATTRIBUTE_REGEX_OR_OPEN_BRACKETS","ATTRIBUTE_REGEX_INCLUDE","NOT_ASTERISK_REGEX","EMPTY_BRACKETS","OPEN_BRACKET","CLOSE_BRACKET","ASTERISK","CLOSE_PAIR_BRACKET","OPEN_PAIR_BRACKET","OPEN_OR_CLOSE_BRACKET","getScrollableParent","ele","document","parentNode","addAttibute","optionTitle","customOption","twilioCredentials","isClearable","displayOptions","defaultAttributes","setTouched","isNotConnectedMatch","setIsNotConnectedMatch","setMenuPlacement","select","saveTime","useContext","SaveTimeContext","prevSaveTime","isFacebookConnected","messengerConfigs","accessToken","isWhatsappConnected","dialog360WhatsAppConfigs","apiKey","isTwilioConnected","connected","handleCreateAttribute","inputValue","handleMatch","isMatch","openMenuOnFocus","Menu","NoOptionsMessage","Option","attributeContainerPosition","parentHeight","offsetHeight","addButton","paddingRight","bottomScrollElem","clear","atomAttributes","handleUpdateAttributes","callBack","buttonName","showPlusAttribute","atomAttributesCopy","handleUpdateAttribute","innerText","TabContainer","MessageButton","anchorOriginVertical","anchorOriginHorizontal","transformOriginVertical","transformOriginHorizontal","positionTop","positionLeft","anchorReference","btn","messengerExtensions","onUpdate","updatePopoverPosition","fieldName","errorTitle","onMouseEnter","showDelete","onMouseLeave","readOnly","node","textShadow","last","anchorPosition","anchorOrigin","vertical","horizontal","transformOrigin","popover","popoverButton","unicodeBidi","handleChangeButton","tabs","indicator","tabIndicator","tab","handleChangeButtonUrl","typography","addParametersBtn","QuickReply","handleClickButton","reply","show","content_type","hideDelete","titlePopover","selectWrap","resize","titles","maxHeigth","view","threeIcon","replyItems","replyItem","qrWrap","MessageQuickReplies","replyIndex","quick_replies","updateMessage","deleteReply","addNewReply","category","optionWrap","selectedAttribute","onMouseMove","CHATBOT_TITLE","WIDGET_TITLE","FACEBOOK_TITLE","WHATSAPP_TITLE","TWILIO_TITLE","attributesContainer","addParam","showSearch","listRef","updateSelectedAttribute","setIsMatch","isMatchAll","setIsMatchAll","getAttributeList","widgetAttributes","facebookAttributes","whatsappAttributes","twilioAttributes","optionsList","titleObject","filterOptions","Boolean","Input","autofocus","inputTitleStyles","handleEnterPress","inputTitle","defaultProps","alerts","LinkTemplate","link","updateLink","submitLink","createLink","initialLink","urlValidation","urlError","isSting","btnContainer","LinkTemplateModal","setCaret","AttributeIcon","frontDataProcessing","frontValue","prevAttrIndex","attrIndex","attrBackIndex","newArr","endAttrIndex","handleCtrlC","isMenu","fromCharCode","which","ctrlKey","metaKey","navigator","clipboard","writeText","html","getSelection","sel","rangeCount","createElement","appendChild","getRangeAt","cloneContents","innerHTML","selection","createRange","htmlText","getSelectionHtml","backEndProcessing","backData","helper1","helper2","attrText","attributeI","attr","insertArrayOfNodes","wrapEl","insertionWrapperEL","nextElement","setNode","insertionWrapperChild","insertBefore","handleCtrlV","inputRef","caretNodePos","setValue","selectedText","caretP","anchor","anchorNode","readText","wrapper","lastEl","deleteContents","insertNode","startOffset","nodeItem","nextSibling","nodeValue","text1","text2","text1Node","createTextNode","text2Node","replaceChild","next","endOffset","getPopupPosition","absoluteTop","absoluteRight","isEnoughSpaceHeight","isEnoughSpaceWidth","innerWidth","setCaretAfterNode","nodeEL","range","setStartAfter","collapse","removeAllRanges","addRange","checkForSelection","spanLink","ranger","setRange","setShow","setShowSearch","isEmpty","setIsEmpty","setLink","caretPos","setCaretPos","setSelectAttribute","setAnchorNode","selectionText","setSelectionText","searchAttribute","setSearchAttribute","setCaretNodePos","notConnectedAttributes","setNotConnectedAttributes","attributeIcon","attributeList","selectionchangeListener","parent","commonAncestorContainer","parentElement","tagName","setStartBefore","setEndAfter","selectionChangeListener","addEventListener","removeEventListener","onclick","handleOnClickLink","el","selectNodeContents","handleModalOpening","handleOnClickLinkButton","checkForOpeningAndClosingBrackets","inputEl","textEl","caretPosition","inputElValue","indexOffOpenBrackets","indexOffCloseBrackets","startIndex","deleteCount","attrArr","attrVal","searchVal","substring","updateShowPopupWhileOnChange","nodeType","Node","TEXT_NODE","saveCaretPos","anchorOffset","handleSpace","handleVerticalArrows","handleEnter","handleHorizontalArrows","updateAttributeListScroll","selectedChildNodeIndex","directionStep","childNodesLength","nodeName","calculateSelectedChildNodeIndex","selectedChildNode","scrollIntoView","behavior","block","inline","selectedValue","execCommand","caretCurPos","attributeWithBrackets","mistakeFound","nodeIndex","att","caretCurPosIndex","setStart","checkAttributeForExistingAndConnection","newAttr","minHeight","setAttribute","generateAttribute","selectAttributeAddType","endsWith","startsWith","prevNodeVal","nextNodeVal","remove","nodeVal","indexOfOpenBrackets","removeExtraBracketsAfterAttributeIsAdded","removeExtraBrackets","addAttributeToAfterTag","addAttributeToAfterText","addAttributeToEmptyField","activeElement","editLink","onMouseDown","contentEditable","onInput","anchorCurNode","inputCurVal","isEditing","dataHref","dataExtension","Date","now","createSpan","iconsWrap","textFieldsWrap","deleteTemplate","deleteIcon","keyInput","buttonsContainer","textWrap","deleteText","plusIconWrap","deleteIconWrap","handleChangeText","isHardCoded","placement","handleChangeName","btnIndex","updateBtn","deleteButton","handleDeleteText","FileDropzone","handleDrop","bind","files","self","file","FormData","Authorization","containerEmpty","onDrop","image","regexIndexOf","string","regex","startpos","visibility","backdrop","pointerEvents","highlights","wordWrap","highlightsInput","textarea","caretColor","disableBorderRadius","scrollBlock","singleLine","hoverButton","setCurrentValue","setCaretPosition","focused","setFocused","prevShow","applyHighlights","updateCursorPosition","handleSearch","selectionStart","noAttributesText","arrowIndex","textStart","noAttributeTextStartLength","newSearchValue","prevChar","handleArrowDown","handleArrowUp","closestBracketsIndex","lastIndexOf","handleLeftArrow","nextChar","stringStart","handleRightArrow","lastBracketIndex","handleShowAttributes","getPopupPositionByElement","str","selectionEnd","onReplaceAttribute","matchCopy","openBracketsStyle","attributeStyle","closeBracketsStyle","valueCopy","found","onScroll","scrollTop","scrollLeft","subString","isNewAttribute","exec","lastIndex","setTimeout","updatedValue","replaceAll","endText","buttonPos","highlightsPos","paddingBottom","addElement","Template","elemIndex","elementsNum","addNewButtonToElem","onDeleteElem","isEnoughElements","addNewButton","isList","ListTemplate","isGeneric","GenericTemplate","Attachment","fileUrl","RandomTextMessage","renderView","onDeleteItem","addItem","handleChangeUrl","Typing","max","onChangeStart","handleChangeStart","UserInput","handleName","selectedAtomName","getAtomNameByAtomId","MessageTemplate","headerButton","infoIcon","optionDescription","getValue","initialTouched","smallInputWrap","flexContainer","flexWrap","updateTouched","field","isTouched","touchedCopy","messageCopy","memo","expression","onUpdateConjunction","isLast","onAdd","isOne","expressionCopy","generateId","c","condition","updateCondition","handleUpdateConjunction","conditionCopy","handleAddExpression","handleDeleteExpression","handleUpdateExpression","paddingTop","priority","addIdToArrayAtConditionalRedirect","setConditionalRedirect","isConditionGroups","handleAddConditionGroup","newConditionGroup","getMaxPriority","prev","addConditionGroupButton","handleUpdateCondition","handleDeleteCondition","SwitchStyles","InitialState","switcherWrap","atomWrap","deleteRandomAtomWrap","randomAtomsDisplay","handleRandomAtoms","newRandomAtoms","firstTimeRedirect","shift","handleDeleteRandomAtom","newRandomAtom","FieldInput","HeaderField","headerCopy","ResponseMappingField","handleUpdateValue","ItemsListTab","isHeaders","itemsCopy","handleUpdateItem","handleDeleteItem","SquareIcon","SquareCheckedIcon","HoverButton","BodyTab","onCheck","HeadersPreview","ResponseTab","selectedTab","setSelectedTab","disable","statusCodeColor","statusCodeValue","statusCode","activeTab","handleSelectTab","formatAtomSave","atomCopy","_formatConditionRedirect","formatApiCall","apiCallCopy","formatAttributes","cur","formatHeaders","_formatCondition","_formatConditionExpression","getAssignedSupportUsers","searchName","getNewRequestSupportUsers","getExpiredRequestSupportUsers","getAllSupportUsers","getClosedSupports","getAllUsers","formattedUsers","users","cacheOptions","TestRequestScreen","setResponse","loading","setLoading","setUserId","handleTestRequest","formattedApiCall","ApiCallTabs","prevMessage","ApiCall","inputsWrap","createContext","deleteMessage","Provider","RandomAttachment","expressionValidation","AtomEditor","isNameOk","handleOpenAtomNLPModal","openNlp","handleCloseAtomNLPModal","componentDidUpdate","checkAtomForEditing","onbeforeunload","setLanguageOptions","validateTextMessages","validateSetAttribute","validateSaveUserInput","isLastInTheArray","showErrorMessage","validateApiCall","validateApiCallItems","validateSmartRedirect","validateRandomRedirect","randomAtom","validateButtons","validateAttribute","validateReplies","replies","qrItem","errorPayload","errorAttributes","handleSelectedLanguage","languageOption","onSaveAtom","saveAtom","createRef","getAtomNames","names","elementName","send","validateMessages","oldIndex","newIndex","move","propsAtom","stateAtom","msg","nameBorder","Prompt","when","headerBlock","checkEnterPress","headerSelectorAndButton","closeAtomNLP","moveToTop","moveToBottom","tempId","updateTags","NewFlow","usedNames","saveNewAtom","createNewAtom","flowId","nameInput","addNew","NewFlowExport","DeleteFlow","selectAtom","buttonsHolder","deleteFlow","saveNewFLow","newFLow","addFlow","newFlowButton","formControl","htmlFor","DeleteAtom","handleAtomDelete","selectWelcomeAtom","GET_TWILIO_CREDENTIALS","freeze","defaultBackTime","getTwilioCredentials","Builder","searchText","redirect","redirectId","checkTextExists","searchFlow","getSearchAtoms","debounce","_","searchAtomsByContent","prevProps","deleteAccess","checkAtom","reverse","defaultExpanded","checkAccessToDelete","mainWrap","expandIcon","NewAtom","NavLink","chip","renderRedirect","searchIcon","atomsSearch","activeChip","DeleteIntent","deleteInt","NoData","wrap","img","TablePaginationActions","handleFirstPageButtonClick","onChangePage","handleBackButtonClick","handleNextButtonClick","handleLastPageButtonClick","ceil","flexShrink","Pagination","rowsPerPageOptions","caption","ActionsComponent","TablePaginationActionsWrapped","SelectProps","labelDisplayedRows","HolderStyles","TabTemplateStyles","wrapHeader","wrapNameAndPhrases","flowExp","expanded","detailsStyle","phrasesNumber","alignSelf","UserSays","handleOnBlur","editUserPhrase","emptySay","setEmptySay","modifyInput","deleteUserPhrase","says","modify","userSays","flexAlign","focusTextInput","textInput","editInput","none","IntentModal","convert","back","converted","isEdited","phrases","createUserSays","languages","handleIntentName","intentName","handleChangeExpansion","handleChangeInput","handleChangeAtom","answerAtom","addUserSays","languageCode","newUserSays","currentUserSays","notValue","showNotification","getTabInfo","createIntent","isFaqModal","unique","modalIntentId","closeIntent","botActiveLanguagesList","modalName","heading","modalHeading","enter","alert","userSaysWrapper","statesModal","textField","progress","tableWrapper","modalHeadingQuestions","Intents","isFaq","searchIntent","closeIntentModal","getRowStyle","getContent","tableHeader","noDataContainerText","noDataContainerButton","encodeURI","displayTable","tableContent","tableTitle","openIntentModal","addTitle","handleSearchIntent","intentItem","answer","n","userPhrase","editInt","Triggers","createTriggerButton","menuItem","selectIcon","trainedIcon","tabsTrain","leftTab","rightTab","trainButton","headerWrapper","activeNlp","defaultNlp","filterWrapper","filterText","selectWrapper","userSay","def","handleChangeIntent","trainRequest","triggeredIntentId","triggeredIntentName","trained","LEFT","RIGHT","nlpRequests","Wrap","totalCount","TrainingHeaderView","getTabClasses","classnames","changeTab","handleLanguageChange","Training","setLanguagesOptions","defaultSelectedLanguageOption","tabName","selected","newRequests","handleLanguageChanged","nlpRoutes","createButton","Submenu","navigation","rootLink","routes","route","activeClassName","activeLink","pathLink","pathRoute","Heading","EmptyNlp","NLP","botHasNlp","loaderWrap","nlpEnabled","OPEN_REQUESTS","SOLVED_REQUESTS","SUPPORT_STATUSES","SAVE_MESSAGE","SAVE_ACTIVE_SUPPORT_USER","SAVE_SUPPORT_USER_MESSAGES","SAVE_SUPPORT_USER_MORE_MESSAGES","saveActiveUser","activeUser","saveSupportUserMessages","content","saveSupportUserMoreMessages","badge","alignContent","badgeWrap","badgeContent","getMinutesLeft","utcDate","utc","diff","timeLeftContent","fontStyle","timeLeftContentRed","timeExpiredIcon","timerTime","minutesLeft","setCount","secondsLeft","setInterval","clearInterval","useTimer","lastInteractionDate","formattedTime","minutes","buildTimeLeft","CHAT_PLATFORM","userMainInfo","userNameWrapper","supportIcon","lastMsgTime","isAssigned","isAssignedToCurrentAdmin","lastMessageDate","messageDatetime","isSame","isFromWhatsApp","firstName","lastName","userMessageDatetime","PLATFORM_IMAGE","WEBSITE","FB_MESSENGER","AMIO_WHATSAPP","DIALOG360_WHATSAPP","TELEGRAM","SMS_MMS_TWILIO","UserIcon","profileImage","backgroundImage","channelIcon","backgroundPosition","backgroundRepeat","userInfo","lastMsgTextWrap","lastMsgText","lastMsgTextUnread","supportRequest","support","adminId","isUnread","unreadMessages","boldLastMessage","formattedChatHistory","imageUrl","getLastMessage","profilePic","chevron","dialogsContainer","collapsed","setCollapsed","chatId","SAVE_SUPPORT_USERS","SAVE_MORE_SUPPORT_USERS","SAVE_CLOSED_SUPPORT_USERS","SAVE_MORE_CLOSED_SUPPORT_USERS","UPDATE_SUPPORT_USER_LIST","UPDATE_USER_UNREAD_MESSAGE","saveSupportUsers","supportUsers","adminUserId","saveClosedSupportUsers","saveMoreClosedSupportUsers","updateSupportUserList","useDebounce","delay","debouncedValue","setDebouncedValue","handler","clearTimeout","getUrlEnd","pop","isElementBottom","scrollHeight","isUrlEndsWithSupport","sectionWrap","searchContainer","assignedToMeUsers","supportUsersNew","newRequestsUsers","expiredRequestsUsers","assignedRequestsUsers","allUsers","setSearch","debouncedSearchTerm","Promise","all","flat","currentUser","saveMoreSupportUsers","closedRequestsUsers","TreeDotsIcon","getMessages","URLSearchParams","assignSupportRequest","closeButton","iconWrapDisabled","popoverHeader","atomItem","isDisconnectedUser","isOpenPopover","setOpenPopover","setTarget","atomsList","setAtomsList","handleCloseRequest","backToBot","userCopy","elevation","supportRequestId","adminItem","adminsList","setAdminsList","admins","filteredAdmins","admin","handleAssign","shortenUrl","maximumCharactersInUrl","URL","copyIcon","linkWrap","rel","userName","userNameWrap","userWebsiteLocation","m","websiteLocation","CHAT_STATUS","assignedStatus","assignedStatusWrap","notification","blockWrap","isAdmin","isAssignedToMe","isExpired","chatStatus","statusNotification","containerReceived","containerSend","timeZone","isReceived","timezone","chatBubbleReceived","chatBubbleSend","highlight","postback","lastButton","chatBubble","objectFit","imgUrl","AudioMessage","controls","VideoMessage","textButtons","subtitleButtons","Next","Prev","randomWrap","scrollBehavior","itemLength","activeIndex","setActiveIndex","scrollEl","genericContainer","timestamp","isTextMessage","isTextMessageWithButtons","isImageMessage","isAudioMessage","attachments","isVideoMessage","isTemplateMessage","isFromUser","messageIntoView","messageId","hash","formatDate","isElementTop","chatDate","scrollPosition","setScrollPosition","scrollToTop","serScrollToTop","dates","setDates","setPage","hasNext","setHasNext","scrollContainer","messagesEnd","prevUserMessagesLength","scrollToBottom","updateMessageDates","updateMessageRead","Set","lastMessageId","updateUserUnreadMessages","updateHasNext","messagesLength","retryPromiseCallback","conditionalCallback","useUpdatedSupportUser","updateSupportUser","displayCustom","toast","info","displayNative","Notification","permission","requestPermission","hidden","SharedWebsocketContext","WebSockets","setupSocketClient","sockJS","SockJS","client","Stomp","over","reconnect_delay","debug","heartbeat","incoming","outgoing","onConnectSuccess","closeConnection","unsubscribe","disconnect","subscribe","subscribeNewMessages","subscribeUserChatStatuses","isSelectedBot","isCurrentAdmin","NotificationService","saveMessage","copyUser","sendMessage","AttachmentIcon","strokeOpacity","svgAttachmentHolder","uploadInput","formData","selectedFile","recipient","fileName","textMessage","setTextMessage","disableInput","handleSendMessage","onSendMessage","noChatWrap","noChat","SupportContainer","tryToSaveActiveUser","vars","SAVE_BROADCASTS","saveBroadcasts","broadcasts","loadBroadcasts","cancelBroadcast","broadcastId","ConfirmModal","itemId","itemTitle","confirmAction","closeModal","confirm","outlineColor","webkitBoxShadow","NewBroadcastsList","closeConfirmModal","modalBroadcastId","modalBroadcastTitle","getRowStyles","getTimezone","broadcast","formatDatetime","localDateTime","utcOffset","getTimezoneLabel","timeFunc","getStatusColor","date1","date2","broadcastDatetime","read","delivered","toFixed","headerWrap","headerWrapItem","broadcastsHeader","handleBroadcastModalOpen","simpleValue","handleChangeOption","searchable","broadcastItem","broadcastTableHeader","sortData","calculateRead","openConfirmModal","animationDuration","animationName","titleFont","pieChartColors","chatbot","BroadcastModal","sendBroadcast","ifTimezone","sendNow","selectedDate","selectedTags","allOfTags","createBroadcast","handleCheck","toggleSendNow","currentIfTimezone","toggleTimezone","handleDateChange","botTimezoneSet","loaded","getOwnPropertyNames","headerAddBroadcast","newBroadcast","leftTabItem","logicBlock","handleTagsChanged","creatable","showSwitcher","titleRadio","group","whiteInput","disablePast","leftArrowIcon","rightArrowIcon","submitButton","tagsStyle","simpleFont","rightIcon","Broadcasts","closeBroadcastModal","openedBroadcastModal","openBroadcastModal","shownDate","broadcastsList","paperModal","botName","setBotName","Paragraph","paragraph","openAttributeModal","setOpenAttributeModal","handleOpenAttributeModal","DownloadIcon","UploadIcon","accept","exportBot","blob","logoutOnRequestOrResponseBlob","subText","loaderContainer","userImage","objectPosition","userNameContainer","openUpdateBotModal","setOpenUpdateBotModal","setFormData","contentVersion","createObjectURL","download","click","revokeObjectURL","updatedAt","updatedByName","updatedByImageUrl","handleUpdateBotModal","btnDelete","openDeleteBotModal","setOpenDeleteBotModal","handleOpenDeleteBotModal","HoursSpecification","timeList","dateContainer","handleSet","onBlurResetsInput","onSelectResetsInput","startTime","endTime","tomezoneList","Hours","selectValue","supportSettings","weekdays","weekends","enabled","weekdaysValue","weekendsValue","hoursConverter","dateCopy","settings","radio","rootRadio","opt","updateTimezone","updateTime","saveHours","grayParagraph","modal","iconsGray","CustomPopover","functionValidURL","toggle","submitItem","invalidUrl","callToActions","tabContainer","enableMessengerExtensions","levelItem","submenu","MenuItem","selectedLanguage","hasOwnProperty","itemRef","rtlTitle","deleteItem","stopPropagation","defaultOpen","setDefault","Level","updateItem","updateMenu","addMenuitem","webViewHeightRatio","levelHide","level","callToAction","addSubmenu","PersistentMenu","updatePersistentMenu","persistentMenu","handleUpdatePersistentMenu","addMenuItem","onUpdatePersistentMenu","locale","updateBotPersistentMenu","containerLevels","FacebookIcon","patternContentUnits","ParamsList","handleClick","currentTarget","pos","ITEM_HEIGHT","getTopPosition","getLeftPosition","Params","ua","userAgent","isIE","isIOS","css","param","div","ifGreeting","handleScroll","paramList","Greeting","changed","handleChangeGreetingText","handleUpdate","imgHolder","SAVE_FACEBOOK_PAGES","getFacebookPages","facebookPages","accounts","FacebookPage","updateFacebookData","newBot","pageId","access_token","handleRequest","pageToken","pageName","offLoader","subscribePage","handleLoader","unsubscribePage","pageItem","pageInfo","picture","pageImg","is_webhooks_subscribed","connectedStatus","connectedAnother","settingsPages","SAVE_FACEBOOK_TOKEN","Facebook","processFacebookCredentialsAndGetFacebookPages","userFacebookAccessToken","loggedIn","facebookAppId","exchangeShortLiveUserTokenToLongLive","facebookLoggedIn","appId","derivedClasses","wrapPagination","tabInner","autoLoad","processUserAccessToken","scope","renderProps","DialogflowIntegrationTemplate","onSubmit","projectId","dialogflowConfigs","clientId","isError","tokenSet","loginParams","buttonStyles","mb32","shareBot","errorAlert","tabInnerContainer","mb16","phoneNumberValidation","showConnectionText","connection","TwilioIntegration","submitCredentials","accountSIDError","accountSID","authTokenError","authToken","phoneError","phone","statusBlock","statusContent","popupBtnBlock","connectionBtn","instructionBtn","WitAiIntegrationTemplate","isConnected","witAiConfigs","newIsConnected","updateTelegramCredentials","setAccessToken","setIsError","telegramConfigs","handleSubmit","isValidFields","updateWhatsApp360DialogConfigs","setApiKey","setPhone","isApiKeyError","setIsApiKeyError","isPhoneError","setIsPhoneError","numbersOnly","apiKeyError","NewIntegrations","itemContainer","tabIcon","box","circle","btnWhite","btnSimple","itemDisabled","itemImg","itemBtn","itemBtnDisabled","TableRow","tableRow","TableCell","tableCell","flexGrow","Table","titleContainer","paddingLeft","paginationComponent","tableCellText","Dialog","DialogTitle","DialogActions","DeleteAccess","submit","disableTypography","DeleteAccessExport","ShareModal","isCorrect","testArrBegPos","testArr","checkEmail","receiverRole","receiverEmail","clearable","updateRole","closeContainer","Users","searchUser","removeAccess","closeShareModal","newRole","updateBotAccessorRole","supportRequestNotify","updateBotAccessorSupportRequestNotifying","handleSearchUser","submitButtonText","isInvited","accessor","userImageContainer","userStatus","active","tableCellData","o","updateSupportNotifying","addNewLanguageBtn","evenRow","notEvenRow","deleteLanguageBtn","newLanguageModalHeader","newLanguageModalLabel","languageError","deleteModalHeader","onButtonClick","availableLanguagesLength","onLanguageDelete","deleteModal","setDeleteModal","isEven","NewLanguageModal","isLanguageSelected","checkWhetherLanguageSelected","setActiveLoader","updateSelectedLanguage","closeAddLanguageModal","availableLanguages","handleLanguageSubmit","Languages","activeLoader","setAddLanguageModal","addLanguageModal","setDeleteLanguageModal","deleteLanguageModal","deleteLanguage","botAvailableLanguagesList","newBotActiveLanguagesList","lan","addLanguageToBot","newBotAvailableLanguagesList","botDefaultLanguage","Fragment","settingsRoutes","General","Integrations","NewPersistentMenu","Settings","Label","SET_BOT_WIDGET","CLEAR_WIDGET_SETTINGS","setBotWidget","widgetSettings","SET_WIDGET_DEFAULT_SETTINGS","updateWidget","widget","getWidgetDefaultSettings","LogoDropzone","errors","setErrors","uploadContainer","InputContent","ColorSelector","setColor","setAnchorEl","hex","CrossIcon","WidgetChatScreen","languageConfigs","widgetName","inputPlaceholder","nameWrap","logo","message1","messageLogo","message2","quickReply","formatValue","deepCompare","Switch","setSelectedLanguages","setHeader","setPlaceholder","errorsName","setErrorsName","errorsPlaceholder","setErrorsPlaceholder","widgetCopy","handleUpdateWidgetSettings","handleUpdateName","validateField","handleUpdatePlaceholder","form","switchersContainer","doEnableSoundNotifications","doShowPopupMessagePreview","doAskForRating","StartWidgetScreen","defaultSettings","welcomeTitle","welcomeSubtitle","startLabel","isLoginNameInputEnabled","isLoginEmailInputEnabled","nameInputPlaceholder","buttonInput","startButton","emailInputPlaceholder","widgetDefaultSettings","setTitle","setGreetingText","setStartLabel","errorsTitle","setErrorsTitle","errorsGreetingText","setErrorsGreetingText","errorsStartLabel","setErrorsStartLabel","isSelectedField","handleUpdateTitle","handleUpdateGreetingText","handleUpdateStartLabel","Popover","DeleteIcon","greetings","onToggleEditModal","onToggleDeleteModal","onToggleEditDefaultModal","openedPopoverId","setOpenedPopoverId","handleClosePopover","greeting","sent","opened","handleSwitch","handleEditDefaultGreeting","handleOpenPopover","editButton","handleEditGreeting","handleDeleteGreeting","selectedGreeting","ModalTemplate","onSave","customFooter","RadioButtonGroup","selectCustom","setSelectCustom","optionActive","delaySeconds","setDelaySeconds","errorsDelaySeconds","setErrorsDelaySeconds","greetingCopy","validateGreetingText","validateDelayTime","isValidGreetingText","isValidDelayTime","GeneralTab","validateName","CustomizationTab","atomSelectTouched","setAtomSelectTouched","startAtomId","validateStringLength","greetingData","setGreeting","setSaveTime","handleUpdateGreeting","newGreeting","validateGreeting","errorAtGeneral","errorAtCustomization","setSelectedGreeting","openDeleteModal","setOpenDeleteModal","openAddModal","setOpenAddModal","openEditModal","setEditDeleteModal","openEditDefaultModal","setEditDefaultDeleteModal","handleToggleAddGreetingModal","handleToggleEditGreetingModal","handleToggleEditDefaultGreetingModal","handleToggleDeleteGreetingModal","Url","deleteWebUrl","webUrls","editWebUrl","handleText","invalidValue","dark","iconsHolder","editUrl","Urls","uniqueFind","checkIfUrlUnique","addUrl","checkUnique","showInvalid","pushUrl","errorIndex","websiteUrl","newWebsiteUrl","urls","grayColor","scriptSnipped","snippet","scriptChatbotUrl","widgetRoutes","AppearanceTab","WelcomeScreen","websiteUrls","initialColors","initialDataSet","borderWidth","hoverBackgroundColor","hoverBorderColor","chartOptions","maintainAspectRatio","animation","hover","responsiveAnimationDuration","scales","xAxes","gridLines","ticks","beginAtZero","Chart","handleSelectedBar","selectedBar","dataSet","setDataSet","dataSetCopy","evt","copyDataSet","formedIndex","abs","_index","SET_ANALYTICS","SET_COMMENTS","SET_MORE_COMMENTS","getRatingDistribution","analytics","getComments","sortBy","sortDirection","score","comments","getMoreComments","CheckIcon","PopoverItem","showCheck","filterItem","SORT_DATE","SORT_SCORE","DIRECTION_ASC","DIRECTION_DESK","CommentsFilter","setSortDirection","setSortBy","sortLabel","selectButton","divider","Comment","nameContainer","repeat","comment","fromDate","toDate","sortDirectionSaved","sortBySaved","clearState","saveSortDirection","saveSortBy","commentsContainer","feedbacks","round","averageScore","rateWrap","totalFeedbacks","setSelectedBar","chartWrap","distribution","FunnelsHeader","onOpen","funnels","onOpenDeleteModal","funnel","steps","totalConversations","completionPercentage","handleDetails","handleEdit","copyFunnel","isCopy","handleCopy","Divider","multiValue","atomValues","FunnelModalFooter","showButton","funnelData","atomIds","stepNumber","newStep","_apiMethod","Api","SET_FUNNELS","ADD_FUNNEL","UPDATE_FUNNEL","DELETE_FUNNEL","CLEAR_FUNNELS_STATE","setFunnels","addFunnels","updateFunnelAction","deleteFunnelAction","funnelId","clearFunnelsState","SET_FUNNEL","setFunnel","clearFunnelState","getFunnels","api","post","newFunnel","patch","delete","getFunnel","getConversations","conversationId","selectedFunnel","errorsSteps","setErrorsSteps","initialState","cbRef","setStateCallback","useCallback","cb","useStateCallback","containerEndRef","funnelCopy","errorsStepsCopy","handleScrollToBottom","validateSteps","validateFunnel","nameError","stepsError","updateFunnel","addFunnel","stepWrap","handleUpdateStep","handleDeleteStep","deleteFunnel","handleToggleDeleteModal","handleToggleFunnelModal","tableWrap","setFromDate","setToDate","Tooltip","conversationPercentage","layout","conversationCount","barPercentage","yAxes","plugins","sum","pagesText","ExternalLinkIcon","conversation","profilePicture","selectedStepNumber","atomNames","stepName","setMessages","getConversation","setFilter","setConversation","showConversation","setShowConversation","updateConversation","conversations","navigationContainer","ConversationsSelector","setSelectedStep","chartContainerSelected","chartContainer","selectedStepId","AnalyticsContainer","ComponentNames","Analytics","Flows","Dashboard","Support","Widget","BotSettings","mainRoutes","ChatContainer","WidgetContainer","PermissionDenied","RobotIcon","ErrorBoundary","errorInfo","Sentry","SAVE_ACCOUNT_SETTINGS","saveAccountSettings","accountSettings","getAccountSettings","updateAccountSettings","dropImage","imgContainerStyles","statusStyles","UserMenu","popper","userImg","list","account","setAdminId","anchorRef","getImage","activeColor","isLoader","handleLogout","handleChangeStatus","handleListKeyDown","prevOpen","disablePortal","TransitionProps","autoFocusItem","inputProps","redirectToAccountSettings","ArrowLeft","MainMenu","redirectToBots","ifCreateSocket","supportRequests","isFunnel","BrowserRouter","appFrame","appBar","Toolbar","disableGutters","backToAnalytics","homeButton","testButton","menuWrap","supportAmount","transitions","create","easing","sharp","leavingScreen","appBarShift","enteringScreen","hide","mixins","toolbar","NewBotModal","checkInputFields","botError","botErrorType","botErrorText","clientToken","developerToken","checkBotName","withDialogFlow","toggleLoader","errorHandler","dialogflowDevToken","dialogflowClientToken","new","callbackError","createNewBotAPI","newState","borderLine","BotPlate","openModal","openModalClone","newUserToday","switchBot","CreateNewBot","itemText","HomeHeader","headerInner","titleCenter","backButton","backUrl","Bots","Home","reason","bodyProps","autoHideDuration","ContentProps","Unavailable","handleGoDashboard","redirectToAdmin","backToDashboardButton","MobileSupport","write","EmailConfirmation","confirmed","invalidLink","getConfirmationStatus","parseQueryParams","AfterSignUp","innerContainer","font","emailText","StyledToastContainer","styled","ToastContainer","attrs","Slide","draggable","newestOnTop","hideProgressBar","UserImageDropzone","dropzone","hoverBlock","attachmentImage","setAttachmentImage","isLoading","setIsLoading","getImg","setFormValue","handleDropImage","handleDisableBtn","AccountSettingsForm","formImgItem","formItem","btnHolder","useForm","register","isDisabledBtn","setIsDisabledBtn","prevData","AccountContainer","App","askForNotification","app","isAuthenticated","_getAtoms","convertSearchAtoms","flowsMap","_filterAssignedToMeUsers","_filterNewRequestsUsers","_filterExpiredRequestsUsers","_filterAssignedRequestsUsers","_filterAllUsers","_updateUserAssignedToMe","rule","_updateUser","_updateUserExpired","_updateUserAssigned","_updateUserNew","_updateAllUser","isNewUser","_updateUserUnreadMessages","unreadMessage","lastMessage","botActive","openedAt","Reducers","combineReducers","createMuiTheme","medium","azure","semiAzure","sentryReduxEnhancer","createStore","reducer","createBrowserHistory","dsn","SENTRY_DSN","integrations","BrowserTracing","routingInstrumentation","tracesSampleRate","ReactDOM","utils","DateFnsUtils","getElementById"],"mappings":"uHACAA,EAAOC,QAAU,CAAC,UAAY,0BAA0B,WAAa,2BAA2B,KAAO,qBAAqB,UAAY,0BAA0B,IAAM,oBAAoB,KAAO,qBAAqB,MAAQ,wB,mBCDhOC,OAAOC,UAAUC,wBAA0B,SAASC,EAAKC,GAEvD,OAAOC,OADkC,IAAvBA,KAAKC,QAAQ,KAAc,IAAM,KACzBH,EAAM,IAAMC,I,2PCC3BG,EAAmB,mBACnBC,EAAuB,uBAEvBC,EAAe,SAAAC,GAAK,OAC/BC,GAAMC,SAAS,CACbC,KAAMN,EACNO,SAAU,CACRJ,MAAOA,EACPK,eAAe,MAIRC,EAAS,WACpBC,SAAc,eAAgB,CAAEC,KAAM,MACtCP,GAAMC,SAAS,CACbC,KAAML,EACNM,SAAU,CACRJ,MAAO,KACPK,eAAe,M,qCCrBfI,EAA2C,cAA7BC,OAAOC,SAASC,SAEvBC,EACXC,mIAAYC,uBACXN,EAAc,wBAA0BC,OAAOC,SAASK,SAAW,KAAON,OAAOC,SAASC,UAGhFK,EAAcH,mIAAYI,uBAAyBL,EAAa,OAEhEM,EAAWL,mIAAYM,oBAAsBH,EAAc,WAE3DI,EAAYP,mIAAYQ,qBAAuB,SAE/CC,EAA8D,MAA3CT,mIAAYU,2B,mBCsF7BC,wBAhGA,SAAAC,GAAK,MAAK,CACvBC,eAAgB,CACdC,SAAU,WACVC,QAAS,OACTC,cAAe,SACfC,MAAO,OACPC,UAAW,QAEbC,MAAO,CACLF,MAAO,OACPG,OAAQ,OACRC,OAAQ,aACRC,QAAS,SACTC,OAAQ,oBACRC,aAAc,OACdC,WAAY,mBACZC,UAAW,aACXC,gBAAiB,aACjB,UAAW,CACTC,QAAS,OACTC,YAAa,WAEf,UAAW,CACTA,YAAa,OAEf,iBAAkB,CAChBC,MAAO,UACPC,SAAU,OACVC,WAAY,OAEd,aAAc,CACZC,gBAAiB,YAGrBC,MAAO,CACLH,SAAU,OACVD,MAAO,UACPT,OAAQ,IACRW,WAAY,OAEdG,WAAY,CACVrB,SAAU,WACVsB,MAAO,EACPN,MAAO,UACPC,SAAU,GACVb,UAAW,aAmDmB,CAAEmB,WAAW,GAAhC1B,EA/CD,SAAC,GAgBR,IAfL2B,EAeI,EAfJA,GACAC,EAcI,EAdJA,KACAlD,EAaI,EAbJA,KACAmD,EAYI,EAZJA,SACAC,EAWI,EAXJA,YACAP,EAUI,EAVJA,MACAC,EASI,EATJA,WACAO,EAQI,EARJA,SACAC,EAOI,EAPJA,SACAC,EAMI,EANJA,OACAC,EAKI,EALJA,aACAC,EAII,EAJJA,SACAC,EAGI,EAHJA,UACAC,EAEI,EAFJA,mBACAC,EACI,EADJA,QAUA,OACE,sBAAKC,UAAWD,EAAQpC,eAAxB,UACE,uBAAOqC,UAAWD,EAAQf,MAA1B,SAAkCA,IAClC,uBACEgB,UAAS,UAAKD,EAAQ9B,MAAb,YAAsBuB,EAAW,QAAU,IACpDJ,GAAIA,EACJC,KAAMA,EACNQ,UAAWA,EACX1D,KAAMA,EACNoD,YAAaA,EACbE,SAAUA,EACVC,OAAQA,EACRE,SAAUA,EACVD,aAAcA,EACdM,WAtBiB,SAAAC,GACP,UAAVA,EAAEzE,KACAqE,GACFA,KAoBAR,SAAUA,IAEXE,GAAY,mBAAGQ,UAAWD,EAAQd,WAAtB,SAAmCA,U,qBCtCvCxB,wBAnDA,iBAAO,CACpB0C,uBAAwB,CAAEvC,SAAU,YACpCwC,mBAAoB,CAClBrB,gBAAiB,cACjBV,OAAQ,OACRT,SAAU,WACVyC,IAAK,OACLnB,MAAO,OACPd,QAAS,EACTF,OAAQ,OACRH,MAAO,OACPuC,OAAQ,UACR,QAAS,CACPC,SAAU,OACVC,UAAW,SAGfC,QAAS,CAAE7B,MAAO,cAkCc,CAAEO,WAAW,GAAhC1B,EA/BO,SAAC,GAAgC,IAA9BsC,EAA6B,EAA7BA,QAAYW,EAAiB,iBACpD,EAAwCC,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEMC,EAAYC,mBAChB,kBAAOH,EAAe,WAAa,SACnC,CAACA,IAEGI,EAAWD,mBACf,kBAAOH,EAAe,aAAe,mBACrC,CAACA,IAQH,OACE,sBAAKZ,UAAWD,EAAQI,uBAAxB,UACE,cAAC,EAAD,2BAAWO,GAAX,IAAuBvE,KAAM2E,EAAWxB,UAAU,KAClD,wBACEnD,KAAK,SACL6D,UAAWD,EAAQK,mBACnBa,QAX2B,SAAAf,GAC/BA,EAAEgB,iBACFL,GAAiBD,IAUbO,SAAS,KAJX,SAKE,mBAAGnB,UAAS,yBAAoBD,EAAQU,SAAxC,SAAoDO,YClB7CvD,wBA7BA,SAAAC,GAAK,MAAK,CACvB0D,OAAQ,CACNlD,OAAQ,OACRI,aAAc,OACdD,OAAQ,OACRS,WAAY,IACZuC,WAAY,SACZxC,SAAU,OACVb,UAAW,SACXI,QAAS,SACTQ,MAAO,OACP0B,OAAQ,UACRgB,WAAY5D,EAAM6D,QAAQC,QAAQC,KAClCC,UAAW,wCACX,UAAW,CACTC,UAAW,cACXC,WAAY,uBAagB,CAAEzC,WAAW,GAAhC1B,EARA,SAAC,GAAsC,EAApCtB,KAAqC,IAA/B0F,EAA8B,EAA9BA,MAAOZ,EAAuB,EAAvBA,QAASlB,EAAc,EAAdA,QACtC,OACE,wBAAQC,UAAWD,EAAQqB,OAAQH,QAASA,EAA5C,SACGY,OC3BMC,EAAgB,SAAAC,GAC3B,OAAY,MAARA,GAEmB,KADvBA,EAAOA,EAAKC,QACAC,SAAiBF,EAAKC,QAA0B,MAAhBD,EAAKC,QCQ7CE,EAAsB,4BAEtBC,E,kDACJ,WAAYC,GAAQ,IAAD,8BACjB,cAAMA,IASRC,qBAAuB,SAAAnC,GACrB,EAAKoC,SAAS,CAAEC,SAAUrC,EAAEsC,OAAO9G,SAXlB,EAcnB+G,qBAAuB,SAAAvC,GACrB,EAAKoC,SAAS,CAAEI,SAAUxC,EAAEsC,OAAO9G,SAflB,EAkBnBiH,UAAY,SAAAC,GAAkB,OAC5B,EAAKN,SAAS,CACZO,aAAcD,GAEV,EAAKE,MAAMD,aACfE,OAAO,KAvBQ,EA0BnBC,kBAAoB,WAClB,MAA+B,EAAKF,MAA5BP,EAAR,EAAQA,SAAUG,EAAlB,EAAkBA,SACbH,GAAaG,ECsBf,SAAeO,GACpB,OAAOC,MACLjG,EACE,gBACAgG,EAAKV,SACL,aACAU,EAAKP,SACP,CACES,OAAQ,OACRC,YAAa,gBDtBfC,CAJa,CACXd,WACAG,SAAUY,IAAOC,OAAOb,KAGvBc,MAAK,SAAAC,GACJ,GAAIA,EAASC,GAAI,CACf,IAAM1H,EAAQyH,EAASE,QAAQC,IAAI,iBACnC,GAAc,OAAV5H,EAAgB,CAClBO,IAAOsH,KAAK,eAAgB7H,EAAO,CAAEQ,KAAM,MAC3C,IAAMsH,EAAO,CAAEC,SAAU1G,EAAY,KACrC,EAAK+E,MAAM4B,yBAAyBhI,EAAO8H,SAGzCL,EAASQ,QAAU,KACrBR,EAASS,OAAOV,MAAK,SAAAzB,GAAI,OAAI,EAAKY,UAAUZ,EAAKoC,eAItDC,MAAM,EAAKzB,WAvBZ,EAAKA,UAAUT,IA3BjB,EAAKY,MAAQ,CACXP,SAAU,GACVG,SAAU,GACVK,OAAO,EACPF,aAAc,IANC,E,0CAuDnB,WACE,MAA4ClH,KAAKyG,MAAjCrC,EAAhB,EAAQsE,OAAiBC,EAAzB,EAAyBA,eACzB,EAAgC3I,KAAKmH,MAA7BC,EAAR,EAAQA,MAAOF,EAAf,EAAeA,aAEf,OACE,uBAAM7C,UAAWD,EAAQ0B,KAAzB,UACE,sBAAKzB,UAAS,UAAKD,EAAQwE,SAAb,2BAAd,UACE,oBAAIvE,UAAWD,EAAQyE,UAAvB,qBAEA,sBAAKxE,UAAWD,EAAQ0E,QAAxB,UACE,cAAC,EAAD,CACErF,GAAG,QACHC,KAAK,QACLlD,KAAK,QACLoD,YAAY,kBACZP,MAAM,QACNC,WAAW,GACXK,UAAU,EACVG,SAAU9D,KAAK0G,qBACfvC,mBAAoBnE,KAAKqH,oBAG3B,cAAC,EAAD,CACE5D,GAAG,WACHC,KAAK,WACLE,YAAY,gBACZP,MAAM,WACNC,WAAW,GACXQ,SAAU9D,KAAK8G,qBACf3C,mBAAoBnE,KAAKqH,oBAG1BD,EACC,qBAAK/C,UAAU,gBAAf,SACI8B,EAAce,GAEZX,EADAW,IAIN,2BAGJ,cAAC,EAAD,CACE1G,KAAK,SACL0F,MAAM,UACNZ,QAAStF,KAAKqH,oBAEhB,cAAC0B,EAAA,EAAD,CAAM1E,UAAWD,EAAQ4E,mBAAoBC,GAAI,mBAAjD,sCAIF,uBACCN,GACC,uBAAMtE,UAAWD,EAAQ8E,WAAzB,wCAC6B,cAACH,EAAA,EAAD,CAAME,GAAI,WAAV,+B,GA9GfE,IAAMC,WAsHfC,cAAW7C,GEtHX8C,G,OAVK,SAAA7C,GAClB,OAAOA,EAAM8C,WACX,qBAAKlF,UAAU,eAAf,SACE,qBAAKmF,IAAI,8BAA8BC,IAAI,aAG7C,0BCkBW3H,wBAvBA,SAAAC,GAAK,MAAK,CACvB2H,uBAAwB,CACtBzH,SAAU,WACVC,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZlF,IAAK,IACLmF,OAAQ,IACRC,KAAM,IACNvG,MAAO,IACPoC,WAAY,2BACZoE,OAAQ,YAYsB,CAAEvG,WAAW,GAAhC1B,EARO,SAAC,GAAiB,IAAfsC,EAAc,EAAdA,QACvB,OACE,qBAAKC,UAAWD,EAAQsF,uBAAxB,SACE,cAAC,EAAD,CAAaH,YAAY,SCoBhBF,cAAWvH,sBArCX,SAAAC,GAAK,MAAK,CACvBmE,MAAO,CACLhD,SAAU,OACVC,WAAY,MACZX,OAAQ,EACRS,MAAO,WAET+G,SAAU,CACR9G,SAAU,OACVD,MAAO,UACPgH,UAAW,OACXC,aAAc,OACd/G,WAAY,UAyB6B,CAAEK,WAAW,GAAhC1B,EArBN,SAAC,GAOd,IANLsC,EAMI,EANJA,QACA8B,EAKI,EALJA,MACA8D,EAII,EAJJA,SACAG,EAGI,EAHJA,YACAC,EAEI,EAFJA,UACAC,EACI,EADJA,QAMA,OACE,gCACE,oBAAIhG,UAAWD,EAAQ8B,MAAvB,SAA+BA,IAC/B,oBAAI7B,UAAWD,EAAQ4F,SAAvB,SAAkCA,IAClC,cAAC,EAAD,CAAQ9D,MAAOiE,EAAa7E,QARN,WACxB+E,EAAQC,KAAKF,aC9BJG,EAAkB,SAAAC,GAAK,MAClC,mDAAmDC,KAAKD,ICmBpDE,E,kDACJ,WAAYjE,GAAQ,IAAD,8BACjB,cAAMA,IAURkE,kBAAoB,SAAApG,GAClB,EAAKoC,SAAS,CACZ6D,MAAOjG,EAAEsC,OAAO9G,MAChB6K,YAAaL,EAAgBhG,EAAEsC,OAAO9G,UAdvB,EAkBnB8K,2BAA6B,WACtB,EAAK1D,MAAMqD,MAOZ,EAAKrD,MAAMyD,aAIf,EAAKjE,SAAS,CACZmE,0BAA0B,IL5BzB,SAA8BN,GACnC,IAAMxC,EAAU,IAAI+C,QAEpB,OADA/C,EAAQgD,OAAO,eAAgB,kCACxBzD,MAAMjG,EAAc,8BAA+B,CACxDkG,OAAQ,OACRQ,QAASA,EACTP,YAAa,cACbwD,KAAMC,KAAKC,UAAU,CAAEX,YKwBvBY,CAAqB,EAAKjE,MAAMqD,OAAO3C,MAAK,SAAAC,GACtCA,EAASC,GACX,EAAKpB,SAAS,CACZ0E,wBAAwB,EACxBP,0BAA0B,IAGJ,MAApBhD,EAASQ,OACXR,EAASS,OAAOV,MAAK,SAAAzB,GACnB,EAAKO,SAAS,CACZS,OAAO,EACPF,aAAcd,EAAKoC,QACnBsC,0BAA0B,OAI9B,EAAKnE,SAAS,CACZS,OAAO,EACP0D,0BAA0B,QAhChC,EAAKnE,SAAS,CACZiE,YAAY,KArBC,EA2DnBU,yBAA2B,SAAAlH,GACzB,OAAI,EAAK+C,MAAMkE,uBAEX,qBAAKhH,UAAS,UAAKD,EAAQwE,SAAb,2BAAd,SACE,qBAAKvE,UAAWD,EAAQmH,mBAAxB,SACE,cAAC,EAAD,CACErF,MAAM,sBACN8D,SAAS,6EACTG,YAAY,gBACZC,UAAU,eAQlB,qBAAK/F,UAAS,UAAKD,EAAQwE,SAAb,2BAAd,SACE,sBAAKvE,UAAWD,EAAQmH,mBAAxB,UACG,EAAKpE,MAAM2D,0BAA4B,cAAC,EAAD,IAExC,oBAAIzG,UAAWD,EAAQyE,UAAvB,iCACA,sBAAKxE,UAAWD,EAAQ0E,QAAxB,UACE,cAAC,EAAD,CACErF,GAAG,QACHjD,KAAK,QACLoD,YAAY,0BACZP,MAAM,qBACNC,WAAW,sBACXK,UAAU,EACVE,SAAU,EAAKsD,MAAMyD,WACrB9G,SAAU,EAAK6G,kBACfxG,mBAAoB,EAAK0G,6BAG1B,EAAK1D,MAAMC,MACV,qBAAK/C,UAAWD,EAAQ8C,aAAxB,SACIf,EAAc,EAAKgB,MAAMD,cAEvB,0CADA,EAAKC,MAAMD,eAIjB,2BAGJ,oBAAI7C,UAAWD,EAAQoH,uBAAvB,8DAGA,cAAC,EAAD,CACEhL,KAAK,SACL0F,MAAM,2BACNZ,QAAS,EAAKuF,mCA5GtB,EAAK1D,MAAQ,CACXqD,MAAO,GACPI,YAAY,EACZxD,OAAO,EACP0D,0BAA0B,EAC1BO,wBAAwB,GAPT,E,0CAqHnB,WACE,IAAMjH,EAAO,2BAAQpE,KAAKyG,MAAMiC,QAAW1I,KAAKyG,MAAMrC,SAEtD,OACE,uBAAMC,UAAWD,EAAQ0B,KAAzB,UACG9F,KAAKsL,yBAAyBlH,GAC/B,uBACA,uBAAMC,UAAWD,EAAQ8E,WAAzB,uCAC4B,cAACH,EAAA,EAAD,CAAME,GAAI,SAAV,+B,GA9HHE,IAAMC,WAqIxBtH,wBA9IA,SAAAC,GAAK,MAAK,CACvBwJ,mBAAoB,CAClBtJ,SAAU,YAEZiF,aAAc,CACZgD,aAAc,WAyIgB,CAAE1G,WAAW,GAAhC1B,CAAwC4I,G,mBC1ExCrB,eACbvH,sBA5Ea,iBAAO,CACpBgE,KAAM,CACJ5D,QAAS,OACTC,cAAe,SACfwH,eAAgB,SAChBC,WAAY,SACZnH,QAAS,OACTW,gBAAiB,QACjBf,UAAW,UAEboJ,cAAe,CACbrJ,MAAO,OACPG,OAAQ,QAEVmJ,WAAY,CACVxI,SAAU,OACVwC,WAAY,EACZzC,MAAO,UACPT,OAAQ,eAEVmJ,eAAgB,CACdzI,SAAU,OACVwC,WAAY,OACZvC,WAAY,SACZX,OAAQ,EACRS,MAAO,WAETwC,OAAQ,CACNlD,OAAQ,OACRI,aAAc,OACdD,OAAQ,OACRS,WAAY,IACZuC,WAAY,SACZxC,SAAU,OACVb,UAAW,SACXI,QAAS,SACTQ,MAAO,OACP0B,OAAQ,UACRgB,WAAY,UACZI,UAAW,wCACXvD,OAAQ,WACR,UAAW,CACTwD,UAAW,cACXC,WAAY,uBAiCG,CAAEzC,WAAW,GAAhC1B,EA5BuB,SAAC,GAOnB,IANLsC,EAMI,EANJA,QACA+F,EAKI,EALJA,YACAC,EAII,EAJJA,UACAlE,EAGI,EAHJA,MACA8D,EAEI,EAFJA,SACAK,EACI,EADJA,QAMA,OACE,uBAAMhG,UAAWD,EAAQ0B,KAAzB,UACE,qBAAKzB,UAAWD,EAAQqH,cAAejC,IAAI,8BAE3C,oBAAInF,UAAWD,EAAQsH,WAAvB,SAAoCxF,IAEnC8D,GAAY,mBAAG3F,UAAWD,EAAQuH,eAAtB,SAAuC3B,IAEpD,wBAAQ3F,UAAWD,EAAQqB,OAAQH,QAZb,WACxB+E,EAAQC,KAAKF,IAWX,SACGD,WCxCHyB,G,kDACJ,WAAYnF,GAAQ,IAAD,uBACjB,cAAMA,IAyDRoF,qBAAuB,SAAAtH,GACrB,EAAKoC,SAAS,CACZI,SAAUxC,EAAEsC,OAAO9G,MACnB+L,cAAevH,EAAEsC,OAAO9G,MAAMuG,OAAS,EACvCyF,qBACE,EAAK5E,MAAM6E,gBAAgB1F,OAAS,GACpC/B,EAAEsC,OAAO9G,QAAU,EAAKoH,MAAM6E,mBAhEjB,EAmEnBC,4BAA8B,SAAA1H,GAC5B,EAAKoC,SAAS,CACZqF,gBAAiBzH,EAAEsC,OAAO9G,MAC1BgM,qBAAsB,EAAK5E,MAAMJ,WAAaxC,EAAEsC,OAAO9G,SAtExC,EA0EnB8K,2BAA6B,SAAAtG,GAC3B,IAAK,EAAK4C,MAAM6E,kBAAoB,EAAK7E,MAAMJ,SAS7C,OARK,EAAKI,MAAM6E,iBACd,EAAKrF,SAAS,CACZoF,sBAAsB,SAErB,EAAK5E,MAAMJ,UACd,EAAKJ,SAAS,CACZmF,eAAe,KAKnB,EAAK3E,MAAM2E,eACX,EAAK3E,MAAM4E,sBACX5F,EAAc,EAAKgB,MAAMJ,WAzFV,EA+FnBmF,yBAA2B,SAAA3H,GACzBA,EAAEgB,iBACF,EAAKoB,SAAS,CACZ1B,cAAe,EAAKkC,MAAMlC,gBAlGX,EAsGnB4F,2BAA6B,SAAAtG,GAC3B,IAAK,EAAK4C,MAAM6E,kBAAoB,EAAK7E,MAAMJ,SAS7C,OARK,EAAKI,MAAM6E,iBACd,EAAKrF,SAAS,CACZoF,sBAAsB,SAErB,EAAK5E,MAAMJ,UACd,EAAKJ,SAAS,CACZmF,eAAe,KAKnB,EAAK3E,MAAM2E,eACX,EAAK3E,MAAM4E,sBACX5F,EAAc,EAAKgB,MAAMJ,YAK3B,EAAKJ,SAAS,CACZwF,0BAA0B,IP/GzB,SAA2C9L,EAAO+L,GACvD,IAAMpE,EAAU,IAAI+C,QAEpB,OADA/C,EAAQgD,OAAO,eAAgB,kCACxBzD,MAAMjG,EAAc,gCAAiC,CAC1DkG,OAAQ,OACRQ,QAASA,EACTP,YAAa,cACbwD,KAAMC,KAAKC,UAAU,CAAE9K,QAAO+L,kBO2G9BC,CACE,EAAKlF,MAAMmF,mBACX3E,IAAOC,OAAO,EAAKT,MAAMJ,WACzBc,MAAK,SAAAC,GACDA,EAASC,GACX,EAAKpB,SAAS,CACZ4F,6BAA6B,EAC7BJ,0BAA0B,KAGJ,MAApBrE,EAASQ,QACXR,EAASS,OAAOV,MAAK,SAAAzB,GACnB,EAAKO,SAAS,CAAEO,aAAcd,EAAKoC,aAGvC,EAAK7B,SAAS,CACZS,OAAO,EACP+E,0BAA0B,UA/If,EAqJnBK,yBAA2B,SAAApI,GACzB,MAMI,EAAK+C,MALPsF,EADF,EACEA,6BACAC,EAFF,EAEEA,yBACAC,EAHF,EAGEA,kBACAR,EAJF,EAIEA,yBACAI,EALF,EAKEA,4BAIF,OAAKE,GAAgCC,EAC5B,cAAC,EAAD,CAAanD,YAAY,IAE7BoD,EAYDJ,EAEA,cAAC,EAAD,CACErG,MAAM,2CACN8D,SAAS,oEACTG,YAAY,gBACZC,UAAU,WAMd,sBAAK/F,UAAWD,EAAQwI,yBAAxB,UACGT,GAA4B,cAAC,EAAD,IAC7B,oBAAI9H,UAAWD,EAAQyE,UAAvB,iCACA,sBAAKxE,UAAWD,EAAQ0E,QAAxB,UACE,cAAC,EAAD,CACErF,GAAG,WACHC,KAAK,WACLE,YAAY,eACZP,MAAM,yBACNC,WAAW,wBACXO,SAAU,EAAKsD,MAAM2E,cACrBhI,SAAU,EAAK+H,qBACf1H,mBAAoB,EAAK0G,6BAG3B,cAAC,EAAD,CACEpH,GAAG,kBACHC,KAAK,kBACLE,YAAY,uBACZP,MAAM,uBACNC,WAAW,wBACXO,SAAU,EAAKsD,MAAM4E,qBACrBjI,SAAU,EAAKmI,4BACf9H,mBAAoB,EAAK0G,6BAG1B,EAAK1D,MAAMC,MACV,qBAAK/C,UAAU,gBAAf,SACI8B,EAAc,EAAKgB,MAAMD,cAEvB,0CADA,EAAKC,MAAMD,eAIjB,2BAGJ,cAAC,EAAD,CACE1G,KAAK,SACL0F,MAAM,OACNZ,QAAS,EAAKuF,gCA7DhB,cAAC,GAAD,CACEgC,aAAa,EACb3G,MAAM,4CACN8D,SAAS,+DACTG,YAAY,mBACZC,UAAU,YAtKhB,IACIkC,EADcQ,KAAYC,MAAM,EAAKtG,MAAMzF,SAASgM,QACrBC,EAC/BR,GAA+B,EALlB,OAMZtG,EAAcmG,IAKjBA,EAAqBY,eAAeC,QAAQ,sBACxChH,EAAcmG,KAChBG,GAA+B,KANjCA,GAA+B,EAC/B,EAAKhG,MAAM4D,QAAQ+C,QAAQ,EAAK3G,MAAM4D,QAAQrJ,SAASoH,UACvD8E,eAAeG,QAAQ,qBAAsBf,IAQ/C,EAAKnF,MAAQ,CACXJ,SAAU,GACViF,gBAAiB,GACjBF,eAAe,EACfC,sBAAsB,EACtB3E,OAAO,EACPF,aAAc,GACdjC,cAAc,EACdqH,qBACAG,+BACAE,mBAAmB,EACnBD,0BAA0B,EAC1BP,0BAA0B,EAC1BI,6BAA6B,GA9Bd,E,qDAkCnB,WAAqB,IAAD,OACdvM,KAAKmH,MAAMsF,8BPlCZ,SAAoCpM,GACzC,IAAM2H,EAAU,IAAI+C,QAEpB,OADA/C,EAAQgD,OAAO,eAAgB,kCACxBzD,MAAMjG,EAAc,+BAAgC,CACzDkG,OAAQ,OACRQ,QAASA,EACTP,YAAa,cACbwD,KAAMC,KAAKC,UAAU,CAAE9K,YO+BvBiN,CAA2BtN,KAAKmH,MAAMmF,oBAAoBzE,MAAK,SAAAC,GACzDA,EAASC,GACXD,EAASS,OAAOV,MAAK,SAAAC,GACnB,EAAKnB,SAAS,CACZ8F,8BAA8B,EAC9BE,mBAAsC,IAAnB7E,EAASyF,WAIhC,EAAK5G,SAAS,CACZ8F,8BAA8B,EAC9BC,0BAA0B,S,oBAqLlC,WACE,IAAMtI,EAAO,2BAAQpE,KAAKyG,MAAMrC,SAAYpE,KAAKyG,MAAMiC,QAEvD,OACE,uBAAMrE,UAAWD,EAAQ0B,KAAzB,UACE,qBAAKzB,UAAS,UAAKD,EAAQwE,SAAb,2BAAd,SACG5I,KAAKwM,yBAAyBpI,KAEjC,uBACA,uBAAMC,UAAWD,EAAQ8E,WAAzB,uCAC4B,cAACH,EAAA,EAAD,CAAME,GAAI,SAAV,+B,GAlPJE,IAAMC,WAyPvBC,eACbvH,sBA1Qa,SAAAC,GAAK,MAAK,CACvB6K,yBAA0B,CACxB3K,SAAU,YAEZ,UAAW,CACT,4BAA6B,CAC3B2G,SAAU,CACRvG,UAAW,SACXuC,SAAU,QACV4I,UAAW,MACXhL,OAAQ,aAgQK,CAAEgB,WAAW,GAAhC1B,CAAwC8J,K,SC/PpC6B,G,kDACJ,WAAYhH,GAAQ,IAAD,8BACjB,cAAMA,IA0BRiH,aAAe,SAACC,EAAOxG,EAAOC,GAC5B,EAAKT,SAAL,gBAAiBQ,EAAQwG,EAAM9G,OAAO9G,QACtC,EAAK4G,SAAL,gBAAiBS,GAASuG,EAAM9G,OAAO+G,mBA7BtB,EAgCnBC,wBAA0B,SAAC9G,EAAUiF,GAC9B7F,EAAc6F,IACjB,EAAKrF,SAAS,CACZqF,gBAAiBA,EACjB8B,0BAA2B/G,IAAaiF,KApC3B,EAyCnBrB,kBAAoB,SAAApG,GAClB,IAAMiG,EAAQjG,EAAEsC,OAAO9G,MACvB,EAAK4G,SAAS,CACZ6D,MAAOA,EACPuD,6BAA6B,EAC7BC,iBAAkBzD,EAAgBC,MA9CnB,EAkDnByD,eAAiB,SAAC1J,EAAG4C,GACnB5C,EAAEgB,iBACF,EAAKoB,SAAL,gBAAiBQ,GAAS,EAAKA,MAAMA,MApDpB,EAuDnB+G,qBAAuB,WACrB,IAAMC,EAAU,EAAK1H,MAAM0H,QAC3B,GAAK,EAAKC,cAAV,CAIA,IAAMC,EAAkB1G,IAAOC,OAAO,EAAKT,MAAMJ,UAC3CO,EAAO,CACX5D,KAAM,EAAKyD,MAAMP,SACjBG,SAAUsH,GAGRF,EACF,EAAKG,kBAAkBhH,GAEvB,EAAKiH,WAAWjH,KAtED,EA2EnB8G,YAAc,WAKZ,OAJA,EAAKI,iBAAiB,iBAAkB,YACxC,EAAKA,iBAAiB,kBAAmB,SACzC,EAAKA,iBAAiB,qBAAsB,YAC5C,EAAKA,iBAAiB,4BAA6B,qBAEjD,EAAKrH,MAAMsH,gBACX,EAAKtH,MAAM6G,iBACX,EAAK7G,MAAM4G,6BACX,EAAK5G,MAAMuH,oBACX,EAAKvH,MAAM2G,4BArFI,EAyFnBU,iBAAmB,SAACG,EAAYxH,GAEzB,EAAKA,MAAMwH,IACd,EAAKhI,SAAL,gBAAiBgI,EAAaxI,EAAc,EAAKgB,MAAMA,OA1FzD,EAAKA,MAAQ,CACXP,SAAU,GACV4D,MAAO,GACPzD,SAAU,GACViF,gBAAiB,GACjB4C,iBAAiB,EACjBC,iBAAiB,EACjBC,oBAAoB,EACpBC,wBAAwB,EACxBN,gBAAgB,EAChBT,iBAAiB,EACjBD,6BAA6B,EAC7BW,oBAAoB,EACpBZ,2BAA2B,EAC3B7I,cAAc,EACd+J,qBAAqB,GAjBN,E,qDAqBnB,WACMhP,KAAKyG,MAAM0H,SACbnO,KAAKiP,sB,+BAyET,SAAkB3H,GAAO,IAAD,OACtBA,EAAK4H,KAAOlP,KAAKyG,MAAM0I,MAAMC,OAAOF,KR5HjC,SAA2B5H,GAChC,IAAMU,EAAU,IAAI+C,QAEpB,OADA/C,EAAQgD,OAAO,eAAgB,kCACxBzD,MAAMjG,EAAc,eAAgB,CACzCkG,OAAQ,OACRQ,QAASA,EACTP,YAAa,cACbwD,KAAMC,KAAKC,UAAU7D,KQsHrBgH,CAAkBhH,GAAMO,MAAK,SAAAC,GACvBA,EAASC,IACX,EAAKpB,SAAS,CAAEiI,iBAAiB,S,wBAKvC,SAAWtH,GAAO,IAAD,OACfA,EAAKkD,MAAQxK,KAAKmH,MAAMqD,MR1HrB,SAAoBlD,GACzB,IAAMU,EAAU,IAAI+C,QAEpB,OADA/C,EAAQgD,OAAO,eAAgB,kCACxBzD,MAAMjG,EAAc,eAAgB,CACzCkG,OAAQ,OACRQ,QAASA,EACTP,YAAa,cACbwD,KAAMC,KAAKC,UAAU7D,KQoHrBiH,CAAWjH,GAAMO,MAAK,SAAAC,GAChBA,EAASC,IACX,EAAKpB,SAAS,CAAEoI,wBAAwB,S,+BAK9C,WAAqB,IAAD,QRtFf,SAA0BG,GAC/B,OAAO3H,MAAMjG,EAAc,WAAa4N,EAAM,CAC5C1H,OAAQ,MACRC,YAAa,iBQqFb4H,CADarP,KAAKyG,MAAM0I,MAAMC,OAAOF,MAElCrH,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,EAAK3B,SAAS,CAAEkI,iBAAiB,SAC5B,GAAwB,MAApB/G,EAASQ,OAClB,EAAK3B,SAAS,CAAEmI,oBAAoB,SAC/B,GAAIhH,EAASC,GAClB,OAAOD,EAASS,UAGnBV,MAAK,SAAAU,GACJ,EAAK5B,SAAS,CAAE6D,MAAOjC,EAAKiC,a,oBAIlC,WAAU,IAAD,OACD2D,EAAUnO,KAAKyG,MAAM0H,QACrB/J,EAAO,2BAAQpE,KAAKyG,MAAMrC,SAAYpE,KAAKyG,MAAMiC,QACvD,EAKI1I,KAAKmH,MAJPyH,EADF,EACEA,gBACAC,EAFF,EAEEA,gBACAC,EAHF,EAGEA,mBACAC,EAJF,EAIEA,uBAEF,OAAIH,EACK,cAACU,EAAA,EAAD,CAAUrG,GAAG,WAElB4F,GAAmBC,EACd,cAACQ,EAAA,EAAD,CAAUrG,GAAG,iBAGlB8F,EAEA,cAACO,EAAA,EAAD,CACErG,GAAI,CACFb,SAAU,mBACVjB,MAAO,CAAEqD,MAAOxK,KAAKmH,MAAMqD,UAMjC,uBAAMnG,UAAWD,EAAQ0B,KAAzB,UACE,sBAAKzB,UAAS,UAAKD,EAAQwE,SAAb,2BAAd,UACE,oBAAIvE,UAAWD,EAAQyE,UAAvB,qBACA,sBAAKxE,UAAWD,EAAQ0E,QAAxB,UACE,cAAC,EAAD,CACErF,GAAG,OACHjD,KAAK,OACLmD,UAAU,EACVC,YAAY,+BACZP,MAAM,YACNC,WAAW,kBACXO,SAAU7D,KAAKmH,MAAMsH,eACrB3K,SAAU,SAAAS,GAAC,OAAI,EAAKmJ,aAAanJ,EAAG,WAAY,qBAGlD,cAAC,EAAD,CACEd,GAAG,QACHjD,KAAK,QACLmD,UAAU,EACVC,YAAY,mBACZP,MAAM,QACNC,WACEtD,KAAKmH,MAAM6G,gBACP,sBACAhO,KAAKmH,MAAM4G,4BACT,kBACA,GAER/J,aAAchE,KAAKmH,MAAMqD,MACzBvG,SAAUkK,EACVpK,OAAQ/D,KAAK2K,kBACb9G,SACE7D,KAAKmH,MAAM6G,iBACXhO,KAAKmH,MAAM4G,8BAIf,cAAC,EAAD,CACEtK,GAAG,WACHG,YAAY,kBACZP,MAAM,oBACNC,WAAW,wBACXY,UAAW,EACXJ,SAAU,SAAAS,GACR,EAAKmJ,aAAanJ,EAAG,WAAY,sBACjC,EAAKsJ,wBACHtJ,EAAEsC,OAAO9G,MACT,EAAKoH,MAAM6E,kBAGfnI,SAAU7D,KAAKmH,MAAMuH,qBAGvB,cAAC,EAAD,CACEjL,GAAG,kBACHG,YAAY,kBACZP,MAAM,wBACNC,WAAW,wBACXQ,SAAU,SAAAS,GAAC,OACT,EAAKsJ,wBACH,EAAK1G,MAAMJ,SACXxC,EAAEsC,OAAO9G,QAGb8D,SAAU7D,KAAKmH,MAAM2G,+BAGzB,cAAC,EAAD,CACEtN,KAAK,SACL0F,MAAM,WACNZ,QAAStF,KAAKkO,0BAGlB,uBACA,uBAAM7J,UAAWD,EAAQ8E,WAAzB,sCAC2B,cAACH,EAAA,EAAD,CAAME,GAAI,SAAV,+B,GA1OVG,aAiPVtH,yBA9PA,SAAAC,GAAK,MAAK,CACvB,UAAW,CACT,4BAA6B,CAC3B6G,SAAU,CACRvG,UAAW,SACXuC,SAAU,QACV4I,UAAW,MACXhL,OAAQ,aAuPkB,CAAEgB,WAAW,GAAhC1B,CAAwC2L,IC3Q1C8B,GAAgB,gBAEhBC,GAAe,SAAAC,GAC1BnP,GAAMC,SAAS,CACbC,KAAM+O,GACNE,cCFG,SAASC,KACd,IAAM1H,EAAU,IAAI+C,QAGpB,OAFA/C,EAAQgD,OAAO,eAAgB,kCAC/BhD,EAAQgD,OAAO,gBAAiB,UAAYpK,IAAO+O,KAAK,iBACjD3H,EAGF,SAAS4H,GAA8B9H,GAC5C,GAAIA,EAASC,GAAI,CACf,GAAID,EAAS+H,WACX,OAAOlP,IAEP,IAAMmP,EAAchI,EAASE,QAAQC,IAAI,gBAGzC,OAFe6H,IAA4D,IAA7CA,EAAY7P,QAAQ,oBAElC6H,EAASS,OAAST,EAAS1B,OAG/C,MAAM,IAAI2J,MAAM,oBAUX,SAASC,GAAaxH,EAASyH,GACpCT,GAAa,CACXU,MAAM,EACN9J,KAAMoC,EACN2H,SAAS,EACTF,aAGG,IAMMG,GAAgB,SAAChK,GAC5B,OAAY,MAARA,GAGoB,KADxBA,EAAOA,EAAKC,QACCC,SAAiBF,EAAKC,QAA0B,MAAhBD,EAAKC,QAG7C,SAASgK,GAAW7H,GACzBgH,GAAa,CACXU,MAAM,EACN9J,KAAMoC,EACN2H,SAAS,I,sCCYPG,G,kDACJ,WAAY7J,GAAQ,IAAD,8BACjB,cAAMA,IA8BR4B,yBAA2B,SAAChI,EAAO8H,GACjC/H,EAAaC,GACb,EAAKsG,SAAS,CAAE4J,oBAAoB,EAAMpI,UA/B1C,EAAKhB,MAAQ,CACXgB,KAAM,KACNjC,MAAO,KACPsK,SAAU,KACVC,UAAW,KACX9H,gBAAgB,EAChB4H,oBAAoB,GARL,E,qDAYnB,WAAqB,IAAD,QChFcG,EDgFd,OChFcA,EDiFZ,SAAAC,GAClB,EAAKhK,SAAS,CACZT,MAAOyK,EAAQzK,MACfsK,SAAUG,EAAQH,SAClBC,UAAWE,EAAQF,UACnB9H,eAAgBgI,EAAQhI,kBCrF9BpB,MAAM,GAAD,OAAIjG,EAAJ,uBAAsC,CACzCmG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GACJ,GAAIA,EAASC,GACX,OAAOD,EAASS,UAGnBV,MAAK,SAAAU,GACJmI,EAASnI,MD8EX,IAAMlI,EAAQO,IAAO+O,KAAK,gBAEpBxH,EAAI,UAAGnI,KAAKyG,aAAR,iBAAG,EAAYzF,gBAAf,iBAAG,EAAsBmG,aAAzB,iBAAG,EAA6BgB,YAAhC,aAAG,EAAmCC,SAE5C/H,GACFL,KAAKqI,yBAAyBhI,EAAO8H,K,oBASzC,WAAU,IAAD,OACC/D,EAAYpE,KAAKyG,MAAjBrC,QACR,EAOIpE,KAAKmH,MANPoJ,EADF,EACEA,mBACArK,EAFF,EAEEA,MACAsK,EAHF,EAGEA,SACAC,EAJF,EAIEA,UACA9H,EALF,EAKEA,eACAR,EANF,EAMEA,KAGF,OAAIoI,GAAsBpI,EACjB,cAACmH,EAAA,EAAD,CAAUrG,GAAId,IAIrB,qBAAK9D,UAAU,uBAAf,SACG6B,GAASsK,GAAYC,GACpB,sBAAKpM,UAAU,gBAAf,UACE,yBACEuM,MAAO,CACLjL,WAAW,QAAD,OAAU8K,EAAV,kCACVI,eAAgB,sBAElBxM,UAAU,yBALZ,SAME,0BAASA,UAAU,iBAAnB,UACE,oBAAIA,UAAU,cAAd,SAA6B6B,IAC7B,oBAAI7B,UAAU,eAAd,SAA8BmM,SAGlC,eAAC,IAAD,WACE,cAACM,EAAA,EAAD,CACEjQ,KAAM,iBACNkQ,UAAW,SAAAtK,GAAK,OACd,cAAC,GAAD,2BAAYA,GAAZ,IAAmB0H,SAAS,EAAMzF,OAAQtE,QAG9C,cAAC,GAAD,CACEuE,eAAgBA,EAChBqI,OAAK,EACLnQ,KAAK,WACLkQ,UAAW,kBAAM,cAAC,GAAD,CAAQrI,OAAQtE,OAEnC,cAAC0M,EAAA,EAAD,CACEjQ,KAAM,SACNkQ,UAAW,kBACT,cAAC,EAAD,CACE1I,yBAA0B,EAAKA,yBAC/BM,eAAgBA,EAChBD,OAAQtE,OAId,cAAC0M,EAAA,EAAD,CACEjQ,KAAK,mBACLkQ,UAAW,SAAAtK,GAAK,OAAI,cAAC,EAAD,CAAoBiC,OAAQtE,OAElD,cAAC0M,EAAA,EAAD,CACEjQ,KAAK,kBACLkQ,UAAW,SAAAtK,GAAK,OAAI,cAAC,GAAD,CAAmBiC,OAAQtE,mB,GAhG3CgF,aA0Gd6H,GAAe,SAAC,GAAD,IAAc7H,EAAd,EAAG2H,UAAsBpI,EAAzB,EAAyBA,eAAmBuI,EAA5C,yBACnB,cAACJ,EAAA,EAAD,2BACMI,GADN,IAEEC,OAAQ,SAAA1K,GAAK,OACVkC,EACC,cAACS,EAAD,eAAe3C,IAEf,cAAC6I,EAAA,EAAD,CACErG,GAAI,CACFb,SAAU,SACVjB,MAAO,CAAEgB,KAAM1B,EAAMzF,kBAWlBc,yBAzLI,iBAAO,CACxBgE,KAAM,CACJsL,KAAM,UACNxM,SAAU,MACV1C,QAAS,OACTC,cAAe,SACfwH,eAAgB,eAChBC,WAAY,SACZnH,QAAS,OACTR,SAAU,YAEZ,mDAAoD,CAClD6D,KAAM,CACJsL,KAAM,WACNxM,SAAU,OACV1C,QAAS,OACTC,cAAe,SACfwH,eAAgB,eAChBC,WAAY,SACZnH,QAAS,OACTR,SAAU,aAGd4G,UAAW,CACT3F,SAAU,OACVC,WAAY,MACZX,OAAQ,EACRS,MAAO,WAET2F,SAAU,CACRxG,MAAO,MACPI,OAAQ,WACRH,UAAW,UAEbyG,QAAS,CACPtG,OAAQ,aACRH,UAAW,QAEb6G,WAAY,CACVjH,SAAU,WACV4H,OAAQ,QAEVb,mBAAoB,CAClB9F,SAAU,OACVD,MAAO,OACPf,QAAS,QACTG,UAAW,SACX4H,UAAW,QAEbuB,uBAAwB,CACtBtI,SAAU,OACVD,MAAO,UACPgH,UAAW,QACXC,aAAc,OACd/G,WAAY,UAmIsB,CAAEK,WAAW,GAApC1B,CAA4CwO,I,8JEnM9Ce,GAAkB,mBCUlBC,GACJ,aAIIC,GAAe,CAC1B,CACExR,MAAOuR,GACPjO,MAAO,QACPmO,SAAU,CACR,UACA,YACA,QACA,cACA,WACA,MACA,YACA,SACA,YACA,WACA,cAGJ,CACEzR,MAtBO,eAuBPsD,MAAO,UACPmO,SAAU,CAAC,UAAW,YAAa,eAI1BC,GAAS,CACpBC,SAAU,KACVC,YAAa,GAEbC,SAJoB,WAKlBrK,MAAM/F,EAAW,gBAAiB,CAChCiG,YAAa,cACbD,OAAQ,MACRQ,QAAS0H,OAER7H,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GDjDiB,IAAAsJ,ECqDrB,OAFAJ,GAAOE,YAAcpJ,EAAKoJ,YDnDLE,ECoDPtJ,EDnDpBjI,GAAMC,SAAS,CACbC,KAAM6Q,GACNQ,cCkDWtJ,KAERE,OAAM,SAASrB,GACdiJ,GAAW,6DAKZ,SAASyB,GAAoBC,EAAOC,GAAc,IAAD,MAChDC,EAAS,OAAGR,SAAH,IAAGA,IAAH,UAAGA,GAAQE,mBAAX,aAAG,EAAqBO,QACrC,SAAAC,GAAE,OAAIA,EAAGJ,QAAUK,OAAOL,MAC1B,GAEF,OACEE,IAAS,OACTV,SADS,IACTA,IADS,UACTA,GAAcc,MACZ,SAAAC,GAAI,OAAIA,EAAKvS,QAAUkS,EAAUK,eAF1B,iBACT,EAEGd,gBAHM,aACT,EAEae,SAASP,ICxEnB,IAAMQ,GAAc,cACdC,GAAiB,iBACjBC,GAAkB,kBAQlBC,GAAe,SAAAC,GAC1BtS,GAAMC,SAAS,CACbC,KAAMiS,GACNG,eCbSC,GAAY,YCUlB,SAASC,GAAQpC,GACtBnJ,MAAM/F,EAAW,OAAQ,CACvBiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GDfc,IAAAwK,ICgBTxK,EDfbjI,GAAMC,SAAS,CACbC,KAAMqS,GACNE,SCcMrC,GAAUA,OAEfjI,OAAM,SAASrB,GACdiJ,GAAW,2DAmBV,SAAS2C,GAAOjB,GACrB,OAAOxK,MAAM/F,EAAW,QAAUuQ,EAAO,CACvCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJoK,GAAapK,MAEdE,OAAM,SAASrB,GACdiJ,GAAW,2DA8FV,SAAS4C,GAAUC,EAAKxC,GAC7BnJ,MAAM/F,EAAW,OAAQ,CACvBiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAU+H,KAEpBrL,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJoK,GAAapK,GACTmI,GAAUA,IACdV,GAAa,mCAEdvH,OAAM,SAASrB,GACdiJ,GAAW,yBAIV,SAAS8C,GAAqBpB,EAAOqB,EAAU1C,GACpDnJ,MAAM/F,EAAW,QAAUuQ,EAAQ,4BAA8BqB,EAAU,CACzE3L,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GACJ,OAAOA,EAAS+H,WACX9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCxL,EAASS,UAEdV,MAAK,SAAAU,GACAmI,GAAUA,EAASnI,MAExBE,OAAM,SAASrB,GACdiJ,GAAW,yCA2EV,SAASkD,GACdxB,EACAyB,EACAC,EACAC,GAEAnM,MAAM/F,EAAW,QAAUuQ,EAAQ,gBAAiB,CAClDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QACRyD,KAAMC,KAAKC,UAAU,CAAEqI,mBAEtB3L,MAAK,SAAAC,GACAA,EAASC,IACXD,EAAS+H,WACJ9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCtD,GAAa,0CACbyD,GAAiBA,KACZC,GACT5L,EAASS,OAAOV,MAAK,SAAA8L,GAAG,OAAID,EAAcC,EAAInL,eAGjDC,OAAM,SAASrB,GACdiJ,GAAW,2BCrRV,IAAMuD,GAAwB,wBCM9B,SAASC,GAAmB9B,GACjC,OAAOxK,MAAM,GAAD,OAAI/F,EAAJ,mCAAuCuQ,GAAS,CAC1DtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GDXyB,IAAAuL,ICYTvL,EDXxBjI,GAAMC,SAAS,CACbC,KAAMoT,GACNE,gBCWCrL,OAAM,SAASrB,GACdiJ,GAAW,0DChBV,IAAM0D,GAAb,4JACE,WACE,OACE,sBAAK3R,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACE,sBAAMC,SAAS,UAAUC,SAAS,UAC5BC,EAAE,+rBACFJ,KAAK,YACX,sBAAME,SAAS,UAAUC,SAAS,UAC5BC,EAAE,6tBACFJ,KAAK,mBATnB,GAAoC9K,IAAMC,WAgB7BkL,GAAkB,kBAC7B,sBAAKlS,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACEI,EAAE,kUACFJ,KAAK,YAEP,sBAAMI,EAAE,4CAA4CJ,KAAK,YACzD,sBACEI,EAAE,8IACFJ,KAAK,YAEP,sBAAMI,EAAE,kDAAkDJ,KAAK,YAC/D,sBACEI,EAAE,ggBACFJ,KAAK,YAEP,sBACEI,EAAE,ocACFJ,KAAK,YAEP,sBACEI,EAAE,+EACFJ,KAAK,YAEP,sBACEI,EAAE,0HACFJ,KAAK,YAEP,sBAAMI,EAAE,kDAAkDJ,KAAK,YAC/D,sBACEI,EAAE,oWACFJ,KAAK,YAEP,sBACEI,EAAE,wZACFJ,KAAK,YAEP,sBACEI,EAAE,oFACFJ,KAAK,YAEP,sBACEI,EAAE,oFACFJ,KAAK,YAEP,sBACEI,EAAE,+ZACFJ,KAAK,YAEP,sBACEI,EAAE,oFACFJ,KAAK,gBAKEM,GAAb,4JACE,WACE,OACE,sBACEnS,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,wGACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,wVACFrO,UAAU,yBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAxBzB,GAAmCxL,IAAMC,WA+B5BwL,GAAb,4JACE,WACE,OACE,qBACExS,MAAM,KACNG,OAAO,IACPyR,QAAQ,WACRC,KAAK,OACL5P,UAAWrE,KAAKyG,MAAMrC,QACtBwM,MACE5Q,KAAKyG,MAAMoO,OACP,CACA7O,UAAW,kBAEX,GAXR,SAaE,sBACEqO,EAAE,kBACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBArBzB,GAA6BxL,IAAMC,WA4BtB0L,GAAb,4JACE,WACE,OACE,sBACE1S,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,+BACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,iBACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,iBACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBA9BzB,GAAmCxL,IAAMC,WAqC5B2L,GAAb,4JACE,WACE,OACE,sBACE3S,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,WACFrO,UAAU,+CACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,aACFrO,UAAU,+CACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFrO,UAAU,+CACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFrO,UAAU,+CACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFrO,UAAU,+CACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBA9CzB,GAA+BxL,IAAMC,WAqDxB4L,GAAb,4JACE,WACE,OACE,sBACE5S,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,oHACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,+GACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,wGACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBA9BzB,GAA6BxL,IAAMC,WAqCtB6L,GAAb,4JACE,WACE,OACE,sBACE7S,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,yEACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,sLACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAxBzB,GAAiCxL,IAAMC,WA+B1B8L,GAAb,4JACE,WACE,OACE,qBACE9S,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,SAKE,sBACEI,EAAE,uGACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,gBAdzB,GAAgCxL,IAAMC,WAqBzB+L,GAAb,4JACE,WACE,OACE,sBACE/S,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,SACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,mBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,mBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,kBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,mBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBA9EzB,GAAkCxL,IAAMC,WAqF3BgM,GAAgB,SAAA3O,GAC3B,OACE,sBACErE,MAAOqE,EAAMrE,MACbG,OAAQkE,EAAMlE,OACdyR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,gCACFG,OAAQ/N,EAAMxD,MACdwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,cACFG,OAAQ/N,EAAMxD,MACdwR,YAAY,IACZC,cAAc,QACdC,eAAe,cAMVU,GAAb,4JACE,WACE,OACE,sBACEjT,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,UACFrO,UAAU,mBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,UACFrO,UAAU,mBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAtBzB,GAA8BxL,IAAMC,WA6BvBkM,GAAb,4JACE,WACE,OACE,sBACElT,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,UACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,WACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAtBzB,GAA+BxL,IAAMC,WA6BxBmM,GAAb,4JACE,WACE,OACE,sBACEnT,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,yHACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,eACFrO,UAAU,uBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAxBzB,GAAgCxL,IAAMC,WA+BzBoM,GAAb,4JACE,WACE,OACE,sBACEpT,MAAOpC,KAAKyG,MAAMrE,OAAS,OAC3BG,OAAQvC,KAAKyG,MAAMlE,QAAU,OAC7ByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,kBACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,OAAS,UAC5BwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,gKACFrO,UAAU,iBACVwO,OAAQxU,KAAKyG,MAAMxD,OAAS,UAC5BwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAxBzB,GAA+BxL,IAAMC,WA8LxBqM,IA/JiBtM,IAAMC,UA6CND,IAAMC,UAqCHD,IAAMC,UAuBHD,IAAMC,UA+BXD,IAAMC,UAuBrC,4JACE,WACE,OACE,sBACEhH,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,WACRC,KAAK,OAJP,UAKE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,oLACFrO,UAAU,6BACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,oLACFrO,UAAU,6BACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,oLACFrO,UAAU,uBACVwO,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBApCzB,GAA+BxL,IAAMC,YA2CxBsM,GAAb,4JACE,WACE,OACE,qBAAKtT,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEI,EAAE,iBACFrO,UAAU,iBACVwO,OAAO,QACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBAVzB,GAA8BxL,IAAMC,WAiBvBuM,GAAb,4JACE,WACE,OACE,qBAAKvT,MAAM,IAAIG,OAAO,KAAKyR,QAAQ,WAAWC,KAAK,OAAnD,SACE,sBACEI,EAAE,iBACFrO,UAAU,0CACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBAVzB,GAAmCxL,IAAMC,WAiB5BwM,GAAb,4JACE,WACE,OACE,qBAAKxT,MAAM,IAAIG,OAAO,KAAKyR,QAAQ,WAAWC,KAAK,OAAnD,SACE,sBACEI,EAAE,iBACFrO,UAAU,8BACVwO,OAAQxU,KAAKyG,MAAMxD,MAAQjD,KAAKyG,MAAMxD,MAAQ,UAC9CwR,YAAY,IACZC,cAAc,QACdC,eAAe,gBAVzB,GAAoCxL,IAAMC,WAiB7ByM,GAAb,4JACE,WACE,OACE,qBACE3B,MAAM,6BACN9R,MAAM,KACNG,OAAO,IACPyR,QAAQ,WACRC,KAAK,OALP,SAME,sBACEI,EAAE,eACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBAdzB,GAAmCxL,IAAMC,WAqB5B0M,GAAb,4JACE,WACE,OACE,qBACE5B,MAAM,6BACN9R,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OALP,SAME,sBACEI,EAAE,iYACFG,OAAO,QACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBAdzB,GAA8BxL,IAAMC,WAqBvB2M,GAAb,4JACE,WACE,OACE,qBAAK3T,MAAM,IAAIG,OAAO,IAAIyR,QAAQ,UAAUC,KAAK,OAAjD,SACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,sHACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBAZzB,GAA8BxL,IAAMC,WAmBvB4M,GAAb,4JACE,WACE,MAA0BhW,KAAKyG,MAAvBrE,EAAR,EAAQA,MAAOG,EAAf,EAAeA,OACf,OACE,sBACEH,MAAOA,GAAS,KAChBG,OAAQA,GAAU,KAClByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,4HACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,kBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,SACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,UACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,iBAzCzB,GAAkCxL,IAAMC,WAgD3B6M,GAAb,4JACE,WACE,OACE,qBAAK7T,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,wDACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,gBAZzB,GAA6BxL,IAAMC,WAmBtB8M,GAAb,4JACE,WACE,OACE,sBACE9T,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,2NACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,kHACFrO,UAAU,iBACVwO,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,iBA1BzB,GAA+BxL,IAAMC,WAiCxB+M,GAAb,4JACE,WACE,OACE,sBACE/T,MAAOpC,KAAKyG,MAAMrE,MAClBG,OAAQvC,KAAKyG,MAAMlE,OACnByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACE7R,MAAM,KACNG,OAAO,KACP0R,KAAK,QACLmC,YAAY,IACZpQ,UAAU,mBAEZ,sBACE5D,MAAM,KACNG,OAAO,KACP0R,KAAK,QACLmC,YAAY,IACZpQ,UAAU,mBAEZ,sBACEqO,EAAE,gCACFG,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,mDACFG,OAAQxU,KAAKyG,MAAMxD,MACnBwR,YAAY,IACZC,cAAc,QACdC,eAAe,iBAlCzB,GAA+BxL,IAAMC,WAyCxBiN,GAAb,4JACE,WACE,OACE,sBAAKjU,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACE7R,MAAM,KACNG,OAAO,KACP0R,KAAK,QACLmC,YAAY,IACZpQ,UAAU,4BAEZ,sBACEqO,EAAE,WACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,mBACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,iBAvBzB,GAA4BxL,IAAMC,WA8BrBkN,GAAb,4JACE,WACE,OACE,sBAAKlU,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACE7R,MAAM,KACNG,OAAO,KACP0R,KAAK,QACLmC,YAAY,IACZpQ,UAAU,4BAEZ,sBACEqO,EAAE,WACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,oBACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,iBAvBzB,GAA8BxL,IAAMC,WA8BvBmN,GAAb,4JACE,WACE,OACE,sBAAKnU,MAAM,MAAMG,OAAO,MAAMyR,QAAQ,cAAcC,KAAK,OAAzD,UACE,sBACEI,EAAE,8jBACFJ,KAAK,UACLmC,YAAY,QAEd,sBACE/B,EAAE,moBACFJ,KAAK,UACLmC,YAAY,QAEd,mBAAGlE,OAAO,kBAAV,SACE,sBACEmC,EAAE,iNACFJ,KAAK,0BAGT,sBACEI,EAAE,+mBACFJ,KAAK,UAEP,iCACE,yBACExQ,GAAG,YACH+S,EAAE,SACFC,EAAE,UACFrU,MAAM,UACNG,OAAO,SACPmU,YAAY,iBACZC,0BAA0B,OAP5B,UAQE,yBAASC,aAAa,IAAIC,OAAO,uBACjC,+BACEC,GAAG,cACHtW,KAAK,SACLuW,OAAO,8CAET,0BAAUC,GAAG,MACb,gCAAgBC,aAAa,QAC7B,+BACEzW,KAAK,SACLuW,OAAO,wEAET,yBACEG,KAAK,SACLC,IAAI,qBACJN,OAAO,uBAET,yBACEK,KAAK,SACLJ,GAAG,gBACHK,IAAI,qBACJN,OAAO,aAGX,iCACEpT,GAAG,gBACH2T,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,WACHC,cAAc,iBANhB,UAOE,sBAAMC,UAAU,YAChB,sBAAMC,OAAO,IAAID,UAAU,yBAjEvC,GAA6BtO,IAAMC,WAyEtBuO,GAAb,4JACE,WACE,OACE,sBAAKvV,MAAM,KAAKG,OAAO,IAAIyR,QAAQ,WAAWC,KAAK,OAAnD,UACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,8GACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,iHACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACER,SAAS,UACTC,SAAS,UACTC,EAAE,wGACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,iBA7BzB,GAA+BxL,IAAMC,WA+MxBwO,IA3KiBzO,IAAMC,UAgBFD,IAAMC,UAgBVD,IAAMC,UAuBHD,IAAMC,UAqCRD,IAAMC,UAyBED,IAAMC,UAyBdD,IAAMC,UA6Bb,SAAA3C,GACtB,IAAQrE,EAAyBqE,EAAzBrE,MAAOG,EAAkBkE,EAAlBlE,OAAQU,EAAUwD,EAAVxD,MACvB,OACE,sBACEb,MAAOA,GAAS,GAChBG,OAAQA,GAAU,GAClByR,QAAQ,YACRC,KAAK,OAJP,UAKE,sBACEI,EAAE,0NACFG,OAAQvR,GAAS,WACjBwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,qQACFG,OAAQvR,GAAS,WACjBwR,YAAY,IACZC,cAAc,QACdC,eAAe,e,wCC9zCRkD,GAPsB,SAAC,GAAD,IAAGzR,EAAH,EAAGA,KAAH,OACnC,sBAAK/B,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,IACA,mBAAGzT,UAAWD,KAAQgC,KAAtB,SAA6BA,QCZpB2R,GAAqC,IAAIC,IAAoB,CACxE,CAAC,eAAgB,WACjB,CAAC,YAAa,WACd,CAAC,WAAY,WACb,CAAC,SAAU,WACX,CAAC,kBAAmB,WACpB,CAAC,uBAAwB,WACzB,CAAC,SAAU,aAGAC,GAAoB,CAAC,UAAW,WAEhChV,GAAQ,CAAEiV,EAAG,GAAIC,EAAG,GAAIC,EAAG,KCK3BC,GACX,+F,0CCXWC,GAAkB,UAElBC,GAAQ,UAERC,GAAqB,UACrBC,GAAc,UCiBZC,GAlBmB,SAAC,GAAyC,IAAvCzV,EAAsC,EAAtCA,MAAOI,EAA+B,EAA/BA,MAAOsV,EAAwB,EAAxBA,QAAS7U,EAAe,EAAfA,SACpD8M,EAAmC,CACvC,gBAAiB3N,GDHM,WCUzB,OACE,sBAAKoB,UAAWD,KAAQ0T,UAAWxS,QALhB,WACnBxB,GAAU6U,IAIV,UACGtV,EACD,uBAAO7C,KAAK,WAAWmY,QAASA,IAChC,sBAAMtU,UAAWD,KAAQwU,UAAWhI,MAAOA,QCxBpCiI,GAAgB,SAAAC,GAAG,OAAgC,IAA5BC,OAAOC,KAAKF,GAAKxS,QCAxC2S,GAA2B,SAACC,EAAKC,EAAeC,GAC3D,OAAOF,EAAIG,MAAK,SAACC,EAAGlB,GAAJ,MAAqB,QAAVgB,EAAkBE,EAAEH,GAASf,EAAEe,GAASf,EAAEe,GAASG,EAAEH,OCiB5EI,GAA2B,WAC/B,IAAM1C,EAAiB2C,aAAarM,QAAQ,mBAC5C,OAAO0J,EAASA,EAAO4C,MAAM,KAAO,CAAC,iBAgFxBC,gBAJS,SAAAvS,GAAK,MAAK,CAChCwS,gBAAiBxS,EAAMwS,mBAGVD,EA7EoB,SAAC,GAAwD,IAArCE,EAAoC,EAArDD,gBAA4BE,EAAyB,EAAzBA,mBAChE,EAAgD7U,mBAASuU,IAAzD,mBAAOO,EAAP,KAAyBC,EAAzB,KAoCMC,EAAgB5U,mBAAQ,kBAlCF,SAAC6U,GAA0C,IAAD,IAYpE,OAX0C,UAAGlB,OAAOhC,OAAOkD,GAAQ,UAAzB,iBAAG,EACzCC,KAAI,WAAef,GAAW,IAAvBgB,EAAsB,EAAtBA,SACDC,EAAO,GAIb,OAHArB,OAAOC,KAAKiB,GAAQI,SAAQ,SAAAva,GAC1Bsa,EAAKta,GAAOma,EAAOna,GAAKqZ,GAAOmB,aAE1B,CAAE5W,KAAMyW,EAAUC,kBANa,aAAG,EAQzClI,QAAO,SAAAqI,GACP,OAAOV,EAAqBC,EAAiBvH,SAASgI,EAAY7W,MAA6B,iBAArB6W,EAAY7W,QAwBxD8W,CAAoBZ,EAAUK,UAAS,CAACL,EAAWE,IACjFW,EAASrV,mBAAQ,kBApBO,SAACwU,GAC7B,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAWM,KAAI,gBAAGxW,EAAH,EAAGA,KAAH,OAAcqU,GAAc9P,IAAIvE,MAmB3BgX,CAAsBV,KAAgB,CAACA,IAC9DW,EAAavV,mBACjB,kBAAOyT,GAAce,EAAUgB,oBAC7B,CAAC,gBAAgBC,QARaX,EAQmBN,EAAUgB,kBAPtD3B,GAAyBF,OAAO+B,QAAQZ,GAAM,EAAG,QAAQA,KAAI,SAAAa,GAAI,OAAIA,EAAK,QADlD,IAACb,IAShC,CAACN,IAEGoB,EAAS5V,mBAAQ,kBAAMwU,EAAUK,UAAYlB,OAAOC,KAAKY,EAAUK,QAAQ3T,SAAQ,CAACsT,IAE1F,OACE,qBAAKvV,UAAWD,KAAQ0T,UAAxB,SACGkD,EACC,qCACE,cAAC,KAAD,CAAWZ,KAAMJ,EAAeS,OAAQA,EAAQQ,IAAK,EAAGC,QAAQ,IAE/DrB,GACC,qBAAKxV,UAAWD,KAAQ+W,WAAxB,SACGR,EAAWT,KAAI,SAAAC,GAAQ,OACtB,cAAC,GAAD,CAEE9W,MAAO8W,EACPxB,QAASmB,EAAiBvH,SAAS4H,GACnCrW,SAAU,SAAC/D,GAAD,OArCG,SAACA,EAAgBoa,GAC5C,IAAIiB,EAAuBrC,OAAOsC,OAAO,GAAIvB,GAC7C,GAAI/Z,EAAOqb,EAAqB9Q,KAAK6P,OAChC,CACH,GAAIiB,EAAqB9U,OAAS,EAAG,OACrC8U,EAAuBA,EAAqBlJ,QAAO,SAAA3N,GAAC,OAAIA,IAAM4V,KAEhEJ,EAAoBqB,GACpB5B,aAAanM,QAAQ,kBAAmB+N,EAAqBE,YA6BjBC,CAAqBxb,EAAOoa,IAC1DlX,MAAO8U,GAAc9P,IAAIkS,IAJpBA,WAWf,cAAC,GAAD,CAAa/T,KAAMiS,U,qBClDZqB,gBAJS,SAACvS,GAAD,MAAwC,CAC9DqU,kBAAmBrU,EAAMqU,qBAGZ9B,EAzBsB,SAAC,GAAsC,IAAjBE,EAAgB,EAAnC4B,kBAC9BC,EAAiC7B,EAAjC6B,UAAWC,EAAsB9B,EAAtB8B,kBAEbtB,EAAOhV,mBAAQ,WACnB,MAAO,CACL,CAAC,aAAcqW,GACf,CAAC,sBAAuBC,MAEzB,CAACD,EAAWC,IAEf,OACE,qBAAKrX,UAAWD,KAAQ0T,UAAxB,SACG2D,GAAaC,EACZ,cAAC,KAAD,CAAUtB,KAAMA,EAAMK,OAAQxC,GAAmBiD,OAAQ,WAEzD,cAAC,GAAD,CAAa9U,KAAMiS,U,SCpBZsD,I,OANA,kBACb,qBAAKtX,UAAU,SAAf,SACE,qBAAKA,UAAU,wBCNNuX,GAAiB,CAC5B,SACA,SACA,UACA,YACA,WACA,SACA,YAGWC,GAAgB,CAC3B,CACEC,KAAM,OACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,OACNC,OAAQ,GAEV,CACED,KAAM,OACNC,OAAQ,GAEV,CACED,KAAM,OACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,MACNC,OAAQ,GAEV,CACED,KAAM,OACNC,OAAQ,GAEV,CACED,KAAM,OACNC,OAAQ,I,8BCvEGC,GAvBmB,SAAC,GAAuC,IAArCC,EAAoC,EAApCA,MAAOhZ,EAA6B,EAA7BA,MAAOiZ,EAAsB,EAAtBA,IACjD,GAA0CC,EAD6B,EAAjBA,YACDD,EAAIE,YAAaF,EAAIG,UAAWJ,EAAMH,MAA1EQ,EAAjB,EAAQC,QAAuBR,EAA/B,EAA+BA,OACzB3Y,EAAkBH,GAAK,eAAYA,EAAMiV,EAAlB,aAAwBjV,EAAMkV,EAA9B,aAAoClV,EAAMmV,EAA1C,aAAgDkE,EAAe,IAA/D,KAE7B,OACE,qBAEE,cACA,qBAAaJ,EAAIG,UAAjB,oBAAsCJ,EAAMH,MAC5ClL,MAAO,CAAExN,mBACTiB,UAAWqE,KAAO8T,SALpB,SAME,cAAC,KAAD,CACEnY,UAAWqE,KAAO+T,QAClBC,MAAM,MACNlc,KAAK,QACLmc,OAAO,QACPlZ,GAAE,UAAKyY,EAAIG,UAAT,oBAA8BJ,EAAMH,MALxC,SAME,+BAAOC,OAXJE,EAAMH,OCgGFha,yBA1GA,SAAAC,GAAK,MAAK,CACvB6a,KAAM,CACJ1a,QAAS,OACT2a,SAAU,aACVzZ,gBAAiBrB,EAAM6D,QAAQC,QAAQiX,aACvC,iBAAkB,CAChBC,YAAa,IAEf,eAAgB,CACdA,YAAa,IAGjBC,WAAY,CACV5a,MAAO,iBACP2a,YAAa,GAEfP,SAAU,CACRja,OAAQ,GACRH,MAAO,OACP8H,aAAc,GAEhB+S,eAAgB,CACd7Z,gBAAiBrB,EAAM6D,QAAQC,QAAQiX,aACvCza,UAAW,SAEb6a,aAAc,CACZja,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7BlD,SAAU,GACVwC,WAAY,EACZ9C,WAAY,mBACZP,UAAW,QACXD,MAAO,OACP+a,cAAe,OAEjBC,WAAY,CACV/a,UAAW,aAuEmB,CAAEmB,WAAW,GAAhC1B,EAnED,SAAC,GAA+C,IAgBvCub,EAAWzB,EAhBjBxX,EAA4C,EAA5CA,QAASwV,EAAmC,EAAnCA,UAAW3W,EAAwB,EAAxBA,MAAOqa,EAAiB,EAAjBA,WACpCnB,EAAa,SAACC,EAAamB,EAASzB,GACxC,IAAIS,EAAU,EACVR,EAAS,EAEPyB,EAAQ,aAAOpB,GACfjD,EAAQqE,EAASC,WAAU,SAAAjH,GAAC,OAAIA,EAAEsF,OAASA,KAOjD,OALe,IAAX3C,GAAgBqE,EAASrE,IAAUqE,EAASrE,GAAO4C,SACrDQ,EAAWiB,EAASrE,GAAO4C,OAASuB,EAAc,IAClDvB,EAASyB,EAASrE,GAAO4C,QAGpB,CAAEQ,UAASR,WAapB,GAAInC,EAAW,CACb,IAAM8D,EAAW9D,EAAU+D,+BAE3B,OACE,8BACE,sBAAKtZ,UAAWD,EAAQwY,KAAxB,UACE,qBAAKvY,UAAWD,EAAQ4Y,WAAxB,SACGnB,GAAS3B,KAAI,SAAC+B,EAAO9C,GAAR,OACZ,qBAAsB9U,UAAS,UAAKD,EAAQoY,SAAb,YAAyBpY,EAAQ6Y,gBAAhE,SACG9D,EAAQ,IAAM,GAAK,sBAAM9U,UAAWD,EAAQ8Y,aAAzB,SAAwCjB,EAAMH,QAD1DG,EAAMH,YAlBPuB,EAuBAK,EAvBW9B,EAuBDA,GAtB7BA,EAAK1B,KAAI,SAAAgC,GACP,IAAME,EAAciB,EAAUnL,QAAO,SAAAsE,GAAC,OAAIA,EAAE6F,YAAcH,KAE1D,MAAO,CACLG,UAAWH,EACXE,YAAY,aAAKA,QAiBclC,KAAI,SAAAgC,GAC/B,IAAM0B,EAAW1B,EAAIG,UAAUwB,OAAO,EAAG,GAAGC,cAE5C,OACE,sBAAKzZ,UAAWD,EAAQ4Y,WAAxB,UACGnB,GAAS3B,KAAI,SAAC6D,EAAM5E,GAAP,OACZ,cAAC,GAAD,CAAU8C,MAAO8B,EAAM9a,MAAOA,EAAOiZ,IAAKA,EAAKC,WAAYA,GAAiBhD,MAE9E,qBAAK9U,UAAS,UAAKD,EAAQoY,SAAb,YAAyBpY,EAAQ6Y,gBAA/C,SACE,qBAAK5Y,UAAS,UAAKD,EAAQ8Y,aAAb,YAA6B9Y,EAAQgZ,YAAnD,SACGQ,EAASI,OAAO,GAAGC,cAAgBL,EAASM,MAAM,SANhBhC,EAAIG,mBAiBzD,OACE,8BACE,cAAC,GAAD,S,0CC1ES8B,GA9BK,SAAC,GAInB,IAJwD,IAAnClb,EAAkC,EAAlCA,MAAOmb,EAA2B,EAA3BA,KAAMC,EAAqB,EAArBA,eAC1BnG,EAAYjV,EAAZiV,EAAGC,EAASlV,EAATkV,EAAGC,EAAMnV,EAANmV,EACRqC,EAAS,GAEN6D,EAAI,EAAGA,EAAID,EAAgBC,IAClC7D,EAAOnQ,KAAK,CACViU,MAAM,QAAD,OAAUrG,EAAV,aAAgBC,EAAhB,aAAsBC,EAAtB,aAA4B,GAAMkG,EAAlC,KACLE,IAAI,QAAD,OAAUtG,EAAV,aAAgBC,EAAhB,aAAsBC,EAAtB,aAA4B,IAAOkG,EAAI,GAAvC,OAIP,OACE,qBAAKja,UAAWD,KAAQqa,mBAAxB,SACE,qBAAKpa,UAAWD,KAAQsa,YAAxB,SACGjE,EAAOP,KAAI,SAACjX,EAAOkW,GAAR,OACV,sBAAkB9U,UAAWD,KAAQua,kBAArC,UACE,qBACE/N,MAAO,CACLjL,WAAW,0BAAD,OAA4B1C,EAAMsb,MAAlC,aAA4Ctb,EAAMub,IAAlD,MAEZna,UAAWD,KAAQwa,kBAErB,qBAAKva,UAAWD,KAAQya,oBAAxB,UAA+C1F,EAAQ,GAAKiF,MAPpDU,gB,qBCkBLpF,gBAJS,SAACvS,GAAD,MAA6C,CACnE4X,uBAAwB5X,EAAM4X,0BAGjBrF,EAtBsB,SAAC,GAAD,IAA2BE,EAA3B,EAAGmF,uBAAH,OACnC,qBAAK1a,UAAWD,KAAQ0T,UAAxB,SACG8B,EAAU+D,gCAAkC/D,EAAU+D,+BAA+BrX,OACpF,qCACE,cAAC0Y,GAAD,CACEpF,UAAWA,EACX0D,WAAY1D,EAAU0D,WACtBra,MAAOA,GACPob,ebVoB,IaYtB,cAAC,GAAD,CAAaA,ebZS,EaYuBpb,MAAOA,GAAOmb,KAAMxE,EAAU0D,WbZrD,OaexB,cAAC,GAAD,CAAalX,KAAMiS,UCXnB4G,G,kDACJ,WAAYxY,GAAQ,uCACZA,G,0CAGR,WACE,IAAQrC,EAAYpE,KAAKyG,MAAjBrC,QACR,OAAO,qBAAKC,UAAWD,EAAQ8a,aAAxB,SAAuClf,KAAKyG,MAAMP,Y,GAPtCiD,IAAMC,WAgBdC,eAAWvH,sBA5BX,SAAAC,GAAK,MAAK,CACvBmd,aAAc,CACZhc,SAAU,GACVD,MAAO,UACPT,OAAQ,cACRW,WAAY,OACZP,WAAY,mBACZuc,UAAW,aACX5c,OAAQ,OAoBcT,CAAmBmd,K,uFCE9BG,GAtBqB,SAAC,GAAqC,IAAnCC,EAAkC,EAAlCA,QAASC,EAAyB,EAAzBA,UAAWC,EAAc,EAAdA,QAKzD,OACE,cAAC,KAAD,CACElb,UAAWD,KAAQob,yBACnBF,UAAWA,EACXC,QAASA,EACTE,QATgB,SAAC9R,EAAO+R,GAC1BL,EAAQK,EAAOJ,UAAWI,EAAOH,UAIjC,SAKE,uBACElb,UAAWD,KAAQ9B,MACnB9B,KAAK,OACLkD,KAAK,YACL3D,MAAK,UAAKuf,EAAUK,OAAO,cAAtB,cAAyCJ,EAAQI,OACpD,oBCpBJC,GACE,OADFA,GAEG,QAFHA,GAGI,SAHJA,GAII,SAgBJC,G,kDACJ,WAAYpZ,GAAQ,IAAD,8BACjB,cAAMA,IAuBRqZ,WAAa,SAACR,EAAWC,EAASQ,EAAYC,EAAYC,GACxD,EAAKtZ,SAAS,CACZ2Y,YACAC,UACAQ,aACAC,aACAC,UAAWA,GAAa,EAAK9Y,MAAM8Y,aA9BpB,EAkCnBZ,QAAU,SAACC,EAAWC,GACpB,MAA4B,EAAK9Y,MAAzBsL,EAAR,EAAQA,MAAOmO,EAAf,EAAeA,SAEX,EAAKzZ,MAAM0Z,qBAAqB,EAAK1Z,MAAM0Z,oBAAoBb,EAAUK,OAAO,eAChF,EAAKlZ,MAAM2Z,mBAAmB,EAAK3Z,MAAM2Z,kBAAkBb,EAAQI,OAAO,eAE9EO,EAAS7F,SAAQ,SAAAgG,GACf,IAAMjR,EAAS,CAAC2C,QAAO5J,KAAMmX,EAAUK,OAAO,cAAe1W,GAAIsW,EAAQI,OAAO,eAEzD,oBAAZU,EACTA,EAAQjR,GAERiR,EAAQA,QAAR,2BAAoBjR,GAAWiR,EAAQjR,aA9C1B,EAmDnBkR,cAAgB,SAAChB,EAAWC,GAE1B,EAAK5Y,SAAS,CAAE2Y,YAAWC,UAASS,WADjB,WAC+B,WAChD,EAAKO,mBAAmBX,QAtDT,EA0DnBW,mBAAqB,SAAAN,GACnB,IACID,EAAYD,EADhB,EAAqC,EAAK5Y,MAApCmY,EAAN,EAAMA,UAAWC,EAAjB,EAAiBA,QAASiB,EAA1B,EAA0BA,OAG1B,OAAQP,GACR,KAAKL,GACHN,EAAYmB,OAASC,SAAS,EAAG,OACjCnB,EAAUkB,OACVD,GAAS,EACT,EAAK7Z,SAAS,CAAE6Z,WAChBR,EAAa,WACb,MACF,KAAKJ,GACHN,EAAYmB,OAASC,SAAS,EAAG,QAAQC,IAAI,EAAG,OAChDpB,EAAUkB,OACVD,GAAS,EACT,EAAK7Z,SAAS,CAAE6Z,WAChBR,EAAa,cACb,MACF,KAAKJ,GACHN,EAAYmB,OAASC,SAAS,EAAG,SAASC,IAAI,EAAG,OACjDpB,EAAUkB,OACVD,GAAS,EACT,EAAK7Z,SAAS,CAAE6Z,WAChBR,EAAa,eACb,MACF,KAAKJ,GACHG,GAAa,EACbC,EAAa,SACbQ,GAAS,EACT,EAAK7Z,SAAS,CAAE6Z,WAChB,MACF,QACEA,GAAS,EACT,EAAK7Z,SAAS,CAAE6Z,WAChBT,GAAa,EACbC,EAAa,cAGf,EAAKrZ,SAAS,CAAEoZ,aAAYE,cAAa,WACvC,EAAKZ,QAAQC,EAAWC,GAAS,WAC3BU,IAAcL,IAChB,EAAKE,WAAWR,EAAWC,EAASQ,EAAYC,EAAYC,UAjGlE,EAAK9Y,MAAQ,CACX8Y,UAAWL,GACXN,UAAWmB,OAASC,SAAS,EAAG,QAAQC,IAAI,EAAG,OAC/CpB,QAASkB,OACTD,QAAQ,EACRT,YAAY,EACZa,QAAQ,EACRZ,WAAY,eAVG,E,qDAcnB,WACEhgB,KAAKugB,mBAAmBvgB,KAAKmH,MAAM8Y,a,oBA2FrC,WAAU,IAAD,OACCW,EAAW5gB,KAAKyG,MAAhBma,OACR,EAAsD5gB,KAAKmH,MAAnDmY,EAAR,EAAQA,UAAWC,EAAnB,EAAmBA,QAASQ,EAA5B,EAA4BA,WAAYE,EAAxC,EAAwCA,UAExC,OACE,sBAAK5b,UAAU,cAAf,UACE,sBAAKuM,MAAOgQ,EAAS,CAAE1e,QAAS,QAAW,GAAImC,UAAU,YAAzD,UACE,wBACEA,UAAS,4BAAuB4b,IAAcL,IAAsB,UACpEta,QAAS,kBAAM,EAAKib,mBAAmBX,KAFzC,sBAKA,wBACEvb,UAAS,4BAAuB4b,IAAcL,IAAoB,UAClEta,QAAS,kBAAM,EAAKib,mBAAmBX,KAFzC,yBAKA,wBACEvb,UAAS,4BAAuB4b,IAAcL,IAAqB,UACnEta,QAAS,kBAAM,EAAKib,mBAAmBX,KAFzC,0BAKA,wBACEvb,UAAS,4BAAuB4b,IAAcL,IAAsB,UACpEta,QAAS,kBAAM,EAAKib,mBAAmBX,KAFzC,uBAMDG,GAAc,cAAC,GAAD,CAAWT,UAAWA,EAAWC,QAASA,EAASF,QAASrf,KAAKsgB,sB,uCApHtF,SAAgC7Z,GAC9B,IAAQma,EAAWna,EAAXma,OAER,OAAOA,EAAS,CAAEA,SAAQb,YAAY,GAAS,CAAEa,SAAUA,O,GAtB3CzX,IAAMC,WAkJXC,eAAWvH,sBA/JX,SAAAC,GAAK,MAAK,CACvB0a,QAAS,CACP7X,SAAU,MACVxC,MAAO,QACPM,OAAQ,oBACRG,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,MAsJgC,CAAE/Y,WAAW,GAAhC1B,CAAwC+d,K,qBC7InDgB,GApBsC,SAAC,GAAD,IACnD9O,EADmD,EACnDA,MACAmO,EAFmD,EAEnDA,SACAha,EAHmD,EAGnDA,MACAia,EAJmD,EAInDA,oBACAC,EALmD,EAKnDA,kBALmD,OAOnD,sBAAK/b,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAU5R,MAAOA,IACjB,cAAC,GAAD,CACE7B,UAAWD,KAAQ0c,YACnB/O,MAAOA,EACPmO,SAAUA,EACVU,QAAQ,EACRT,oBAAqBA,EACrBC,kBAAmBA,Q,+BCJVW,GAbyB,SAAC,GAAyD,IAAvDC,EAAsD,EAAtDA,QAASC,EAA6C,EAA7CA,cAAeC,EAA8B,EAA9BA,YAAaC,EAAiB,EAAjBA,WAC9E,OACE,cAAC,WAAD,CACE9c,UAAWqE,KAAOjD,OAClB2U,KAAM6G,EAAcD,GACpBI,SAAQ,UAAKF,EAAL,QACRlZ,QAASmZ,EACTvQ,MAAO,CAAEyQ,eAAgB,QAL3B,uBCFEC,GAA+B,SAAClH,GACpC,OAAOrB,OAAOC,KAAKoB,EAAKH,QAAQC,KAAI,SAAAqH,GAClC,IAAMC,EAAQ,GAQd,OANAA,EAAK,KAAWD,EAEhBnH,EAAKH,OAAOsH,GAAGlH,SAAQ,YAA8B,IAA3BF,EAA0B,EAA1BA,SAAUG,EAAgB,EAAhBA,UAClCkH,EAAMrH,GAAYG,KAGbkH,MAgCI9H,gBAJS,SAAAvS,GAAK,MAAK,CAChCwS,gBAAiBxS,EAAMwS,mBAGVD,EA5B0B,SAAC,GAAoC,IAAjBE,EAAgB,EAAjCD,gBAYpCwH,EAAa/b,mBAAQ,kBAXI,WAC7B,IAAM4C,EAAU,CAAC,CAAE3E,MAAO,OAAQvD,IAAK,SACjCoZ,EAAMH,OAAOhC,OAAO6C,EAAUK,QAAQ,GAM5C,OAJIf,IAAQL,GAAcK,IACxBH,OAAOhC,OAAOmC,GAAKmB,SAAQ,gBAAGF,EAAH,EAAGA,SAAH,OAAkBnS,EAAQsC,KAAK,CAAEjH,MAAO8W,EAAUra,IAAKqa,OAG7EnS,EAGwByZ,KAA0B,CAAC7H,IAE5D,OACE,cAAC,GAAD,CACEoH,QAASpH,EACTuH,WAAYA,EACZD,YAAa,eACbD,cAAeK,QC7CRI,GAAgB,CAC3B,CAAEre,MAAO,cAAevD,IAAK,aAC7B,CAAEuD,MAAO,sBAAuBvD,IAAK,sBCQjC6hB,GAA4B,SAAAvH,GAChC,MAAW,GAAX,QAAeA,KAkBFV,gBAJS,SAAAvS,GAAK,MAAK,CAChCqU,kBAAmBrU,EAAMqU,qBAGZ9B,EAf4B,SAAC,GAAyC,IAApBkI,EAAmB,EAAtCpG,kBAC5C,OACE,cAAC,GAAD,CACEwF,QAASY,EACTV,YAAa,wBACbC,WAAYO,GACZT,cAAeU,QCpBRE,GAAqB,CAChC,CAAExe,MAAO,cAAevD,IAAK,aAC7B,CAAEuD,MAAO,OAAQvD,IAAK,QACtB,CAAEuD,MAAO,SAAUvD,IAAK,WCOpBgiB,GAA4B,SAAA1H,GAAI,OAAIA,EAAKuD,gCAiBhCjE,gBAJS,SAAAvS,GAAK,MAAK,CAChC4X,uBAAwB5X,EAAM4X,0BAGjBrF,EAf4B,SAAC,GAAgD,IAAtBqI,EAAqB,EAA7ChD,uBAC5C,OACE,cAAC,GAAD,CACEiC,QAASe,EACTb,YAAa,uCACbC,WAAYU,GACZZ,cAAea,QCffE,G,4JACJ,WACE,OACE,qBACE5f,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACL,WAAUjU,KAAKyG,MAAMwb,QACrB,WAAUjiB,KAAKyG,MAAMyb,QANvB,SAOE,sBACE7N,EAAE,m3BACFJ,KAAK,kB,GAZU9K,IAAMC,WAmBhB4Y,MCCAlgB,yBCvBO,iBAAO,CAC3B2a,QAAS,CACP7X,SAAU,MACVxC,MAAO,QACPS,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,EACTla,UAAW,QACXc,WAAY,SACZV,QAAS,GACTW,gBAAiB,WAEnB+e,YAAa,CACXxd,OAAQ,UACRzC,QAAS,SACTkgB,WAAY,MDMDtgB,EAjBC,SAAA2E,GACd,IAAQrC,EAAoCqC,EAApCrC,QAASie,EAA2B5b,EAA3B4b,UAAWC,EAAgB7b,EAAhB6b,YAE5B,OACE,sBAAKje,UAAWD,EAAQ+d,YAAxB,UACE,cAAC,GAAD,CAAYD,QAASG,EAAWJ,QAASK,IACzC,cAAC,KAAD,CACEje,UAAWD,EAAQqY,QACnBE,OAAO,QACPD,MAAM,MACNlc,KAAK,OACLiD,GAAI4e,U,oBEuBGE,GAzB6B,SAAC,GAAuE,IAArErc,EAAoE,EAApEA,MAAOoc,EAA6D,EAA7DA,YAAaE,EAAgD,EAAhDA,SAAUC,EAAsC,EAAtCA,YAAaC,EAAyB,EAAzBA,WAAYjd,EAAa,EAAbA,OACpG,OACE,sBAAKpB,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAxB,UACE,uBAAMte,UAAWD,KAAQwe,aAAzB,UACE,oBAAGve,UAAS,UAAKD,KAAQgC,KAAb,YAAqBhC,KAAQ8B,OAAzC,UACGA,EACAoc,GAAe,cAAC,GAAD,CAASD,UAAW,wBAAyBC,YAAaA,OAE3E7c,OAEAid,KAAgBD,GACjB,gCACE,sBAAMpe,UAAWD,KAAQye,UAAzB,0BACA,sBAAMxe,UAAWD,KAAQ0e,YAAzB,SAAuCL,IACvC,sBAAMpe,UAAWD,KAAQye,UAAzB,yBACA,sBAAMxe,UAAWD,KAAQ0e,YAAzB,SAAuCJ,UAI5CF,M,qBCjBQO,GATuB,SAAC,GAAsB,IAApBhjB,EAAmB,EAAnBA,MAAOmG,EAAY,EAAZA,MAC9C,OACE,sBAAK7B,UAAWD,KAAQ4e,QAAxB,UACE,mBAAG3e,UAAWD,KAAQrE,MAAtB,SAA8BA,IAC9B,mBAAGsE,UAAWD,KAAQ8B,MAAtB,SAA8BA,QCbvB+c,GAAgB,SAACC,EAAcC,GAAf,OAAyBC,KAAKC,MAAOH,EAAeC,EAAS,IAAM,K,qBC6FjFzJ,gBAJS,SAACvS,GAAD,MAAwE,CAC9FwS,gBAAiBxS,EAAMwS,mBAGVD,EA3E8B,SAAC,GAAoC,IAAjBE,EAAgB,EAAjCD,gBAC9C,EAA0C3U,mBAAS,IAAnD,mBAAOse,EAAP,KAAsBC,EAAtB,KASMC,EAAe,WACnB,IAAM5B,EARe,SAACxH,GACtB,IAAMvD,EAAS,GAGf,OAFAoC,GAAyBF,OAAO+B,QAAQV,GAAO,EAAG,QAC/CC,SAAQ,SAAA9V,GAAC,OAAIsS,EAAOtS,EAAE,IAAMA,EAAE,MAC1BsS,EAIc4M,CAAe7J,EAAUgB,mBAE9C,OAAIgH,EAAatb,OAAS,EACjBod,EAAsB9B,GAGxB7I,OAAO+B,QAAQ8G,IAGlB8B,EAAwB,SAAAC,GAC5B,IAAMC,EAAgBD,EAAsBzF,MAAM,EAAG,GAC/C2F,EAAiBF,EAAsBzF,MAAM,GAC7C4F,EAAsBD,EAAeE,QAAO,SAACzK,EAAD,UAAsBA,EAAtB,sBAAqC,GAGvF,OADAiK,EAAiBM,GACX,GAAN,oBAAWD,GAAX,CAA0B,CAAC,QAASE,MA8BhC1J,EAAOhV,mBAAQ,kBAAMoe,MAAgB,CAAC5J,IACtCa,EAASrV,mBAAQ,kBA5BO,SAAAgV,GAC5B,OAAOA,EAAKF,KAAI,SAAAna,GAAK,OAAIgY,GAAc9P,IAAIlI,EAAM,OA2BtB2a,CAAsBN,KAAO,CAACA,IACrD4J,EAAiB5e,mBAAQ,iBAxBtB,CACL6e,SAAU,CACRC,UAAW,CACT7gB,MAAO,SAAC8gB,EAAa/J,GACnB,IAAMgK,EAAUhK,EAAKiK,SAASF,EAAYG,cACpCnB,EAAQiB,EAAQhK,KAAK2J,QAAO,SAACQ,EAAerB,GAAhB,OAAiCqB,EAAgBrB,KAC7EA,EAAekB,EAAQhK,KAAK+J,EAAYhL,OACxCqL,EAAavB,GAAcC,EAAcC,GAE/C,MAAuC,WAAnC/I,EAAKqK,OAAON,EAAYhL,OACpB,GAAN,OAAUiB,EAAKqK,OAAON,EAAYhL,OAAlC,aAA6CqL,EAA7C,cAA6DtB,EAA7D,KAGKI,EACJpJ,KAAI,SAAAwK,GAAO,gBAAOA,EAAQ,GAAf,aAAsBzB,GAAcyB,EAAQ,GAAIvB,GAAhD,cAA4DuB,EAAQ,GAApE,QACXC,KAAK,YASwC,CAACrB,IAE3D,OACE,qBAAKjf,UAAWD,KAAQ0T,UAAxB,SACGsC,EAAK9T,OACJ,cAAC,KAAD,CAAU8T,KAAMA,EAAMc,OAAQ,SAAUT,OAAQA,EAAQmK,QAASZ,IAEjE,cAAC,GAAD,CAAa5d,KAAMiS,UC1ErBsJ,GAA4B,SAAA/H,GAChC,IAAMgI,EAAe,GAErB,IAAK,IAAMiD,KAAQjL,EAAUK,OAC3BL,EAAUK,OAAO4K,GAAMxK,SAAQ,YAA8B,IAA3BF,EAA0B,EAA1BA,SAAUG,EAAgB,EAAhBA,UACzB,iBAAbH,IACFyH,EAAazH,GAAYG,GAAasH,EAAazH,IAAa,OAKtE,IAAMwJ,EAAwB5K,OAAO+B,QAAQ8G,GAC1CvI,MAAK,SAACC,EAAqBlB,GAAtB,OAA8CA,EAAE,GAAKkB,EAAE,MAE/D,OAAIqK,EAAsBrd,OAAS,EAC1Bod,GAAsBC,GAGxB5K,OAAO+B,QAAQ8G,IAGlB8B,GAAwB,SAAAC,GAC5B,IAAMC,EAAgBD,EAAsBzF,MAAM,EAAG,GAE/C4F,EADiBH,EAAsBzF,MAAM,GACR6F,QAAO,SAACzK,EAAD,UAAsBA,EAAtB,sBAAqC,GAEvF,MAAM,GAAN,oBAAWsK,GAAX,CAA0B,CAAC,QAASE,MAkBvBpK,gBAJS,SAAAvS,GAAK,MAAK,CAChCwS,gBAAiBxS,EAAMwS,mBAGVD,EAf8B,SAAC,GAAoC,IAAjBE,EAAgB,EAAjCD,gBAC9C,OACE,cAAC,GAAD,CACEqH,QAASpH,EACTuH,WAAY,CAAC,UAAW,UACxBD,YAAa,oBACbD,cAAeU,QC1CRmD,GAAgC,gCCAhCC,GAA0B,0BCA1BC,GAAwB,wBCIxBC,GAAsB,SAAC,GAAiC,IAA/BlT,EAA8B,EAA9BA,MAAO5J,EAAuB,EAAvBA,KAAMc,EAAiB,EAAjBA,GAC3Cic,EAD4D,EAAb1E,OACjC,UAEbhf,EAFa,wBAEWuQ,EAFX,2CACbvQ,EADa,wBACWuQ,EADX,iBACyB5J,EADzB,eACoCc,EADpC,qBAGpB,OAAO1B,MAAM2d,EAAa,CACxB1d,OAAQ,MACRQ,QAAS0H,KACTjI,YAAa,gBAEZI,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAsd,GDZyB,IAAAC,ICaTD,EAAa/K,KDZrC9Z,GAAMC,SAAS,CACbC,KAAMwkB,GACNI,aCYC3c,OAAM,SAAAkL,GACLtD,GAAW,8CAIJgV,GAAwB,SAAC,GAAyB,IAAvBtT,EAAsB,EAAtBA,MAAO5J,EAAe,EAAfA,KAAMc,EAAS,EAATA,GACnD1B,MAAM,GAAD,OAAI/F,EAAJ,uCAA2CuQ,EAA3C,iBAAyD5J,EAAzD,eAAoEc,GAAM,CAC7EzB,OAAQ,MACRQ,QAAS0H,KACTjI,YAAa,gBAEZI,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAsd,GF3B2B,IAAAC,IE4BTD,EF3B1B7kB,GAAMC,SAAS,CACbC,KAAMukB,GACNK,aE2BC3c,OAAM,WACL4H,GAAW,yDAIJiV,GAA6B,SAAC,GAAyB,IAAvBvT,EAAsB,EAAtBA,MAAO5J,EAAe,EAAfA,KAAMc,EAAS,EAATA,GACxD1B,MAAM,GAAD,OAAI/F,EAAJ,qCAAyCuQ,EAAzC,iBAAuD5J,EAAvD,eAAkEc,GAAM,CAC3EzB,OAAQ,MACRQ,QAAS0H,KACTjI,YAAa,gBAEZI,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAsd,GH1CgC,IAAAC,IG2CTD,EH1C/B7kB,GAAMC,SAAS,CACbC,KAAMskB,GACNM,aG0CC3c,OAAM,WACL4H,GAAW,uD,0CCtCFkV,GARM,WACnB,OACE,qBAAKlhB,UAAWD,KAAQ0T,UAAxB,SACE,cAAC,GAAD,CAAavO,YAAY,OCoIhBF,eAAWqQ,aAVF,SAACvS,GAAD,MAIjB,CACLwS,gBAAiBxS,EAAMwS,gBACvB6B,kBAAmBrU,EAAMqU,kBACzBuD,uBAAwB5X,EAAM4X,0BAGNrF,EAlGS,SAAC,GAA2E,IAAzEvK,EAAwE,EAAxEA,MAAOwK,EAAiE,EAAjEA,gBAAiB6B,EAAgD,EAAhDA,kBAAmBuD,EAA6B,EAA7BA,uBACvEhN,EAAU5C,EAAMC,OAAhB2C,MAER,EAA4B/M,oBAAS,GAArC,mBAAOwgB,EAAP,KAAeC,EAAf,KACMC,EAAeC,iBAAO,MAE5BC,qBAAU,WACRF,EAAaG,QAAQC,SAAS,EAAG,KAChC,IAEHF,qBAAU,WACJjM,GAAmB6B,GAAqBuD,GAC1C0G,GAAU,KAEX,CAAC9L,EAAiB6B,EAAmBuD,IAExC,IAAMgH,EAAkB3gB,mBAAQ,WAC2C,IAAD,IAAxE,IAAmB,OAAfuU,QAAe,IAAfA,OAAA,EAAAA,EAAiBM,UAAWpB,GAAa,OAACc,QAAD,IAACA,OAAD,EAACA,EAAiBM,QAC7D,OAAO,UAAAlB,OAAOhC,OAAP,OAAc4C,QAAd,IAAcA,OAAd,EAAcA,EAAiBM,QAAQ,UAAvC,mBAA2CC,KAAI,qBAAGC,mBAAlD,eAA4E7T,QAAS,IAE7F,QAACqT,QAAD,IAACA,OAAD,EAACA,EAAiBM,SAEf+L,EAAoB5gB,mBAAQ,WAChC,OAAmB,OAAfuU,QAAe,IAAfA,OAAA,EAAAA,EAAiBiB,qBAAsB/B,GAAa,OAACc,QAAD,IAACA,OAAD,EAACA,EAAiBiB,mBACjE7B,OAAOhC,OAAP,OAAc4C,QAAd,IAAcA,OAAd,EAAcA,EAAiBiB,mBAAmBmJ,QAAO,SAACkC,EAAKC,GAAN,OAAgBD,EAAMC,IAAO,GAExF,IACN,QAACvM,QAAD,IAACA,OAAD,EAACA,EAAiBiB,oBAErB,OACE,sBAAKvW,UAAWmhB,EAASphB,KAAQ+hB,gBAAkB/hB,KAAQ0T,UAAWsO,IAAKV,EAA3E,UACE,cAAC,GAAD,CACExf,MAAM,YACN6L,MAAOA,EACPmO,SAAU,CAACmF,GAAuBC,GAA4BL,MAE/DO,EACC,cAAC,GAAD,IAEA,qCACE,sBAAKnhB,UAAWD,KAAQiiB,IAAxB,UACE,cAACC,GAAD,CACEpgB,MAAO,eACPoc,YpCjFmB,8MoCkFnBI,YAAaqD,IAAD,OAAoBpM,QAApB,IAAoBA,OAApB,EAAoBA,EAAiB+I,YACjDD,aAAcsD,GAAmBC,EACjCvgB,OAAQ,cAAC,GAAD,IALV,SAME,cAAC,GAAD,CAAWoU,qBAAsBkM,MAGlCA,GACC,sBAAK1hB,UAAWD,KAAQmiB,gBAAxB,UACE,sBAAKliB,UAAWD,KAAQoiB,UAAxB,UACE,cAAC,GAAD,CAAczmB,MAAOimB,EAAmB9f,MAAO,iBAC/C,cAAC,GAAD,CAAcnG,MAAK,OAAE4Z,QAAF,IAAEA,OAAF,EAAEA,EAAiB+I,WAAYxc,MAAO,mBAG3D,cAACogB,GAAD,CACEpgB,MAAO,oBACPoc,YpCrFsB,2EoCsFtB7c,OAAQ,cAAC,GAAD,IAHV,SAIE,cAAC,GAAD,YAMR,sBAAKpB,UAAWD,KAAQiiB,IAAxB,UACE,cAACC,GAAD,CACEpgB,MpC9G2B,wBoC+G3Boc,YpCtGZ,iIoCuGY7c,OAAQ,cAAC,GAAD,IAHV,SAIE,cAAC,GAAD,MAGF,cAAC6gB,GAAD,CACEpgB,MpCpH2B,uCoCqH3Boc,YpC3GqB,4HoC4GrB7c,OAAQ,cAAC,GAAD,IAHV,SAIE,cAAC,GAAD,mB,2KCtHDghB,GAAW,SAAAhgB,GAEtB,IAAQrE,EAAyBqE,EAAzBrE,MAAOG,EAAkBkE,EAAlBlE,OAAQU,EAAUwD,EAAVxD,MAEvB,OACE,sBACEb,MAAOA,EACPG,OAAQA,EACRyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,WACFG,OAAQvR,EACRwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,UACFG,OAAQvR,EACRwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFG,OAAQvR,EACRwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFG,OAAQvR,EACRwR,YAAY,IACZC,cAAc,QACdC,eAAe,cCpCV+R,GAAc,SAAAjgB,GAEzB,IAAQrE,EAAyBqE,EAAzBrE,MAAOG,EAAkBkE,EAAlBlE,OAAQU,EAAUwD,EAAVxD,MAEvB,OACE,sBACEb,MAAOA,EACPG,OAAQA,EACRyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,oBAAGyS,SAAS,cAAZ,UACE,sBACEtS,EAAE,kXACFG,OAAQvR,EACRyR,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,uYACFG,OAAQvR,EACRyR,cAAc,QACdC,eAAe,UAEjB,sBAAMN,EAAE,gBAAgBG,OAAQvR,IAChC,sBAAMoR,EAAE,2BAA2BG,OAAQvR,OAE7C,+BACE,0BAAUQ,GAAG,QAAb,SACE,sBAAMrB,MAAM,KAAKG,OAAO,KAAK0R,KAAK,kBC7B/B2S,GAAwB,SAAAngB,GAEnC,IAAQrE,EAAyBqE,EAAzBrE,MAAOG,EAAkBkE,EAAlBlE,OAAQU,EAAUwD,EAAVxD,MAEvB,OACE,sBACEb,MAAOA,EACPG,OAAQA,EACRyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,yiBACFG,OAAQvR,EACRwR,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,WACFG,OAAQvR,EACRwR,YAAY,IACZC,cAAc,QACdC,eAAe,cCvBVkS,GAAa,SAAApgB,GAExB,IAAQrE,EAAyBqE,EAAzBrE,MAAOG,EAAkBkE,EAAlBlE,OAAQU,EAAUwD,EAAVxD,MAEvB,OACE,qBACEb,MAAOA,EACPG,OAAQA,EACRyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,SAME,sBACEG,EAAE,6JACFJ,KAAMhR,OChBD6jB,GAAkB,aAClBC,GAAqB,gBACrBC,GAAY,OACZC,GAAuB,kBACvBC,GAA4B,uBAC5BC,GAAuB,kBACvBC,GAAgB,WCchBC,GAA2B,CACtC,CACE3jB,KAAM,OACN4jB,KAAM,cAAC,GAAD,CAAUllB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAC7CskB,UAAW,cAAC,GAAD,CAAUnlB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAClDukB,YAAa,sBACbC,WAAY,CACVC,MAAO,CAAC,IACRlnB,KAAMwmB,KAGV,CACEtjB,KAAM,UACN4jB,KAAM,cAAC,GAAD,CAAallB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAChDskB,UAAW,cAAC,GAAD,CAAanlB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YACrDzC,KAAM,UACNgnB,YAAa,qCACbC,WAAY,CACVE,WAAY,CACVnnB,KAAM,WACNonB,QAAS,CACPC,cAAe,UACfC,SAAU,CACR,CACE5hB,MAAO,GACP8D,SAAU,GACV+d,UAAW,GACXC,QAAS,QAMnBC,SAAU,YAEZ,CACEvkB,KAAM,aACN4jB,KAAM,cAAC,GAAD,CAAuBllB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAC1DskB,UAAW,cAAC,GAAD,CAAuBnlB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAC/DzC,KAAM,aACNgnB,YAAa,sCACbC,WAAY,CACVE,WAAY,CACVnnB,KAAM,QACNonB,QAAS,CACPtU,IAAK,MAIX2U,SAAU,YAEZ,CACEvkB,KAAM,SACNlD,KAAM,SACN8mB,KAAM,cAAC,GAAD,CAAYllB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAC/CskB,UAAW,cAAC,GAAD,CAAYnlB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YACpDukB,YAAa,wBACbC,WAAY,CACVS,aAAc,YACdpM,KAAM,GAERmM,SAAU,aAIDE,GAAyB,CACpC,CACEzkB,KAAM,iBACN+jB,WAAY,CACVE,WAAY,CACVnnB,KAAM,QACNonB,QAAS,CACPtU,IAAK,OAKb,CACE5P,KAAM,aACNlD,KAAMsmB,GACNW,WAAY,CACVjnB,KAAMsmB,GACNsB,UAAW,GACXC,UAAW,MAKJC,GAA6B,CACxC9nB,KAAM2mB,GACNoB,eAAgB,CACdC,YAAa,CACX,CACEC,SAAU,GACVC,OAAQ,IAGZC,uBAAuB,IAIdC,GAAsB,CACjCpoB,KAAMumB,GACN8B,WAAY,CACV,CACEplB,GAAI,GACJ1D,MAAO,GACP2D,KAAM,MAKColB,GAAgB,CAC3BtoB,KAAMymB,GACN6B,cAAe,CACbC,WAAY,OACZC,sBAAuB,KACvBC,0BAA2B,KAC3BC,uBAAwB,KACxBC,gBAAiB,OAIRC,GAAgB,CAC3B5oB,KAAM0mB,GACNmC,oBAAqB,CACnBC,gBAAiB,KACjBC,gBAAiB,OAIRC,GAAiB,CAC5BC,YAAa,CACX,CACEC,UAAW,KACXC,SAAU,KACV5pB,MAAO,OAGX6pB,YAAa,MACbC,WAAY,MAGDC,GAAU,CACrBtpB,KAAM4mB,GACN0C,QAAS,CACPC,aAAa,EACb9e,KAAM,KACNjD,QAAS,GACTR,OAAQ,MACR8L,IAAK,KACLuV,WAAY,K,qBCrKT,SAASmB,GAAcpZ,GAC5B,IAAIlM,EAAKoF,EAAMmgB,EAYf,OAVIrZ,GACFlM,EAAMkM,EAAMlM,KAAO,GACnBoF,EAAO8G,EAAM9G,MAAQ,GACrBmgB,EAAYrZ,EAAMqZ,WAAa,SAE/BvlB,EAAM,GACNoF,EAAO,GACPmgB,EAAY,QAGP,CACLvlB,IAAI,GAAD,OAAKA,EAAL,KACHoF,KAAK,GAAD,OAAKA,EAAL,KACJ9D,UAAU,cAAD,OAAgBtB,EAAhB,eAA0BoF,EAA1B,MACTmgB,UAAU,GAAD,OAAKA,GACdplB,UAAW,OAIf,IA+CMqlB,G,kDACJ,WAAYzjB,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,GAFI,E,0CAKnB,WACE,MAA2BnH,KAAKyG,MAAxBrC,EAAR,EAAQA,QAASwM,EAAjB,EAAiBA,MACjB,OACE,8BACE,cAAC,KAAD,CACE,kBAAgB,qBAChB,mBAAiB,2BACjBV,KAAMlQ,KAAKyG,MAAMyJ,KACjBia,qBAAsBnqB,KAAKyG,MAAM2jB,aACjCC,QAASrqB,KAAKyG,MAAM4jB,QACpBzZ,MAAO,CAAEqZ,UAAW,QANtB,SAOE,sBAAKrZ,MAAOoZ,GAAcpZ,GAAQvM,UAAWD,EAAQkmB,MAArD,UACE,cAAC,KAAD,CAAOjmB,UAAWD,EAAQmmB,SAAUjlB,QAAStF,KAAKyG,MAAM4jB,UACvDrqB,KAAKyG,MAAMP,OACV,oBAAI7B,UAAWD,EAAQ8B,MAAvB,SAA+BlG,KAAKyG,MAAMP,QAE3ClG,KAAKyG,MAAM+b,oB,GAtBMrZ,IAAMC,WAqCrBtH,yBApFA,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVmB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAAS,iBACTM,QAAS,OACTX,MAAO,IACPO,aAAc,IAEhBuD,MAAO,CACLR,WAAY,SACZxC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BpoB,UAAW,UAEbqoB,KAAM,CACJtoB,MAAO,OACPgB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,OAE5CpX,IAAK,CACHjQ,MAAO,qBAETmO,KAAM,GACN0G,UAAW,GACX6S,WAAY,GACZnF,OAAQ,CACNvjB,SAAU,WACV6H,KAAM,MACNsY,WAAY,QACZ1d,IAAK,MACLqF,OAAQ,MAEV6gB,aAAc,CACZ3gB,UAAW,GACX/H,QAAS,OACTyH,eAAgB,YAElB4gB,SAAU,CACRtoB,SAAU,WACVsB,MAAO,OACPmB,IAAK,OACLzB,MAAO,UACP0B,OAAQ,cAyCG7C,CAAmBooB,IC7GrBW,GAAmB,WAE9B,OACE,sBACEzoB,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,4sBACFJ,KAAK,YAEP,sBACEI,EAAE,iqBACFJ,KAAK,gBCfA6W,GAAoB,WAE/B,OACE,sBACE1oB,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,0WACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,oBACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,cCrBVoW,GAAU,WAErB,OACE,sBACE3oB,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,wUACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,YACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,cCrBVqW,GAAqB,WAEhC,OACE,sBACE5oB,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,qBACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,uFACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,cCrBVsW,GAAqB,WAEhC,OACE,qBACE7oB,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,SAME,sBACEG,EAAE,2iCACFJ,KAAK,eCXAiX,GAAc,WACzB,OACE,qBAAK9oB,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,SACE,sBAAMG,EAAE,yoBAAyoBJ,KAAK,eCiB7oBnS,yBCvBO,iBAAO,CAC3BqpB,KAAM,CACJjpB,QAAS,OACTK,OAAQ,GACRE,QAAS,GACTkC,OAAQ,UACRhC,aAAc,EACd+C,WAAY,OACZ,UAAW,CACTtC,gBAAiB,6BAGrBgD,KAAM,CACJgc,WAAY,GAEdgJ,YAAa,CACXloB,SAAU,GACVD,MAAO,sBACPiH,aAAc,GAEhBmhB,mBAAoB,CAClBpoB,MAAO,wBACPT,OAAQ,EACRU,SAAU,GACVwC,WAAY,WDDD5D,EAjBS,SAAA2E,GACtB,IAAQrC,EAA8CqC,EAA9CrC,QAASkjB,EAAqC7gB,EAArC6gB,KAAM5jB,EAA+B+C,EAA/B/C,KAAM8jB,EAAyB/gB,EAAzB+gB,YAAaliB,EAAYmB,EAAZnB,QAE1C,OACE,sBAAKjB,UAAWD,EAAQ+mB,KAAM7lB,QAASA,EAAvC,UACGgiB,EACD,sBAAKjjB,UAAWD,EAAQgC,KAAxB,UACE,mBAAG/B,UAAWD,EAAQgnB,YAAtB,SAAoC1nB,IACpC,mBAAGW,UAAWD,EAAQinB,mBAAtB,SAA2C7D,aEdtC8D,GAAmB,SAAnBA,EAAmBC,GAC9B,IAAIxrB,EAAOD,EAEX,GAAwB,kBAAbyrB,GAAsC,OAAbA,EAClC,OAAOA,EAIT,IAAMC,EAAYC,MAAMC,QAAQH,GAAY,GAAK,GAEjD,IAAKzrB,KAAOyrB,EACVxrB,EAAQwrB,EAASzrB,GAGjB0rB,EAAU1rB,GAAOwrB,EAAiBvrB,GAGpC,OAAOyrB,GC8MM1pB,yBC/NO,SAAAC,GAAK,MAAK,CAC9BuoB,MAAO,CACLroB,SAAU,WACVmB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzBznB,QAAS,OACTX,MAAO,IACPO,aAAc,GACdF,QAAS,IAEXkpB,UAAW,CACTzpB,QAAS,QAEXgE,MAAO,CACLR,WAAY,SACZxC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BjoB,OAAQ,oBAEV+nB,SAAU,CACRtoB,SAAU,WACVsB,MAAO,OACPmB,IAAK,OACLzB,MAAO,UACP0B,OAAQ,WAEVsG,KAAM,CACJ/I,QAAS,OACT0pB,IAAK,QAEPC,QAAS,CACPzpB,MAAO,MACPF,QAAS,YD+LEJ,EA7LQ,SAAA2E,GACrB,IAAQrC,EAA6CqC,EAA7CrC,QAAS8L,EAAoCzJ,EAApCyJ,KAAM4b,EAA8BrlB,EAA9BqlB,KAAMC,EAAwBtlB,EAAxBslB,WAAY1B,EAAY5jB,EAAZ4jB,QAmHzC,OACE,cAAC,KAAD,CACE,kBAAgB,qBAChB,mBAAiB,2BACjBna,KAAMA,EACNU,MAAO,CAAEqZ,UAAW,QACpBI,QAASA,EALX,SAME,sBAAKzZ,MAAOoZ,KAAiB3lB,UAAWD,EAAQkmB,MAAhD,UACE,sBAAKjmB,UAAWD,EAAQue,OAAxB,UACE,cAAC,KAAD,CAAOte,UAAWD,EAAQmmB,SAAUjlB,QAAS+kB,IAC7C,oBAAIhmB,UAAWD,EAAQ8B,MAAvB,8BAEF,sBAAK7B,UAAWD,EAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,EAAQynB,QAAxB,UACGxE,GAAyBnN,KAAI,SAAC1R,EAAS2Q,GAAV,OAC5B,cAAC,GAAD,CAEEmO,KAAM9e,EAAQ+e,UACd7jB,KAAM8E,EAAQ9E,KACd8jB,YAAahf,EAAQgf,YACrBliB,QAAS,kBArIQ,SAAAmiB,GAC7B,IAAMuE,EAAO,eAAQF,GAChBE,EAAQC,WAAUD,EAAQC,SAAW,IAC1CxE,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAjB,eAA2Bmd,IAC3BsE,EAAWC,GACX3B,IA+H2B8B,CAAuB3jB,EAAQif,cAJzCtO,MAOT,cAAC,GAAD,CACEmO,KAAM,cAAC,GAAD,IACN5jB,KAAM,gBACN8jB,YAAa,+BACbliB,QAnIY,WACtB,IAAM0mB,EAAO,eAAQF,GAErB,GADKE,EAAQC,WAAUD,EAAQC,SAAW,KAEvCD,EAAQC,SAASG,MAAK,SAAA5jB,GAAO,OAAIA,EAAQhI,OAASumB,MACnD,CACA,IAAMU,EAAa6D,GAAiB1C,IACpCnB,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAjB,eAA2Bmd,IAC3BsE,EAAWC,GAEb3B,UA2HM,sBAAKhmB,UAAWD,EAAQynB,QAAxB,UACE,cAAC,GAAD,CACEvE,KAAM,cAAC,GAAD,IACN5jB,KAAM,kBACN8jB,YACE,6DAEFliB,QA/Ha,WACvB,IAAM0mB,EAAO,eAAQF,GAErB,GADKE,EAAQC,WAAUD,EAAQC,SAAW,IAEvCD,EAAQC,SAASG,MAAK,SAAA5jB,GAAO,OAC5BA,EAAQhI,OAASymB,IACjBze,EAAQhI,OAAS2mB,IACjB3e,EAAQhI,OAAS0mB,MAQnB7W,GACE,4GAPF,CACA,IAAMoX,EAAa6D,GAAiBxC,IACpCrB,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAKY,KAAK6B,MAAM7B,KAAKC,UAAUsc,KAChDsE,EAAWC,GAMb3B,OA8GQ,cAAC,GAAD,CACE/C,KAAM,cAAC,GAAD,IACN5jB,KAAM,WACN8jB,YAAa,oBACbliB,QA/GI,WACd,IAAM0mB,EAAO,eAAQF,GACrBE,EAAQK,KAAO,GACfN,EAAWC,GACX3B,OA6GQ,cAAC,GAAD,CACE/C,KAAM,cAAC,GAAD,IACN5jB,KAAM,iBACN8jB,YAAa,iCACbliB,QA9Ga,WACvB,IAAM0mB,EAAO,eAAQF,GAErB,GADKE,EAAQC,WAAUD,EAAQC,SAAW,IAEvCD,EAAQC,SAASG,MAChB,SAAA5jB,GAAO,OACLA,EAAQhI,OAAS2mB,IACjB3e,EAAQhI,OAAS0mB,IACjB1e,EAAQhI,OAASymB,MAQrB5W,GACE,4GAPF,CACA,IAAMoX,EAAa6D,GAAiBlC,IACpC3B,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAKY,KAAK6B,MAAM7B,KAAKC,UAAUsc,KAChDsE,EAAWC,GAMb3B,OA4FQ,cAAC,GAAD,CACE/C,KAAM,cAAC,GAAD,IACN5jB,KAAM,kBACN8jB,YAAa,yCACbliB,QA7Fc,WACxB,IAAM0mB,EAAUV,GAAiBQ,GAGjC,GADKE,EAAQC,WAAUD,EAAQC,SAAW,IAEvCD,EAAQC,SAASG,MAChB,SAAA5jB,GAAO,OACLA,EAAQhI,OAAS2mB,IACjB3e,EAAQhI,OAAS0mB,IACjB1e,EAAQhI,OAASymB,MAQrB5W,GACE,4GAPF,CACA,IAAMoX,EAAa6D,GAAiBhD,IACpCb,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAKghB,GAAiB7D,IACvCsE,EAAWC,GAMb3B,OA0EQ,cAAC,GAAD,CACE/C,KAAM,cAAC,GAAD,IACN5jB,KAAM,WACN8jB,YAAa,8CACbliB,QA3EO,WACjB,IAAM0mB,EAAO,eAAQF,GAErB,GADKE,EAAQC,WAAUD,EAAQC,SAAW,KAEvCD,EAAQC,SAASG,MAAK,SAAA5jB,GAAO,OAAIA,EAAQhI,OAAS4mB,MACnD,CACA,IAAMK,EAAa6D,GAAiBxB,IACpCrC,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAjB,eAA2Bmd,IAC3BsE,EAAWC,GAEb3B,qBE1FWvoB,yBCzDO,iBAAO,CAC3BgW,UAAW,CACT1V,MAAO,OACPF,QAAS,OACTyH,eAAgB,UAElB2iB,SAAU,CACR5pB,OAAQ,oBACRN,MAAO,GACPI,OAAQ,EACRC,QAAS,iBACTI,UAAW,aACXR,UAAW,SACXsC,OAAQ,UACRzC,QAAS,OACTC,cAAe,SACfyH,WAAY,SACZD,eAAgB,gBAChB1G,MAAO,UACPC,SAAU,GACV,UAAW,CACTyC,WAAY,UACZ1C,MAAO,QACPP,OAAQ,qBAEV,mBAAoB,CAClB8R,OAAQ,SAEV,gBAAiB,CACf+X,uBAAwB,GACxBC,oBAAqB,IAEvB,eAAgB,CACdC,wBAAyB,GACzBC,qBAAsB,QDuBb5qB,EA9CI,SAAA2E,GACjB,IAAQrC,EAA8BqC,EAA9BrC,QAAS0nB,EAAqBrlB,EAArBqlB,KAAMC,EAAetlB,EAAfslB,WACvB,EAAwB/mB,oBAAS,GAAjC,mBAAOkL,EAAP,KAAayc,EAAb,KAYA,OACE,qCACE,sBAAKtoB,UAAWD,EAAQ0T,UAAxB,UACGuP,GAAyBnN,KAAI,SAAC1R,EAAS2Q,GAAV,OAC5B,sBAEE9U,UAAWD,EAAQkoB,SACnBhnB,QAAS,kBAjBY,SAAAmiB,GAC7B,IAAMuE,EAAO,eAAQF,GAEhBE,EAAQC,WAAUD,EAAQC,SAAW,IAC1CxE,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAjB,eAA2Bmd,IAE3BsE,EAAWC,GAUYG,CAAuB3jB,EAAQif,aAHhD,UAIGjf,EAAQ8e,KACT,8BAAM9e,EAAQ9E,SAJTyV,MAQT,sBAAK9U,UAAWD,EAAQkoB,SAAUhnB,QAAS,kBAAMqnB,GAAQ,IAAzD,UACE,cAAC,GAAD,CAAWvqB,MAAM,KAAKG,OAAO,IAAIU,MAAM,YACvC,8CAIJ,cAAC,GAAD,CACEiN,KAAMA,EACN4b,KAAMA,EACNC,WAAYA,EACZ1B,QAAS,kBAAMsC,GAAQ,Y,6BE9ClBC,GAAmB,mBAEnBC,GAAiB,WAAuB,IAAtBC,EAAqB,uDAAP,GAC3CxsB,GAAMC,SAAS,CACbC,KAAMosB,GACNE,iBCLSC,GAAa,aACbC,GAAY,YASZC,GAAW,SAAAnB,GACtBxrB,GAAMC,SAAS,CACbC,KAAMwsB,GACNlB,UCbSoB,GAAa,aACbC,GAAe,eCDfC,GAAa,aCUnB,SAASC,GAAStb,GACvBxK,MAAM/F,EAAW,QAAUuQ,EAAQ,QAAS,CAC1CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GFde,IAAA+kB,IEeT/kB,EFddjI,GAAMC,SAAS,CACbC,KAAM0sB,GACNI,UCJqB,SAAAA,GACvBhtB,GAAMC,SAAS,CACbC,KAAM4sB,GACNxF,QAAS,CAAE0F,WCcTC,CAAUhlB,MAEXE,OAAM,SAASrB,GACdiJ,GAAW,2DAIV,SAASmd,GAAczb,EAAO0b,GACnClmB,MAAM/F,EAAW,QAAUuQ,EAAQ,QAAS,CAC1CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUsiB,KAEpB5lB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,iCFzBO,SAAAyd,GACxBntB,GAAMC,SAAS,CACbC,KAAM2sB,GACNM,SEuBEC,CAAWnlB,MAEZE,OAAM,SAASrB,GACdiJ,GAAW,yBCtCV,IAAMsd,GAAa,SAAA7B,GACxB,IAAM8B,EAAWtC,GAAiBQ,GAelC,OAbA,OAAI8B,QAAJ,IAAIA,OAAJ,EAAIA,EAAU3B,YACZ2B,EAAS3B,SAAW2B,EAAS3B,SAAS/R,KAAI,SAAA1R,GACxC,GAAIA,EAAQhI,OAAS4mB,GAAe,CAClC,IAAM0C,EAAUwB,GAAiB9iB,EAAQshB,SAEzCthB,EAAQshB,QAAQ9hB,QAAU+Q,OAAO+B,QAAQgP,EAAQ9hB,SAAW,IAAIkS,KAAI,yCAAmB,CAAEpa,IAArB,KAA0BC,MAA1B,SAEpEyI,EAAQshB,QAAQjB,WAAa9P,OAAO+B,QAAQgP,EAAQjB,YAAc,IAAI3O,KAAI,yCAAmB,CAAEpa,IAArB,KAA0BC,MAA1B,SAE5E,OAAOyI,MAIJolB,G,gDCPT,WAA6B9B,EAAM/Z,GAAnC,UAAAuH,EAAA,+EAEU/R,MAAM/F,EAAW,QAAS,CAC9BiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU2gB,KAN3B,OASIuB,GAAStb,GACT/B,GAAa,iCAVjB,gDAYIK,GAAW,sBAZf,0D,sEAgBA,WAAwByb,EAAM/Z,EAAOqB,EAAU1C,GAA/C,4BAAA4I,EAAA,+EAE2B/R,MAAM,GAAD,OAAI/F,EAAJ,0BAA8B4R,GAAY,CACpE3L,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAU2gB,KAN3B,UAS4B,OAPlBhkB,EAFV,QASiBQ,OATjB,iCAUyBR,EAAS1B,OAVlC,OAUYA,EAVZ,OAWYynB,EAAM3iB,KAAK6B,MAAM3G,GACvBiK,IAAW,UAAAwd,EAAIC,YAAY,UAAhB,eAAoBtlB,WAApB,UAA+BqlB,EAAIzmB,aAAnC,aAA+B,EAAWoB,UAZ3D,yCAciCoH,GAA8B9H,GAd/D,QAcYqd,EAdZ,OAeMnV,GAAa,iCACP+d,EAAgBJ,GAAU,OAACxI,QAAD,IAACA,OAAD,EAACA,EAAc/K,MAC/C6S,GAASc,GACTV,GAAStb,GACTrB,EAASqd,GAnBf,0DAsBI1d,GAAW,sBAtBf,2D,+BA0Be2d,G,uFAAf,WAAuBC,EAAQ7a,EAAU1C,GAAzC,oBAAA4I,EAAA,+EAE2B/R,MAAM,GAAD,OACvB/F,EADuB,iBACNysB,EADM,qBACa7a,GACvC,CACE3L,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAPhB,cAEUM,EAFV,gBAU+B8H,GAA8B9H,GAV7D,OAUUqd,EAVV,OAWU4I,EAAgBJ,GAAU,OAACxI,QAAD,IAACA,OAAD,EAACA,EAAc/K,MAE3C1J,GAAUA,EAASqd,GACvBd,GAASc,GAdb,kDAgBI1d,GAAW,sBAhBf,2D,+BAoBe6d,G,uFAAf,WAA0BD,EAAQlc,EAAOrB,GAAzC,UAAA4I,EAAA,+EAEU/R,MAAM,GAAD,OAAI/F,EAAJ,iBAAqBysB,GAAU,CACxCxmB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WALd,OAOI6lB,GAAStb,GACT/B,GAAa,+BACbU,IATJ,gDAWIL,GAAW,sBAXf,0D,sEAeA,WAAoC8d,GAApC,kBAAA7U,EAAA,+EAE2B/R,MAAM,GAAD,OACvB/F,EADuB,8BACO2sB,GACjC,CACE1mB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAPhB,cAEUM,EAFV,gBAU+B8H,GAA8B9H,GAV7D,OAUUqd,EAVV,OAWI0H,GAAc,OAAC1H,QAAD,IAACA,OAAD,EAACA,EAAc/K,MAXjC,kDAaI/J,GAAW,mBAbf,2D,+BAiBe+d,G,qFAAf,WAA8BnjB,EAAMojB,GAApC,gBAAA/U,EAAA,+EAE2B/R,MAAM,GAAD,OAAI/F,EAAJ,qBAAyB6sB,GAAU,CAC7D5mB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUF,KAN3B,cAEUnD,EAFV,gBASiB8H,GAA8B9H,GAT/C,wEAWIuI,GAAW,mBAXf,0D,sBCvFO,SAAS2Z,KAId,MAAO,CACLnlB,UAAW,MACXD,SAAU,MACVF,IAAI,GAAD,OANO,GAMP,KACHoF,KAAK,GAAD,OANO,GAMP,KACJ9D,UAAU,cAAD,OARC,GAQD,eAPE,GAOF,MACTikB,UAAW,OACX7nB,MAAO,QACPK,QAAS,YACTQ,MAAO,WAIX,IAuEMqrB,G,4MACJnnB,MAAQ,CACN+I,MAAM,EACNqe,SAAU,KACVC,cAAe,G,EAGjBC,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CACZuJ,MAAM,EACNye,aAAc,M,wDAIlB,SAAmBlH,GACjBznB,KAAKyG,MAAMmoB,iBAAiBnH,GAC5BznB,KAAK2G,SAAS,CACZuJ,MAAM,M,yBAIV,WACElQ,KAAKyG,MAAMooB,cACX7uB,KAAK2G,SAAS,CACZuJ,MAAM,M,qBAIV,WACElQ,KAAKyG,MAAMqoB,UACX9uB,KAAK2G,SAAS,CACZuJ,MAAM,M,+BAIV,WACElQ,KAAKyG,MAAMsoB,oBACX/uB,KAAK2G,SAAS,CACZuJ,MAAM,M,6BAIV,WACElQ,KAAKyG,MAAMuoB,kBACXhvB,KAAK2G,SAAS,CACZuJ,MAAM,M,8BAIV,WACElQ,KAAKyG,MAAMwoB,mBACXjvB,KAAK2G,SAAS,CACZuJ,MAAM,M,oBAIV,WAAU,IAAD,OACC9L,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKC,UAAWD,EAAQ8qB,iBAAxB,UACE,sBAAK7qB,UAAWD,EAAQ+qB,QAAxB,UACG9H,GAAyBnN,KAAI,SAAC1R,EAAS2Q,GAAV,OAC5B,sBAEE9U,UAAS,UAAKD,EAAQkoB,SAAb,aACThnB,QAAS,kBAAM,EAAKmB,MAAMmoB,iBAAiBpmB,EAAQif,aAHrD,UAIGjf,EAAQ8e,KACT,8BAAM9e,EAAQ9E,SAJT8E,EAAQ9E,SAOjB,sBAEEW,UAAS,UAAKD,EAAQkoB,SAAb,aACT1b,MAAO,CAAEwe,WAAY,gCACrB9pB,QAAStF,KAAKyuB,WAJhB,UAKE,cAAC,GAAD,CAAWrsB,MAAM,KAAKG,OAAO,IAAIU,MAAM,YACvC,0CALI,YAQR,cAAC,GAAD,CAAgBiN,KAAMlQ,KAAKmH,MAAM+I,KAAMma,QAASrqB,KAAK0uB,cACrD,cAAC,KAAD,CACE,kBAAgB,qBAChB,mBAAiB,2BACjBxe,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAK0uB,YAJhB,SAKE,sBAAK9d,MAAOoZ,KAAiB3lB,UAAWD,EAAQkmB,MAAhD,UACE,sBAAK1Z,MAAO,CAAE1O,QAAS,QAAvB,UACGimB,GAAuBjO,KAAI,SAAC1R,EAAS2Q,GAAV,OAC1B,qBAEE9U,UAAWD,EAAQirB,UACnB/pB,QAAS,kBAAM,EAAKgqB,mBAAmB9mB,EAAQif,aAHjD,SAIE,8BAAMjf,EAAQ9E,QAHT8E,EAAQ9E,SAMjB,qBAEEW,UAAWD,EAAQirB,UACnB/pB,QAAS,kBAAM,EAAK0pB,mBAHtB,SAIE,iDAHKjI,IAKP,qBAEE1iB,UAAWD,EAAQirB,UACnB/pB,QAAS,kBAAM,EAAKupB,eAHtB,SAIE,oDAHI,YAKN,qBAEExqB,UAAWD,EAAQirB,UACnB/pB,QAAS,kBAAM,EAAKwpB,WAHtB,SAIE,wCAHI,QAKN,qBAEEzqB,UAAWD,EAAQirB,UACnB/pB,QAAS,kBAAM,EAAKypB,qBAHtB,SAIE,mDAHI,mBAKN,qBAEE1qB,UAAWD,EAAQirB,UACnB/pB,QAAS,kBAAM,EAAK2pB,oBAHtB,SAIE,mDAHKhI,OAOT,cAAC,KAAD,CACE5iB,UAAWrE,KAAKyG,MAAMrC,QAAQqB,OAC9B8pB,QAAQ,SACRC,KAAK,QACLvsB,MAAM,UACN2N,MAAO,CAAE6e,MAAO,SAChBnqB,QAAStF,KAAK0uB,YANhB,+B,GApIavlB,IAAMC,WCzGlBsmB,IDiQY5tB,sBA/NV,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzBC,IAAK,CACH5tB,SAAU,WACV4H,OAAQ,GACRtG,MAAO,GACPH,gBAAiB,UACjBH,MAAO,QAETynB,KAAM,CACJtoB,MAAO,OACPwC,SAAU,KAEZsqB,iBAAkB,CAChB9sB,MAAO,OACP0tB,UAAW,QAEbX,QAAS,CACPjtB,QAAS,OACTS,aAAc,GACdP,MAAO,cACPa,MAAO,UACPC,SAAU,GACVV,OAAQ,eAEV8pB,SAAU,CACR5pB,OAAQ,oBACRN,MAAO,GACPI,OAAQ,EACRC,QAAS,iBACTI,UAAW,aACXR,UAAW,SACXsC,OAAQ,UACRzC,QAAS,OACTC,cAAe,SACfyH,WAAY,SACZD,eAAgB,gBAChB1G,MAAO,WAET,UAAW,CACT,kBAAmB,CACjB0C,WAAY,UACZ1C,MAAO,QACPP,OAAQ,qBAEV,2BAA4B,CAC1B8R,OAAQ,SAEV,wBAAyB,CACvB+X,uBAAwB,GACxBC,oBAAqB,IAEvB,uBAAwB,CACtBC,wBAAyB,GACzBC,qBAAsB,KAG1B2C,UAAW,CACT5sB,QAAS,WACTS,SAAU,GACVV,OAAQ,GACRmC,OAAQ,cA4Ja7C,CAAmBwsB,ICjQV,sBACrByB,GAAoB,oBACpBC,GAAuB,uBCFvBC,GAAc,cACdC,GAAiB,iBACjBC,GAAgB,gBAChBC,GAAiB,iBACjBC,GAAiB,iBAgBjBC,GAAe,SAAAC,GAC1BjwB,GAAMC,SAAS,CACbC,KAAM2vB,GACNI,cCNG,SAASC,GAAiBze,EAAO0e,GACtC,OAAOlpB,MAAM/F,EAAW,gBAAkBuQ,EAAQ,SAAW0e,EAAM,CACjEhpB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GFrB5B,IAAAmoB,EEwBtB,OFxBsBA,EEsBLnoB,EAAKmoB,YFrB9BpwB,GAAMC,SAAS,CACbC,KAAMkvB,GACNgB,gBEoBMJ,GAAa/nB,EAAKooB,gBACXpoB,EAAKooB,kBAGhB7oB,EAAS1B,OAAOyB,KAAKmI,OAEtBvH,OAAM,SAAAlE,GACL8L,GACE,+EAyDD,SAASugB,GAAiBC,EAAS9e,EAAO2e,GAC/CnpB,MAAM/F,EAAW,gBAAkBuQ,EAAO,CACxCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU0lB,KAEpBhpB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,oCF1FY,SAAA0gB,GAC7BpwB,GAAMC,SAAS,CACbC,KAAMuvB,GACNW,gBEwFEI,CAAgBJ,GDhGI,SAAAG,GACxBvwB,GAAMC,SAAS,CACbC,KAAMyvB,GACNY,YC8FEE,CAAWxoB,MAEZE,OAAM,SAASrB,GACdiJ,GAAW,yBAIV,SAAS2gB,GAAcH,EAAS9e,GACrCxK,MAAM/F,EAAW,gBAAkBuQ,EAAO,CACxCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAU0lB,KAEpBhpB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,oCD5FiB,SAAA6gB,GAClCvwB,GAAMC,SAAS,CACbC,KAAM4vB,GACNS,YC0FEI,CAAqB1oB,MAEtBE,OAAM,SAASrB,GACdiJ,GAAW,yBAIV,SAAS6gB,GAAcC,EAAWT,GACvCnpB,MAAM/F,EAAW,YAAc2vB,EAAW,CACxC1pB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,oCFrHkB,SAAA0gB,GACnCpwB,GAAMC,SAAS,CACbC,KAAMwvB,GACNU,gBEoHEU,CAAsBV,GD5HC,SAAAS,GAC3B7wB,GAAMC,SAAS,CACbC,KAAM0vB,GACNiB,cC0HEE,CAAcF,MAEf1oB,OAAM,SAASrB,GACdiJ,GAAW,yB,4GC1FjB,SAASihB,GAAW7qB,GAClB,OAAO,cAAC,KAAD,aAAO8qB,UAAU,MAAS9qB,I,IAG7B+qB,G,4MACJrqB,MAAQ,CACN+I,MAAM,G,EAGRue,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,mDAGxB,WACMlQ,KAAKyG,MAAMgrB,WACbzxB,KAAKyG,MAAMirB,oBAEXR,GAAclxB,KAAKyG,MAAMkrB,UAAW3xB,KAAKyG,MAAMiqB,aAC/C1wB,KAAK2G,SAAS,CAAEuJ,MAAM,O,oBAI1B,WAAU,IAAD,OACC9L,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBACEwM,MAAO,CACL3O,SAAU,WACVsB,MAAO,GAHX,UAKE,cAAC,KAAD,CACEc,UAAU,YACVuM,MAAO,CACLjL,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,IAEV,aAAW,SACX+C,QAAS,kBAAM,EAAKmpB,cAVtB,SAWE,cAAC,GAAD,CAAWrsB,MAAM,OAAOG,OAAO,OAAOU,MAAM,cAE9C,eAAC,KAAD,CACE2uB,WAAY,GACZ1hB,KAAMlQ,KAAKmH,MAAM+I,KACjBjK,WAAYqrB,GACZO,aAAW,EACXxH,QAASrqB,KAAK0uB,YACd,kBAAgB,2BAChB,mBAAiB,iCAPnB,UAQE,cAAC,KAAD,CAAajrB,GAAG,2BAAhB,SACG,kDAEH,eAAC,KAAD,CACEmN,MAAO,CAAE1O,QAAS,OAAQyH,eAAgB,gBAD5C,UAEE,cAAC,KAAD,CACEtF,UAAS,UAAKD,EAAQqB,OAAb,gBACTH,QAAS,kBAAM,EAAKwsB,iBACpB7uB,MAAM,UAHR,oBAMA,cAAC,KAAD,CACEoB,UAAS,UAAKD,EAAQqB,OAAb,iBACTH,QAAStF,KAAK0uB,YAFhB,iC,GA/DgBvlB,IAAMC,WA+EnBtH,yBA1HA,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLloB,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzBnC,KAAM,CACJ1nB,UAAW,uCACXpD,aAAc,IAEhB8C,OAAQ,CACNE,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdH,OAAQ,SACRS,MAAO,QACPL,WAAY,oBAEd,UAAW,CACT,oCAAqC,CACnCmD,UAAW,uCACXpD,aAAc,IAEhB,qBAAsB,CACpBgD,WAAY,QACZ1C,MAAO,WAET,sBAAuB,CACrBA,MAAO,QACP0C,WAAY,WAEd,gBAAiB,CACfA,WAAY,QACZ1C,MAAO,eAwFEnB,CAAmB0vB,ICxIrBO,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,GACHD,EAAM+qB,WAAa/qB,EAAMgrB,WAAahrB,EAAMirB,YAAYC,QAE3D,OAAO,2BACFJ,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACT,UAAW,CACTC,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACP,UAAW,CACTC,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTiwB,SAAU,YAEZ9uB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,kBChDEuwB,GAAoB,oBACpBC,GAAqB,qBACrBC,GAAqB,qBAErBC,GAAkB,SAAAhf,GAC7BxT,GAAMC,SAAS,CACbC,KAAMmyB,GACN7e,cAWSif,GAAmB,WAC9BzyB,GAAMC,SAAS,CACbC,KAAMqyB,MCpBGG,GAAa,aACbC,GAAgB,gBAChBC,GAAgB,gBAChBC,GAAe,eACfC,GAAgB,gBAsBhBC,GAAc,SAAAC,GACzBhzB,GAAMC,SAAS,CACbC,KAAM2yB,GACNG,aC7BSC,GAAoB,oBACpBC,GAAkB,kBAClBC,GAAsB,sBCmB5B,SAASC,GAAW3hB,EAAO4hB,GAChCpsB,MAAM/F,EAAW,eAAiBuQ,EAAQ,QAAU4hB,EAAK,CACvDlsB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClD8qB,GAAY9qB,MAGhBT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GACE,8EAKD,SAASujB,GAAiB7hB,EAAO4hB,EAAKlD,EAAMoD,GACjD,OAAOtsB,MACL/F,EACE,eACAuQ,EACA,QACA4hB,EACA,IACAlD,EACA,iBACAoD,EACF,CACEpsB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GDzD7B,IAAAurB,EC4DrB,OD5DqBA,EC0DLvrB,EAAKurB,YDzD7BxzB,GAAMC,SAAS,CACbC,KAAM+yB,GACNO,gBCwDMT,GAAY9qB,EAAKwrB,eACVxrB,EAAKwrB,iBAGhBjsB,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GACE,8EAKD,SAAS2jB,GAAoBjiB,GAAoB,IAAb8hB,EAAY,uDAAJ,GACjDtsB,MAAM/F,EAAW,eAAiBuQ,EAAQ,UAAY8hB,EAAO,CAC3DpsB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClD8qB,GAAY9qB,MAGhBT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GACE,8EAKD,SAAS4jB,GAA+BliB,EAAO8hB,GACpDtsB,MACE/F,EAAW,eAAiBuQ,EAAQ,2BAA6B8hB,EACjE,CACEpsB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClD8qB,GAAY9qB,MAGhBT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GACE,8EA0BD,SAAS6jB,GAAgBniB,EAAO0e,EAAMjB,EAAM2E,GACjD5sB,MACE/F,EACE,QACAuQ,EAFFvQ,kBAKEivB,EACA,SACAjB,EACA,cACA2E,EACF,CACE1sB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClDuqB,GAAgBvqB,MAGpBT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GACE,+EAMD,SAAS+jB,GAAeriB,EAAO0e,EAAMjB,EAAM2E,GAChD5sB,MAAM,GAAD,OACA/F,EADA,gBACgBuQ,EADhB,8BAC2C0e,EAD3C,iBACwDjB,EADxD,sBAC0E2E,GAC7E,CACE1sB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClDuqB,GAAgBvqB,MAGpBT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GACE,oFAyBD,SAASgkB,GAAgBC,EAAQR,GACtCvsB,MAAM/F,EAAW,UAAW,CAC1BiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUmpB,KAEpBzsB,MAAK,SAAAC,GACJ,IAAKA,EAASC,GACZ,MAAMD,EAASS,OAEjB,OAAOqH,GAA8B9H,MAEtCD,MAAK,SAAAU,GACJyH,GAAa,mCFpOM,SAAAskB,GACvBh0B,GAAMC,SAAS,CACbC,KAAMwyB,GACNsB,WEkOEC,CAAUhsB,GDhOc,SAAAurB,GAC5BxzB,GAAMC,SAAS,CACbC,KAAMgzB,GACNM,gBC8NEU,CAAeV,MAEhBrrB,OAAM,SAASrB,GACdA,EAAMS,MAAK,SAAA8L,GACTtD,GAAW,wBAAD,OAAyBsD,EAAInL,gBAKxC,SAASisB,GAAYpU,EAAStO,GACnCxK,MAAM/F,EAAW,QAAUuQ,EAAQ,aAAc,CAC/CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUkV,KAEpBxY,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,IHnPrB,SAAA8X,GACrC/f,GAAMC,SAAS,CACbC,KAAMoyB,GACNvS,YGiPMqU,CAAwBnsB,MAG5BT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GAAW,yBAIV,SAASskB,GAAaL,EAAQ5jB,GACnCnJ,MAAM/F,EAAW,UAAW,CAC1BiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAUmpB,KAEpBzsB,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClDyH,GAAa,mCFlPY,SAAAskB,GACjCh0B,GAAMC,SAAS,CACbC,KAAM4yB,GACNkB,WEgPMM,CAAoBrsB,MAGxBT,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GAAW,yBAIV,SAASwkB,GAAaC,EAAUhB,GACrCvsB,MAAM/F,EAAW,WAAaszB,EAAU,CACtCrtB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WAEPK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OACX,OAAOsH,GAA8B9H,GAAUD,MAAK,SAAAU,GAClDyH,GAAa,mCFpRQ,SAAA8kB,GAC7Bx0B,GAAMC,SAAS,CACbC,KAAM0yB,GACN4B,aEkRMC,CAAgBD,GDtRU,SAAAhB,GAClCxzB,GAAMC,SAAS,CACbC,KAAMizB,GACNK,gBCoRMkB,CAAqBlB,MAGzBhsB,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAE3CqC,OAAM,SAASrB,GACdiJ,GAAW,yB,yBC/SJ4kB,GAAmB,SAACl1B,GAAD,cAAmBA,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAOwS,SCF3B,eDIlB2iB,GAAqB,SAAC7xB,EAAetD,EAAe0D,GAA/B,MAA+C,CAAEJ,QAAOtD,QAAO0D,OEsDlF4F,eAAmCqQ,aC1DP,SAAC,GAAD,MAAkB,CAAE4Z,QAApB,EAAGA,WD0DI5Z,EA7CI,SAAC,GAAsD,IAApDvK,EAAmD,EAAnDA,MAAOmkB,EAA4C,EAA5CA,QAAS6B,EAAmC,EAAnCA,kBAAmBp1B,EAAgB,EAAhBA,MAAO0D,EAAS,EAATA,GACjG,EAA4CuB,mBAAS,MAArD,mBAAOowB,EAAP,KAAuBC,EAAvB,KACA,EAAwCrwB,mBAAS,IAAjD,mBAAOswB,EAAP,KAAqBC,EAArB,KAEA3P,qBAAU,WACR,IAAM4P,EFZsB,SAAAlC,GAG9B,OAAOA,EAAQpZ,KAAI,SAAAoa,GAAM,OAAIY,GAFN,SAAAZ,GAAM,gBAAOA,EAAOX,IAAM,MAAQ,IAA5B,OAAiCW,EAAO5wB,MAErB+xB,CAAenB,GAASA,EAAO5wB,KAAM4wB,EAAO7wB,OESpEiyB,CAAiBpC,GAAW,IAC9C2B,GAAiBl1B,IAAQy1B,EAAclrB,KAAKqrB,KAChDJ,EAAgBC,GAChBH,EAAkBO,OACjB,IAEH,IAAM7jB,EAAS5C,EAAMC,OAAe2C,MAQ9B4jB,EAA0B,kBAAMT,GAAmBn1B,EAAOA,EAAO0D,IAUjEmyB,EAAsC,kBAAO71B,EAAQ41B,SAA4BE,GAEvF,OACE,qBAAKxxB,UAAWD,KAAQ0xB,WAAxB,SACE,cAAC,KAAD,CACEptB,OAAQqpB,GACRgE,QAbGT,EAAapb,KAAI,SAAAoa,GAAM,kCAAUA,GAAV,IAAkBrwB,SAAUgxB,GAAiBX,EAAOjxB,YAc9EtD,MAAOq1B,EACPtxB,SAxBoB,SAACkyB,GACzBX,EAAkBW,GAClBb,EAAkBa,GAClBhC,GAAoBjiB,IAsBhBkkB,cAAc,EACdC,cAdoB,SAACn2B,EAAeo2B,GCpCZ,iBDqCxBA,EAAOA,QAA6BnC,GAAoBjiB,EAAOhS,Y,0CEoDxD2Z,gBAJS,SAACvS,GAAD,MAA4B,CAClDmmB,MAAOnmB,EAAMmmB,SAGA5T,EAzEqB,SAAC,GAAkD,IAAhD4T,EAA+C,EAA/CA,MAAOvtB,EAAwC,EAAxCA,MAAOsyB,EAAiC,EAAjCA,QAAS+D,EAAwB,EAAxBA,QAAStyB,EAAe,EAAfA,SACrE,EAAuDkB,mBAAS,IAAhE,mBAAO+wB,EAAP,KAAgBM,EAAhB,KACA,EAAwDrxB,oBAAS,GAAjE,mBAAOsxB,EAAP,KAAqBC,EAArB,KAEMC,EAAYpxB,mBAAQ,WACxB,OAAO2wB,EAAQ1jB,MAAK,gBAAUokB,EAAV,EAAG12B,MAAYsD,EAAf,EAAeA,MAAf,OAA2BozB,IAAQ12B,GAASsD,IAAUtD,OACzE,CAACA,EAAOg2B,IAEXnQ,qBAAU,WACR,GAAI0H,EAAO,CACT,IAAMyI,EAA4B,GAElCzI,EAAMjT,SAAQ,YAAqB,IAAlBqc,EAAiB,EAAjBA,MACXA,GACFA,EAAMrc,SAAQ,YAAwB,IAArB3W,EAAoB,EAApBA,KAAMD,EAAc,EAAdA,GACrBsyB,EAAQzrB,KAAK,CAAEjH,MAAOK,EAAM3D,MAAO0D,UAKzC4yB,EAAWN,MAEZ,CAACzI,IAEJ,IAQMqJ,EAAiB,SAAAL,GACrBC,EAAgBD,IAQlB,OACE,uBAAM,kBAAUE,QAAV,IAAUA,OAAV,EAAUA,EAAWnzB,MAAO,kBAAUmzB,QAAV,IAAUA,OAAV,EAAUA,EAAWnzB,MAAvD,UACE,cAAC,KAAD,CACEqF,OAAQqpB,GACRgE,QAASA,EACTh2B,MAAOy2B,EACPI,cAAe,IACfC,cAAe,IACfC,cAAe,OACfzE,QAASA,EACTvuB,SAfe,SAAA/D,GACnBw2B,GAAgB,GAChBzyB,EAAS/D,IAcLq2B,QAASA,EACTW,WAAY,CAAEC,YA7BA,SAAAvwB,GAClB,OACE,cAAC,KAAWuwB,YAAZ,2BAA4BvwB,GAA5B,aACE,cAAC,KAAD,CAAoB3C,SAAU6yB,EAA9B,SAA+ClwB,EAAM+b,kBA4BtD8T,IAAY,OAAIE,QAAJ,IAAIA,OAAJ,EAAIA,EAAWnzB,QAC1B,cAAC,KAAD,CACEgB,UAAWD,KAAQqY,QACnBE,OAAO,QACPD,MAAM,MACNlc,KAAK,OACLy2B,YAAY,EACZxzB,GAAE,OAAE+yB,QAAF,IAAEA,OAAF,EAAEA,EAAWnzB,cCrBnB6zB,G,4MACJ/vB,MAAQ,CACNgwB,cAAe,EAAK1wB,MAAM2wB,gBAAkB,KAC5CvG,QAAS,M,EAaXnjB,aAAe,SAAChK,EAAM3D,GACpB,GAAa,iBAAT2D,GAAqC,OAAV3D,EAAgB,CAC7C,IAAM8wB,EAAU3lB,KAAK6B,MAAM7B,KAAKC,UAAU,EAAKhE,MAAM0pB,UACrDA,EAAQntB,GAAQ3D,EAChB,EAAK4G,SAAS,CAAEkqB,QAASA,IAAW,WACN,OAAxBA,EAAQwG,aAA2C,OAAnBxG,EAAQyD,SACtC,EAAK7tB,MAAMgrB,YACbb,GAAiBC,EAAS,EAAKpqB,MAAM0I,MAAMC,OAAO2C,MAAO,EAAKtL,MAAMiqB,aACpE,EAAKjqB,MAAMirB,oBAEXV,GAAcH,EAAS,EAAKpqB,MAAM0I,MAAMC,OAAO2C,a,EAMzDulB,aAAe,SAAA/yB,GACb0vB,GAA+B,EAAKxtB,MAAM0I,MAAMC,OAAO2C,MAAOxN,I,4CAGhE,WAAU,IAAD,OACCH,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,8BACGpE,KAAKmH,MAAM0pB,SACV,sBAAKxsB,UAAS,2BAAsBD,EAAQmzB,cAA5C,UACE,sBAAKlzB,UAAWD,EAAQozB,WAAxB,UACE,mBAAGnzB,UAAWD,EAAQqzB,KAAtB,0BACA,cAAC,GAAD,CACE13B,MAAOC,KAAKmH,MAAM0pB,QAAQ6G,aAC1B5zB,SAAU,gBAAGT,EAAH,EAAGA,MAAH,OAAe,EAAKqK,aAAa,eAAgBrK,SAG/D,sBAAKgB,UAAWD,EAAQozB,WAAxB,UACE,mBAAGnzB,UAAWD,EAAQqzB,KAAtB,oBACA,cAAC,GAAD,CACEtC,kBAAmB,SAAAp1B,GAAK,OAAI,EAAK2N,aAAa,SAAU3N,EAAMA,QAC9DA,MAAOC,KAAKmH,MAAM0pB,QAAQyD,YAG9B,sBAAKjwB,UAAWD,EAAQozB,WAAxB,UACE,mBAAGnzB,UAAWD,EAAQqzB,KAAtB,sBACA,cAAC,GAAD,CACE13B,MAAOC,KAAKmH,MAAM0pB,QAAQwG,YAC1BvzB,SAAU,gBAAGT,EAAH,EAAGA,MAAH,OAAe,EAAKqK,aAAa,cAAerK,SAG9D,cAAC,GAAD,CACEsuB,UAAW3xB,KAAKyG,MAAM2wB,eACtBvG,QAAS7wB,KAAKmH,MAAM0pB,QACpBY,WAAYzxB,KAAKyG,MAAMgrB,WACvBC,iBAAkB1xB,KAAKyG,MAAMirB,iBAC7B3f,MAAO/R,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAC/B4lB,kBAAmB33B,KAAKyG,MAAMmxB,aAC9BT,cAAen3B,KAAKmH,MAAMgwB,cAC1BzG,YAAa1wB,KAAKyG,MAAMiqB,sB,uCAlEpC,SAAgCmH,EAAWC,GACzC,IAAQjH,EAAYgH,EAAZhH,QAER,OAAKiH,EAAUjH,SAAWA,EACjB,CAAEA,WAGJ,S,GAbeznB,aAoFXC,eAAWvH,sBAjIX,SAAAC,GAAK,MAAK,CACvBw1B,aAAc,CACZr1B,QAAS,OACTM,OAAQ,SACRJ,MAAO,OACPuH,eAAgB,gBAChBhE,WAAY,UACZI,UAAW,4CACXpD,aAAc,GACdV,SAAU,YAEZu1B,WAAY,CACVhqB,UAAW,MACX/K,QAAS,GACTs1B,YAAa,qBAEfN,KAAM,CACJt0B,WAAY,OACZD,SAAU,GACVD,MAAO,WAET+0B,OAAQ,CACN/0B,MAAO,UACPC,SAAU,IAEZ,UAAW,CACT,kFAAmF,CACjF60B,YAAa,GAEf,uFAAwF,CACtF90B,MAAO,qBACPC,SAAU,IAEZ,aAAc,CACZjB,SAAU,WACVsB,OAAQ,GACRrB,QAAS,OACT+H,WAAY,IAEd,qCAAsC,CACpC/H,QAAS,aAyFWJ,CAAmBo1B,KCzFvCe,G,4MACJ9wB,MAAQ,CACNspB,KAAM,EACNyH,YAAa,GACbhoB,MAAM,EACNioB,YAAa,I,EA0BfC,iBAAmB,SAACzqB,EAAO8iB,GACzB,EAAK9pB,SAAS,CAAE8pB,U,EAGlB4H,wBAA0B,SAAA1qB,GACxB,EAAKhH,SAAS,CAAEuxB,YAAavqB,EAAM9G,OAAO9G,S,EAc5C43B,kBAAoB,WAClB,EAAKhxB,SAAS,CAAEuJ,MAAM,K,uDA3CxB,WbpBK,IAAyB+d,IaqBZjuB,KAAKyG,MAAMwnB,ObpB7B1mB,MAAM/F,EAAW,iBAAmBysB,EAAQ,CAC1CxmB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,KAAK+H,IACL/H,KAAKyoB,IACL7nB,OAAM,SAASlE,GACd8L,GACE,+EaYJqjB,GAAW1zB,KAAKyG,MAAM0I,MAAMC,OAAO2C,OAAO,K,2BAG5C,WACE,IAAM8e,EAAU,CACd6G,aAAc13B,KAAKmH,MAAMkwB,YACzB/C,OAAQt0B,KAAKmH,MAAMmtB,OACnB+C,YAAar3B,KAAKmH,MAAM6kB,SAEO,MAA7BhsB,KAAKyG,MAAM2wB,eACbxG,GAAiBC,EAAS7wB,KAAKyG,MAAM0I,MAAMC,OAAO2C,QAElD8e,EAAQptB,GAAKzD,KAAKyG,MAAM2wB,eACxBpG,GAAcH,EAAS7wB,KAAKyG,MAAM0I,MAAMC,OAAO2C,U,kBAInD,c,8BAYA,SAAiBof,GACfnxB,KAAK2G,SAAS,CACZywB,eAAgBjG,EAChBgH,YAAa,CACX10B,GAAIzD,KAAKyG,MAAMwnB,OACfvqB,KAAM1D,KAAKyG,MAAMgiB,UAEnBvY,MAAM,M,oBAQV,WAAU,IAAD,OACC9L,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,8BACE,qBAAKwM,MAAOoZ,KAAiB3lB,UAAWD,EAAQkmB,MAAhD,SAC0B,MAAvBtqB,KAAKyG,MAAM8pB,UACV,gCACE,sBACE3f,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZ0uB,SAAU,IACV3uB,eAAgB,iBALpB,UAOE,oBAAItF,UAAWD,EAAQ8B,MAAvB,sBACA,sBACE0K,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB6D,UAAW,OALf,UAOE,cAAC,KAAD,CACEnJ,UAAWD,EAAQm0B,mBACnBjzB,QAAS,kBAAM,EAAKkzB,iBACpBjJ,QAAQ,SAHV,SAIE,cAAC,GAAD,CAAUhtB,OAAO,OAAOH,MAAM,OAAOa,MAAM,cAE7C,wCACU,IACR,sBAAM2N,MAAO,CAAE6nB,cAAe,aAA9B,8BAKN,qBAAKp0B,UAAWD,EAAQs0B,MAAxB,SACG14B,KAAKyG,MAAM8pB,UACVvwB,KAAKyG,MAAM8pB,SAASrW,KAAI,SAAA2W,GAAO,OAC7B,8BACE,cAAC,GAAD,CACEA,QAASA,EACTuG,eAAgBvG,EAAQptB,MAHlBotB,EAAQptB,oB,GA7FX0F,IAAMC,WAsHlBC,eACbvH,sBA7Ja,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAAO,MACPgB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzB2H,aAAc,CACZr1B,QAAS,OACTM,OAAQ,SACRJ,MAAO,OACPuH,eAAgB,gBAChBhE,WAAY,UACZI,UAAW,4CACXpD,aAAc,IAEhB60B,WAAY,CACVhqB,UAAW,MACX/K,QAAS,IAEXyD,MAAO,CACL7D,UAAW,SACXa,SAAU,GACVD,MAAO,UACPE,WAAY,QAEdo1B,mBAAoB,CAClB5yB,WAAY,4DACZI,UAAW,0CACXxD,OAAQ,GACRH,MAAO,GACPK,QAAS,EACT61B,SAAU,GACV31B,aAAc,OA2HhBb,CAAmB4X,aAVG,SAAAvS,GAAK,MAAK,CAChCopB,SAAUppB,EAAMopB,SAChB+C,QAASnsB,EAAMmsB,WAQI5Z,CAAyBue,M,WC3KjCU,I,OAAc,eACdC,GAAY,YCMlB,SAASC,GAAS9mB,GACvBxK,MAAM,GAAD,OAAI/F,EAAJ,sBAA0BuQ,EAA1B,SAAwC,CAC3CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GDXc,IAAA8jB,ICYT9jB,EDXbjI,GAAMC,SAAS,CACbC,KAAMo4B,GACNvM,YCWC5jB,OAAM,SAASrB,GACdiJ,GAAW,2DAIV,SAASyoB,GAAUC,EAAKhnB,EAAOrB,GACpCnJ,MAAM,GAAD,OAAI/F,EAAJ,sBAA0BuQ,EAA1B,SAAwC,CAC3CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU4tB,KAEpBlxB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,IDpBe,SAAAwwB,GACvBz4B,GAAMC,SAAS,CACbC,KAAMm4B,GACNI,QCkBEC,CAAUzwB,GACNmI,GAAUA,IACdV,GAAa,kCAEdvH,OAAM,SAASrB,GACdiJ,GAAW,2DCjCjB,IAqCM4oB,G,4JACJ,WAAU,IAAD,OACP,EAQIj5B,KAAKyG,MAPPrC,EADF,EACEA,QACAJ,EAFF,EAEEA,aACAJ,EAHF,EAGEA,YACAs1B,EAJF,EAIEA,YACAC,EALF,EAKEA,WACAC,EANF,EAMEA,UACAC,EAPF,EAOEA,IAEF,OACE,qBAAKzoB,MAAOsoB,EAAa70B,UAAWD,EAAQk1B,YAA5C,SACE,uBACEj1B,UAAWD,EAAQ9B,MACnBsO,MAAOuoB,EACPC,UAAWA,EAAY,EAAIA,EAAY,IACvCp1B,aAAcA,EACdJ,YAAaA,EACbpD,KAAMR,KAAKyG,MAAMjG,KAAOR,KAAKyG,MAAMjG,KAAO,OAC1CsD,SAAU,SAAAS,GAAC,OAAI,EAAKkC,MAAM3C,SAASS,IACnCD,WAAY,SAAAC,GACV,EAAKkC,MAAM8yB,gBAAkB,EAAK9yB,MAAM8yB,eAAeh1B,IAEzDR,OAAQ,SAAAQ,GACN,EAAKkC,MAAM1C,QAAU,EAAK0C,MAAM1C,OAAOQ,IAEzCi1B,IAAKH,GAAO,c,GA3BIlwB,IAAMC,WAwCjBC,eAAWvH,sBA7EX,SAAAC,GAAK,MAAK,CACvBO,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBX,QAAS,QACTQ,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B8W,IAAK,CACH/2B,OAAQ,oBACRO,MAAO,UACPb,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,IAEby0B,YAAa,CACX52B,OAAQ,oBACRC,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,YACToC,UAAW,GACXzC,MAAO,QA4CeN,CAAmBm3B,K,oBCSvCS,G,4JACJ,WAAU,IAAD,OACP,EAAgC15B,KAAKyG,MAA7BrC,EAAR,EAAQA,QAAS5D,EAAjB,EAAiBA,KAAMgvB,EAAvB,EAAuBA,KACjBmK,EAAW,UAAMn5B,EAAO4D,EAAQ5D,GAAQ4D,EAAQyB,QAArC,YACf7F,KAAKyG,MAAMmzB,OAASx1B,EAAQw1B,OAExBC,EACK,OAATrK,EAAgBprB,EAAQ01B,OAAkB,OAATtK,EAAgBprB,EAAQ21B,OAAS,GAEpE,OACE,wBACE91B,SAAUjE,KAAKyG,MAAMxC,SACrBI,UAAS,UAAKs1B,EAAL,YAAoBE,GAC7Bv0B,QAAS,SAAAf,GAAC,OAAI,EAAKkC,MAAMnB,SAAW,EAAKmB,MAAMnB,QAAQf,IACvDqM,MAAO5Q,KAAKyG,MAAMiC,OAJpB,SAKG1I,KAAKyG,MAAMP,Y,GAfOiD,IAAMC,WA8BlBtH,SAlHA,SAAAC,GAAK,MAAK,CACvB8D,QAAS,CACPpD,QAAS,YACTQ,MAAOlB,EAAM6D,QAAQC,QAAQiX,aAC7BnX,WAAY5D,EAAM6D,QAAQC,QAAQC,KAClC9C,YAAajB,EAAM6D,QAAQC,QAAQC,KACnCpD,OAAQ,YACRK,QAAS,OACT4B,OAAQ,UACRhC,aAAc,GACd+C,WAAY,SACZ9C,WAAY,OACZM,SAAU,GACV,UAAW,GACX,aAAc,CACZE,gBAAiBrB,EAAM6D,QAAQC,QAAQm0B,MACvCh3B,YAAajB,EAAM6D,QAAQC,QAAQm0B,QAGvCC,UAAW,CACTx3B,QAAS,YACTQ,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BH,WAAY5D,EAAM6D,QAAQC,QAAQiX,aAClC9Z,YAAajB,EAAM6D,QAAQC,QAAQC,KACnCpD,OAAQ,YACRK,QAAS,OACT4B,OAAQ,UACRhC,aAAc,GACd+C,WAAY,SACZ9C,WAAY,OACZM,SAAU,GACV,UAAW,GACX,aAAc,CACZE,gBAAiBrB,EAAM6D,QAAQC,QAAQF,aAG3Cu0B,QAAS,CACPz3B,QAAS,WACTkD,WAAY5D,EAAM6D,QAAQC,QAAQiX,aAClCpa,OAAQ,YACRM,YAAajB,EAAM6D,QAAQs0B,QAAQC,KACnCl3B,MAAOlB,EAAM6D,QAAQQ,KAAKuc,OAC1BhgB,aAAc,GACdO,SAAU,GACVwC,WAAY,EACZ,UAAW,CACTf,OAAQ,YAGZy1B,QAAS,CACPn3B,MAAOlB,EAAM6D,QAAQQ,KAAKuc,OAC1BtB,eAAgB,YAChB3e,OAAQ,OACRiD,WAAY,cACZlD,QAAS,IACTS,SAAU,GACVC,WAAY,MACZ,UAAW,CACTwB,OAAQ,YAGZm1B,OAAQ,CACNr3B,QAAS,YAEXs3B,OAAQ,CACNt3B,QAAS,aAEX43B,OAAQ,CACNj3B,gBAAiB,QACjBL,QAAS,OACT4B,OAAQ,UACRzB,SAAU,GACVD,MAAO,UACPR,QAAS,WACTC,OAAQ,QAEVk3B,MAAO,CACLj0B,WAAY5D,EAAM6D,QAAQC,QAAQiX,aAClC7Z,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BpD,OAAQ,YACRM,YAAajB,EAAM6D,QAAQC,QAAQC,SAkCL,CAAEtC,WAAW,GAAhC1B,CAAwC43B,ICtGjDY,G,kDAuBJ,WAAY7zB,GAAQ,IAAD,8BACjB,cAAMA,IAvBR8zB,WAAa,SAAAh2B,GACX,EAAKoC,SAAS,CAAE6zB,SAAUj2B,EAAEsC,OAAO9G,SAqBlB,EAlBnB+4B,UAAY,WAEP,EAAKryB,MAAMg0B,QACTvgB,KAAI,SAAS6e,GACZ,OAAOA,EAAIh5B,SAEZwS,SAAS,EAAKpL,MAAMqzB,UAQvBnqB,GAAW,qCANXyoB,GACE,CAAE/4B,MAAO,EAAKoH,MAAMqzB,UACpB,EAAK/zB,MAAM0I,MAAMC,OAAO2C,MACxB,EAAKtL,MAAMi0B,gBASf,EAAKvzB,MAAQ,CACXqzB,SAAU,IAHK,E,0CAOnB,WAAU,IAAD,OACCp2B,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,gCACE,cAAC,GAAD,CACER,YAAY,gBACZw1B,UAAW,GACXF,YAAa,CACX12B,OAAQ,aAEVwB,aAAchE,KAAKmH,MAAMqzB,SACzB12B,SAAU,SAAAS,GAAC,OAAI,EAAKg2B,WAAWh2B,MAEjC,qBAAKF,UAAWD,EAAQwmB,aAAxB,SACE,cAAC,GAAD,CAActlB,QAAS,kBAAM,EAAKwzB,aAAa5yB,MAAM,oB,GA5CxCiD,IAAMC,WAuDdC,eAAWvH,sBA9DX,SAAAC,GAAK,MAAK,CACvB6oB,aAAc,CACZ1oB,QAAS,OACTyH,eAAgB,aA2DM7H,CAAmBw4B,KCxDvCK,G,kDACJ,WAAYl0B,GAAQ,IAAD,8BACjB,cAAMA,IAMRm0B,iBAAmB,SAAAjtB,GACjB,EAAKlH,MAAM3C,SAAS6J,IARH,EAWnBktB,aAAe,SAAAzgB,GAAI,OAAI,WACrB,EAAKzT,UACH,SAAAQ,GACE,IAAM2zB,EAAY,aAAO3zB,EAAM2zB,cACzBC,EAAeD,EAAa76B,QAAQma,GAE1C,OADA0gB,EAAaE,OAAOD,EAAc,GAC3B,CAAED,mBAEX,kBAAM,EAAKr0B,MAAMmhB,QAAQ,EAAKzgB,MAAM2zB,mBAnBrB,EAuBnBG,mBAAqB,WACnB,EAAKt0B,SAAS,CAAEu0B,cAAc,KAxBb,EA2BnBC,oBAAsB,WACpB,EAAKx0B,SAAS,CAAEu0B,cAAc,KA1B9B,EAAK/zB,MAAQ,CACX+zB,cAAc,GAHC,E,0DA+BnB,SAAuBnkB,GACrB,OAAOA,EAAOmD,KAAI,SAAA6e,GAChB,MAAO,CACLh5B,MAAOg5B,EAAIh5B,MACXsD,MAAO01B,EAAIh5B,MACX0D,GAAIs1B,EAAIt1B,S,oBAKd,WACE,MAA2BzD,KAAKyG,MAAxBrC,EAAR,EAAQA,QAASwM,EAAjB,EAAiBA,MAEjB,OACE,sBAAKA,MAAOA,EAAZ,UACE,cAAC,KAAD,CACEwqB,SAAO,EACPr7B,MAAOC,KAAKq7B,uBAAuBr7B,KAAKyG,MAAM1G,OAC9C+D,SAAU9D,KAAK46B,iBACf7E,QAAS/1B,KAAKq7B,uBAAuBr7B,KAAKyG,MAAM4lB,MAAMhT,MACpD,SAACiiB,EAAMC,GAAP,OAAgBA,EAAK93B,GAAK63B,EAAK73B,SAGjCzD,KAAKyG,MAAM+0B,YACX,mBACEn3B,UAAWD,EAAQq3B,iBACnBn2B,QAAStF,KAAKi7B,mBAFhB,4BAMF,cAAC,GAAD,CACE/qB,KAAMlQ,KAAKmH,MAAM+zB,aACjB7Q,QAASrqB,KAAKm7B,oBACdj1B,MAAM,eAHR,SAIE,cAAC,GAAD,CACEw0B,cAAe16B,KAAKm7B,oBACpBV,QAASz6B,KAAKyG,MAAM4lB,gB,GApEbjjB,aAgFJtH,yBA3FA,SAAAC,GAAK,MAAK,CACvB05B,iBAAkB,CAChBxxB,UAAW,GACX/G,SAAU,GACVyB,OAAQ,UACR/B,WAAY,OACZye,eAAgB,YAChBjf,MAAO,kBAoFIN,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCklB,KAAMllB,EAAMklB,QAGoB3S,CAAyBihB,KC1FrDjyB,GAAS,CACboP,UAAW,CACT7N,UAAW,GACXxH,QAAS,GACTL,MAAO,OAETs5B,gBAAiB,CACft5B,MAAO,SAILu5B,G,4JACJ,WAAU,IAAD,OACP,OACE,sBAAKt3B,UAAU,UAAUuM,MAAOlI,GAAOoP,UAAvC,UACE,qCACA,cAAC,GAAD,CACEhU,SAAU,SAAA/D,GAAK,OAAI,EAAK0G,MAAM3C,SAAS/D,IACvCA,MAAOC,KAAKyG,MAAM1G,MAClB6Q,MAAOlI,GAAOgzB,gBACdE,YAAalzB,GAAOgzB,kBAEtB,qBAAKr3B,UAAU,UAAUiB,QAAS,kBAAM,EAAKmB,MAAMo1B,YAAnD,SACE,qBAAKryB,IAAI,8BAA8BC,IAAI,oB,GAZ7BN,IAAMC,WAuBfC,eAAWqQ,aAJF,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAGUnP,CAAyBiiB,KCxCtCG,GAAqB,qBCoB3B,SAASC,GAAiBhqB,GAC/BxK,MAAM/F,EAAW,gBAAkBuQ,EAAO,CACxCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GDzBsB,IAAAyzB,IC0BTzzB,EDzBrBjI,GAAMC,SAAS,CACbC,KAAMs7B,GACNE,oBCyBCvzB,OAAM,SAASrB,GACdiJ,GAAW,yBA0DV,SAAS4rB,GAAkBlqB,EAAOmqB,EAAYC,GACnD,IAAM7oB,EACU,MAAd4oB,EAAA,UACO16B,EADP,wBAC+BuQ,EAD/B,yBACqDoqB,GADrD,UAEO36B,EAFP,wBAE+BuQ,EAF/B,YAEwCmqB,GAE1C30B,MAAM+L,EAAK,CACT7L,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WAEPK,MAAK,SAAAC,GACJ,OAAOA,KAERD,MAAK,WACJk0B,GAAiBhqB,MAElBtJ,OAAM,SAASrB,GACdiJ,GAAW,yBAIV,SAAS+rB,GAAgBrqB,GAC9B,OAAOxK,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,kBAA2C,CACrDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAw0B,GACJ,IAAQC,EAAqCD,EAArCC,gBAAiBC,EAAoBF,EAApBE,gBACrBpjB,GAAS,EASb,OARAojB,EAAgBriB,KAAI,SAAA9G,GACdA,EAAS3P,KAAO64B,EAAgB74B,KAClC0V,EAAQojB,EAAgBt8B,QAAQmT,QAErB,IAAX+F,GAAcojB,EAAgBvB,OAAO7hB,EAAO,GAChDmjB,EAAgBE,WAAY,EAC5BD,EAAgBE,QAAQH,GAEjBD,KAER5zB,OAAM,SAAArB,GAAK,OAAIs1B,QAAQC,IAAIv1B,MCrIzB,I,sJCGMmO,GAAa,WAExB,OACE,sBACEnT,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEC,SAAS,UACTC,SAAS,UACTC,EAAE,saACFJ,KAAK,UACLmC,YAAY,QAEd,sBACEjC,SAAS,UACTC,SAAS,UACTC,EAAE,gPACFJ,KAAK,UACLmC,YAAY,YCKLtU,yBC7BO,iBAAO,CAC3BgW,UAAW,CACT7V,SAAU,YAEZK,MAAO,CACLF,MAAO,OACPG,OAAQ,GACRQ,QAAS,OACTL,OAAQ,kCACRG,UAAW,aACXF,aAAc,EACdF,QAAS,qBAEX6kB,KAAM,CACJrlB,SAAU,WACVyC,IAAK,EACLnB,MAAO,ODaIzB,EAtBA,SAAA2E,GACb,IAAQrC,EAA4DqC,EAA5DrC,QAASrE,EAAmD0G,EAAnD1G,MAAO+D,EAA4C2C,EAA5C3C,SAAU8M,EAAkCnK,EAAlCmK,MAAOhN,EAA2B6C,EAA3B7C,YAAag5B,EAAcn2B,EAAdm2B,UAEtD,OACE,sBAAKv4B,UAAWD,EAAQ0T,UAAWlH,MAAOA,EAA1C,UACE,uBACEvM,UAAWD,EAAQ9B,MACnBsB,YAAaA,GAAe,SAC5B7D,MAAOA,EACP+D,SAAUA,EACV84B,UAAW,SAAAjvB,GAAK,OAAIivB,GAAaA,EAAUjvB,MAE7C,qBAAKtJ,UAAWD,EAAQkjB,KAAxB,SACE,cAAC,GAAD,YEdKyK,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAAX,mBAAC,eACL8qB,GADI,IAEP7vB,MAAO,IACPM,OAAQ,OACRK,QAAS,OACTgD,UAAW,OACX3C,gBAAiB,cACjB,UAAW,CACTV,OAAQ,OACRqD,UAAW,WAGfusB,mBAAoB,SAACL,EAAU9qB,GAAX,mBAAC,eAChB8qB,GADe,IAElB7uB,gBAAiB,iBAEnBmvB,YAAa,SAACN,EAAU9qB,GAAX,mBAAC,eACT8qB,GADQ,IAEXhvB,MAAO,aAET45B,kBAAmB,SAAC5K,EAAU9qB,GAAX,mBAAC,eACf8qB,GADc,IAEjBhvB,MAAO,UACPf,QAAS,OACTyC,OAAQ,UACR,UAAW,CACT1B,MAAO,eC/BA65B,GAAoB,WAC/B,OACE,qBAAK16B,MAAM,KAAKG,OAAO,IAAIyR,QAAQ,WAAWC,KAAK,OAAOC,MAAM,6BAAhE,SACE,sBAAMG,EAAE,kBAAkBG,OAAO,UAAUC,YAAY,IAAIC,cAAc,QAAQC,eAAe,aCHzFooB,GAAkB,WAC7B,OACE,qBAAK36B,MAAM,KAAKG,OAAO,IAAIyR,QAAQ,WAAWC,KAAK,OAAOC,MAAM,6BAAhE,SACE,sBAAMG,EAAE,mDACNG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,aCiERtL,eAAWvH,sBH1EJ,iBAAO,CAC3Bk7B,MAAO,CACL5a,WAAY,OGwEUtgB,CAAmB4X,aAJrB,SAAAvS,GAAK,YAAK,CAChC81B,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGaiW,EA9DrB,SAAAjT,GACtB,IAAQw2B,EAA0Cx2B,EAA1Cw2B,YAAan5B,EAA6B2C,EAA7B3C,SAAU/D,EAAmB0G,EAAnB1G,MAAOqE,EAAYqC,EAAZrC,QACtC,EAA8CY,mBAAS,IAAvD,mBAAOu3B,EAAP,KAAwBW,EAAxB,KACA,EAA4Bl4B,oBAAS,GAArC,mBAAOm4B,EAAP,KAAeC,EAAf,KACA,EAA4Dp4B,mBAAS,CAAE3B,MAAO,UAAWtD,MAAO,OAAhG,mBAAOs9B,EAAP,KAA+BC,EAA/B,KAEA1X,qBAAU,WACJqX,GACFb,GAAgBa,GAAap1B,MAAK,SAAAw0B,GAChC,IAAQC,EAAqCD,EAArCC,gBAAiBC,EAAoBF,EAApBE,gBACnBnH,EAAiB,CACrB/xB,MAAOi5B,EAAgBiB,SACvBx9B,MAAOu8B,EAAgBnI,UACvBqJ,YAAalB,EAAgBnI,UAC7BkF,IAAKiD,EAAgBmB,OAGjBC,EAAkBnB,EAAgBriB,KAAI,SAAA9G,GAC1C,MAAO,CACL/P,MAAO+P,EAASmqB,SAChBx9B,MAAOqT,EAAS+gB,UAChBkF,IAAKjmB,EAASqqB,UAGlB35B,EAASsxB,GACT8H,EAAmBQ,GACnBJ,EAA0BlI,QAG7B,CAAC6H,IAWJ,OACE,cAAC,KAAD,CACElH,QAASwG,EACTx8B,MAAOA,GAASs9B,EAChB30B,OAAQqpB,GACRkE,cAAc,EACdnyB,SAAUA,EACVizB,WAAY,CAAEC,YAhBE,SAAAvwB,GAClB,OACE,eAAC,KAAWuwB,YAAZ,2BAA4BvwB,GAA5B,cACGA,EAAM+b,SACP,sBAAMne,UAAWD,EAAQ44B,MAAzB,SAAiCG,EAAS,cAAC,GAAD,IAAsB,cAAC,GAAD,YAalEQ,WAAY,kBAAMP,GAAU,IAC5BQ,YAAa,kBAAMR,GAAU,WC1DtB/nB,GAAW,WAGtB,OACE,sBACEjT,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEC,SAAS,UACTC,SAAS,UACTC,EAAE,kOACFJ,KAAK,YAEP,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,kOACFJ,KAAK,gBCAEnS,yBCvBO,SAAAC,GAAK,MAAK,CAC9B0D,OAAQ,CACNd,OAAQ,UACRzB,SAAU,GACVT,QAAS,WACTC,OAAQ,iCACRC,aAAc,EACdM,MAAO,uBACPb,MAAO,cACPe,WAAY,IACZC,gBAAiB,cDaNtB,EAhBS,SAAA2E,GACtB,IAAQrC,EAAoCqC,EAApCrC,QAASkB,EAA2BmB,EAA3BnB,QAASoD,EAAkBjC,EAAlBiC,OAAQxC,EAAUO,EAAVP,MAElC,OACE,qBAAK7B,UAAWD,EAAQqB,OAAQH,QAAS,SAAAf,GAAC,OAAIe,GAAWA,EAAQf,IAAIqM,MAAOlI,EAA5E,SACE,iCACE,cAAC,GAAD,IADF,IACgBxC,UEVTsP,GAAY,WAEvB,OACE,sBACEpT,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,YACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,uUACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,YACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjB,sBACEN,EAAE,YACFG,OAAO,UACPC,YAAY,IACZC,cAAc,QACdC,eAAe,cC6DR7S,yBCnGO,iBAAO,CAC3B+7B,cAAe,CACb37B,QAAS,OACT2a,SAAU,MACV3S,aAAc,EACd,gBAAiB,CACfhI,QAAS,SAGb47B,kBAAmB,CACjB17B,MAAO,IACPF,QAAS,OACT0H,WAAY,SACZrH,OAAQ,IAEVw7B,UAAW,CACT97B,SAAU,YAEZK,MAAO,CACLI,OAAQ,kCACRK,QAAS,OACTR,OAAQ,GACRI,aAAc,EACdF,QAAS,WACTQ,MAAO,yBAET+6B,QAAS,CACP/7B,SAAU,WACVgB,MAAO,UACPC,SAAU,IAEZ+6B,cAAe,CACb76B,gBAAiB,UACjBH,MAAO,UACPN,aAAc,GACdF,QAAS,UACTS,SAAU,GACVX,OAAQ,GACRH,MAAO,cACPI,OAAQ,EACRmC,OAAQ,UACRu5B,aAAc,WACdxL,SAAU,SACVyL,WAAY,UAEdC,SAAU,CACRz5B,OAAQ,UACRzC,QAAS,OACT0H,WAAY,SACZwY,WAAY,GAEd3F,QAAS,CACP5Z,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,EACTla,UAAW,QACXc,WAAY,SACZV,QAAS,GACTW,gBAAiB,cDuCNtB,EA3Fa,SAAA2E,GAC1B,IACErC,EAUEqC,EAVFrC,QACAslB,EASEjjB,EATFijB,UACA2U,EAQE53B,EARF43B,0BACAC,EAOE73B,EAPF63B,2BACAC,EAME93B,EANF83B,yBACAC,EAKE/3B,EALF+3B,YACAC,EAIEh4B,EAJFg4B,sBACAC,EAGEj4B,EAHFi4B,MACAt3B,EAEEX,EAFFW,MACAq2B,EACEh3B,EADFg3B,MAEF,EAAwCz4B,oBAAS,GAAjD,mBAAO25B,EAAP,KAAqBC,EAArB,KACMC,EAAmBlZ,iBAAO,MAC1BmZ,EAAqBnZ,iBAAO,MASlC,OAPAC,qBAAU,WAAO,IAAD,IACdgZ,GACkB,OAAhBC,QAAgB,IAAhBA,GAAA,UAAAA,EAAkBhZ,eAAlB,eAA2BkZ,eAA3B,OACED,QADF,IACEA,GADF,UACEA,EAAoBjZ,eADtB,aACE,EAA6BkZ,gBAEhC,CAACL,IAGF,sBAAKr6B,UAAWD,EAAQy5B,cAAxB,UACE,qBAAKx5B,UAAWD,EAAQ05B,kBAAmB1X,IAAK0Y,EAAhD,SACGJ,IAAUhV,EAAUjmB,IAAOimB,EAAUhmB,KAqBpC,oBACEW,UAAWD,EAAQ65B,cACnB,WAAUvU,EAAUhmB,KACpB,WAAUgmB,EAAUhmB,KACpB0iB,IAAKyY,EACLv5B,QAAS,kBAAMokB,EAAUsV,OAASR,EAAY9U,EAAUjmB,KAL1D,UAMGimB,EAAUhmB,KACVi7B,GACC,cAAC,KAAD,CACEt6B,UAAWD,EAAQqY,QACnBE,OAAO,QACPD,MAAM,MACNlc,KAAK,OACLy2B,YAAY,EACZxzB,GAAIimB,EAAUhmB,UAlCpB,sBAAKW,UAAWD,EAAQ25B,UAAxB,UACE,uBACEh+B,MAAO2pB,EAAUhmB,KACjBW,UAAWD,EAAQ9B,MACnBsO,MAAO,CACL5N,YAAa0mB,EAAUsV,QAAUtV,EAAUuV,SAAW,OAExDn7B,SAAU,SAAAS,GAAC,OAAI85B,EAA0B95B,EAAGmlB,EAAUjmB,KACtDa,WAAY,SAAAC,GAAC,OAAIg6B,EAAyBh6B,IAC1CR,OAAQ,kBAAMy6B,GAAY,IAC1B56B,YAAa,OACbs7B,WAAW,IAEZ93B,GACC,mBAAG/C,UAAWD,EAAQ45B,QAAtB,sDA2BR,uBACEj+B,MAAO2pB,EAAU1lB,cAAgB,GACjCK,UAAWD,EAAQ9B,MACnBsO,MAAO,CAAEwR,WAAY,GACrBxe,YAAa,OACb41B,IAAKiE,EAAQ,MAAQ,MACrB35B,SAAU,SAAAS,GAAC,OAAI+5B,EAA2B/5B,EAAGmlB,EAAUjmB,OAExDimB,EAAUsV,OACT,qBACE36B,UAAWD,EAAQg6B,SACnB94B,QAAS,kBAAMm5B,EAAsB/U,EAAUjmB,KAFjD,SAGE,cAAC,GAAD,QAxDsCimB,EAAUjmB,OEkE3C3B,yBCnGO,iBAAO,CAC3B2iB,OAAQ,CACNviB,QAAS,OACT,MAAO,CACLE,MAAO,QACPc,SAAU,GACVC,WAAY,MACZF,MAAO,eD4FEnB,EA1Fa,SAAA2E,GAC1B,IACErC,EAQEqC,EARFrC,QACAykB,EAOEpiB,EAPFoiB,WACAsW,EAME14B,EANF04B,YACAC,EAKE34B,EALF24B,cACAh4B,EAIEX,EAJFW,MACAi4B,EAGE54B,EAHF44B,aACA5B,EAEEh3B,EAFFg3B,MACA6B,EACE74B,EADF64B,cAGF,EAA0Bt6B,mBAAS,MAAnC,mBAAO05B,EAAP,KAAca,EAAd,KAEMf,EAAc,SAAAE,GACbt3B,GAAOm4B,EAASb,IAGjBJ,EAA6B,SAAC/5B,EAAGi7B,GACrC,IAAMC,EAAmBnU,GAAiBzC,GAAY3O,KAAI,SAAAwP,GAIxD,OAHIA,EAAUjmB,KAAO+7B,IACnB9V,EAAU1lB,aAAeO,EAAEsC,OAAO9G,OAE7B2pB,KAGT0V,EAAcK,IAGVpB,EAA4B,SAAC95B,EAAGi7B,GACpC,IAAMC,EAAmBnU,GAAiBzC,GAAY3O,KAAI,SAAAwP,GAKxD,OAJIA,EAAUjmB,KAAO+7B,IACnB9V,EAAUhmB,KAAOa,EAAEsC,OAAO9G,MAC1B2pB,EAAUuV,SAAU,GAEfvV,KAEHtiB,EAAQk4B,EAAclT,MAC1B,SAAA1C,GAAS,OAAIA,EAAUhmB,OAASa,EAAEsC,OAAO9G,SAG3Cs/B,EAAaj4B,GACbg4B,EAAcK,GACdF,EAASC,IAGLf,EAAwB,SAAAe,GAC5B,IAAMC,EAAmBnU,GAAiBzC,GAAY3W,QACpD,SAAAwX,GAAS,OAAIA,EAAUjmB,KAAO+7B,KAGhCJ,EAAcK,IAGVlB,EAA2B,SAAAh6B,GACjB,UAAVA,EAAEzE,KACJ0+B,GAAY,IAIhB,OACE,qCACE,sBAAKn6B,UAAWD,EAAQqgB,OAAxB,UACE,qCACA,iDAEDoE,EACE3W,QAAO,SAAAwX,GAAS,OAAIA,EAAUhmB,KAAK6O,SAAS4sB,MAC5CjlB,KAAI,SAAAwP,GAAS,OACZ,cAAC,GAAD,CAEEA,UAAWA,EACXgV,MAAOA,EACPt3B,MAAOA,EACPq2B,MAAOA,EACPY,0BAA2BA,EAC3BE,yBAA0BA,EAC1BD,2BAA4BA,EAC5BE,YAAaA,EACbC,sBAAuBA,GATlB/U,EAAUjmB,aE7Edi8B,GAAiB,iBACjBC,GAAgB,gBAChBC,GAAmB,mBAEnBR,GAAgB,SAAAvW,GAC3BvoB,GAAMC,SAAS,CACbC,KAAMk/B,GACN9X,QAAS,CACPiB,iBCFC,SAASgX,GAAc9tB,EAAO+tB,GACnC,OAAOv4B,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,4BAA6C+tB,GAAQ,CAC/Dr4B,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACAA,EAAK6R,MAAMglB,GAAc72B,EAAK6R,SAEnC3R,OAAM,SAAAF,GAAS,IAAD,EACb8H,GAAU,UAAC9H,EAAKnB,aAAN,aAAC,EAAYoB,YAsCtB,SAASu3B,GAAgBhuB,EAAO2X,GACrC,OAAOniB,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,eAAwC,CAClDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUue,KAEpB7hB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GAEJ,ODpDsB,SAAAmhB,GAC1BppB,GAAMC,SAAS,CACbC,KAAMm/B,GACN/X,QAAS,CACP8B,eC+CAsW,CAAaz3B,EAAK6R,MACX7R,EAAK6R,QAEb3R,OAAM,SAAAF,GAAS,IAAD,EACb8H,GAAU,UAAC9H,EAAKnB,aAAN,aAAC,EAAYoB,YCtEtB,IC0BDoI,GAAQ,CACZlM,IAAK,GACLoF,KAAM,GACNmgB,UAAW,WAyJE5gB,eACbvH,sBDvLoB,SAAAC,GAAK,MAAK,CAC9BuoB,MAAO,CACLroB,SAAU,WACVmB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzBznB,QAAS,OACTX,MAAO,IACPO,aAAc,IAEhB4nB,SAAU,CACRtoB,SAAU,WACVsB,MAAO,OACPmB,IAAK,OACLzB,MAAO,UACP0B,OAAQ,WAEVuB,MAAO,CACLR,WAAY,SACZxC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7B1N,YAAa,GAEfkjB,WAAY,CACVz9B,OAAQ,gBAEVmgB,OAAQ,CACNud,aAAc,kCACdz9B,QAAS,aAEXwI,KAAM,CACJxI,QAAS,OACTF,OAAQ,qBACRsC,UAAW,QACXolB,UAAW,UAEbkW,OAAQ,CACNC,UAAW,kCACX39B,QAAS,QAEX49B,YAAa,CACXn+B,QAAS,OACTyH,eAAgB,iBAElBgiB,UAAW,CACTzpB,QAAS,QAEXo+B,YAAa,CACX56B,WAAY,OACZxC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B7D,OAAQ,OACRC,OAAQ,EACRN,QAAS,OACT0H,WAAY,SACZD,eAAgB,aCiIlB7H,CAAmB4X,aANG,SAAAvS,GAAK,YAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBoU,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,MAIXiW,EAvJG,SAAAjT,GACtB,IAAQrC,EAAoDqC,EAApDrC,QAASimB,EAA2C5jB,EAA3C4jB,QAASxB,EAAkCpiB,EAAlCoiB,WAAY3Y,EAAsBzJ,EAAtByJ,KAAM+sB,EAAgBx2B,EAAhBw2B,YAC5C,EAAsCj4B,mBAAS,IAA/C,mBAAOm6B,EAAP,KAAoBoB,EAApB,KACA,EAA4Cv7B,mBAAS,IAArD,mBAAOw7B,EAAP,KAAuBC,EAAvB,KACA,EAAgCz7B,mBAAS,MAAzC,mBAAOoO,EAAP,KAAiBstB,EAAjB,KACA,EAA8B17B,mBAAS,MAAvC,mBAAOoC,EAAP,KAAci4B,EAAd,KAEAzZ,qBAAU,YACR,OAAIxS,QAAJ,IAAIA,OAAJ,EAAIA,EAAUrT,QACZ8/B,GAAc5C,EAAD,OAAc7pB,QAAd,IAAcA,OAAd,EAAcA,EAAUrT,SAEtC,QAACqT,QAAD,IAACA,OAAD,EAACA,EAAUrT,QAEd6lB,qBAAU,WACR,IAAM+a,EAAiB,OAAG9X,QAAH,IAAGA,OAAH,EAAGA,EAAY3W,QACpC,SAAAwX,GAAS,MAAwB,aAAX,OAATA,QAAS,IAATA,OAAA,EAAAA,EAAWlpB,SAE1BigC,EAAkBE,GAClBtB,GAAa,KACZ,CAACxW,EAAY3Y,IAEhB,IAqCM0wB,EAAiB,WAAO,IAAD,IACrBnB,EAAgB,UAAGnU,GAAiBkV,UAApB,aAAG,EAAkCtmB,KACzD,SAAAwP,GAIE,OAHIA,EAAUsV,QAAUtV,EAAUhmB,OAChCgmB,EAAUuV,SAAU,GAEfvV,KAILuV,EAAO,OAAGQ,QAAH,IAAGA,GAAH,UAAGA,EACZvtB,QAAO,SAAAwX,GAAS,OAAIA,EAAUsV,gBADrB,aAAG,EAEZ6B,OAAM,SAAAnX,GAAS,OAAIA,EAAUuV,WAIjC,OAFAwB,EAAkBhB,GAEXR,GAGT,OACE,cAAC,KAAD,CACE,kBAAgB,qBAChB,mBAAiB,2BACjB/uB,KAAMA,EACNU,MAAO,CAAEqZ,UAAW,QACpBI,QAASA,EALX,SAME,sBAAKzZ,MAAOoZ,GAAcpZ,IAAQvM,UAAWD,EAAQkmB,MAArD,UACE,sBAAKjmB,UAAWD,EAAQue,OAAxB,UACE,cAAC,KAAD,CAAOte,UAAWD,EAAQmmB,SAAUjlB,QAAS+kB,IAC7C,sBAAKhmB,UAAWD,EAAQunB,UAAxB,UACE,oBAAItnB,UAAWD,EAAQ8B,MAAvB,+BACA,cAAC,GAAD,CAAiBpC,SAAU48B,EAAa3gC,MAAOqT,OAEjD,cAAC,GAAD,CACErT,MAAOo/B,EACPr7B,SAAU,SAAAS,GAAC,OAAIg8B,EAAeh8B,EAAEsC,OAAO9G,QACvC6Q,MAAO,CAAEpO,OAAQ,gBACjBoB,YAAa,4BAGjB,qBAAKS,UAAWD,EAAQ6G,KAAxB,SACGu1B,EAAel6B,OACd,cAAC,GAAD,CACE84B,cAAeqB,EACf5X,WAAY2X,EACZlB,cAAezW,EACfsW,YAAaA,EACb/3B,MAAOA,EACPi4B,aAAcA,EACd5B,MAAK,OAAErqB,QAAF,IAAEA,OAAF,EAAEA,EAAUimB,MAGnB,mBAAGh1B,UAAWD,EAAQk8B,YAAtB,kDAKJ,qBAAKj8B,UAAWD,EAAQ+7B,OAAxB,SACE,sBAAK97B,UAAWD,EAAQi8B,YAAxB,UACE,cAAC,GAAD,CACEn6B,MAAM,gBACNZ,QAlGe,WACzB,IAAMm6B,EAAmBnU,GAAiBkV,GACpCM,EAAe,CACnBp9B,KAAM,GACNM,aAAc,GACdxD,KAAM,UACNw+B,OAAO,EACPC,SAAS,EACTx7B,GAAI2f,KAAK2d,UAGXtB,EAAiBn1B,KAAKw2B,GACtBL,EAAkBhB,MAwFV,gCACE,cAAC,GAAD,CACEv5B,MAAO,QACP1F,KAAM,YACNkI,OAAQ,CAAEhG,OAAQ,QAClB4C,QAAS+kB,IAEX,cAAC,GAAD,CACEnkB,MAAO,OACPwC,OAAQ,CAAE/F,aAAc,GACxB2C,SAAU8B,GA/FK,WAC3B,GAAIw5B,IAAkB,CAAC,IAAD,IACdD,EAAiB,UAAGrV,GAAiBkV,UAApB,iBAAG,EACtBtuB,QACA,SAAAwX,GAAS,OCxEsBsX,EDyECtX,GAAZb,ECxEdxW,MACZ,SAAAmE,GAAC,OAAIuC,OAAO+B,QAAQtE,GAAG8E,aAAevC,OAAO+B,QAAQkmB,GAAQ1lB,eDuEToO,EAAUhmB,KCzEjC,IAAQs9B,YDsEZ,aAAG,EAKtB9mB,KAAI,SAAAwP,GACJ,OAAKb,EAAWxW,MAAK,SAAAmE,GAAC,OAAIA,EAAE/S,KAAOimB,EAAUjmB,MAKtCimB,EAFE,CAAEhmB,KAF4BgmB,EAA7BhmB,KAEOM,aAFsB0lB,EAAvB1lB,aAEexD,KAFQkpB,EAATlpB,UFtDjC,SAA0BuR,EAAO8W,EAAYiX,GAClD,OAAOv4B,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,4BAA6C+tB,GAAQ,CAC/Dr4B,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAU0d,KAEpBhhB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJ62B,GAAc72B,EAAK6R,SAEpB3R,OAAM,SAAAF,GAAS,IAAD,EACb8H,GAAU,UAAC9H,EAAKnB,aAAN,aAAC,EAAYoB,aEiDvBy4B,CAAiBhE,EAAa0D,EAAd,OAAiCvtB,QAAjC,IAAiCA,OAAjC,EAAiCA,EAAUrT,OACxD8H,MAAK,kBAAMmI,GAAa,0CACxBnI,MAAK,kBAAMwiB,6B,0CEpFP6W,GAAe,GAIfC,GAAa,GACbC,GAAgB,EC2Id/3B,eAAWvH,sBClJJ,iBAAO,CAC3BQ,MAAO,CACLS,QAAS,OACTX,MAAO,OACPG,OAAQ,GACRI,aAAc,EACdO,SAAU,GACVT,QAAS,WACTC,OAAQ,oBACR,UAAW,CACTA,OAAQ,mCAEV,iBAAkB,CAChBO,MAAO,SAGXkoB,KAAM,CACJloB,MAAO,UACPR,QAAS,YAEXgwB,KAAM,CACJ/vB,OAAQ,kCACRiD,WAAY,2BACZzC,SAAU,MACVjB,SAAU,WACVgoB,UAAW,SACX6F,UAAW,SACX/lB,OAAQ,IACRpF,OAAQ,UACRhC,aAAc,EACdP,MAAO,OACPyC,UAAW,KAEbiT,UAAW,CACT7V,SAAU,eDgHYH,CAAmB4X,aAJrB,SAAAvS,GAAK,YAAK,CAChC81B,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGaiW,EAxIpB,SAAAjT,GACvB,IACE7C,EAWE6C,EAXF7C,YACA47B,EAUE/4B,EAVF+4B,YACAz/B,EASE0G,EATF1G,MACA+D,EAQE2C,EARF3C,SACAm5B,EAOEx2B,EAPFw2B,YACArsB,EAMEnK,EANFmK,MACAxM,EAKEqC,EALFrC,QACAi9B,EAIE56B,EAJF46B,eACAC,EAGE76B,EAHF66B,UACAv9B,EAEE0C,EAFF1C,OACAqD,EACEX,EADFW,MAEF,EAAsCpC,mBAAS,IAA/C,mBAAOu8B,EAAP,KAAoBC,EAApB,KACA,EAA0Bx8B,oBAAS,GAAnC,mBAAO05B,EAAP,KAAca,EAAd,KACA,EAA4Bv6B,oBAAS,GAArC,mBAAOy8B,EAAP,KAAeC,EAAf,KAEMC,EAAkBhc,iBAAO,MAG/BC,qBAAU,WACJ4Z,GLOD,SAAsBztB,EAAOytB,EAAaM,GAC/C,OAAOv4B,MAAM,GAAD,OACP/F,EADO,gBACSuQ,EADT,uBAC6BytB,EAD7B,wBACwDM,GAClE,CACEr4B,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJ,OAAOA,EAAK6R,QAEb3R,OAAM,SAAAF,GAAS,IAAD,EACb8H,GAAU,UAAC9H,EAAKnB,aAAN,aAAC,EAAYoB,YKpBvBo5B,CAAa3E,EAAauC,EAAa,MAAM33B,MAAK,SAAAuS,GAChDonB,EAAepnB,GAAQ,SAG1B,CAAColB,IAEJ5Z,qBAAU,WAAO,IAAD,MACRic,EAAO,OAAGF,QAAH,IAAGA,GAAH,UAAGA,EAAiB9b,eAApB,iBAAG,EAA0Bic,kBAA7B,iBAAG,EAAsCC,WAAW,UAApD,aAAG,EAAqDC,wBACrEN,GAAiB,OAAPG,QAAO,IAAPA,OAAA,EAAAA,EAASn9B,MAAT,OAAem9B,QAAf,IAAeA,OAAf,EAAeA,EAASt/B,QAASxB,OAAOkhC,eACjD,CAACvD,IAEJ,IAAMwD,EAAc,SAAAv0B,GAClB,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAE9BtiC,IAAQqhC,IAAcrhC,IAAQshC,IAAmBrhC,GACpDw/B,GAAS,IAIPhG,EAAiB,SAAA5rB,GD/CA,MCgDTA,EAAMw0B,SAAWx0B,EAAMy0B,WAGjC7C,GAAUb,IAqDR2D,EAAa,WACbt+B,GAAQA,KAOd,OACE,qBAAK6M,MAAK,eAAOA,GAASvM,UAAWD,EAAQ0T,UAAWsO,IAAKub,EAA7D,SACE,cAAC,KAAD,CAAmBW,YAAa,kBAAM/C,GAAS,IAA/C,SACE,cAAC,KAAD,CACEgD,aA7Da,SAAAC,GAAU,OAAIA,GA8D3BC,MAAOlB,EAAYrvB,QATD,SAAAswB,GACxB,OAAOA,EAAW1kB,cAAcvL,SAAzB,OAAkCxS,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAO+d,kBAS1C/d,MAAOA,GAAS,GAChBmQ,KAAMwuB,EACN96B,YAAaA,EACbE,SAAUA,EACV4+B,SA7BS,SAAA3iC,GAOf+D,EANiB,CACf+C,OAAQ,CACN9G,WAKJw/B,GAAS,IAsBHoD,aAAc,CAAEzgC,QAAS,SACzB0gC,YA3DY,SAAAn8B,GAClB,OACE,iDACMA,GADN,IAEEmK,MAAK,aACHlO,OAAQ0E,IAAUs3B,GAAS,iBACxB2C,GAELh9B,UAAWD,EAAQ9B,MACnBsB,YAAaA,EACbi/B,QAASX,EACT59B,WAAYi1B,EACZnD,QAAS,kBAAMmJ,GAAS,IACxBx7B,OAAQs+B,MA+CNS,WApEW,SAAC3X,EAAM4X,GACxB,OACE,qBAAKnyB,MAAO,CAAEjL,WAAYo9B,EAAgB,UAAY,SAAW1+B,UAAWD,EAAQ+mB,KAApF,SACGA,KAkEC6X,WA3CW,SAAAP,GACjB,IAAM7xB,EAAQ,CACZ1O,SAAUugC,EAAMn8B,QAAU,OAC1BuD,OAAQ43B,GAAU,OAClB/8B,KAAM+8B,GAAU,QAGlB,OAAO,qBAAKp9B,UAAWD,EAAQquB,KAAMjQ,SAAUigB,EAAO7xB,MAAK,2BAAO0wB,GAAc1wB,iBE7F7E,SAASqyB,GAAYljC,GAC1B,IAAMqmB,EAAMT,mBAIZ,OAHAC,qBAAU,WACRQ,EAAIP,QAAU9lB,KAETqmB,EAAIP,QCPN,IAAMqd,GAAU,UACVC,GAAU,UACVC,GAAS,SACTC,GAAW,WACXC,GAAW,WACXC,GAAS,SCGTC,GAAoB,SAAAhjC,GAC/B,OAAQA,GAWR,QACE,MAAO,UATT,KAAK4iC,GACH,MAAO,UACT,KAAKC,GACH,MAAO,UACT,KAAKC,GACH,MAAO,UACT,KAAKC,GACH,MAAO,YCnBEE,GAAe,SAAC1N,EAASv1B,EAAMkjC,GAC1C,OAAO3N,EACJ7jB,QAAO,SAAAsgB,GAAM,OAAIA,EAAOhyB,OAASA,KACjC0R,QAAO,SAAAsgB,GACN,eAAIkR,QAAJ,IAAIA,OAAJ,EAAIA,EAAmBp9B,SACdo9B,EAAkBnxB,SAASigB,EAAO9uB,SAI5CwW,KAAI,SAAAsY,GACH,MAAO,CACLnvB,MAAOmvB,EAAO9uB,KACd3D,MAAOyyB,EAAO/uB,GACdjD,KAAMgyB,EAAOhyB,KACbgnB,YAAagL,EAAOhL,iBCkEfuK,GAAe,SAACpuB,EAAU+E,GAAX,MAAuB,CACjDspB,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,EACJzD,IACCwD,EAAM+qB,WACN/qB,EAAMgrB,WACPhrB,EAAMirB,YAAYC,QAEpB,OAAO,uCACFJ,GACAvpB,GAFL,IAGEtG,MAAO,OACPM,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACX,UAAW,CACTrD,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAACL,EAAU9qB,GAAX,mBAAC,eAChB8qB,GADe,IAElB7uB,gBAAiB,UACjBlB,QAAS,UAEXqwB,YAAa,SAACN,EAAU9qB,GAAX,mBAAC,eACT8qB,GADQ,IAEXhvB,MAAO,UACPC,SAAU,MAEZ25B,kBAAmB,SAAC5K,EAAU9qB,GAAX,mBAAC,eACf8qB,GADc,IAEjBhvB,MAAO,UACPf,QAAS,OACTyC,OAAQ,UACR,UAAW,CACT1B,MAAO,cAGX0gC,aAAc,SAAAC,GAAI,kCACbA,GADa,IAEhB3gC,MAAO,UACPC,SAAU,GACVu1B,cAAe,UAEjBjG,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRlC,QAAS,UACTW,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/C/vB,MAAO,OACP0tB,UAAW,SACX,UAAW,CACT5sB,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,cAIrDM,KAAM,SAACR,EAAU9qB,GAAX,mBAAC,eACF8qB,GADC,IAEJ7vB,MAAO,OACPk2B,SAAU,IACVzzB,UAAW,IACXpC,QAAS,KAEXohC,SAAU,SAAA5R,GAAQ,kCACbA,GADa,IAEhBxvB,QAAS,EACTwnB,UAAW,SACX6F,UAAW,SACXjrB,UAAW,OAEbjB,YAAa,SAACquB,EAAU9qB,GAAX,mBAAC,eACT8qB,GADQ,IAEXhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,iBAET0hC,iBAAkB,SAAA7R,GAAQ,kCACrBA,GADqB,IAExBzvB,OAAQ,EACRC,QAAS,KAEXshC,eAAgB,SAAA9R,GAAQ,kCACnBA,GADmB,IAEtB/vB,QAAS,YCxKA4V,GAAY,CACvB1V,MAAO,IACPG,OAAQ,KAGGyhC,GAAkB,cAClBC,GAAmC,iBACnCC,GAA0B,gBAC1BC,GAAqB,QACrBC,GAAiB,GACjBC,GAAe,IACfC,GAAgB,IAChBC,GAAW,IACXC,GAAqB,KACrBC,GAAoB,KACpBC,GAAwB,OCfxBC,GAAsB,SAAtBA,EAAsBC,GACjC,OAAQA,GAAOA,IAAQC,SAAS55B,KAEhB,eAAX25B,EAAInhC,GAAsBmhC,EAAMD,EAAoBC,EAAIE,YADzDD,SAAS55B,MCiRA5B,eAAWvH,sBHnRJ,iBAAO,CAC3Bg8B,kBAAmB,CACjB17B,MAAO,OACPF,QAAS,OACT0H,WAAY,SACZrH,OAAQ,GACR+1B,SAAU,IAEZyF,UAAW,CACT37B,MAAO,OACPH,SAAU,WACVC,QAAS,gBAEX+7B,cAAe,CACb76B,gBAAiB,UACjBH,MAAO,UACPN,aAAc,GACdF,QAAS,UACTS,SAAU,GACVX,OAAQ,GACRH,MAAO,cACPI,OAAQ,EACRmC,OAAQ,UACRu5B,aAAc,WACdxL,SAAU,SACVyL,WAAY,UAEd14B,OAAQ,CACNvC,SAAU,GACVD,MAAO,UACPR,QAAS,UACT29B,UAAW,kCACX/9B,UAAW,SACXsC,OAAQ,WAEVogC,YAAa,CACXtiC,QAAS,WACTW,gBAAiB,0BACjBuB,OAAQ,WAEVqgC,YAAa,CACX/hC,MAAO,wBACPC,SAAU,GACVV,OAAQ,EACRH,UAAW,SAEbmwB,OAAQ,CACNhwB,OAAQ,cACRS,MAAO,UACPR,QAAS,UACTE,aAAc,GACdP,MAAO,cACPc,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB,WAEnB6hC,aAAc,CACZhiC,MAAO,UACPN,aAAc,GACdF,QAAS,UACTF,OAAQ,GACRH,MAAO,cACPI,OAAQ,WACR07B,aAAc,WACdxL,SAAU,SACVyL,WAAY,UAEd1hB,QAAS,CACP5Z,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,EACTla,UAAW,QACXc,WAAY,SACZV,QAAS,GACTW,gBAAiB,cGuMKtB,CAAmB4X,aANrB,SAAAvS,GAAK,MAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBjW,UAAWzL,EAAMyL,UACjBsyB,kBAAmB/9B,EAAM+9B,qBAGkBxrB,EAhQrB,SAAAjT,GAAU,IAAD,IAE7BrC,EAiBEqC,EAjBFrC,QACAs6B,EAgBEj4B,EAhBFi4B,MACA3+B,EAeE0G,EAfF1G,MACA+D,EAcE2C,EAdF3C,SACAC,EAaE0C,EAbF1C,OACAuB,EAYEmB,EAZFnB,QACA+7B,EAWE56B,EAXF46B,eACAxY,EAUEpiB,EAVFoiB,WACAjW,EASEnM,EATFmM,UACAjP,EAQE8C,EARF9C,SACA+E,EAOEjC,EAPFiC,OACAy8B,EAME1+B,EANF0+B,YACAvhC,EAKE6C,EALF7C,YACAwyB,EAIE3vB,EAJF2vB,QACAgP,EAGE3+B,EAHF2+B,eACAF,EAEEz+B,EAFFy+B,kBACAG,EACE5+B,EADF4+B,kBAEF,EAAwBrgC,oBAAS,GAAjC,mBAAOkL,EAAP,KAAayc,EAAb,KACA,EAA8B3nB,oBAAS,GAAvC,mBAAOqtB,EAAP,KAAgBiT,EAAhB,KACA,EAAwCtgC,oBAAS,GAAjD,mBAAO25B,EAAP,KAAqBC,EAArB,KACA,EAAsD55B,oBAAS,GAA/D,mBAAOugC,EAAP,KAA4BC,EAA5B,KACA,EAA0CxgC,oBAAS,GAAnD,mBAAO8xB,EAAP,KAAsB2O,EAAtB,KACMC,EAAS/f,iBAAO,MAChB+D,EAAY/D,iBAAO,MACnBmZ,EAAqBnZ,iBAAO,MAC5BggB,EAAWC,qBAAWC,IACtBC,EAAe7C,GAAY0C,GAE3BI,EAAmB,OAAGnzB,QAAH,IAAGA,GAAH,UAAGA,EAAWozB,wBAAd,aAAG,EAA6BC,YACnDC,EAAmB,OAAGtzB,QAAH,IAAGA,GAAH,UAAGA,EAAWuzB,gCAAd,aAAG,EAAqCC,OAC3DC,EAAiB,OAAGnB,QAAH,IAAGA,OAAH,EAAGA,EAAmBoB,UAEvCvQ,EAAU,CACd,CACE1yB,MAAO,qBACP0yB,QAAS0N,GAAa5a,EAAYqa,GAASmC,GAC3C7kC,KAAM0iC,GACNoD,WAAW,GAEb,CACEjjC,MAAO,qBACP0yB,QAAS0N,GAAa5a,EAAYsa,IAClC3iC,KAAM2iC,GACNmD,WAAW,GAEb,CACEjjC,MAAO,oBACP0yB,QAAS0N,GAAa5a,EAAYua,IAClC5iC,KAAM4iC,GACNkD,WAAW,GAEb,CACEjjC,MAAO,sBACP0yB,QAAS0N,GAAa5a,EAAYwa,IAClC7iC,KAAM6iC,GACNiD,UAAWP,GAEb,CACE1iC,MAAO,sBACP0yB,QAAS0N,GAAa5a,EAAYya,IAClC9iC,KAAM8iC,GACNgD,UAAWJ,GAEb,CACE7iC,MAAO,oBACP0yB,QAAS0N,GAAa5a,EAAY0a,IAClC/iC,KAAM+iC,GACN+C,UAAWD,IAEbn0B,QAAO,SAAAsgB,GAAM,OAAI4S,EAAe7yB,SAASigB,EAAOhyB,OAASgyB,EAAO8T,aAElE1gB,qBAAU,WACJ+f,GAAYG,GAAgBH,IAAaG,GAC3CR,GAAW,KAEZ,CAACK,IAEJ/f,qBAAU,WACR0f,GAAW,KACV,CAAC3hC,IAEJiiB,qBAAU,WAAO,IAAD,IACdgZ,GAAyB,OAATlV,QAAS,IAATA,GAAA,UAAAA,EAAW7D,eAAX,eAAoBkZ,eAApB,OAAmCD,QAAnC,IAAmCA,GAAnC,UAAmCA,EAAoBjZ,eAAvD,aAAmC,EAA6BkZ,gBAC/E,CAACL,IAEJ9Y,qBAAU,WACR0f,IAAa7+B,EAAM4rB,WAClB,CAAC5rB,EAAM4rB,UAEV,IAAMkU,EAAwB,WAAO,IAAD,IAC5BzF,EAAe,CAAEp9B,KAAI,OAAEgiC,QAAF,IAAEA,GAAF,UAAEA,EAAQ7f,eAAV,iBAAE,EAAiB1e,aAAnB,aAAE,EAAwBq/B,YAErDzG,GAAgBntB,EAAUnP,GAAIq9B,GAAcj5B,MAAK,SAAA6hB,GAC/C,IAAMoX,EAAe,CACnB/gC,MAAO2pB,EAAUjmB,GACjBJ,MAAOqmB,EAAUhmB,MAEnBI,EAASg9B,OAIP5d,GAAgB,WACpB,IAAM2b,EAAgB,OAAGhW,QAAH,IAAGA,OAAH,EAAGA,EAAYxW,MAAK,SAAAqX,GAAS,OAAIA,EAAUjmB,KAAO1D,GAAS2pB,EAAUhmB,OAAS3D,KAEpG,MAAO,CACLsD,MAAK,OAAEw7B,QAAF,IAAEA,OAAF,EAAEA,EAAkBn7B,KACzB3D,MAAK,OAAE8+B,QAAF,IAAEA,OAAF,EAAEA,EAAkBp7B,GACzBjD,KAAI,OAAEq+B,QAAF,IAAEA,OAAF,EAAEA,EAAkBr+B,MANN,GAehBimC,GAAc,SAAA1mC,GAClB,IAAM2mC,EAAU7d,EACb3W,QAAO,SAAAsgB,GAAM,OAAK4S,EAAe7yB,SAASigB,EAAOhyB,SACjD6R,MAAK,qBAAG3O,OAAoB3D,KAG7B2mC,IACEA,EAAQlmC,OAAS6iC,KAAa0C,GAC7BW,EAAQlmC,OAAS8iC,KAAa4C,GAC9BQ,EAAQlmC,OAAS+iC,KAAW8C,IAE/Bh2B,GAAW,yCACXm1B,GAAuB,IAEvBA,GAAuB,IA4D3B,OACE,qCACE,qBAAKnhC,UAAWD,EAAQ05B,kBAAmB1X,IAAK0Y,EAAoBluB,MAAK,eAAOywB,GAAhF,SACG3C,EACC,qBAAKr6B,UAAWD,EAAQ25B,UAAxB,SACE,cAAC,KAAD,CACEn6B,YAAaA,GAAe,iBAC5B8E,OAAQqpB,GAAapuB,EAAU+E,GAC/B3I,OAAmB,OAAZmjB,SAAY,IAAZA,QAAA,EAAAA,GAAcnjB,OAAQmjB,GAAe,GAC5Cpf,SAAUA,EACVoyB,cAzFQ,SAAAn2B,GAElB,OADA0mC,GAAY1mC,GACLA,EAAMqN,QAAQs3B,GAAuBN,KAwFlCrgC,OAAQ,kBAAMA,GAAUA,KACxBm7B,UAAWn/B,EACX4mC,iBAAiB,EACjB5Q,QAASA,EACTgB,WAAY,CAAE6P,KA9Db,SAAAngC,GACX,OACE,mCACE,eAAC,KAAWmgC,KAAZ,2BAAqBngC,GAArB,cACGA,EAAM+b,SACP,qBAAKne,UAAWD,EAAQqB,OAAQH,QAAS,kBAAMqnB,GAAQ,IAAvD,qCAyDwBka,iBAjDP,SAAApgC,GAAU,IAAD,IAChC,OACE,cAAC,KAAWogC,iBAAZ,2BAAiCpgC,GAAjC,aACI8+B,EAMA,wBALA,sBAAKlhC,UAAWD,EAAQ2gC,YAAaz/B,QAASihC,EAA9C,UACE,mBAAGliC,UAAWD,EAAQ4gC,YAAtB,mCACA,mBAAG3gC,UAAWD,EAAQouB,OAAtB,gBAA+BkT,QAA/B,IAA+BA,GAA/B,UAA+BA,EAAQ7f,eAAvC,iBAA+B,EAAiB1e,aAAhD,aAA+B,EAAwBq/B,oBA2CfM,OAlCnC,SAAArgC,GACb,OACE,eAAC,KAAWqgC,OAAZ,2BAAuBrgC,GAAvB,cACE,qBACEpC,UAAWD,EAAQ6gC,aACnB,cACA,qBAAax+B,EAAM2T,KAAK/W,OACxBuN,MAAO,CAAExN,gBAAiBogC,GAAkB/8B,EAAM2T,KAAK5Z,OAJzD,SAKGiG,EAAM+b,WAER/b,EAAM2T,KAAKoN,aACV,cAAC,KAAD,CAAcnjB,UAAWD,EAAQqY,QAASE,OAAO,QAAQD,MAAM,OAAOlc,KAAK,OAAOiD,GAAE,UAAKgD,EAAM2T,KAAK/W,OAApG,SACGoD,EAAM2T,KAAKoN,oBAuBVsP,cAAeA,EAAgB,MAAQ,OACvCzE,QAASA,EACT4D,cAAc,EACd2H,YAAa,kBAAM0H,GAAW,IAC9B3H,WA5EW,WAAO,IAAD,IACrBoJ,EAA0B,OAAGjI,QAAH,IAAGA,GAAH,UAAGA,EAAoBjZ,eAAvB,aAAG,EAA6Bmc,wBAE1DgF,EAAerC,GAAmB,OAAC7F,QAAD,IAACA,GAAD,UAACA,EAAoBjZ,eAArB,aAAC,EAA6Bif,YAAYmC,aAC5EnQ,GAA0C,OAA1BiQ,QAA0B,IAA1BA,OAAA,EAAAA,EAA4BriC,KAF/B,IAEkDsiC,EAErEvB,EAAiB3O,IAuEP1Q,IAAKsf,EACLtP,QAAS,kBAAMA,GAAWA,KAC1B+O,YAAaA,MAIjB,oBACE9gC,UAAWD,EAAQ65B,cACnB34B,QAASA,EACT,WAAU4d,GAAa7f,MACvB,WAAU6f,GAAa7f,MACvB+iB,IAAKsD,EACL9Y,MAAO,CAAExN,gBAAiBogC,GAAkBtgB,GAAa1iB,OAN3D,UAOG0iB,GAAa7f,MACbs7B,GACC,cAAC,KAAD,CACEt6B,UAAWD,EAAQqY,QACnBE,OAAO,QACPD,MAAM,MACNlc,KAAK,OACLiD,GAAIyf,GAAa7f,aAO3B,cAAC,GAAD,CAAiB6M,KAAMA,EAAMma,QAAS,kBAAMsC,GAAQ,cCrI3CtjB,eACbvH,sBChIoB,iBAAO,CAC3BolC,UAAW,CACTjkC,MAAO,uBACPE,WAAY,IACZD,SAAU,GACVyB,OAAQ,UACRsF,UAAW,EACX7H,MAAO,eAET8D,MAAO,CACLhD,SAAU,GACVC,WAAY,IACZF,MAAO,sBACPT,OAAQ,qBAEVq7B,cAAe,CACb37B,QAAS,OACT+H,UAAW,EACX2hB,IAAK,MACL3pB,SAAU,WACVklC,aAAc,IAEhBX,WAAY,CACV9jC,OAAQ,kCACRK,QAAS,OACTR,OAAQ,GACRI,aAAc,EACdP,MAAO,QACPK,QAAS,WACTQ,MAAO,wBACPmf,WAAY,GAEdgc,SAAU,CACRz5B,OAAQ,UACRzC,QAAS,OACT0H,WAAY,SACZwY,WAAY,EACZngB,SAAU,WACVsB,MAAO,OACPmB,IAAK,GAEP0iC,iBAAkB,CAChB3X,MAAO,OACP4X,MAAO,WDqFTvlC,CAAmB4X,aANG,SAAAvS,GAAK,YAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBoU,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,MAIXiW,EAjHM,SAAAjT,GACzB,IAAQrC,EAA8DqC,EAA9DrC,QAASkjC,EAAqD7gC,EAArD6gC,eAAgBC,EAAqC9gC,EAArC8gC,uBAAwBC,EAAa/gC,EAAb+gC,SACzD,EAAwBxiC,oBAAS,GAAjC,mBAAOkL,EAAP,KAAayc,EAAb,KACA,EAA0B3nB,mBAAS,MAAnC,mBAAO05B,EAAP,KAAca,EAAd,KACMkI,GAA2B,OAAdH,QAAc,IAAdA,OAAA,EAAAA,EAAgBhhC,QAC/B,gBACA,gBACEohC,GAAqBJ,IAAgC,OAAdA,QAAc,IAAdA,OAAA,EAAAA,EAAgBhhC,QAAS,GAgDtE,OACE,qCACE,sBAAKjC,UAAWD,EAAQ0T,UAAxB,aACI,OAACwvB,QAAD,IAACA,OAAD,EAACA,EAAgBhhC,SACjB,qBAAKjC,UAAWD,EAAQ8B,MAAxB,2BAEF,qCACGohC,QADH,IACGA,OADH,EACGA,EAAgBptB,KAAI,SAACwP,EAAWvQ,GAAZ,OACnB,sBAAK9U,UAAWD,EAAQy5B,cAAxB,UACE,cAAC,GAAD,CACEa,MAAOA,IAAUvlB,IAAUuQ,EAAUjmB,GACrC1D,MAAK,OAAE2pB,QAAF,IAAEA,OAAF,EAAEA,EAAWjmB,GAClBK,SAAU,SAAAS,GAAC,OA7CK,SAACA,EAAG4U,GAAW,IAAD,EACpCwuB,EAAkB,UAAGrc,GAAiBgc,UAApB,aAAG,EAAkCptB,KAC3D,SAACwP,EAAWpL,GAMV,OALIA,IAAMnF,IACRuQ,EAAUjmB,GAAKc,EAAExE,MACjB2pB,EAAUhmB,KAAOa,EAAElB,OAGdqmB,KAGX6V,GAAS,GACTgI,EAAuBI,GAiCIC,CAAsBrjC,EAAG4U,IACxCpV,OAAQ,kBAAMw7B,GAAS,IACvBj6B,QAAS,kBAAMi6B,EAASpmB,IACxB2d,cAAe,MACfnzB,UAAU,EACVyhC,eAAgB,CAAClC,GAASC,IAC1B9B,eAAgB,CAAE/I,SAAU,IAAKl2B,MAAO,KACxC+iC,aAAa,EACbE,kBAAmB,CAAC,WAAY,qBAAsB,0BAExD,cAAC,GAAD,CACE7F,YAAW,OAAE9V,QAAF,IAAEA,OAAF,EAAEA,EAAWjmB,GACxB1D,MAAK,OAAE2pB,QAAF,IAAEA,OAAF,EAAEA,EAAW3pB,MAClB6D,YAAa,QACbgN,MAAO,CAAExO,MAAO,KAChB0B,SAAU,SAAAS,GAAC,OAzEU,SAACA,EAAG4U,GAAW,IAAD,EACzCsmB,EAAgB,UAAGnU,GAAiBgc,UAApB,aAAG,EAAkCptB,KACzD,SAACwP,EAAWpL,GAIV,OAHIA,IAAMnF,IACRuQ,EAAU3pB,MAAQwE,EAAEsC,OAAO9G,OAASwE,EAAEsC,OAAOghC,WAExCne,KAIX6d,EAAuB9H,GA+DInB,CAA2B/5B,EAAG4U,MAE/C,qBACE9U,UAAWD,EAAQg6B,SACnB94B,QAAS,kBAxCO,SAAA6T,GAAU,IAAD,EAC/BsmB,EAAgB,UAAGnU,GAAiBgc,UAApB,aAAG,EAAkCp1B,QACzD,SAACwX,EAAWpL,GAAZ,OAAkBnF,IAAUmF,KAG9BipB,EAAuB9H,GACnB+H,GAAUA,IAkCa/I,CAAsBtlB,IAFvC,SAGE,cAAC,GAAD,QAxBwCA,WA8BjDuuB,GACC,sBAAKrjC,UAAWD,EAAQ8iC,UAAW5hC,QAzDd,WACzB,IAAMm6B,EAAmBnU,GAAiBgc,IAAmB,GAG7D7H,EAAiBn1B,KAFI,CAAE7G,GAAI,KAAM1D,MAAO,KAAM2D,KAAM,OAGpD6jC,EAAuB9H,GACnB+H,GAAUA,KAmDV,UACE,cAAC,GAAD,IADF,IACgBC,KAGlB,cAAC,GAAD,CAAiBv3B,KAAMA,EAAMma,QAAS,kBAAMsC,GAAQ,cEhC1D,SAASmb,GAAarhC,GACpB,OACE,cAAC,KAAD,CAAYsK,UAAU,MAAMH,MAAO,CAAEnO,QAAS,IAA9C,SACGgE,EAAM+b,W,IAKPulB,G,4MACJ5gC,MAAQ,CACN+I,MAAM,EACN83B,qBAAsB,MACtBC,uBAAwB,SACxBC,wBAAyB,MACzBC,0BAA2B,SAC3BC,YAAa,IACbC,aAAc,IACdC,gBAAiB,WACjBlhC,OAAO,G,EAGTsG,aAAe,SAACC,EAAO5N,GACrB,IAAMwoC,EAAG,eAAQ,EAAK9hC,MAAM8hC,KAC5BA,EAAI/nC,KAAOT,EAEM,aAAbwoC,EAAI/nC,MACN+nC,EAAI3gB,QAAU,GACd2gB,EAAIj1B,SAAMuiB,SACH0S,EAAIC,qBACW,YAAbD,EAAI/nC,OACb+nC,EAAI3gB,aAAUiO,EACd0S,EAAIj1B,IAAM,GACVi1B,EAAIC,qBAAsB,GAE5B,EAAK/hC,MAAMgiC,SAASF,I,EAEtB7Z,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EAExBqe,SAAW,K,EAEXgZ,uBAAyB,SAAA1e,GACvB,IAAM0f,EAAG,eAAQ,EAAK9hC,MAAM8hC,KAC5BA,EAAI1f,WAAaA,EACjB,EAAKpiB,MAAMgiC,SAASF,I,EAetB7J,MAAQ,WACN,EAAK/3B,SAAS,CACZuJ,MAAM,K,EAIVw4B,sBAAwB,WACtB,EAAK/hC,SACH,CACEuJ,MAAM,IAER,WACE,EAAKvJ,SAAS,CACZuJ,MAAM,Q,wDAzBd,SAAmBnQ,EAAO4oC,GACxB,IAAMJ,EAAG,eAAQvoC,KAAKyG,MAAM8hC,KAC5BA,EAAII,GAAa5oC,EACjBC,KAAKyG,MAAMgiC,SAASF,K,mCAGtB,SAAsBxoC,GACpB,IAAMwoC,EAAMjd,GAAiBtrB,KAAKyG,MAAM8hC,KACxCA,EAAIj1B,IAAMvT,EACVC,KAAKyG,MAAMgiC,SAASF,K,oBAsBtB,WAAU,IAAD,OACP,EAAqBvoC,KAAKyG,MAAlB8hC,EAAR,EAAQA,IAAKlP,EAAb,EAAaA,IACb,EAWIr5B,KAAKmH,MAVP+I,EADF,EACEA,KACA83B,EAFF,EAEEA,qBACAC,EAHF,EAGEA,uBACAC,EAJF,EAIEA,wBACAC,EALF,EAKEA,0BACAC,EANF,EAMEA,YACAC,EAPF,EAOEA,aACAC,EARF,EAQEA,gBACAlhC,EATF,EASEA,MACAwhC,EAVF,EAUEA,WAEMxkC,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,sBACEykC,aAAc,kBAAM,EAAKliC,SAAS,CAAEmiC,YAAY,KAChDC,aAAc,kBAAM,EAAKpiC,SAAS,CAAEmiC,YAAY,KAFlD,UAGE,uBACEtoC,KAAK,OACL6D,UAAU,SACVT,YAAY,eACZolC,UAAQ,EACRjpC,MAAOwoC,EAAIriC,MACXkgB,IAAK,SAAA6iB,GACH,EAAK1a,SAAW0a,GAElB3jC,QAAStF,KAAK0+B,MACd9tB,MAAO,CACL3N,MAAO,cACPimC,WAAY,gBACZvmC,aAAc3C,KAAKyG,MAAM0iC,KAAO,iBAAmB,EACnDjJ,aAAclgC,KAAKyG,MAAM0iC,KAAO,MAAQ,qBAE1C3P,IAAKH,GAAO,QAEd,cAAC,KAAD,CACE,aAAW,SACXzoB,MACE5Q,KAAKmH,MAAM2hC,WACP,CACAvmC,OAAQ,OACRN,SAAU,WACVsB,OAAQ,GAER,CAAErB,QAAS,QAEjBoD,QAAStF,KAAKyG,MAAMo1B,SAXtB,SAYE,qBACEjrB,MAAO,CAAErO,OAAQ,IACjBiH,IAAI,8BACJC,IAAI,aAGR,cAAC,KAAD,CACEyG,KAAMA,EACNma,QAASrqB,KAAK0uB,YACdH,SAAUvuB,KAAKuuB,SACf+Z,gBAAiBA,EACjBc,eAAgB,CAAE1kC,IAAK0jC,EAAat+B,KAAMu+B,GAC1CgB,aAAc,CACZC,SAAUtB,EACVuB,WAAYtB,GAEduB,gBAAiB,CACfF,SAAUpB,EACVqB,WAAYpB,GAEdvW,WAAY,CACVhhB,MAAO,CACL8hB,SAAU,UACV/vB,aAAc,KAjBpB,SAoBE,sBAAK0B,UAAWD,EAAQqlC,QAAxB,UACE,uBACEjpC,KAAK,OACL6D,UAAWD,EAAQslC,cACnB9lC,YAAY,eACZ7D,MAAOwoC,EAAIriC,MACX0K,MAAO,CACLlO,OAAQkmC,GAAc,oBACtBe,YAAatQ,GAAO,iBAEtBv1B,SAAU,SAAA6J,GAAK,OACb,EAAKi8B,mBAAmBj8B,EAAM9G,OAAO9G,MAAO,UAE9Cq5B,UAAW,GACXI,IAAKH,GAAO,QAEd,8BACE,gCACE,eAAC,KAAD,CACEj1B,QAAS,CACPsmB,KAAMtmB,EAAQylC,KACdC,UAAW1lC,EAAQ2lC,cAErBhqC,MAAOwoC,EAAI/nC,KACXsD,SAAU,SAAC6J,EAAO5N,GAAR,OAAkB,EAAK2N,aAAaC,EAAO5N,IANvD,UAOE,cAAC,KAAD,CACEqE,QAAS,CAAEsmB,KAAMtmB,EAAQ4lC,KACzB3mC,MAAM,WACNtD,MAAM,aAER,cAAC,KAAD,CACEqE,QAAS,CAAEsmB,KAAMtmB,EAAQ4lC,KACzB3mC,MAAM,MACNtD,MAAM,eAGI,aAAbwoC,EAAI/nC,MACH,eAACsnC,GAAD,WACE,cAAC,GAAD,CACE/nC,MAAOwoC,EAAI3gB,QACX9jB,SAAU,gBAAET,EAAF,EAAEA,MAAF,OAAa,EAAKumC,mBAAmBvmC,EAAO,cACxD,cAAC,GAAD,CACEikC,eAAgBtnC,KAAKyG,MAAM8hC,IAAI1f,WAC/B0e,uBAAwBvnC,KAAKunC,uBAC7BC,SAAUxnC,KAAK0oC,2BAIP,YAAbH,EAAI/nC,MACH,eAACsnC,GAAD,WACE,qBACEl3B,MACExJ,EACI,CAAEpE,YAAa,WACf,CAAEA,YAAa,WAErBqB,UAAWD,EAAQk1B,YANrB,SAOE,uBACEj1B,UAAWD,EAAQ9B,MACnBs6B,UAAW,SAAAr4B,GACS,KAAdA,EAAE49B,SACJ,EAAK8H,sBAAsB1lC,EAAEsC,OAAO9G,QAExCgE,OAAQ,SAAA4J,GACN,EAAKs8B,sBAAsBt8B,EAAM9G,OAAO9G,QAE1CiE,aAAcukC,EAAIj1B,IAClB1P,YAAY,gBAGhB,cAAC,KAAD,CACEouB,QACE,cAAC,KAAD,CACErZ,QAAS4vB,EAAIC,oBACb1kC,SAAU,WACR,IAAMykC,EAAG,eAAQ,EAAK9hC,MAAM8hC,KAC5BA,EAAIC,qBAAuBD,EAAIC,oBAC/B,EAAK/hC,MAAMgiC,SAASF,IAEtBxoC,MAAM,sBACNkD,MAAM,YAGVI,MAAM,sBAER,cAAC,GAAD,CACEikC,eAAgBtnC,KAAKyG,MAAM8hC,IAAI1f,WAC/B0e,uBAAwBvnC,KAAKunC,uBAC7BC,SAAUxnC,KAAK0oC,4C,GAzOTv/B,IAAMC,WA0PnBtH,yBAnUA,SAAAC,GAAK,MAAK,CACvB0D,OAAQ,CACNyE,aAAmC,EAArBnI,EAAM4tB,QAAQC,MAE9Bsa,WAAY,CACV1nC,OAA6B,EAArBT,EAAM4tB,QAAQC,MAExB6Z,QAAS,CACP9mC,aAAc,GACdJ,OAAQ,QAEVynC,IAAK,CACH5nC,MAAO,MACPQ,WAAY,mBACZ01B,SAAU,KAEZyR,aAAc,CACZ3mC,gBAAiB,WAEnBd,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBhB,MAAO,QAETk3B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,OACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,EACToC,UAAW,GACXyzB,SAAU,KAEZ6R,iBAAkB,CAChBlgC,UAAW,GACX5H,UAAW,SACXY,MAAO,QACP0B,OAAQ,UACRvB,gBAAiB,QACjBb,OAAQ,GACRG,OAAQ,8BACRD,QAAS,IAEXinC,cAAe,CACbtnC,MAAO,oBACPa,MAAO,wBACPE,WAAY,IACZd,UAAW,SACXE,OAAQ,GACRW,SAAU,GACVR,OAAQ,oBACRK,QAAS,OACTJ,aAAc,GACdH,OAAQ,OAsQGV,CAAmBimC,ICpP5BqC,G,kDACJ,WAAY3jC,GAAQ,IAAD,8BACjB,cAAMA,IAqBR4jC,kBAAoB,WAClB,EAAK1jC,SAAS,CACZuJ,MAAM,KAxBS,EA4BnBq3B,uBAAyB,SAAA1e,GACvB,IAAMyhB,EAAK,eAAQ,EAAK7jC,MAAM6jC,OAC9BA,EAAMzhB,WAAaA,EACnB,EAAKpiB,MAAM3C,SAASwmC,IA/BH,EAkCnB5b,YAAc,WACZ,EAAK/nB,SAAS,CACZuJ,MAAM,KApCS,EAwCnBqe,SAAW,KAxCQ,EA8CnBma,sBAAwB,WACtB,EAAK/hC,SACH,CACEuJ,MAAM,IAER,WACE,EAAKvJ,SAAS,CACZuJ,MAAM,QArDK,EA2DnBymB,eAAiB,SAAAL,GACf,EAAK3vB,SAAS,CACZ2vB,kBA3DF,EAAKnvB,MAAQ,CACX+I,MAAM,EACN83B,qBAAsB,MACtBC,uBAAwB,SACxBC,wBAAyB,MACzBC,0BAA2B,SAC3BC,YAAa,IACbC,aAAc,IACdC,gBAAiB,WACjBQ,YAAY,EACZxS,cAAc,GAZC,E,gDAgBnB,SAAav2B,EAAO4oC,GAClB,IAAM2B,EAAK,eAAQtqC,KAAKyG,MAAM6jC,OAC9BA,EAAM3B,GAAa5oC,EACnBC,KAAKyG,MAAM3C,SAASwmC,K,wBAuBtB,SAAWC,GACTvqC,KAAK2G,SAAS,CAAEmiC,WAAYyB,M,oBAsB9B,WAAU,IAAD,OACP,EAUIvqC,KAAKmH,MATP+I,EADF,EACEA,KACA83B,EAFF,EAEEA,qBACAC,EAHF,EAGEA,uBACAC,EAJF,EAIEA,wBACAC,EALF,EAKEA,0BACAC,EANF,EAMEA,YACAC,EAPF,EAOEA,aACAC,EARF,EAQEA,gBACAhS,EATF,EASEA,aAEF,EAAgCt2B,KAAKyG,MAA7BrC,EAAR,EAAQA,QAASkmC,EAAjB,EAAiBA,MAAOjR,EAAxB,EAAwBA,IAClBjyB,EAA+B,SAAvBkjC,EAAME,cAA2BrkC,EAAcmkC,EAAM1iB,SACnE,OACE,sBACEvjB,UAAWD,EAAQkmC,MACnBzB,aAAc,kBAAM,EAAKC,YAAW,IACpCC,aAAc,kBAAM,EAAKD,YAAW,IAHtC,UAIE,uBACEtoC,KAAK,OACL6D,UAAWD,EAAQ8B,MACnBtC,YAAY,cACZ7D,MACyB,SAAvBuqC,EAAME,aAA0BF,EAAME,aAAeF,EAAMpkC,MAE7D0K,MACyB,SAAvB05B,EAAME,cAA2BrkC,EAAcmkC,EAAM1iB,SACjD,CACAllB,OAAQ,oBACRO,MAAO,WAEP,CACAP,OAAQ,oBACRO,MAAO,WAGbm2B,UAAW,GACXhT,IAAK,SAAA6iB,GACH,EAAK1a,SAAW0a,GAElB3jC,QAAS,kBAAM,EAAK+kC,qBACpBrB,SAAiC,SAAvBsB,EAAME,cAA0B,WAC1ChR,IAAKH,GAAO,QAEd,mBAAGh1B,UAAWD,EAAQwjB,QACpB,WAAU5nB,KAAKyG,MAAM6jC,MAAM1iB,QAC3B,WAAU5nB,KAAKyG,MAAM6jC,MAAM1iB,QAC3BtiB,QAAS,kBAAM,EAAK+kC,qBAHtB,SAIE,cAAC,KAAD,CAAoBvmC,SAAU9D,KAAK22B,eAAnC,SACG32B,KAAKyG,MAAM6jC,MAAM1iB,YAGrB0O,IAAiBpmB,GAAQlQ,KAAKyG,MAAM6jC,MAAM1iB,SACzC,cAAC,KAAD,CACEvjB,UAAWD,EAAQqY,QACnBE,OAAO,QACPD,MAAM,MACNlc,KAAK,OACLy2B,YAAY,EACZxzB,GAAIzD,KAAKyG,MAAM6jC,MAAM1iB,UAGzB,cAAC,KAAD,CACE,aAAW,SACXvjB,UACErE,KAAKmH,MAAM2hC,aAAe54B,EACtB9L,EAAQ0kC,WACR1kC,EAAQqmC,WAEdnlC,QAAS,kBAAM,EAAKmB,MAAMo1B,YAP5B,SAQE,qBACEjrB,MAAO,CAAErO,OAAQ,IACjBiH,IAAI,8BACJC,IAAI,aAGR,cAAC,KAAD,CACEyG,KAAMA,EACNqe,SAAUvuB,KAAKuuB,SACf+Z,gBAAiBA,EACjBc,eAAgB,CAAE1kC,IAAK0jC,EAAat+B,KAAMu+B,GAC1Che,QAASrqB,KAAK0uB,YACd2a,aAAc,CACZC,SAAUtB,EACVuB,WAAYtB,GAEduB,gBAAiB,CACfF,SAAUpB,EACVqB,WAAYpB,GAEd/jC,QAAS,CACPkmB,MAAOlmB,EAAQkmB,OAfnB,SAiBE,sBAAKjmB,UAAWD,EAAQqlC,QAAxB,UACE,uBACEjpC,KAAK,OACL0+B,WAAS,EACT76B,UAAWD,EAAQsmC,aACnB9mC,YAAY,cACZgN,MAAO,CACLlO,OAAQ0E,GAAS,oBACjBnE,MAAOmE,GAAS,WAElBrH,MACyB,SAAvBuqC,EAAME,aAA0BF,EAAME,aAAeF,EAAMpkC,MAE7DpC,SAAU,SAAA6J,GAAK,OAAI,EAAKD,aAAaC,EAAM9G,OAAO9G,MAAO,UACzDq5B,UAAW,GACX4P,SAAiC,SAAvBsB,EAAME,cAA0B,WAC1ChR,IAAKH,GAAO,QAEd,cAAC,KAAD,CACE,aAAW,SACXh1B,UACErE,KAAKmH,MAAM2hC,WAAa1kC,EAAQ0kC,WAAa1kC,EAAQqmC,WAEvDnlC,QAAS,kBAAM,EAAKmB,MAAMo1B,YAL5B,SAME,qBACEjrB,MAAO,CAAErO,OAAQ,IACjBiH,IAAI,8BACJC,IAAI,aAGR,qBAAKpF,UAAWD,EAAQumC,WAAxB,SACE,cAAC,GAAD,CAAY5qC,MAAOC,KAAKyG,MAAM6jC,MAAM1iB,QAClC9jB,SAAU,gBAAET,EAAF,EAAEA,MAAF,OAAa,EAAKqK,aAAarK,EAAO,gBAEpD,cAAC,GAAD,CACEikC,eAAgBtnC,KAAKyG,MAAM6jC,MAAMzhB,WACjC0e,uBAAwBvnC,KAAKunC,uBAC7BC,SAAUxnC,KAAK0oC,oC,GArMJv/B,IAAMC,WAkNhBtH,yBAxSA,SAAAC,GAAK,MAAK,CACvBmoC,WAAY,CACV1nC,OAA6B,EAArBT,EAAM4tB,QAAQC,MAExBtF,MAAO,CACL3nB,aAAc,GACd+vB,SAAU,UACVjwB,QAAS,IAEX6nC,MAAO,CACLroC,SAAU,YAEZ6mC,WAAY,CACV7mC,SAAU,WACVsB,MAAO,QACPmB,IAAK,QACLqF,OAAQ,GAEV0gC,WAAY,CACVvoC,QAAS,QAEX0lB,QAAS,CACPplB,OAAQ,EACRU,SAAU,GACVjB,SAAU,WACVyC,IAAK,GACLtC,MAAO,OACPC,UAAW,SACXY,MAAO,OACPR,QAAS,SACTiwB,SAAU,SACVyL,WAAY,SACZD,aAAc,YAEhBh4B,MAAO,CACLvD,aAAc,GACdM,MAAO,UACPF,QAAS,OACTV,UAAW,SACXK,OAAQ,oBACRU,gBAAiB,UACjBX,QAAS,YACTS,SAAU,GACVwC,WAAY,OACZklC,OAAQ,OACRroC,OAAQ,GACRH,MAAO,QAETsoC,aAAc,CACZ/nC,aAAc,GACdM,MAAO,UACPF,QAAS,OACTV,UAAW,SACXK,OAAQ,oBACRU,gBAAiB,UACjBX,QAAS,OACTS,SAAU,GACVwC,WAAY,OACZklC,OAAQ,OACRroC,OAAQ,GACRH,MAAO,QAETyoC,OAAQ,CACN5nC,MAAO,oBACPC,SAAU,GACV4nC,UAAW,OACXplC,WAAY,KAEdilC,WAAY,CACV1gC,UAAW,IAEbwS,QAAS,CACP7X,SAAU,OACVxC,MAAO,QACPS,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,EACTla,UAAW,QACXc,WAAY,SACZV,QAAS,GACTW,gBAAiB,cAsNNtB,CAAmBsoC,ICzS5B1hC,GAAS,CACboP,UAAW,CACTyZ,UAAW,UACXtvB,SAAU,WACVywB,SAAU,SACVtwB,MAAO,OACPG,OAAQ,GACRL,QAAS,OACTM,OAAQ,kBAEVuoC,KAAM,CACJ9oC,SAAU,WACVyC,IAAK,EACLoF,KAAM,EACNvG,MAAO,EACPsG,OAAQ,EACR6oB,SAAU,SACV3V,aAAc,GACd7S,cAAe,GACfhI,QAAS,QAEX8oC,UAAW,CACT5b,WAAY,oBACZltB,QAAS,OACTC,cAAe,SACfM,QAAS,WACTkH,eAAgB,gBAChBvH,MAAO,IAET6oC,WAAY,CACV/oC,QAAS,OACTC,cAAe,UAEjB+oC,UAAW,CACThoC,SAAU,GACVD,MAAO,UACPR,QAAS,GACTkC,OAAQ,WAEV8kC,QAAS,CACP9jC,WAAY,UACZjD,OAAQ,oBACRG,UAAW,aACXF,aAAc,GACdoD,UAAW,QAEbolC,OAAQ,CACNjpC,QAAS,cACTwwB,SAAU,SACVzoB,UAAW,GACX,uBAAwB,CACtB1H,OAAQ,GAEV,6BAA8B,CAC5Bga,QAAS,GACTnZ,gBAAiB,2BAKjBgoC,G,4MACJjkC,MAAQ,CACN+I,MAAM,EACNk4B,YAAa,IACbC,aAAc,IACdC,gBAAiB,Y,EAmCnB5Z,YAAc,WACZ,EAAK/nB,SAAS,CACZuJ,MAAM,K,kDAlCV,SAAao6B,EAAOe,GAClB,IAAM5jB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAW6jB,cAAcD,GAAcf,EACvCtqC,KAAKyG,MAAM8kC,cAAc9jB,K,yBAG3B,SAAYjnB,GACV,IAAMinB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxB,MAA5Bif,EAAW6jB,gBACb7jB,EAAW6jB,cAAgB,SAEjBzV,GAARr1B,EACFinB,EAAW6jB,cAAchhC,KAAK,CAC5BpE,MAAO,GACPskC,aAAc,OACd5iB,QAAS,KAGXH,EAAW6jB,cAAchhC,KAAK,CAC5BkgC,aAAchqC,IAIlBR,KAAKyG,MAAM8kC,cAAc9jB,K,mBAG3B,WACEznB,KAAK2G,SAAS,CACZuJ,MAAM,M,yBAUV,SAAYm7B,GACV,IAAM5jB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAW6jB,cAActQ,OAAOqQ,EAAY,GAC5CrrC,KAAKyG,MAAM8kC,cAAc9jB,K,oBAG3B,WAAU,IAAD,OACP,EAAkCznB,KAAKmH,MAA/B+I,EAAR,EAAQA,KAAMo4B,EAAd,EAAcA,gBACd,EAAyBtoC,KAAKyG,MAAtBrC,EAAR,EAAQA,QAASi1B,EAAjB,EAAiBA,IACjB,OACE,sBAAKh1B,UAAWD,EAAQ+mC,OAAxB,UACuC,MAApCnrC,KAAKyG,MAAM+B,QAAQ8iC,eAClBtrC,KAAKyG,MAAM+B,QAAQ8iC,cAAcpxB,KAAI,SAACowB,EAAOe,GAAR,OACnC,qBAAKz6B,MAAO,CAAE1O,QAAS,QAAvB,SACE,cAAC,GAAD,CACEooC,MAAOA,EACPzO,SAAU,kBAAM,EAAK2P,YAAYH,IACjCvnC,SAAU,SAAAwmC,GAAK,OAAI,EAAK58B,aAAa48B,EAAOe,IAC5ChS,IAAKA,KAL6BgS,OASJ,MAApCrrC,KAAKyG,MAAM+B,QAAQ8iC,eACnBtrC,KAAKyG,MAAM+B,QAAQ8iC,cAAchlC,OAAS,KAC1C,sBACE8f,IAAK,SAAA6iB,GACH,EAAK1a,SAAW0a,GAElB5kC,UAAU,YAJZ,UAKE,qBAAKA,UAAU,iBAAiBiB,QAAS,kBAAM,EAAKmmC,eAApD,+BAGA,sBAAKnmC,QAAS,kBAAM,EAAKo5B,SAAS9tB,MAAOlI,GAAOsiC,UAAhD,UACE,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,UAIN,cAAC,KAAD,CACE96B,KAAMA,EACNma,QAASrqB,KAAK0uB,YACdH,SAAUvuB,KAAKuuB,SACf+Z,gBAAiBA,EACjBe,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,SAEd3X,WAAY,CACVhhB,MAAO,CACL8hB,SAAU,UACV/vB,aAAc,KAhBpB,SAmBE,qBAAK0B,UAAWD,EAAQqlC,QAAxB,SACE,sBAAKplC,UAAWD,EAAQ6mC,WAAxB,UACE,qBACE3lC,QAAS,kBAAM,EAAKmmC,YAAY,sBAChCpnC,UAAWD,EAAQ8mC,UAFrB,0BAKA,qBACE5lC,QAAS,kBAAM,EAAKmmC,YAAY,aAChCpnC,UAAWD,EAAQ8mC,UAFrB,sBAKA,qBACE5lC,QAAS,kBAAM,EAAKmmC,YAAY,eAChCpnC,UAAWD,EAAQ8mC,UAFrB,iC,GApHoB/hC,IAAMC,WAiIzBtH,wBAAW4G,GAAX5G,CAAmBspC,I,qBC9InBtpC,yBCvDO,iBAAO,CAC3B4pC,SAAU,CACRnpC,OAAQ,GACRE,QAAS,WACTQ,MAAO,UACPf,QAAS,QACTgB,SAAU,IAEZsvB,OAAQ,CACNhwB,OAAQ,WACRS,MAAO,UACPR,QAAS,UACTE,aAAc,GACdP,MAAO,cACPc,SAAU,GACVg7B,aAAc,WACdxL,SAAU,SACVyL,WAAY,UAEd1hB,QAAS,CACP7X,SAAU,OACVxC,MAAO,QACPS,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,EACTla,UAAW,QACXc,WAAY,SACZV,QAAS,GACTW,gBAAiB,WAEnBuoC,WAAY,CACVvpC,MAAO,OACPG,OAAQ,GACRL,QAAS,OACT0H,WAAY,SACZjF,OAAQ,cDkBG7C,EAhDO,SAAA2E,GACpB,IACErC,EAMEqC,EANFrC,QACAslB,EAKEjjB,EALFijB,UACApkB,EAIEmB,EAJFnB,QACAsmC,EAGEnlC,EAHFmlC,kBACAzyB,EAEE1S,EAFF0S,MACA0vB,EACEpiC,EADFoiC,aAGF,OACE,mCACsB,UAAnBnf,EAAUlpB,KACT,sBAAM6D,UAAWD,EAAQsnC,SAAzB,SAAoChiB,EAAUxjB,QAE9C,sBACE7B,UAAWD,EAAQunC,WACnB/6B,MAAO,CACLxN,gBACE+V,IAAUyyB,GAAqB,2BAEnCC,YAAa,kBAAMhD,EAAa1vB,IAChC7T,QAAS,kBAAMA,EAAQokB,IAPzB,UAQE,qBACErlB,UAAWD,EAAQouB,OAEnB,cACA,qBAAa9I,EAAUhmB,MACvBkN,MAAO,CAAExN,gBAAiBogC,GAAkB9Z,EAAUlpB,OALxD,SAMGkpB,EAAUhmB,MAJNgmB,EAAUjmB,IAOhBimB,EAAUlC,aACT,cAAC,KAAD,CACEnjB,UAAWD,EAAQqY,QACnBE,OAAO,QACPD,MAAM,OACNlc,KAAK,OACLiD,GAAE,UAAKimB,EAAUhmB,MALnB,SAMGgmB,EAAUlC,sBE9CZskB,GAAgB,CAAEtrC,KAAM,QAAS0F,MAAO,sBACxC6lC,GAAe,CAAEvrC,KAAM,QAAS0F,MAAO,qBACvC8lC,GAAiB,CAAExrC,KAAM,QAAS0F,MAAO,uBACzC+lC,GAAiB,CAAEzrC,KAAM,QAAS0F,MAAO,uBACzCgmC,GAAe,CAAE1rC,KAAM,QAAS0F,MAAO,qBCoKrCpE,yBCxKO,iBAAO,CAC3BqqC,oBAAqB,CACnBtnC,UAAW,IACXolB,UAAW,SACX6F,UAAW,SACX/sB,QAAS,QAEX0C,OAAQ,CACNlD,OAAQ,GACRH,MAAO,IACPa,MAAO,UACPf,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBy2B,UAAW,kCACXz7B,OAAQ,UACRgB,WAAY,UACZzC,SAAU,IAEZ6hC,YAAa,CACXtiC,QAAS,WACTW,gBAAiB,0BACjBuB,OAAQ,WAEVqgC,YAAa,CACX/hC,MAAO,wBACPC,SAAU,GACVV,OAAQ,GAEVgwB,OAAQ,CACNhwB,OAAQ,cACRS,MAAO,UACPR,QAAS,UACTE,aAAc,GACdP,MAAO,cACPc,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB,WAEnB0U,UAAW,CACT/N,OAAQ,IACR3H,MAAO,IACPuD,WAAY,UACZ1D,SAAU,WACVS,OAAQ,kCACRC,aAAc,EACd+vB,SAAU,aD0HC5wB,CAAmB4X,aANV,SAAAvS,GAAK,MAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBjW,UAAWzL,EAAMyL,UACjBsyB,kBAAmB/9B,EAAM+9B,qBAGOxrB,EAzJX,SAAAjT,GAAU,IAAD,IAE5BrC,EAaEqC,EAbFrC,QACAmmC,EAYE9jC,EAZF8jC,KACAlgB,EAWE5jB,EAXF4jB,QACApoB,EAUEwE,EAVFxE,SACAmqC,EASE3lC,EATF2lC,SACAx5B,EAQEnM,EARFmM,UACAy5B,EAOE5lC,EAPF4lC,WACAxjB,EAMEpiB,EANFoiB,WACAqc,EAKEz+B,EALFy+B,kBACAoH,EAIE7lC,EAJF6lC,QACAV,EAGEnlC,EAHFmlC,kBACAW,EAEE9lC,EAFF8lC,wBACA3P,EACEn2B,EADFm2B,UAEF,EAAsC53B,mBAAS,IAA/C,mBAAOm6B,EAAP,KAAoBoB,EAApB,KACA,EAAwBv7B,oBAAS,GAAjC,mBAAOkL,EAAP,KAAayc,EAAb,KACA,EAA8B3nB,mBAAS,IAAvC,mBAAO+wB,EAAP,KAAgBM,EAAhB,KACA,EAA8BrxB,oBAAS,GAAvC,mBAAO0hC,EAAP,KAAgB8F,EAAhB,KACA,EAAoCxnC,oBAAS,GAA7C,mBAAOynC,EAAP,KAAmBC,EAAnB,KAEM3G,EAAmB,OAAGnzB,QAAH,IAAGA,GAAH,UAAGA,EAAWozB,wBAAd,aAAG,EAA6BC,YACnDC,EAAmB,OAAGtzB,QAAH,IAAGA,GAAH,UAAGA,EAAWuzB,gCAAd,aAAG,EAAqCC,OAC3DC,EAAiB,OAAGnB,QAAH,IAAGA,OAAH,EAAGA,EAAmBoB,UAE7C1gB,qBAAU,WAAO,IAAD,IACR+a,EAAoBgM,EAAiBxJ,IAAS,EAAM2I,IACpDc,EAAmBD,EAAiBvJ,IAAQ,EAAM2I,IAClDc,EAAqBF,EAAiBtJ,GAAU0C,EAAqBiG,IACrEc,EAAqBH,EAAiBrJ,GAAU4C,EAAqB+F,IACrEc,EAAmBJ,EAAiBpJ,GAAQ8C,EAAmB6F,IAE/Dc,EAAW,uBACZrM,GADY,aAEZiM,GAFY,aAGZC,GAHY,aAIZC,GAJY,aAKZC,IAGCrG,KAAW,OAACsG,QAAD,IAACA,GAAD,UAACA,EAAa96B,QAAO,YAAe,IAAZxO,EAAW,EAAXA,KACvC,OAAW,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM6O,SAAS4sB,MAAf,OAA+Bz7B,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAM6O,SAAS9L,EAAM04B,wBAD5C,aAAC,EAEd74B,QAEEmmC,KAAc,OAAC5jB,QAAD,IAACA,GAAD,UAACA,EAAY3W,QAAO,YAAmB,IAAhBzO,EAAe,EAAfA,GAAIC,EAAW,EAAXA,KAC7C,OACGspC,EAAY5gB,MAAK,SAAAoG,GAAM,OAAIA,EAAO/uB,KAAOA,OACzCgD,EAAM04B,YAAc14B,EAAM04B,cAAgBz7B,EAAO2oC,KACjDlN,EAAcA,IAAgBz7B,GAAQ2oC,aAJvB,aAAC,EAMjB/lC,QAEAmmC,GACFp8B,GAAW,yCAGbq8B,EAAcD,GACdD,EAAW9F,GACXrQ,EAAW2W,KACV,QAACnkB,QAAD,IAACA,OAAD,EAACA,EAAYviB,OAAQ64B,EAAa14B,EAAM04B,cAE3CvZ,qBAAU,WACR2a,EAAe,MACd,CAACgK,IAEJ3kB,qBAAU,WACR2mB,EAAwB,KACvB,CAACpN,IAEJ,IAAMwN,EAAmB,SAACnsC,EAAM8lC,EAAW2G,GACzC,IAAMlX,EAAUmX,EAAc1sC,GAE9B,OAAc,OAAPu1B,QAAO,IAAPA,OAAA,EAAAA,EAASzvB,SAAUggC,EAAnB,CAAgC2G,GAAhC,oBAAgDlX,IAAW,IAG9DrH,EAAc,SAAAhF,GAClB0iB,EAAS1iB,EAAUhmB,OAQfwpC,EAAgB,SAAA1sC,GAAS,IAAD,EAC5B,cAAOqoB,QAAP,IAAOA,GAAP,UAAOA,EACH3W,QAAO,SAAAwX,GAAS,aAAIA,EAAUlpB,OAASA,IAAnB,OAA2BkpB,QAA3B,IAA2BA,GAA3B,UAA2BA,EAAWhmB,YAAtC,aAA2B,EAAiB6O,SAAS4sB,cAD7E,aAAO,EAEHjtB,QAAO,SAAAwX,GAAS,aAAIA,EAAUlpB,OAASA,IAAnB,OAA2BkpB,QAA3B,IAA2BA,GAA3B,UAA2BA,EAAWhmB,YAAtC,aAA2B,EAAiB6O,SAAS9L,EAAM04B,kBAQrF,OACE,qCACGoL,KAAmB,OAAV1hB,QAAU,IAAVA,OAAA,EAAAA,EAAYviB,SAAU64B,GAAe14B,EAAM04B,cACnD,cAAC,KAAD,CAAQjvB,KAAMi9B,QAAQ5C,GAAO35B,MAAO3O,EAAUoC,UAAWD,EAAQ0T,UAAjE,SACE,cAAC,KAAD,CAAmBwqB,YAAajY,EAAhC,SACE,gCACGgiB,GACC,cAAC,GAAD,CACEtsC,MAAOo/B,EACPr7B,SAAU,SAAAS,GAAC,OAAIg8B,EAAeh8B,EAAEsC,OAAO9G,QACvC68B,UAAWA,EACXhsB,MAAO,CAAEpO,OAAQ,KAGrB,sBAAK6B,UAAWD,EAAQ+nC,oBAAqBvP,UAAWA,EAAWp3B,SAAU,IAAK4gB,IAAKkmB,EAAvF,UACG5F,GACC3Q,EAAQ7b,KAAI,SAACwP,EAAWvQ,GAAZ,OACV,cAAC,GAAD,CAEEuQ,UAAWA,EACXpkB,QAASopB,EACTkd,kBAAmBA,EACnBzyB,MAAOA,EACP0vB,aAAc0D,GALT7iB,EAAUjmB,QAQnBijC,IAAY+F,GACZ,sBAAKpoC,UAAWD,EAAQ2gC,YAAaz/B,QA3CvB,WAC5B,IAAMw7B,EAAe,CAAEp9B,KAAMy7B,GAAe14B,EAAM04B,aAClDzQ,EAAYoS,IAyCE,UACE,mBAAGz8B,UAAWD,EAAQ4gC,YAAtB,mCACA,mBAAG3gC,UAAWD,EAAQouB,OAAtB,SAA+B2M,GAAe14B,EAAM04B,oBAK1D,qBAAK96B,UAAWD,EAAQqB,OAAQH,QAvCpB,WACtBqnB,GAAQ,GACRtC,KAqCU,qCAQR,cAAC,GAAD,CAAiBna,KAAMA,EAAMma,QAAS,kBAAMsC,GAAQ,aEnHpDygB,GAAQ,SAAA3mC,GACZ,IACErC,EAeEqC,EAfFrC,QACA8B,EAcEO,EAdFP,MACAmnC,EAaE5mC,EAbF4mC,UACAC,EAYE7mC,EAZF6mC,iBACAlU,EAWE3yB,EAXF2yB,UACAxoB,EAUEnK,EAVFmK,MACA7Q,EASE0G,EATF1G,MACA6D,EAQE6C,EARF7C,YACAE,EAOE2C,EAPF3C,SACAy1B,EAME9yB,EANF8yB,eACAgU,EAKE9mC,EALF8mC,iBACAnmC,EAIEX,EAJFW,MACArD,EAGE0C,EAHF1C,OACA64B,EAEEn2B,EAFFm2B,UACA11B,EACET,EADFS,aAsBF,OACE,sBAAK7C,UAAWD,EAAQ0T,UAAxB,UACG5R,GACC,mBAAG7B,UAAWD,EAAQopC,WAAY58B,MAAO08B,EAAzC,SACGpnC,IAGL,uBACE7B,UAAS,UAAKD,EAAQ9B,MAAb,YAAsB8E,GAAShD,EAAQgD,OAChDwJ,MAAOA,EACP7Q,MAAOA,EACPm/B,UAAWmO,EACXzpC,YAAaA,EACbw1B,UAAWA,EACXt1B,SAAUA,EACVQ,WAlCwB,SAAAC,GACd,UAAVA,EAAEzE,KACAytC,GACFA,IAGAhU,GACFA,EAAeh1B,IA4BbR,OAxBa,SAAAQ,GACbR,GAAQA,EAAOQ,IAwBfq4B,UArBgB,SAAAr4B,GAChBq4B,GAAWA,EAAUr4B,MAsBtB2C,GACC,mBAAG7C,UAAWD,EAAQ8C,aAAtB,SACGA,QAOXkmC,GAAMK,aAAe,CACnBH,iBAAkB,IAgBLjkC,mBAAWvH,sBApHX,SAAAC,GAAK,MAAK,CACvB+V,UAAW,CACT7V,SAAU,YAEZK,MAAO,CACLS,QAAS,OACTX,MAAO,OACPK,QAAS,YACTE,aAAc,GACdO,SAAU,OACVwC,WAAY,OACZzC,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B1D,OAAQ,oBACRmC,UAAW,GACX5C,SAAU,YAEZurC,WAAY,CACVtqC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BtnB,WAAY,IACZX,OAAQ,cAEV4E,MAAO,CACLpE,YAAajB,EAAM6D,QAAQ8nC,OAAOtmC,OAEpCF,aAAc,CACZhE,SAAU,GACVjB,SAAU,WACVgB,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5B5E,OAAQ,MAuFcV,CAAmBsrC,KCtGvCO,G,kDACJ,WAAYlnC,GAAQ,IAAD,8BACjB,cAAMA,IAYRiH,aAAe,SAAChK,EAAM3D,GACpB,IAAQ6tC,EAAS,EAAKzmC,MAAdymC,KACRA,EAAKlqC,GAAQ3D,EACb,EAAK8tC,WAAWD,IAhBC,EAmBnBC,WAAa,SAAAD,GACX,EAAKjnC,SAAS,CAAEinC,UApBC,EAkCnBE,WAAa,WACX,MAAgC,EAAKrnC,MAA7B4jB,EAAR,EAAQA,QAAS0jB,EAAjB,EAAiBA,WACjB,EAA8B,EAAK5mC,MAA3BymC,EAAR,EAAQA,KAAMI,EAAd,EAAcA,YAEd,GAAI59B,GAAcw9B,EAAKA,OAASx9B,GAAcw9B,EAAKxnC,MAEjD,MADAiK,GAAW,0CACL,yCAER,GAAI,EAAK49B,cAAcL,EAAKA,MAC1B,OAAOv9B,GAAW,0BAEpB09B,EAAWH,EAAqC,IAA7BI,EAAYJ,KAAKtnC,QACpC+jB,KA5CA,EAAKljB,MAAQ,CACXymC,KAAM,CACJA,KAAM,GACNxnC,KAAM,GACNoiC,qBAAqB,GAEvBwF,YAAa9iC,KAAK6B,MAAM7B,KAAKC,UAAU1E,EAAMmnC,OAC7CM,UAAU,GATK,E,qDAuBnB,WACE,IAAMN,EAAO70B,OAAOsC,OAAO,GAAIrb,KAAKyG,MAAMmnC,MACpCO,EAA8C,kBAA7BP,EAAKpF,oBAC5BoF,EAAKpF,oBAAsB2F,EAAUjjC,KAAK6B,MAAM6gC,EAAKpF,qBAAuBoF,EAAKpF,oBACjFxoC,KAAK6tC,WAAWD,K,2BAGlB,SAAct6B,GACZ,OAAQ,gCAAgC7I,KAAK6I,K,oBAkB/C,WAAU,IAAD,OACClP,EAAYpE,KAAKyG,MAAjBrC,QACR,EAAkCpE,KAAKmH,MAA/B6mC,EAAR,EAAQA,YAAaE,EAArB,EAAqBA,SACrB,EAA4CluC,KAAKmH,MAAMymC,KAA/CxnC,EAAR,EAAQA,KAAMwnC,EAAd,EAAcA,KAAMpF,EAApB,EAAoBA,oBACpB,OACE,gCACE,cAAC,GAAD,CACEzoC,MAAOqG,EACPF,MAAM,OACNtC,YAAY,sBACZE,SAAU,SAAAS,GAAC,OAAI,EAAKmJ,aAAa,OAAQnJ,EAAEsC,OAAO9G,UAEpD,cAAC,GAAD,CACEA,MAAO6tC,EACP1nC,MAAM,MACNtC,YAAY,iBACZE,SAAU,SAAAS,GAAC,OAAI,EAAKmJ,aAAa,OAAQnJ,EAAEsC,OAAO9G,UAEnDmuC,GAAY,mBAAG7pC,UAAU,UAAb,oCACb,cAAC,KAAD,CACEA,UAAU,WACV2tB,QACE,cAAC,KAAD,CACEluB,SAAU,kBAAM,EAAK4J,aAAa,uBAAwB86B,IAC1DzoC,MAAOJ,OAAO6oC,GACd7vB,QAAS6vB,EACTvlC,MAAM,YAGVI,MAAM,mBAER,qBAAKgB,UAAWD,EAAQgqC,aAAxB,SACE,cAAC,GAAD,CACE9oC,QAAStF,KAAK8tC,WACdte,KAAK,KACLtpB,MAAO8nC,GAA2C,IAA5BA,EAAYJ,KAAKtnC,OAAe,SAAW,kB,GArFlD6C,IAAMC,WA6FlBC,eAAWvH,sBAzGX,SAAAC,GAAK,MAAK,CACvBi8B,QAAS,CACP/6B,MAAO,UACPT,OAAQ,GAEV4rC,aAAc,CACZlsC,QAAS,OACTyH,eAAgB,SAChBM,UAAW,OAiG8B,CAAEzG,WAAW,GAAhC1B,CAAwC6rC,KChGrDU,GAAsD,SAAC,GAM7D,IALLlR,EAKI,EALJA,OACAC,EAII,EAJJA,UACAwQ,EAGI,EAHJA,KACAG,EAEI,EAFJA,WACAO,EACI,EADJA,SAEM5f,EAAc,kBAAM0O,GAAU,IAKpC,OACE,8BACGwQ,GACC,cAAC,GAAD,CAAOvjB,QAPe,WAC1BqE,IACA4f,KAKyCp+B,KAAMitB,EAAQj3B,MAA4B,IAArB0nC,EAAKA,KAAKtnC,OAAe,cAAgB,YAAnG,SACE,cAAC,GAAD,CAAcsnC,KAAMA,EAAMvjB,QAASqE,EAAaqf,WAAYA,SC7BzDQ,GAAgB,WAC3B,OACE,sBACEnsC,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBACEG,EAAE,yrBACFJ,KAAK,UAEP,sBACEI,EAAE,qrBACFJ,KAAK,cCjBAu6B,GAAsB,SAAtBA,IAA+D,IAAD,IAAvCC,EAAuC,uDAA1B,GAAIC,EAAsB,uDAAN,EAC7DC,EAAS,UAAGF,SAAH,aAAG,EAAYxuC,QAAQ,QAASyuC,GACzCE,EAAa,UAAGH,SAAH,aAAG,EAAYxuC,QAAQ,IAAK0uC,GAE/C,GAAIA,EAAY,GAAKC,EAAgB,EACnC,OAAOH,EAGT,IAAII,EAASJ,EAAWh1B,MAAM,IAC9Bo1B,EAAO7T,OAAO2T,EAAWC,EAAgBD,EAAY,EAAG,IAAK,KAE7D,IAAMG,GADNL,EAAaI,EAAOlqB,KAAK,KACO1kB,QAAQ,UAAW0uC,GAKnD,OAJAE,EAASJ,EAAWh1B,MAAM,KACnBuhB,OAAO8T,EAAc,EAAG,IAAK,MACpCL,EAAaI,EAAOlqB,KAAK,KAEVpS,SAAS,UAAYk8B,EAAWl8B,SAAS,WAC/Ci8B,EAAoBC,EAAYE,EAAY,GAE5CF,GChBJ,IAAMM,GAAc,SAACphC,EAAYqhC,GACtC,IAAM5M,EAAWziC,OAAOsvC,aAAathC,EAAMuhC,OAAOpxB,gBAC5CnQ,EAAMwhC,SAAWxhC,EAAMyhC,UAAyB,MAAbhN,GAAqB4M,KAC5DK,UAAUC,UAAUC,UAAUf,GCN3B,WACL,IAAIgB,EAAO,GACX,GAAIzuC,OAAO0uC,aAAc,CACvB,IAAMC,EAAM3uC,OAAO0uC,cAAgB1uC,OAAO0uC,eAC1C,GAAIC,EAAIC,WAAY,CAElB,IADA,IAAM73B,EAAY+sB,SAAS+K,cAAc,OAChCtxB,EAAI,EAAGA,EAAIoxB,EAAIC,aAAcrxB,EACpCxG,EAAU+3B,YAAYH,EAAII,WAAWxxB,GAAGyxB,iBAE1CP,EAAO13B,EAAUk4B,eAGoB,qBAA5BnL,SAAS4K,gBACkB,SAAhC5K,SAAS4K,eAAejvC,OAE1BgvC,EAAO3K,SAASoL,UAAUC,cAAcC,UAI9C,OAAOX,EDb6CY,KAClDziC,EAAMpI,mBEHG8qC,GAAoB,SAApBA,EAAqBC,EAAkBznB,EAAiC9W,GACnF,IAAM48B,EAAY2B,EAASrwC,QAAQ,MAC7B2uC,EAAgB0B,EAASrwC,QAAQ,KAAM0uC,GAE7C,GAAIA,EAAY,GAAKC,EAAgB,EACnC,OAAO0B,EAGT,IAAMC,EAAUD,EAAS72B,MAAM,IACzB+2B,EAAUF,EAAS72B,MAAM,IACzBg3B,EAAWF,EAAQvV,OAAO2T,EAAY,EAAGC,EAAgBD,EAAY,GAAGhqB,KAAK,IAC7Eka,EAAmBhW,EAAWxW,MAAK,SAAAq+B,GAAU,OAAIA,EAAWhtC,OAAS+sC,UAElD5a,IAArBgJ,GAAkC9sB,GACpCguB,GAAgBhuB,EAAO,CAAErO,KAAM+sC,IAIjC,IAKME,EALW,6IAAyInN,GAAiB,OACzK3E,QADyK,IACzKA,OADyK,EACzKA,EAAkBr+B,MADH,MAKUiwC,EAFT,UAKlB,OAFAD,EAAQxV,OAAR,MAAAwV,EAAO,CAAQ7B,EAAWC,EAAgBD,EAAY,GAA/C,oBAAqDgC,EAAKl3B,MAAM,OAEnE62B,EAAS/9B,SAAS,OAAS+9B,EAAS/9B,SAAS,MACxC89B,EAAkBG,EAAQ7rB,KAAK,IAAKkE,EAAY9W,GAEhDy+B,EAAQ7rB,KAAK,KC7BlBisB,GAAqB,SACzBC,EACAC,EACAC,EACAC,GAKA,IAHA,IAAM1qC,EAASwqC,EAAmB/O,WAAWz7B,OACvC2qC,EAAwBH,EAAmB/O,WAExCzjB,EAAI,EAAGA,EAAIhY,EAAQgY,IAC1BuyB,EAAOK,aAAaD,EAAsB,GAAIF,GAC1CzyB,IAAM2yB,EAAsB3qC,OAAS,GACvC0qC,EAAQC,EAAsB3yB,KAKvB6yB,GAAc,SACzBxjC,EACAkb,EACAuoB,EACAC,EACAC,EACAN,EACAj/B,EACAi9B,GAEA,IAAM5M,EAAWziC,OAAOsvC,aAAathC,EAAMuhC,OAAOpxB,cAElD,GAAI/c,OAAO0uC,eAAeE,WAAa,EAAG,CAAC,IAAD,EAClC4B,EAAexwC,OAAO0uC,eAAen0B,WACrCk2B,EAAM,UAAGzwC,OAAO0uC,sBAAV,aAAG,EAAuBK,WAAW,GAC3C2B,EAAS1wC,OAAO0uC,eAAeiC,aAC/B/jC,EAAMwhC,SAAWxhC,EAAMyhC,UAAyB,MAAbhN,GAAqB4M,KAC5DK,UAAUC,UAAUqC,WAAW9pC,MAAK,SAAAzB,GAAS,IAAD,EAC1CA,EAAOiqC,GAAkBjqC,EAAMyiB,EAAY9W,GAC3C,IAAM6/B,EAAU/M,SAAS+K,cAAc,QACvCgC,EAAQ5B,UAAY5pC,EACpB,IAAMyrC,EAAM,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAS7P,YAAW,UAAA6P,EAAQ7P,kBAAR,eAAoBz7B,QAAS,GAGhE,GAAIirC,EAAc,CAChBC,EAAOM,iBAEP,IADA,IAAMxrC,EAASsrC,EAAQ7P,WAAWz7B,OACzBgY,EAAI,EAAGA,EAAIhY,EAAQgY,IAC1BkzB,EAAOO,WAAWH,EAAQ7P,WAAWz7B,EAASgY,EAAI,IAC9CA,IAAMhY,EAAS,GACjB0qC,EAAQY,EAAQ7P,WAAWzjB,SAG1B,GAAImzB,IAAWL,EAASvrB,SAAW2rB,EAAOQ,YAC/CZ,EAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAC43B,EAAU94B,GAI7C,OAHIA,IAAUq4B,EAAOQ,YAAc,GACjCpB,GAAmBQ,EAASvrB,QAAS+rB,EAASK,EAASC,YAAalB,GAE/D73B,IAAUk4B,EAAe,UAE7B,UAAII,QAAJ,IAAIA,OAAJ,EAAIA,EAAQU,UAAW,CAAC,IAAD,QACtBC,GAAQ,UAAAX,EAAOU,iBAAP,eAAkBt0B,OAAO,EAAG2zB,EAAOQ,eAAgB,GAC3DK,GAAQ,UAAAZ,EAAOU,iBAAP,eAAkBt0B,OAAO2zB,EAAOQ,eAAgB,GACxDM,EAAYzN,SAAS0N,eAAeH,GACpCI,EAAY3N,SAAS0N,eAAeF,GAC1C,UAAAjB,EAASvrB,eAAT,SAAkB4sB,aAAaH,EAAWb,GAC1C,IAAMiB,EAAOJ,EAAUJ,YACvBtB,GAAmBQ,EAASvrB,QAAS+rB,EAASc,EAAM1B,GACpD,UAAAI,EAASvrB,eAAT,SAAkBqrB,aAAasB,EAA/B,OAA0CX,QAA1C,IAA0CA,OAA1C,EAA0CA,EAAQK,kBACxCV,IAAYA,EAAOQ,aAAgBR,EAAOmB,YACpD/B,GAAmBQ,EAASvrB,QAAS+rB,EAASR,EAASvrB,QAAQkc,WAAW,GAAIiP,GAEhFM,EAAQ,OAACF,QAAD,IAACA,OAAD,EAACA,EAAUvrB,QAAQmqB,WAC3BgB,EAAQa,MAEVlkC,EAAMpI,oBC5ECqtC,GAAmB,SAACjiC,EAAcmH,GAC7C,IAAM+6B,GAAqB,OAAPliC,QAAO,IAAPA,OAAA,EAAAA,EAASjM,MAAT,OAAeiM,QAAf,IAAeA,OAAf,EAAeA,EAASpO,QACtCuwC,GAAuB,OAAPniC,QAAO,IAAPA,OAAA,EAAAA,EAAS7G,OAAT,OAAgB6G,QAAhB,IAAgBA,OAAhB,EAAgBA,EAASvO,OACzC2wC,EAAsBF,EAAc/6B,EAAUvV,OAASxB,OAAOkhC,YAC9D+Q,EAAqBF,EAAgBh7B,EAAU1V,MAAQrB,OAAOkyC,WAIpE,MAAO,CAAEvuC,IAHGmuC,GAAeE,GAAuBj7B,EAAUvV,QAAU,KAGxDuH,KAFDgpC,IAAkBE,GAAsBl7B,EAAU1V,OAAS,OCN7D8wC,GAAoB,WAAgC,IAA/BC,EAA8B,uDAAT,KAC/CC,EAAQvO,SAASqL,cACjBR,EAAM3uC,OAAO0uC,eAEf0D,IAAM,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAQrO,cACpBsO,EAAMC,cAAcF,GACpBC,EAAME,UAAS,GACf5D,EAAI6D,kBACJ7D,EAAI8D,SAASJ,KCRJK,GAAoB,SAACjM,EAA4BkM,GACxD3yC,OAAO0uC,eAAeE,YACxBnI,EAASkM,GAAY,O,qBC6ZVrqC,eAAWqQ,aAPF,SAAAvS,GAAK,YAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBoU,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,GAC9BmP,UAAWzL,EAAMyL,UACjBsyB,kBAAmB/9B,EAAM+9B,qBAGDxrB,EAnX8C,SAAC,GAQlE,IAAD,UAPJwJ,EAOI,EAPJA,aACApf,EAMI,EANJA,SACAm5B,EAKI,EALJA,YACArqB,EAII,EAJJA,UACAsyB,EAGI,EAHJA,kBACArc,EAEI,EAFJA,WACAwQ,EACI,EADJA,IAEA,EAAwBr0B,mBAAc,MAAtC,mBAAOikC,EAAP,KAAa+H,EAAb,KACA,EAA0BhsC,mBAAcke,GAAxC,mBAAOnjB,EAAP,KAAcuxC,EAAd,KACA,EAA2BtsC,mBAAc,MAAzC,mBAAO2uC,EAAP,KAAeC,EAAf,KACA,EAAwB5uC,oBAAkB,GAA1C,mBAAOulC,EAAP,KAAasJ,EAAb,KACA,EAAoC7uC,oBAAS,GAA7C,mBAAOqnC,EAAP,KAAmByH,EAAnB,KACA,EAA4B9uC,oBAAkB,GAA9C,mBAAOm4B,EAAP,KAAeC,EAAf,KACA,EAA8Bp4B,oBAAkB,GAAhD,mBAAO+uC,EAAP,KAAgBC,EAAhB,KACA,EAAwBhvC,mBAA0B,MAAlD,mBAAO4oC,EAAP,KAAaqG,EAAb,KACA,EAAgCjvC,wBAAc6wB,GAA9C,mBAAOqe,EAAP,KAAiBC,EAAjB,KACA,EAAgDnvC,mBAAS,GAAzD,mBAAO4mC,GAAP,KAA0BwI,GAA1B,KACA,GAAoCpvC,wBAAc6wB,GAAlD,qBAAO6b,GAAP,MAAmB2C,GAAnB,MACA,GAA0CrvC,mBAAiB,IAA3D,qBAAOsvC,GAAP,MAAsBC,GAAtB,MACA,GAA8CvvC,mBAAc,IAA5D,qBAAOwvC,GAAP,MAAwBC,GAAxB,MACA,GAAwCzvC,wBAAc6wB,GAAtD,qBAAOwb,GAAP,MAAqBqD,GAArB,MACA,GAA4D1vC,mBAAS,IAArE,qBAAO2vC,GAAP,MAA+BC,GAA/B,MAEMxD,GAAWzrB,iBAAO,MAClBkvB,GAAgBlvB,iBAAO,MACvBmvB,GAAgBnvB,iBAAO,MACvBogB,GAAmB,OAAGnzB,QAAH,IAAGA,GAAH,UAAGA,EAAWozB,wBAAd,aAAG,EAA6BC,YACnDC,GAAmB,OAAGtzB,QAAH,IAAGA,GAAH,UAAGA,EAAWuzB,gCAAd,aAAG,EAAqCC,OAC3DC,GAAiB,OAAGnB,QAAH,IAAGA,OAAH,EAAGA,EAAmBoB,UAE7C1gB,qBAAU,WACR,IAAM4a,EAAiB3X,EACpB3W,QAAO,YAAe,IAAZ1R,EAAW,EAAXA,KACT,OACGA,IAAS6iC,KAAa0C,IACtBvlC,IAAS8iC,KAAa4C,IACtB1lC,IAAS+iC,KAAW8C,MAGxBnsB,KAAI,YAAe,IAAZxW,EAAW,EAAXA,KACN,MAAM,KAAN,OAAYA,EAAZ,SAGJkxC,GAA0BpU,KACzB,CAAC3X,IAEJjD,qBAAU,WACR,IAAMmvB,EAA0B,kBC3FG,SAAC3D,EAAkCmD,GAA2C,IAAD,EAGlH,GAFAA,EAAiB1P,SAAS4K,eAAen0B,aAErC,UAAAupB,SAAS4K,sBAAT,eAAyBE,YAAa,EAAG,CAC3C,IAAMqF,EAASj0C,OAAO0uC,eAAeK,WAAW,GAAGmF,wBAAwBC,cAC3E,GAAqC,SAAjCF,EAAOG,QAAQr3B,eAA4Bk3B,EAAOE,gBAAkB9D,EAASvrB,QAAS,CACxF,IAAMutB,EAAQvO,SAASqL,cACjBR,EAAM3uC,OAAO0uC,eACnB2D,EAAMgC,eAAeJ,GACrB5B,EAAMiC,YAAYL,GAClBtF,EAAI6D,kBACJ7D,EAAI8D,SAASJ,KDgFuBkC,CAAwBlE,GAAUmD,KAUxE,OAJAnD,GAASvrB,QAAQmqB,UAAYK,GAAkBntB,EAAc2F,GAC7Dgc,SAAS0Q,iBAAiB,kBAAmBR,GAC7C3D,GAASvrB,QAAQ0vB,iBAAiB,SANZ,SAAA5nC,GAAK,OACzBwjC,GAAYxjC,EAAOkb,EAAYuoB,GAAUC,GAAcC,EAAUN,EAAS/T,GAAa,MAMzFmU,GAASvrB,QAAQ0vB,iBAAiB,QALb,SAAA5nC,GAAK,OAAIohC,GAAYphC,GAAO,MAM1C,kBAAMk3B,SAAS2Q,oBAAoB,kBAAmBT,MAC5D,IAEHnvB,qBAAU,WAAO,IAAD,EACdwrB,GAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAA43B,GAAa,IAAD,EACL,UAA7B,OAARA,QAAQ,IAARA,GAAA,UAAAA,EAAUkD,eAAV,eAAmBr3B,iBACrBm0B,EAASwD,QAAU,kBAAMhC,GAAkBiC,GAAmBzD,QAGlEX,EAAQ,OAACF,SAAD,IAACA,IAAD,UAACA,GAAUvrB,eAAX,aAAC,EAAmBmqB,aAC3B,QAACoB,SAAD,IAACA,IAAD,UAACA,GAAUvrB,eAAX,aAAC,EAAmBmqB,YAEvBpqB,qBAAU,WACJqjB,GAAMiK,GAAkBjK,KAC3B,CAACA,IAEJrjB,qBAAU,WACR9hB,EAAS0qC,GAAoBzuC,MAC5B,CAACA,IAEJ6lB,qBAAU,WACRwuB,GAAmB,KAClB,CAAC7J,IAEJ,IAgBMmL,GAAoB,SAAAC,GACxB,IAAMvC,EAAQvO,SAASqL,cACvBkD,EAAMwC,mBAAmBD,GACzB3E,EAAQ2E,GACRE,GAAmBzC,EAAOuC,EAAG9N,UAAW8N,EAAG/T,aAAa,aAAc12B,KAAK6B,MAAM4oC,EAAG/T,aAAa,qBAG7FkU,GAA0B,WAC9B,IAAM7F,EAAYlvC,OAAO0uC,eAAen0B,WACpC20B,GACF4F,GAAmB90C,OAAO0uC,eAAeK,WAAW,GAAIG,EAAW,IAAI,IAIrE4F,GAAqB,SAACzC,EAAOhtC,EAAcwnC,EAAcpF,GAC7DyL,EAAQ,CAAErG,OAAMxnC,OAAMoiC,wBACtBoL,EAASR,GACThW,GAAU,IAiBN2Y,GAAoC,SAACC,EAASC,EAAQC,GAC1D,IAAMC,EAAeH,EAAQhG,UACvBoG,EAAuBD,EAAal2C,QAAQ,MAC5Co2C,EAAwBF,EAAal2C,QAAQ,KAAMm2C,GAEzD,GAAIA,GAAwB,EAC1B,GAAIC,EAAwB,EAAG,CAC7B,IAAMC,EAAaF,EAAuB,EACpCG,EAAcF,EAAwBD,EAAuB,EAC7DI,EAAUL,EAAa18B,MAAM,IAAIuhB,OAAOsb,EAAYC,GACpDE,EAAU,aAAID,GAAS7xB,KAAK,IAClCqb,GAAayW,OACR,CAAC,IAAD,IACCl4B,GAAQ,UAAA03B,EAAO9D,iBAAP,eAAkBlyC,QAAQ,OAAQ,EAC1Cy2C,EAAS,UAAGT,EAAO9D,iBAAV,aAAG,EAAkBwE,UAAUp4B,EAAO23B,GACrDzB,GAAmBiC,KAKnBE,GAA+B,WACnCxF,GAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAA43B,GACS,IAAD,IAAtCA,EAAS4E,WAAaC,KAAKC,aAC7B,UAAI9E,EAASE,iBAAb,aAAI,EAAoB5/B,SAAS,QAC/BshC,GAAQ,GACRC,GAAc,MACL,UAAA7B,EAASE,iBAAT,eAAoB5/B,SAAS,QAASg4B,IAC/CsJ,GAAQ,QAMVmD,GAAe,WAAe,IAAdzyC,EAAa,uDAAT,KACvB,OAADA,QAAC,IAADA,KAAGgB,iBACH8uC,GAActzC,OAAO0uC,eAAeiC,YAEhC3wC,OAAO0uC,eAAeiC,aAAeN,GAASvrB,QAChD6uB,GAAgB3zC,OAAO0uC,eAAewH,cAEtC9C,EAAYpzC,OAAO0uC,eAAeK,WAAW,KAa3ClT,GAAY,SAAAjvB,GAChBupC,GAAYvpC,GACZwpC,GAAqBxpC,GACrBypC,GAAYzpC,GACZ0pC,GAAuB1pC,GACvBohC,GAAYphC,GAAO,GACnBwjC,GAAYxjC,EAAOkb,EAAYuoB,GAAUC,GAAcC,EAAUN,EAAS/T,GAAa,IAGnFia,GAAc,SAAAvpC,GAClB,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,UAE9BiK,GjClPgB,KiCkPFvsC,GAAqByqC,GACtC58B,EAAMpI,kBAIJ4xC,GAAuB,SAAAxpC,GAC3B,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAEnC,GjCzP0B,KiCyPtBtiC,GAA0BA,IAAQohC,GAMpC,OALAvzB,EAAMpI,iBAEFglC,GACF+M,GAA0Bx3C,IAErB,GAILw3C,GAA4B,SAAA/lB,GAAc,IAAD,EACvCwQ,EAAU,OAAG+S,SAAH,IAAGA,IAAH,UAAGA,GAAejvB,eAAlB,aAAG,EAAwBkc,WACrCwV,EEnQqC,SAC7ChmB,EACAujB,EACAlJ,GACI,IAAD,IAIC2L,EAHExV,EAAU,OAAG+S,QAAH,IAAGA,GAAH,UAAGA,EAAejvB,eAAlB,aAAG,EAAwBkc,WACrCyV,EAAgBjmB,IAAc2P,IAAgB,EAAI,EAClDuW,GAA6B,OAAV1V,QAAU,IAAVA,OAAA,EAAAA,EAAYz7B,QAAS,EAc9C,MALqD,SAAjD,UAAAy7B,EALFwV,OADoD1hB,IAAlDkM,EAAW6J,EAAoB4L,GACR5L,EAAoB4L,EAEpBjmB,IAAc2P,GAAeuW,EAAmB,UAGvE,eAAoCC,YACtCH,EACEA,EAAyBC,EAAgB,EAAIC,EAAmBF,EAAyBC,GAGtFD,EF8O0BI,CAAgCpmB,EAAWujB,GAAelJ,IACnFgM,EAAoB7V,EAAWwV,GAEpB,OAAjBK,QAAiB,IAAjBA,KAAmBC,eAAe,CAChCC,SAAU,OACVC,MAAO,SACPC,OAAQ,WAEV5D,GAAmBmD,IAGfH,GAAc,SAAAzpC,GAGlB,GjC/QqB,MiC6QTA,EAAMw0B,SAAWx0B,EAAMy0B,UAKjC,GAFAz0B,EAAMpI,iBAEFglC,EAAM,CAAC,IAAD,IACF0N,GAA6B,OAAbnD,SAAa,IAAbA,IAAA,UAAAA,GAAejvB,eAAf,mBAAwBkc,WAAW6J,WAAnC,eAAuD/D,YAAa2M,GACtFyD,GACFjY,GAAaiY,QAGfpT,SAASqT,YAAY,oBAKrBb,GAAyB,SAAA1pC,GAC7B,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SjChST,KiCkSrBtiC,GjCjSsB,KiCiSIA,IAA4ByqC,GACzD58B,EAAMpI,kBAcJy6B,GAAe,SAAAtW,GACnB,GAAIA,EAAW,CACb,IAAMyuB,EAAcp3C,OAAO0uC,eAAeK,WAAW,GAAGkC,YACxD,IGrTgD,SACpDZ,EACAuD,EACAjrB,EACAyuB,GAEA,IAAMC,EAAwB,KAAO1uB,EAAY,KAC7C2uB,GAAe,EAkBnB,OAjBAjH,EAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAC43B,EAAUqG,GACxCrG,EAAS4E,WAAaC,KAAKC,WAAc9E,EAASE,UAAU5/B,SAAS6lC,IACxEzD,EAAuBt6B,SAAQ,SAAAk+B,GAC7B,GAAIA,IAAQH,EAAuB,CACjCnG,EAASE,UAAYF,EAASE,UAAU/kC,QAAQgrC,EAAuB,IACvE,IAAMI,EAAmBL,EAAcC,EAAsB9xC,OACvD8sC,EAAQvO,SAASqL,cACjBR,EAAM3uC,OAAO0uC,eACnB2D,EAAMqF,SAASrH,EAASvrB,QAAQkc,WAAWuW,GAAYE,GACvDpF,EAAME,UAAS,GACf5D,EAAI6D,kBACJ7D,EAAI8D,SAASJ,GACbiF,GAAe,SAKhBA,EH4REK,CAAuCtH,GAAUuD,GAAwBjrB,EAAWyuB,GAAc,CACrG,IAAMtZ,EAAmBhW,EAAWxW,MAAK,qBAAG3O,OAAoBgmB,KAC1DivB,EIrTmB,SAAC9Z,EAAqCnV,GACrE,IAAMivB,EAAU9T,SAAS+K,cAAc,QAUvC,OATA+I,EAAQ/nC,MAAM1O,QAAU,eACxBy2C,EAAQ/nC,MAAM0nB,SAAW,OACzBqgB,EAAQ/nC,MAAMgoC,UAAY,OAC1BD,EAAQ/nC,MAAM3N,MAAQsV,GACtBogC,EAAQ/nC,MAAMxN,gBAAkBogC,GAAiB,OAAC3E,QAAD,IAACA,OAAD,EAACA,EAAkBr+B,MACpEm4C,EAAQE,aAAa,kBAAmB,SACxCF,EAAQ/nC,MAAMjO,aAAe,OAC7Bg2C,EAAQ3I,UAAYtmB,EAEbivB,EJ0SeG,CAAkBja,EAAkBnV,GAC/CmV,GAAkBkB,GAAgB9C,EAAa,CAAEv5B,KAAMgmB,IAC5DqvB,GAAuBJ,GACvB3H,EAAQ2H,GK1TwC,SACtDvH,EACAuH,EACAjvB,GAEA0nB,EAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAC43B,EAAU94B,GAAW,IAAD,4BACvD,GACE84B,IAAa0G,IAAb,UACAvH,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UADpC,iBACA,EAAwCg5B,iBADxC,aACA,EAAmD5/B,SAAS,SAD5D,UAEA6+B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAFpC,iBAEA,EAAwCg5B,iBAFxC,aAEA,EAAmD6G,SAAS,SAC5D,UAAC5H,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAArC,iBAAC,EAAwCg5B,iBAAzC,aAAC,EAAmD6G,SAAS,SAH7D,UAIA5H,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAJpC,iBAIA,EAAwCg5B,iBAJxC,aAIA,EAAmD8G,WAAW,MAC9D,CAAC,IAAD,IAI+D,EAMM,EAT/DC,EAAW,UAAG9H,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAAvC,aAAG,EAAwCg5B,UACtDgH,EAAW,UAAG/H,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAAvC,aAAG,EAAwCg5B,UACtDiE,EAAuB8C,EAAYj5C,QAAQ,MAC7CkZ,EAAQ,IAAM,GAAK+/B,IAAgB,KAAOxvB,EAAY,KACxD,UAAA0nB,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,SAAwCigC,SACxCjgC,GAAS,GAETi4B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,GAAGg5B,UAAY+G,EAAYvC,UAAU,EAAGP,GAE1D,MAAhB+C,GAA8D,IAAvC/H,EAASvrB,QAAQkc,WAAWz7B,OACrD,UAAA8qC,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,SAAwCigC,SAExChI,EAASvrB,QAAQkc,WAAW5oB,EAAQ,GAAGg5B,UAAYgH,EAAYxC,UAAU,EAAGwC,EAAY7yC,aAErF,GACL2rC,IAAa0G,IAAb,UACAvH,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UADpC,iBACA,EAAwCg5B,iBADxC,aACA,EAAmD5/B,SAAS,SAD5D,UAEA6+B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAFpC,iBAEA,EAAwCg5B,iBAFxC,aAEA,EAAmD6G,SAAS,OAC5D,CAAC,IAAD,IAGgE,EAMwC,EARlGE,EAAW,UAAG9H,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAAvC,aAAG,EAAwCg5B,UACtDiE,EAAuB8C,EAAYj5C,QAAQ,MAC7CkZ,EAAQ,IAAM,GAAK+/B,IAAgB,KAAOxvB,EAAY,MACxD,UAAA0nB,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,SAAwCigC,SACxCjgC,GAAS,GAETi4B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,GAAGg5B,UAAY+G,EAAYvC,UAAU,EAAGP,GAE1EhF,EAASvrB,QAAQkc,WAAW5oB,EAAQ,IAA4D,MAAtD,UAAAi4B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,eAAwCg5B,aACpF,UAAAf,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,SAAwCigC,eAErC,GAAInH,IAAa0G,IAAb,UAAwBvH,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAA5D,iBAAwB,EAAwCg5B,iBAAhE,aAAwB,EAAmD5/B,SAAS,OAAO,CAAC,IAAD,MAII,EAGA,EANlG8mC,EAAO,UAAGjI,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAAvC,aAAG,EAAwCg5B,UAClDmH,EAAsBD,EAAQp5C,QAAQ,MAC5CmxC,EAASvrB,QAAQkc,WAAW5oB,EAAQ,GAAGg5B,UAAYkH,EAAQ1C,UAAU,EAAG2C,GACpElI,EAASvrB,QAAQkc,WAAW5oB,EAAQ,IAA4D,MAAtD,UAAAi4B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,eAAwCg5B,aACpF,UAAAf,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,SAAwCigC,UAEtChI,EAASvrB,QAAQkc,WAAW5oB,EAAQ,IAA4D,MAAtD,UAAAi4B,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,eAAwCg5B,aACpF,UAAAf,EAASvrB,QAAQkc,WAAW5oB,EAAQ,UAApC,SAAwCigC,cLwQxCG,CAAyCnI,GAAUuH,EAASjvB,GAC5DwpB,GAAkByF,SAGpBa,KAEF1F,GAAc,GACdW,GAAmB,IACnBZ,GAAQ,GACRvC,EAAQ,OAACF,SAAD,IAACA,QAAD,EAACA,GAAUvrB,QAAQmqB,YAGvBwJ,GAAsB,WAC1BpI,GAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAA43B,GAAa,IAAD,GAC9C,OAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAUE,iBAAd,aAAI,EAAqB5/B,SAAS,WAChC0/B,EAASE,UAAYF,EAASE,UAAU/kC,QAAQ,OAAQ,IACxD8lC,GAAkBjB,QAKlB8G,GAAyB,SAAAJ,GACzBjH,KAAeN,GAASvrB,SAAWwrB,GMjVL,SACpCsH,EACAvH,EACAC,GAEAD,EAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAC43B,EAAU94B,GACzCA,IAAUk4B,EAAe,GAC3BD,EAASvrB,QAAQqrB,aAAayH,EAAS1G,EAASC,gBN2UhDuH,CAAuBd,EAASvH,GAAUC,KACrC,OAAIK,SAAJ,IAAIA,QAAJ,EAAIA,GAAYS,WOnVY,SACrCwG,EACAjH,EACAwC,EACA9C,GACI,IAAD,UACGgB,GAAQ,UAAAV,EAAWS,iBAAX,eAAsBt0B,OAAO,EAAGq2B,EAASlC,eAAgB,GACjEK,GAAQ,UAAAX,EAAWS,iBAAX,eAAsBt0B,OAAOq2B,EAASlC,eAAgB,GAC9DM,EAAYzN,SAAS0N,eAAeH,GACpCI,EAAY3N,SAAS0N,eAAeF,GAC1C,UAAAjB,EAASvrB,eAAT,SAAkB4sB,aAAaH,EAAWZ,GAC1C,UAAAN,EAASvrB,eAAT,SAAkBqrB,aAAayH,EAASrG,EAAUJ,aAClD,UAAAd,EAASvrB,eAAT,SAAkBqrB,aAAasB,EAAWmG,EAAQzG,aPwU9CwH,CAAwBf,EAASjH,GAAYwC,EAAU9C,IAC5C8C,IAAcA,EAASlC,aAAgBkC,EAASvB,YAAgBtB,IQrVzC,SAACsH,EAAsBvH,GAC7DA,EAASvrB,QAAQqrB,aAAayH,EAASvH,EAASvrB,QAAQkc,WAAW,IRqV/D4X,CAAyBhB,EAASvH,KAShCrP,GAAU,OAAGqP,SAAH,IAAGA,IAAH,UAAGA,GAAUvrB,eAAb,aAAG,EAAmBkc,WAItC,OACE,sBAAK19B,UAAWD,KAAQ0T,UAAxB,WACIi8B,GAAWO,IAAiBzP,SAAS+U,iBAAT,OAA2BxI,SAA3B,IAA2BA,QAA3B,EAA2BA,GAAUvrB,UACjE,qBAAKxhB,UAAWD,KAAQy1C,SAAUC,YAAa,kBAAMrG,GAAkBqC,KAAvE,SACE,cAAC,GAAD,MAGJ,qBACEtc,IAAKH,GAAO,MACZzoB,MAX+CxL,mBAAQ,iBAAO,CAAE/C,UAAWg3B,EAAM,QAAU,UAAW,CAACA,IAYvGjT,IAAKgrB,GACLxU,UAAWA,GACXt4B,WAvEa,SAAAqJ,GACjB,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAEnCgP,GAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAA43B,GAAa,IAAD,EAC1CA,EAAS4E,WAAaC,KAAKC,YAA3B,UAAwC9E,EAASE,iBAAjD,aAAwC,EAAoB5/B,SAAS,QAAiB,MAARzS,GAChF6N,EAAMpI,qBAmENw0C,iBAAiB,EACjBC,QAhNe,SAAAz1C,GAAM,IAAD,EAClB4zC,EAAcp3C,OAAO0uC,eAAeK,WAAW,GAC/C0I,EAAmBL,EAAYnG,YAC/BiI,EAAgB9B,EAAYlD,wBAC5BiF,EAAc31C,EAAEsC,OAAOmpC,UAE7B+F,GAAkC3E,GAASvrB,QAASo0B,EAAezB,GACnE5B,KACAtF,EAAS4I,GACTlG,IAAW,UAAC5C,GAASvrB,eAAV,aAAC,EAAkBmqB,YAE9BgH,MAsMI3yC,UAAWD,KAAQ9B,QAErB,cAAC,GAAD,CACEioC,KAAMA,EACN3N,UAAWA,GACXwP,SAAUpM,GACVsM,QAASwI,GACTzI,WAAYA,EACZlN,YAAaqV,GACbnqB,QAhK2B,WAC/B+mB,GAASvrB,QAAQkc,WAAW1nB,SAAQ,SAAA43B,GAAa,IAAD,EACkC,EAA5EA,EAAS4E,WAAaC,KAAKC,YAA3B,UAAwC9E,EAASE,iBAAjD,aAAwC,EAAoB5/B,SAAS,SACvE0/B,EAASE,UAAT,UAAqBF,EAASE,iBAA9B,aAAqB,EAAoB/kC,QAAQ,KAAOonC,GAAiB,QAG7EX,GAAQ,IA2JJjI,kBAAmBA,GACnBW,wBAAyB6H,GACzBnyC,SAAU2wC,GAAgB,OAACiC,SAAD,IAACA,IAAD,UAACA,GAAehvB,eAAhB,aAAC,EAAwBmc,wBAAyBlqB,MAE9E,cAAC,GAAD,CACE81B,KAAMA,EACNzQ,OAAQA,EACRC,UAAWA,EACX2Q,WAvQa,SAACH,EAAMuM,GAAwB,IAAD,EAOzCzG,ESpIgB,SAAC,GAAqD,IAAnD0G,EAAkD,EAAlDA,SAAUC,EAAwC,EAAxCA,cAAexS,EAAyB,EAAzBA,UAAW4N,EAAc,EAAdA,QACzD/B,EAAW7O,SAAS+K,cAAc,QAUxC,OATA8D,EAASrvC,UAAY,aACrBqvC,EAASmF,aAAa,YAAtB,UAAsCuB,IACtC1G,EAASmF,aAAa,kBAAmB,SACzCnF,EAAS9iC,MAAM3N,MxJOG,UwJNlBywC,EAASjwC,GAAK,GAAK62C,KAAKC,MACxB7G,EAASmF,aAAa,iBAAtB,UAA2CwB,IAC3C3G,EAAS7L,UAAYA,EACrB6L,EAAS+B,QAAUA,EAEZ/B,ETyHY8G,CANA,CACfJ,SAAUxM,EAAKA,KACfyM,cAAezM,EAAKpF,oBACpBX,UAAW+F,EAAKxnC,KAChBqvC,QAAS,kBAAMhC,GAAkBiC,GAAmBhC,MAIlDyG,IAAe,OAAJlR,QAAI,IAAJA,KAAMmQ,UACrBzF,EAAO7B,iBACP6B,EAAO5B,WAAW2B,GAClB5vC,EAAS0qC,GAAmB,UAAC4C,GAASvrB,eAAV,aAAC,EAAkBmqB,YAC/CgB,EAAQ0C,IA2PJpF,SAAU,kBAAM4E,GAAkBnR,GAAWA,GAAWz7B,OAAS,SAE/DguC,IAAiBzP,SAAS+U,iBAAT,OAA2BxI,SAA3B,IAA2BA,QAA3B,EAA2BA,GAAUvrB,UAAY0kB,IACpE,qBAAKlmC,UAAWD,KAAQq2C,UAAxB,SACE,sBACEr0B,IAAKyuB,GACLxwC,UAAWD,KAAQkjB,KACnBwyB,YAAa9C,GACb1xC,QAnDsB,WAC9BuuC,GAAQ,GACRC,GAAc,IA6CR,SAKE,cAAC,GAAD,eU1PGhyC,yBCtJO,iBAAO,CAC3BgW,UAAW,CACT1V,MAAO,QAETs4C,eAAgB,CACdx4C,QAAS,OACTwwB,SAAU,SACV9oB,WAAY,SACZjF,OAAQ,UACR,uBAAwB,CACtBpC,OAAQ,GAEV,6BAA8B,CAC5Bga,QAAS,GACTnZ,gBAAiB,0BAGrBoF,QAAS,CACPpG,MAAO,IACPH,SAAU,WACVQ,QAAS,EACTE,aAAc,GACdS,gBAAiB,UACjBf,UAAW,OACXi2B,SAAU,IACV91B,OAAQ,eACRoC,SAAU,IACV,UAAW,CACT,MAAO,CACL1C,QAAS,WAIfy4C,eAAgB,CACd7wC,KAAM,QACNpF,IAAK,MACLzC,SAAU,WACVC,QAAS,OACT+D,WAAY,iBAEd20C,WAAY,CACVj1C,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,GACRN,SAAU,WACVsB,OAAQ,GACRrB,QAAS,SAEXua,QAAS,CACPja,OAAQ,GACRS,MAAO,WAET43C,SAAU,CACRz4C,MAAO,OACPM,OAAQ,oBACRw9B,aAAc,MACdv9B,aAAc,oBACdI,QAAS,OACTR,OAAQ,GACRW,SAAU,GACVT,QAAS,YAEXq4C,iBAAkB,CAChB13C,gBAAiB,QACjBT,aAAc,gBACdD,OAAQ,oBACR09B,UAAW,qBAEb2a,SAAU,CACRziB,SAAU,IACVlW,WAAY,GACZngB,SAAU,WACV,UAAW,CACT,MAAO,CACLC,QAAS,WAIf84C,WAAY,CACVr1C,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,IAEV04C,aAAc,CACZ3iB,SAAU,IACV/1B,OAAQ,IACR6f,WAAY,GACZ1f,OAAQ,oBACRC,aAAc,GACdT,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhF,OAAQ,WAEVu2C,eAAgB,CACdj5C,SAAU,WACVsB,OAAQ,GACRrB,QAAS,OACT+H,WAAY,GACZF,OAAQ,KAEVm9B,UAAW,CACTvhC,WAAY,UACZ1C,MAAO,QACPE,WAAY,IACZV,QAAS,EACTJ,UAAW,SACXsC,OAAQ,UACRnC,OAAQ,OACRG,aAAc,gBACd,UAAW,CACTM,MAAO,UACP0C,WAAY,aDkCH7D,EA1IK,SAAA2E,GAAU,IAAD,EACnBrC,EAAmDqC,EAAnDrC,QAASoE,EAA0C/B,EAA1C+B,QAAS+iC,EAAiC9kC,EAAjC8kC,cAAe1P,EAAkBp1B,EAAlBo1B,SAAUxC,EAAQ5yB,EAAR4yB,IAO7C8hB,EAAmB,SAAChiC,EAAOpZ,GAC/B,IAAM0nB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IAC7Cif,EAAWC,MAAMvO,GAASpZ,EAC1BwrC,EAAc9jB,IAuChB,OACE,sBAAKpjB,UAAWD,EAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,EAAQs2C,eAAxB,UACE,sBAAKr2C,UAAWD,EAAQoE,QAAxB,UACGqzB,KAAY,OAACrzB,QAAD,IAACA,OAAD,EAACA,EAAS4yC,cACrB,mBAAG/2C,UAAWD,EAAQu2C,eAAtB,SACE,cAAC,KAAD,CAAYt2C,UAAWD,EAAQw2C,WAAY,aAAW,SAASt1C,QAASu2B,EAAxE,SACE,cAAC,GAAD,CAAWz5B,MAAM,OAAOG,OAAO,OAAOU,MAAM,iBAK1C,OAAPuF,QAAO,IAAPA,OAAA,EAAAA,EAAS4yC,cACR,cAAC,KAAD,CACE33C,GAAG,uBACHyC,MAAM,6DACNm1C,UAAU,eACVh3C,UAAWD,EAAQqY,QAJrB,SAKE,cAAC,KAAD,CAAS7L,MAAO,CAAEwR,WAAY,QAIjCxgB,GACC,uBACE7B,MAAOyI,EAAQ9E,KACfE,YAAY,cACZS,UAAWD,EAAQy2C,SACnB/2C,SAAU,SAAA6J,GAAK,OA3EF,SAAA5N,GACvB,IAAM0nB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IAC7Cif,EAAW/jB,KAAO3D,EAClBwrC,EAAc9jB,GAwEe6zB,CAAiB3tC,EAAM9G,OAAO9G,UAIrD,cAAC,GAAD,CACEs5B,IAAKA,EACLnW,aAAc1a,EAAQkf,MAAM,GAC5B5jB,SAAU,SAAA/D,GAAK,OAAIo7C,EAAiB,EAAGp7C,MAGzC,sBAAKsE,UAAWD,EAAQ02C,iBAAxB,iBACGtyC,QADH,IACGA,GADH,UACGA,EAASwf,eADZ,aACG,EAAkB9N,KAAI,SAACquB,EAAKpvB,GAAN,OACrB,cAAC,GAAD,CACEovB,IAAKA,EAELY,KAAgB,IAAVhwB,EACNkgB,IAAKA,EACLoP,SAAU,SAAAF,GAAG,OAhFT,SAACA,EAAKgT,GACtB,IAAM9zB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IAC7Cif,EAAWO,QAAQuzB,GAAYhT,EAC/BgD,EAAc9jB,GA6Ee+zB,CAAUjT,EAAKpvB,IAChC0iB,SAAU,kBA3EH,SAAA0f,GACnB,IAAM9zB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IAC7Cif,EAAWO,QAAQgT,OAAOugB,EAAU,GACpChQ,EAAc9jB,GAwEcg0B,CAAatiC,KAJxBA,OAOY,MAAnB3Q,EAAQwf,SAAmBxf,EAAQwf,QAAQ1hB,OAAS,IACpD,qBAAKjC,UAAWD,EAAQ8iC,UAAW5hC,QAzE1B,WACnB,IAAMmiB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IACnB,MAAtBif,EAAWO,UAAiBP,EAAWO,QAAU,IAErDP,EAAWO,QAAQ1d,KAAK,CACtB9J,KAAM,WACN0F,MAAO,GACP0hB,QAAS,KAEX2jB,EAAc9jB,IAgEJ,8BAOLjf,EAAQkf,MACNxV,QAAO,SAAC6L,EAAM5E,GAAP,OAA2B,IAAVA,KACxBe,KAAI,SAAC6D,EAAM5E,GAAP,OACH,sBAAK9U,UAAWD,EAAQ22C,SAAxB,UACE,mBAAG12C,UAAWD,EAAQ82C,eAAgB51C,QAAS,kBAxElC,SAAA6T,GACvB,IAAMsO,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IAC7Cif,EAAWC,MAAMsT,OAAO7hB,EAAO,GAC/BoyB,EAAc9jB,GAqEiDi0B,CAAiBviC,EAAQ,IAA9E,SACE,cAAC,KAAD,CAAY9U,UAAWD,EAAQ42C,WAAY,aAAW,SAAtD,SACE,cAAC,GAAD,CAAW54C,MAAM,OAAOG,OAAO,OAAOU,MAAM,gBAGhD,cAAC,GAAD,CACEigB,aAAc1a,EAAQkf,MAAMvO,EAAQ,GACpCrV,SAAU,SAAA/D,GAAK,OAAIo7C,EAAiBhiC,EAAQ,EAAGpZ,IAC/Cs5B,IAAKA,MAT8BlgB,MAa3C,qBAAK9U,UAAWD,EAAQ62C,aAAc31C,QA9EpB,WACtB,IAAMmiB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU3C,IAC7Cif,EAAWC,MAAMpd,KAAK,IACtBihC,EAAc9jB,IA2EV,SACE,cAAC,GAAD,CAAUrlB,MAAM,OAAOG,OAAO,OAAOU,MAAM,cAG/C,cAAC,GAAD,CAAqBuF,QAASA,EAAS+iC,cAAeA,EAAelS,IAAKA,U,UEzF1EsiB,G,kDACJ,WAAYl1C,GAAQ,IAAD,8BACjB,cAAMA,IAEDU,MAAQ,CACXojC,MAAM,GAER,EAAKqR,WAAa,EAAKA,WAAWC,KAAhB,iBAND,E,8CASnB,SAAWC,GACT,IAAMC,EAAO/7C,KACPg8C,EAAO,IAAIC,SACjBD,EAAKhxC,OAAO,OAAQ8wC,EAAM,IAC1Bv0C,MAAM/F,EAAW,SAAU,CACzBiG,YAAa,cACbD,OAAQ,OACRQ,QAAS,CAAEk0C,cAAe,UAAYt7C,OAAY,iBAClDqK,KAAM+wC,IAELn0C,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAC,GACJi0C,EAAKt1C,MAAM3C,SAASgE,EAASwL,QAE9B7K,OAAM,SAASrB,GACdiJ,GAAW,2B,oBAIjB,WACE,IAAQjM,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,qBACEC,UACE8B,EAAcnG,KAAKyG,MAAM1G,OACrBqE,EAAQ0T,UACR1T,EAAQ+3C,eAJhB,SAME,eAAC,KAAD,CACEC,OAAQp8C,KAAK47C,WACbhrC,MAAO,CACLxO,MAAQ+D,EAAcnG,KAAKyG,MAAM1G,OAAmB,MAAV,QAC1CwC,OAAS4D,EAAcnG,KAAKyG,MAAM1G,OAAmB,GAAV,QAC3CyC,OAAQ,SACRE,OAASyD,EAAcnG,KAAKyG,MAAM1G,OAE9B,IADA,oBAEJ4C,aAAc,OACdT,QAAS,OACTyH,eAAgB,SAChBhF,OAAQ,WAZZ,UAcE,qBACE6E,IAAKxJ,KAAKyG,MAAM1G,MAChB0J,IAAI,OACJpF,UAAWD,EAAQi4C,MACnBzrC,MACE5Q,KAAKyG,MAAM1G,QAAUC,KAAKmH,MAAMojC,KAAO,GAAK,CAAEroC,QAAS,UAG1DiE,EAAcnG,KAAKyG,MAAM1G,QACxB,sBAAKsE,UAAWD,EAAQgJ,QAASwD,MAAO,GAAxC,UACE,cAAC,GAAD,CACEA,MAAO,CAAE1G,aAAc,GACvB3H,OAAO,OACPH,MAAM,SAGR,mBACEwO,MAAO,CACL1N,SAAU,GACVb,UAAW,SACXY,MAAO,UACP2B,SAAU,IACVpC,OAAQ,GANZ,SAQGxC,KAAKyG,MAAMP,oB,GA5EDiD,IAAMC,WAsFlBtH,yBAvHA,SAAAC,GAAK,MAAK,CACvBs6C,MAAO,CACLj6C,MAAO,OACPG,OAAQ,OACRqC,SAAU,OACVC,UAAW,OACXrC,OAAQ,QAEV4K,QAAS,CACPlL,QAAS,OACT0H,WAAY,SACZzH,cAAe,SACf0C,UAAW,IAEbiT,UAAW,CACTnS,WAAY,UACZjD,OAAQ,qBACRG,UAAW,aACXF,aAAc,GACdH,OAAQ,SACRJ,MAAO,MACPwC,SAAU,IACV1C,QAAS,OACTyH,eAAgB,SAChBlH,QAAS,eAEX05C,eAAgB,CACd15C,QAAS,cACTP,QAAS,OACTyH,eAAgB,aA0Fc,CAAEnG,WAAW,GAAhC1B,CAAwC65C,ICvI1CW,GAAe,SAACC,EAAQC,EAAOC,GAC1C,IAAIx8C,EAAUs8C,EAAO5F,UAAU8F,GAAY,GAAGzvC,OAAOwvC,GACrD,OAAOv8C,GAAW,EAAIA,GAAWw8C,GAAY,GAAKx8C,GCwiBrC6B,yBC1iBO,iBAAO,CAC3BgW,UAAW,CACT5V,QAAS,OACT8D,UAAW,gBACX,2BAA4B,OAC5B5D,MAAO,OACPH,SAAU,WACV,gBAAiB,CACfy6C,WAAY,YAGhBC,SAAU,CACR16C,SAAU,WACV8H,OAAQ,EACRrH,OAAQ,oBACRU,gBAAiB,OACjBsvB,SAAU,OACVkqB,cAAe,OACf32C,WAAY,eACZ7D,MAAO,OACPsD,WAAY,OACZxC,SAAU,OACVP,aAAc,GACdJ,OAAQ,IACR,uBAAwB,CACtBH,MAAO,EACPuD,WAAY,gBAGhBk3C,WAAY,CACVp6C,QAAS,GACTiD,WAAY,OACZy4B,WAAY,WACZ2e,SAAU,aACVpqB,SAAU,SACV,SAAU,CACRxwB,QAAS,WAGb66C,gBAAiB,CACft6C,QAAS,GACTiD,WAAY,OACZo3C,SAAU,aACVlS,OAAQ,OACRzM,WAAY,SACZrO,UAAW,SACX7F,UAAW,SACX,SAAU,CACR/nB,QAAS,UAEX,uBAAwB,CACtBE,MAAO,EACPuD,WAAY,gBAGhBq3C,SAAU,CACR96C,QAAS,QACTD,SAAU,WACV8H,OAAQ,EACRvH,OAAQ,EACRE,OAAQ,oBACRO,MAAO,cACPG,gBAAiB,cACjBsvB,SAAU,OACVkY,OAAQ,OACR3kC,WAAY,eACZlD,QAAS,OACTN,QAAS,sBACTiD,WAAY,OACZu3C,WAAY,UACZr6C,WAAY,qBACZk6C,SAAU,aACVv6C,OAAQ,KAEVD,MAAO,CACLJ,QAAS,QACTD,SAAU,WACV8H,OAAQ,EACRvH,OAAQ,EACRE,OAAQ,oBACRO,MAAO,cACPG,gBAAiB,cACjBsvB,SAAU,OACVkY,OAAQ,OACR3kC,WAAY,eACZlD,QAAS,OACTN,QAAS,GACTiD,WAAY,OACZu3C,WAAY,UACZr6C,WAAY,qBACZk6C,SAAU,aACV3e,WAAY,SACZrO,UAAW,SACX7F,UAAW,SACX,6BAA8B,CAC5BtkB,WAAY,gBAGhB2hB,KAAM,CACJllB,MAAO,GACPG,OAAQ,GACRI,aAAc,EACdS,gBAAiB,wBACjBlB,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhF,OAAQ,UACR5B,QAAS,QAEX03C,UAAW,CACTx4C,SAAU,WACVy6C,WAAY,SACZ3yC,OAAQ,EACRF,OAAQ,EACRtG,MAAO,EACPrB,QAAS,OACT0pB,IAAK,UDsbM9pB,CAAmB4X,aAPV,SAAAvS,GAAK,YAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBoU,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,GAC9BmP,UAAWzL,EAAMyL,UACjBsyB,kBAAmB/9B,EAAM+9B,qBAGOxrB,EApgBV,SAAAjT,GAAU,IAAD,IAE7BrC,EAgBEqC,EAhBFrC,QACAi1B,EAeE5yB,EAfF4yB,IACAt5B,EAcE0G,EAdF1G,MACA6D,EAaE6C,EAbF7C,YACAE,EAYE2C,EAZF3C,SACAo5C,EAWEz2C,EAXFy2C,oBACAr0B,EAUEpiB,EAVFoiB,WACAoU,EASEx2B,EATFw2B,YACAkgB,EAQE12C,EARF02C,YACAC,EAOE32C,EAPF22C,WACAC,EAME52C,EANF42C,YACA30C,EAKEjC,EALFiC,OACAi9B,EAIEl/B,EAJFk/B,SACAhiC,EAGE8C,EAHF9C,SACAiP,EAEEnM,EAFFmM,UACAsyB,EACEz+B,EADFy+B,kBAGF,EAAwBlgC,oBAAS,GAAjC,mBAAOulC,EAAP,KAAasJ,EAAb,KACA,EAAoC7uC,oBAAS,GAA7C,mBAAOqnC,EAAP,KAAmByH,EAAnB,KACA,EAAwC9uC,mBAAS,MAAjD,mBAAOke,EAAP,KAAqBo6B,EAArB,KACA,EAAsCt4C,mBAASo/B,IAA/C,mBAAOjF,EAAP,KAAoBoB,EAApB,KACA,EAAgDv7B,mBAAS,GAAzD,mBAAO4mC,EAAP,KAA0BwI,EAA1B,KACA,EAA0CpvC,mBAAS,GAAnD,mBAAOkxC,EAAP,KAAsBqH,EAAtB,KACA,EAA8Bv4C,oBAAS,GAAvC,mBAAOqtB,EAAP,KAAgBiT,EAAhB,KACA,EAA8BtgC,oBAAS,GAAvC,mBAAOw4C,EAAP,KAAgBC,GAAhB,KACA,GAA4Dz4C,oBAAS,GAArE,qBAAO2vC,GAAP,MAA+BC,GAA/B,MAEM8I,GAAWza,GAAYsH,GACvBzE,GAAe7C,GAAY0C,GAE3BgX,GAAWh3B,iBAAO,MAClBk3B,GAAal3B,iBAAO,MACpBq3B,GAAWr3B,iBAAO,MAClBkvB,GAAgBlvB,iBAAO,MACvBmvB,GAAgBnvB,iBAAO,MAEvBogB,GAAmB,OAAGnzB,QAAH,IAAGA,GAAH,UAAGA,EAAWozB,wBAAd,aAAG,EAA6BC,YACnDC,GAAmB,OAAGtzB,QAAH,IAAGA,GAAH,UAAGA,EAAWuzB,gCAAd,aAAG,EAAqCC,OAC3DC,GAAiB,OAAGnB,QAAH,IAAGA,OAAH,EAAGA,EAAmBoB,UAE7C1gB,qBAAU,WACR,IAAM4a,EAAiB3X,EACpB3W,QAAO,YAAe,IAAZ1R,EAAW,EAAXA,KACT,OACGA,IAAS6iC,KAAa0C,IACtBvlC,IAAS8iC,KAAa4C,IACtB1lC,IAAS+iC,KAAW8C,MAGxBnsB,KAAI,YAAe,IAAZxW,EAAW,EAAXA,KACN,MAAM,KAAN,OAAYA,EAAZ,SAGJkxC,GAA0BpU,KACzB,CAAC3X,IAGJjD,qBAAU,WACJ+f,GAAYG,IAAgBH,IAAaG,IAC3CR,GAAW,KAEZ,CAACK,IAEJ/f,qBAAU,YACR,OAAIi3B,SAAJ,IAAIA,QAAJ,EAAIA,GAAYh3B,WACdg3B,GAAWh3B,QAAQmqB,UAAY2N,GAAgBX,GAASn3B,QAAQ9lB,UAEjE,CAACA,EAAO8oB,IAEXjD,qBAAU,WAAO,IAAD,KACd,OAAIu3B,QAAJ,IAAIA,GAAJ,UAAIA,EAAat3B,eAAjB,iBAAI,EAAsBjV,aAA1B,aAAI,EAA6BqZ,aAAWkzB,EAAYt3B,QAAQjV,MAAMqZ,UAAYsgB,EAAO,SAAW,UAChGmT,IAAYnT,IAASmT,KACvBV,GAASn3B,QAAQ6Y,QACbwX,GAAe0H,GAAqB1H,IAG1C3V,EAAe6D,IACfgQ,EAAmB,KAClB,CAAC7J,IAEJ,IA4CMsT,GAAe,SAAAz3C,GACnB,IAAM8vC,EAAgB8G,GAASn3B,QAAQi4B,eACjCC,EAAgB,OAAG33C,QAAH,IAAGA,OAAH,EAAGA,EAAMgH,QAAQ42B,GAAiBI,IAClD4Z,EAAaD,EAAiB99C,QAAQwkC,IACtCwZ,EAAY73C,EAAKuwC,UAAU,EAAGT,GAC9BgI,EAA6BD,EAChC7wC,QAAQ42B,GAAiBI,IACzBuS,UAAU,EAAGT,GAAe5vC,OACzB63C,EAAiBJ,EAAiBpH,UACtCqH,EACA9H,GAAiB+H,EAAU33C,OAAS43C,IAGlCC,EAAe5rC,SAASkyB,MAAuB0Z,EAAe5rC,SAAS+xB,KACzE/D,EAAe4d,EAAe/wC,QAAQq3B,GAAmBL,MA2FvDxH,GAAY,SAAAjvB,IATE,SAAAA,GAClB,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAC7Bgc,EAAWzwC,EAAM9G,OAAO9G,OAAS4N,EAAM9G,OAAO9G,MAAMi9C,GAASn3B,QAAQi4B,eAAiB,GAEvFzR,GAAc+R,IAAa/Z,I/CzQX,K+CyQ2BvkC,GAC9C6N,EAAMpI,iBAKR2xC,CAAYvpC,GAxFU,SAAAA,G/CtLI,M+CuLdA,EAAMw0B,SAAWx0B,EAAMy0B,YAGjCz0B,EAAMpI,iBAEFglC,GACF+M,G/C7LsB,K+CgR1B+G,CAAgB1wC,GA9EI,SAAAA,IACRA,EAAMw0B,SAAWx0B,EAAMy0B,YAEvBlB,KACVvzB,EAAMpI,iBAEFglC,GACF+M,GAA0BpW,KAyE9Bod,CAAc3wC,GArEI,SAAAA,GAGlB,G/C5MqB,M+C0MTA,EAAMw0B,SAAWx0B,EAAMy0B,YAETmI,GAAQ6S,GAAa,CAAC,IAAD,IAC7CzvC,EAAMpI,iBACN,IAAM0yC,GAA6B,OAAbnD,SAAa,IAAbA,IAAA,UAAAA,GAAejvB,eAAf,mBAAwBkc,WAAW6J,UAAnC,eAAuD/D,YAAa1I,EACtF8Y,GACF7L,GAAS6L,IAgEbb,CAAYzpC,GA3DU,SAAAA,GACtB,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAC7Bgc,EAAWzwC,EAAM9G,OAAO9G,OAAS4N,EAAM9G,OAAO9G,MAAMi9C,GAASn3B,QAAQi4B,eAAiB,GAM5F,G/C/N0B,K+C2NtBh+C,GAA0ByqC,GAC5B58B,EAAMpI,iB/C5NkB,K+C+NtBzF,GAA0Bs+C,IAAa9Z,GAAe,CACxD32B,EAAMpI,iBAEN,IAAMg5C,EAAuB5wC,EAAM9G,OAAO9G,MACvC42C,UAAU,EAAGqG,GAASn3B,QAAQi4B,gBAC9BU,YAAY/Z,IAEfmZ,GAAqBW,IA8CvBE,CAAgB9wC,GA1CO,SAAAA,GACvB,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAC7Bsc,EAAW/wC,EAAM9G,OAAO9G,OAAS4N,EAAM9G,OAAO9G,MAAMi9C,GAASn3B,QAAQi4B,eAAiB,GAM5F,G/CjP2B,K+C6OvBh+C,GAA2ByqC,GAC7B58B,EAAMpI,iB/C9OmB,K+CiPvBzF,GAA2B4+C,IAAara,GAAc,CACxD12B,EAAMpI,iBAEN,IAAMo5C,EAAchxC,EAAM9G,OAAO9G,MAAM42C,UAAU,EAAGqG,GAASn3B,QAAQi4B,gBAE/DS,EACJ5wC,EAAM9G,OAAO9G,MACV42C,UAAUqG,GAASn3B,QAAQi4B,eAAgBnwC,EAAM9G,OAAO9G,MAAMuG,QAC9DrG,QAAQukC,IACXma,EAAYr4C,OACZ,EAEFs3C,GAAqBW,IAwBvBK,CAAiBjxC,GAEjB2vC,EAAgB3vC,EAAM9G,OAAO9G,QAGzBu3C,GAA4B,SAAA/lB,GAAc,IAAD,EACzCgmB,EACExV,EAAU,OAAG+S,SAAH,IAAGA,IAAH,UAAGA,GAAejvB,eAAlB,aAAG,EAAwBkc,WACrCyV,EAAgBjmB,IAAc2P,IAAgB,EAAI,EAClDuW,GAA6B,OAAV1V,QAAU,IAAVA,OAAA,EAAAA,EAAYz7B,QAAS,EAUM,QAAhDy7B,EANFwV,EADExV,EAAW6J,EAAoB4L,GACR5L,EAAoB4L,EAEpBjmB,IAAc2P,GAAeuW,EAAmB,GAIpCC,WACrCH,EACEA,EAAyBC,EAAgB,EAAIC,EAAmBF,EAAyBC,GAGnEzV,EAAWwV,GAEnBM,eAAe,CAC/BC,SAAU,OACVC,MAAO,SACPC,OAAQ,WAEV5D,EAAmBmD,IAyBfnL,GAAW,SAAAnO,GACf,IAAMh8B,EAAW+6C,GAASn3B,QAAQi4B,eAC5Ba,EAAc5+C,EAAMme,MAAM,EAAGjc,GAC7B48C,EAAmBF,EAAYH,YAAY/Z,IAC3ClmB,EAAQ8tB,EAAasS,EAAcA,EAAYzgC,MAAM,EAAG2gC,GACxDrgC,EAAMze,EAAMme,MAAMjc,GAClBmE,EAAI,UAAMmY,EAAN,aAAgB0f,EAAhB,aAAkCzf,GACtC03B,EAAgBj0C,IAAyB,OAAbg8B,QAAa,IAAbA,OAAA,EAAAA,EAAe33B,QAAS64B,EAAY74B,SAAW+lC,EAAa,EAAI,GAElGkR,EAAiBrH,GAEjBxoC,GAAatH,GACbytC,GAAQ,IAGJiL,GAAuB,SAAApgB,GAC3BmV,GAAQ,GACRC,EAAcpV,IAGV6H,GAAwB,SAAAtI,GAC5B8B,GAAgB9C,EAAa,CAAEv5B,KAAMu6B,IAAiBp2B,MAAK,kBAAMgsC,GAAQ,OAYrEkL,GAA4B,SAAApuC,GAChC,IAAMkiC,GAAqB,OAAPliC,QAAO,IAAPA,OAAA,EAAAA,EAASjM,MAAT,OAAeiM,QAAf,IAAeA,OAAf,EAAeA,EAASpO,QACtCuwC,GAAuB,OAAPniC,QAAO,IAAPA,OAAA,EAAAA,EAAS7G,OAAT,OAAgB6G,QAAhB,IAAgBA,OAAhB,EAAgBA,EAASvO,OACzC2wC,EAAsBF,EAAc/6B,GAAUvV,OAASxB,OAAOkhC,YAC9D+Q,EAAqBF,EAAgBh7B,GAAU1V,MAAQrB,OAAOkyC,WAMpE,MAAO,CAAEvuC,IAJGmuC,GAAeE,GAAuBj7B,GAAUvV,QAAU,KAIxDuH,KAFDgpC,IAAkBE,GAAsBl7B,GAAU1V,OAAS,OAYpEo3C,GAAsB,SAAAwF,GAC1B,OAAKA,EAAIhG,SAASxU,IAGXwa,EAFEA,EAAI5xC,QAAJ,YAAiB+xB,GAAeiF,KAKrCwZ,GAAuB,SAAA1H,GAC3B8G,GAASn3B,QAAQi4B,eAAiB5H,EAClC8G,GAASn3B,QAAQo5B,aAAe/I,GAkC5ByH,GAAkB,SAAAv3C,GAAS,IAAD,EAC9B,cAAOA,QAAP,IAAOA,GAAP,UAAOA,EAAMgH,QAAQ,OAAQ,eAA7B,aAAO,EAA+BA,QAAQ62B,GAAkCib,KAG5EA,GAAqB,SAAA/vC,GAAU,IAAD,EAC5BgwC,EAAS,OAAGhwC,QAAH,IAAGA,GAAH,UAAGA,EAAO/B,QAAQ,MAAO,WAAzB,aAAG,EAA2BA,QAAQ,MAAO,IACtDyxB,EAAgB,OAAGhW,QAAH,IAAGA,OAAH,EAAGA,EAAYxW,MAAK,SAAAqX,GAAS,OAAIA,EAAUhmB,OAASy7C,KACpEC,EAAiB,sBAAkB5b,GAAiB,OACxD3E,QADwD,IACxDA,OADwD,EACxDA,EAAkBr+B,MADG,sDAGjB6+C,EAAc,sBAAkB7b,GAAiB,OAAC3E,QAAD,IAACA,OAAD,EAACA,EAAkBr+B,MAAtD,oBACd8+C,EAAkB,sBAAkB9b,GAAiB,OACzD3E,QADyD,IACzDA,OADyD,EACzDA,EAAkBr+B,MADI,sDAIxB,OAAO2O,EAAM7I,OAAS,EAAf,uBAEW84C,EAFX,mCAEuDC,EAFvD,aAE0EF,EAF1E,+BAE0GG,EAF1G,+BAGMnwC,EAHN,YAWHzB,GAAe,SAAA3N,GACnB,IAAIw/C,EAAYx/C,EAChB40C,GAAuBt6B,SAAQ,SAAAk+B,GAC7B,IAAMiH,EAAQz/C,EAAMoP,MAAMopC,IAAQx4C,EAAMoP,MAAMopC,GAAK,GAInD,OAHIiH,GACFnvC,GAAW,gEAELkvC,EAAYA,EAAUnyC,QAAQoyC,EAAO,OAG/Cla,GAAW,GACXxhC,EAASy7C,IAQX,OACE,sBAAKl7C,UAAWD,EAAQ0T,UAAWlH,MAAO,CAAErO,QAAc,OAANmG,QAAM,IAANA,OAAA,EAAAA,EAAQnG,SAAU,QAASE,QAAS,GAAxF,UACE,qBACE4B,UAAWD,EAAQu4C,SACnB/rC,MAAK,aACHjO,aAAcu6C,GAAuB,MACrCjzB,UAAWmzB,GAAc,UACtB10C,GAEL0d,IAAKu2B,GAPP,SAQE,qBACEt4C,UAAW+4C,EAAah5C,EAAQ24C,gBAAkB34C,EAAQy4C,WAC1Dz2B,IAAKy2B,GACLrjB,IAAKH,GAAO,MACZzoB,MAAO,CACLvO,UAAWg3B,GAAO,QAClBsQ,YAAatQ,GAAO,qBAI1B,0BACEh1B,UAAW+4C,EAAah5C,EAAQ9B,MAAQ8B,EAAQ44C,SAChDxjB,IAAKH,GAAO,MACZzoB,MAAK,aACHjO,aAAcu6C,GAAuB,MACrCvT,YAAatQ,GAAO,gBACpB32B,OAAQiB,GAAY0uB,IAAYtyB,IAAUy9C,IAAYjT,GAAQ,iBAC3D7hC,GAEL3I,MAAOA,EACP6D,YAAaA,EACbE,SAAU,SAAAS,GAAC,OAAImJ,GAAanJ,EAAEsC,OAAO9G,QACrC0/C,SArYe,SAAA9xC,GACnBgvC,GAAS92B,QAAQ65B,UAAY/xC,EAAM9G,OAAO64C,UAC1C/C,GAAS92B,QAAQ85B,WAAahyC,EAAM9G,OAAO84C,WAC3C9C,GAAWh3B,QAAQ85B,WAAahyC,EAAM9G,OAAO84C,WAC7C9C,GAAWh3B,QAAQ65B,UAAY/xC,EAAM9G,OAAO64C,WAkYxC1F,QA/Xc,SAAArsC,GAClB,IAAMvH,EAAOuH,EAAM9G,OAAO9G,MACpB+9C,EAAiBd,GAASn3B,QAAQi4B,eAClCmB,EAAejC,GAASn3B,QAAQo5B,aAgBtC,GAdApC,GAAWh3B,QAAQmqB,UAAY2N,GAAgBv3C,GAG3CA,EAAK03C,EAAiB,KAAOzZ,IAAgBj+B,EAAK03C,EAAiB,KAAOzZ,IAC5Eya,IAAqB,GAInB14C,EAAK03C,EAAiB,KAAOzZ,IAAgBj+B,EAAK03C,EAAiB,KAAOzZ,KAC5EkZ,EAAiB0B,GACjBpL,GAAQ,IAKRztC,EAAK64C,EAAe,KAAO3a,IAC3Bl+B,EAAK64C,EAAe,KAAO3a,IAC3Bl+B,EAAK64C,EAAe,KAAO3a,GAC3B,CACA,IAAMsb,EAAYx5C,EAAKuwC,UAAUvwC,EAAKo4C,YAAY/Z,IAAqB,EAAGwa,EAAe,GACnFY,GAAkBh3B,EAAWuD,MAAK,SAAA1C,GAAS,OAAIA,EAAUhmB,OAASk8C,KACxErC,EAAiB0B,IACZW,EAAUrtC,SAASiyB,KAAuBqb,EAC7CtZ,GAAsBqZ,GAEtB/L,GAAQ,GAIZgK,GAAaz3C,IA8VTy8B,QApMU,SAAAl1B,GACd,IAAM7N,EAAM6N,EAAMw0B,SAAWx0B,EAAMy0B,SAC7BngC,EAAW+6C,GAASn3B,QAAQi4B,eAC5Bl6C,EAAcogC,GAEpB,GAAIlkC,IAAQqhC,IAAcrhC,IAAQshC,GAChC,IAAK,IAAIjyB,EAAoD,QAA5CA,EAAQvL,EAAYk8C,KAAK58B,KACpC/T,EAAMgK,MAAQlX,EAAW,GAAK2B,EAAYm8C,UAAY99C,GAAW,WACnEyL,GACEwV,EAAarF,OAAO,EAAG1O,EAAMgK,OAAS+J,EAAayzB,UAAU/yC,EAAYm8C,UAAW78B,EAAa5c,SAGnG,IAAM4vC,EAAgBhzB,EAAarF,OAAO,EAAG1O,EAAMgK,OAAO7S,OAG1D05C,YAAW,kBAAMpC,GAAqB1H,KAAgB,GARa,IA8LrEtZ,UAAWA,GACXt3B,QAhHsB,WAC1B,IAAM26C,EAAY,OAAGlgD,QAAH,IAAGA,OAAH,EAAGA,EAAOmgD,WAAWhc,IAAyB,SAAA/0B,GAC9D,OAAOA,EAAM/B,QAAQ,SAAUm3B,OAG3B6Z,EAAW6B,EAAajD,GAASn3B,QAAQi4B,eAAiB,GAC1DY,EAAWuB,EAAajD,GAASn3B,QAAQi4B,gBAE/C,GACE,CAACvZ,GAAUD,GAAeD,IAAc9xB,SAAS6rC,IACjD,CAAC7Z,GAAUD,GAAeD,IAAc9xB,SAASmsC,GACjD,CACA,IAAMyB,EAAUF,EAAatJ,UAAUqG,GAASn3B,QAAQi4B,eAAgBmC,EAAa35C,QACjF4vC,EAAgB+J,EAAatJ,UAAU,EAAGqG,GAASn3B,QAAQi4B,gBAAgBx3C,OAE3Eg2C,GAAa6D,EAAShc,GAAoB,GAAK,GAAMia,IAAa7Z,IAAYma,IAAapa,GAC7F4R,GAAiBoG,GAAa6D,EAAShc,GAAoB,GAAK,EACvDia,IAAa/Z,IAAgBqa,IAAara,GACnD6R,GAAiBoG,GAAa6D,EAAShc,GAAoB,GAAK,EACvDia,IAAa9Z,IAAiBoa,IAAapa,GACpD4R,GAAiBoG,GAAa6D,EAAShc,GAAoB,GAAK,EAEhE+R,EADSkI,IAAa9Z,IAAiBoa,IAAara,GACpC2Y,GAASn3B,QAAQi4B,eAEjBmC,EAAa35C,OAG/Bs3C,GAAqB1H,KAsFnBnyC,OA7Da,WACjBw5C,EAAiBP,GAASn3B,QAAQi4B,gBAClCL,IAAW,IA4DPr3B,IAAK42B,GACL5mB,QA5Cc,WAClBqnB,IAAW,GACXnY,GAAW,MA4CT,cAAC,GAAD,CACE8G,SAAUA,GACV7B,KAAMA,EACNlgB,QA3I2B,WAC/B,IAAMjkB,EAAOrG,EAAM0Z,MAAMyqB,IAAyBhqB,IAAIs/B,IAAqB70B,KAAKyf,IAEhF12B,GAAatH,GACbytC,GAAQ,IAwIJ5xC,SAlKmB,WAAO,IAAD,QACvBm+C,EAAS,OAAGvL,SAAH,IAAGA,IAAH,UAAGA,GAAehvB,eAAlB,aAAG,EAAwBmc,wBACpCqe,EAAa,UAAGtnC,OAAOhC,QAAiB,OAAV8lC,SAAU,IAAVA,IAAA,UAAAA,GAAYh3B,eAAZ,eAAqBrD,WAAY,WAAlD,iBAAG,EAClBnQ,MAAK,kBAA+B,SAA/B,EAAGqlC,mBADO,aAAG,EAElB1V,wBAEJ,OAAO+c,GAA0B1S,EAAa+T,EAAYC,GA4J5CzN,GACVvG,WAAYA,EACZlN,YAAaA,EACbmN,QAASwI,GACTlJ,kBAAmBA,EACnBhP,UAAW,SAAAjvB,GAAK,OAAIivB,GAAUjvB,IAC9B4+B,wBAAyB6H,IAE3B,sBAAK/vC,UAAWD,EAAQq2C,UAAxB,UACG4C,EACD,sBACEh5C,UAAWD,EAAQkjB,KACnB1W,MAAO,CAAE8rC,WAAYnS,GAAQ8B,GAAc,WAC3C/mC,QAAS,kBAAMw5C,IAAqB,IACpCliB,UAAW,SAAAjvB,GAAK,OAAIivB,GAAUjvB,IAC9BnI,SAAU,IACV4gB,IAAKyuB,GANP,SAOE,cAAC,GAAD,gBEnhBJnsC,GAAS,CACboP,UAAW,CACT7V,SAAU,WACVywB,SAAU,SACVtwB,MAAO,OACPG,OAAQ,QAEVwoC,KAAM,CACJrY,SAAU,SACV3V,YAAa,QACb7S,aAAc,QACdo2C,cAAe,GACfp+C,QAAS,QAEXsG,QAAS,CACPjG,OAAQ,cACR+1B,SAAU,QACV91B,OAAQ,MACRuD,UACE,iHACFpD,aAAc,GACdoa,YAAa,GACb9a,SAAU,YAEZs+C,WAAY,CACVjoB,SAAU,QACV91B,OAAQ,MACRuD,UACE,iHACFpD,aAAc,GACdoa,YAAa,GACb9a,SAAU,WACVM,OAAQ,UAINi+C,G,kDACJ,WAAY/5C,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,GAFI,E,8CAKnB,WACE,IAAMsgB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQE,SAASxd,KAAK,CAC1CpE,MAAO,GACP8D,SAAU,GACV+d,UAAW,GACXC,QAAS,KAEXhoB,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAag5B,EAAW1gD,EAAO2D,GAC7B,IAAM+jB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQE,SAAS24B,GAAW/8C,GAAQ3D,EAC1DC,KAAKyG,MAAM8kC,cAAc9jB,K,gCAG3B,SAAmBg5B,GACjB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACS,MAA7Dif,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,UACpDP,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAU,IAE9DP,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAQ1d,KAAK,CAC7D9J,KAAM,WACN0F,MAAO,GACP0hB,QAAS,KAEX5nB,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,WACE,IAAMA,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACX,MAAzCif,EAAWE,WAAWC,QAAQI,UAChCP,EAAWE,WAAWC,QAAQI,QAAU,IAE1CP,EAAWE,WAAWC,QAAQI,QAAQ1d,KAAK,CACzC9J,KAAM,WACN0F,MAAO,GACP0hB,QAAS,KAEX5nB,KAAKyG,MAAM8kC,cAAc9jB,K,uBAG3B,SAAU8gB,EAAKgT,EAAUkF,GACvB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACtC,OAAdi4C,EACFh5B,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAQuzB,GAAYhT,EACnE9gB,EAAWE,WAAWC,QAAQI,QAAQuzB,GAAYhT,EACvDvoC,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAa8zB,EAAUkF,GACrB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACtC,OAAdi4C,EACFh5B,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAQgT,OACxDugB,EACA,GAEC9zB,EAAWE,WAAWC,QAAQI,QAAQgT,OAAOugB,EAAU,GAC5Dv7C,KAAKyG,MAAM8kC,cAAc9jB,K,8BAG3B,WAEE,OAAOznB,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQE,SAASxhB,OADpC,K,0BAIpB,SAAam6C,GACX,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQE,SAASkT,OAAOylB,EAAW,GACzDzgD,KAAKyG,MAAM8kC,cAAc9jB,K,oBAG3B,WAAU,IAAD,OACDi5B,EAAc1gD,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQE,SAASxhB,OACnE,EAA6BtG,KAAKyG,MAA1B4yB,EAAR,EAAQA,IAAK8jB,EAAb,EAAaA,YAEb,OACE,gCACE,sBACEvsC,MAAO,CACL1O,QAAS,OACTwwB,SAAU,SACVtwB,MAAO,QAJX,UAMGpC,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQE,SAAS5N,KAC9C,SAAC6D,EAAM0iC,GAAP,OACE,sBAAmB7vC,MAAOlI,GAAOF,QAAjC,UACE,cAAC,GAAD,CACEzI,MAAOge,EAAKgK,UACZjkB,SAAU,SAAAikB,GAAS,OACjB,EAAKra,aAAa+yC,EAAW14B,EAAW,cAE1C7hB,MAAM,kBAGR,cAAC,GAAD,CACEpC,SAAU,SAAA/D,GAAK,OACb,EAAK2N,aAAa+yC,EAAW1gD,EAAO,UAEtCA,MAAOge,EAAK7X,MACZtC,YAAY,QACZ8E,OAAQ,CACNnG,OAAQ,IAEV2D,MAAM,QACNmzB,IAAKA,EACL8jB,YAAaA,IAGf,cAAC,GAAD,CACEr5C,SAAU,SAAA/D,GAAK,OACb,EAAK2N,aAAa+yC,EAAW1gD,EAAO,aAEtCA,MAAOge,EAAK/T,SACZpG,YAAY,WACZ8E,OAAQ,CACNnG,OAAQ,IAEV2D,MAAM,WACNmzB,IAAKA,EACL8jB,YAAaA,IAGf,sBAAK94C,UAAU,qBAAf,UACmB,MAAhB0Z,EAAKiK,SACJjK,EAAKiK,QAAQ9N,KAAI,SAACquB,EAAKgT,GAAN,OACf,cAAC,GAAD,CACEhT,IAAKA,EAELlP,IAAKA,EACLoP,SAAU,SAAAF,GAAG,OACX,EAAKiT,UAAUjT,EAAKgT,EAAUkF,IAEhC5kB,SAAU,kBAAM,EAAK4f,aAAaF,EAAUkF,KALvClF,OAQO,MAAhBx9B,EAAKiK,SAAmBjK,EAAKiK,QAAQ1hB,OAAS,IAC9C,qBACEjC,UAAU,aACViB,QAAS,kBAAM,EAAKq7C,mBAAmBF,IAFzC,2BAOHC,EAAc,GACb,cAAC,KAAD,CACE,aAAW,SACX9vC,MAAO,CACL3O,SAAU,WACVsB,MAAO,QACPmB,IAAK,QAEPY,QAAS,kBAAM,EAAKs7C,aAAaH,IAPnC,SAQE,qBAAKj3C,IAAI,8BAA8BC,IAAI,eAnEvCsU,EAAKta,OAyEnB,sBAAKmN,MAAO,CAAE3O,SAAU,YAAxB,UACGjC,KAAK6gD,oBACJ,qBACEv7C,QAAS,kBAAM,EAAKi7C,cACpB3vC,MAAK,2BAAOlI,GAAO63C,YAAd,IAA0Br+C,QAAS,SAF1C,SAGE,qBAAK0O,MAAO,CAAEpO,OAAQ,OAAQS,MAAO,WAArC,SACE,cAAC,GAAD,CAAUb,MAAM,OAAOG,OAAO,OAAOU,MAAM,aAIhDjD,KAAKyG,MAAMo1B,UACV,cAAC,KAAD,CACE,aAAW,SACXjrB,MAAO,CACLjM,OAAQ,UACR1C,SAAU,WACVsB,MAAO,EACPmB,IAAK,GAEPY,QAAS,kBAAM,EAAKmB,MAAMo1B,YAR5B,SASE,qBAAKryB,IAAI,8BAA8BC,IAAI,mBAKnD,cAAC,GAAD,CACEjB,QAASxI,KAAKyG,MAAM+B,QACpB6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,a,GAlMtCW,IAAMC,WA6MdsQ,gBAJS,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAGDnP,CAAyB8mC,IC/OlC93C,GAAS,CACboP,UAAW,CACT1V,MAAO,IACP2D,UACE,iHACFpD,aAAc,GACdV,SAAU,YAEZuG,QAAS,CACPvG,SAAU,YAEZwD,OAAQ,GAGR86C,WAAY,CACVngB,UAAW,+BACXz7B,OAAQ,UACR1B,MAAO,SAILu9C,G,kDACJ,WAAY/5C,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,GAFI,E,8CAKnB,WACE,IAAMsgB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQE,SAASxd,KAAK,CAC1CpE,MAAO,GACP8D,SAAU,GACV+d,UAAW,GACXC,QAAS,KAEXhoB,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAag5B,EAAW1gD,EAAO2D,GAC7B,IAAM+jB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQE,SAAS24B,GAAW/8C,GAAQ3D,EAC1DC,KAAKyG,MAAM8kC,cAAc9jB,K,gCAG3B,SAAmBg5B,GACjB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACS,MAA7Dif,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,UACpDP,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAU,IAE9DP,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAQ1d,KAAK,CAC7D9J,KAAM,WACN0F,MAAO,GACP0hB,QAAS,KAEX5nB,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,WACE,IAAMA,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACX,MAAzCif,EAAWE,WAAWC,QAAQI,UAChCP,EAAWE,WAAWC,QAAQI,QAAU,IAE1CP,EAAWE,WAAWC,QAAQI,QAAQ1d,KAAK,CACzC9J,KAAM,WACN0F,MAAO,GACP0hB,QAAS,KAEX5nB,KAAKyG,MAAM8kC,cAAc9jB,K,uBAG3B,SAAU8gB,EAAKgT,EAAUkF,GACvB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACtC,OAAdi4C,EACFh5B,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAQuzB,GAAYhT,EACnE9gB,EAAWE,WAAWC,QAAQI,QAAQuzB,GAAYhT,EACvDvoC,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAa8zB,EAAUkF,GACrB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACtC,OAAdi4C,EACFh5B,EAAWE,WAAWC,QAAQE,SAAS24B,GAAWz4B,QAAQgT,OACxDugB,EACA,GAEC9zB,EAAWE,WAAWC,QAAQI,QAAQgT,OAAOugB,EAAU,GAC5Dv7C,KAAKyG,MAAM8kC,cAAc9jB,K,8BAG3B,WAEE,OAAOznB,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQE,SAASxhB,OADpC,I,0BAIpB,SAAam6C,GACX,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQE,SAASkT,OAAOylB,EAAW,GACzDzgD,KAAKyG,MAAM8kC,cAAc9jB,K,oBAG3B,WAAU,IAAD,OACCO,EAAYhoB,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAA1CI,QACF04B,EAAc1gD,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQE,SAASxhB,OAC3D62C,EAAgBn9C,KAAKyG,MAArB02C,YAER,OACE,gCACE,sBAAKvsC,MAAOlI,GAAOoP,UAAnB,UACG9X,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQE,SAAS5N,KAC9C,SAAC6D,EAAM0iC,GAAP,OACE,sBAAmB7vC,MAAOlI,GAAOF,QAAjC,UACE,cAAC,GAAD,CACEzI,MAAOge,EAAKgK,UACZjkB,SAAU,SAAAikB,GAAS,OACjB,EAAKra,aAAa+yC,EAAW14B,EAAW,cAE1C7hB,MAAM,8CAGR,cAAC,GAAD,CACEpC,SAAU,SAAA/D,GAAK,OACb,EAAK2N,aAAa+yC,EAAW1gD,EAAO,UAEtCA,MAAOge,EAAK7X,MACZtC,YAAY,QACZ8E,OAAQ,CACNnG,OAAQ,IAEV2D,MAAM,QACNi3C,YAAaA,IAGf,cAAC,GAAD,CACEr5C,SAAU,SAAA/D,GAAK,OACb,EAAK2N,aAAa+yC,EAAW1gD,EAAO,aAEtCA,MAAOge,EAAK/T,SACZpG,YAAY,WACZ8E,OAAQ,CACNnG,OAAQ,IAEV2D,MAAM,WACNi3C,YAAaA,IAGf,sBAAK94C,UAAU,qBAAf,UACmB,MAAhB0Z,EAAKiK,SACJjK,EAAKiK,QAAQ9N,KAAI,SAACquB,EAAKgT,GAAN,OACf,cAAC,GAAD,CACEhT,IAAKA,EAELE,SAAU,SAAAF,GAAG,OACX,EAAKiT,UAAUjT,EAAKgT,EAAUkF,IAEhC5kB,SAAU,kBAAM,EAAK4f,aAAaF,EAAUkF,KAJvClF,OAQO,MAAhBx9B,EAAKiK,SAAmBjK,EAAKiK,QAAQ1hB,OAAS,IAC9C,qBACEjC,UAAU,aACViB,QAAS,kBAAM,EAAKq7C,mBAAmBF,IACvC7vC,MAAOlI,GAAOjD,OAHhB,2BAQHi7C,EAAc,GACb,cAAC,KAAD,CACE,aAAW,SACX9vC,MAAO,CACL3O,SAAU,WACVsB,MAAO,QACPmB,IAAK,QAEPY,QAAS,kBAAM,EAAKs7C,aAAaH,IAPnC,SAQE,qBAAKj3C,IAAI,8BAA8BC,IAAI,eAlEvCsU,EAAKta,OAwElBzD,KAAK6gD,oBACJ,qBACEv7C,QAAS,kBAAM,EAAKi7C,cACpB3vC,MAAK,2BAAOlI,GAAO63C,YAAd,IAA0Br+C,QAAS,SAF1C,SAGE,8BACE,mBAAG0O,MAAO,CAAEpO,OAAQ,EAAGS,MAAO,WAA9B,4BAKJ,sBACEoB,UAAU,qBACVuM,MAAO,CAAEwvB,UAAW,qBAFtB,UAGc,MAAXpY,GACCA,EAAQ9N,KAAI,SAACquB,EAAKgT,GAAN,OACV,cAAC,GAAD,CACEhT,IAAKA,EAELE,SAAU,SAAAF,GAAG,OAAI,EAAKiT,UAAUjT,EAAKgT,EAAU,OAC/C1f,SAAU,kBAAM,EAAK4f,aAAaF,EAAU,QAFvCA,OAKE,MAAXvzB,GAAmBA,EAAQ1hB,OAAS,IACpC,qBAAKjC,UAAU,aAAaiB,QAAS,kBAAM,EAAKw7C,gBAAhD,2BAML9gD,KAAKyG,MAAMo1B,UACV,qBAAKx3B,UAAU,UAAUiB,QAAS,kBAAM,EAAKmB,MAAMo1B,YAAnD,SACE,qBAAKryB,IAAI,8BAA8BC,IAAI,gBAIjD,cAAC,GAAD,CACEjB,QAASxI,KAAKyG,MAAM+B,QACpB+iC,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,a,GAtMtCW,IAAMC,WAgNdsQ,gBAHS,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAEDnP,CAAyB8mC,ICxOlCA,G,kDACJ,WAAY/5C,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,GAFI,E,6CAKnB,WACE,MAA+D,YAAxDnH,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQC,gB,oBAG/C,WACE,MAA+D,SAAxD7nB,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQC,gB,oBAG/C,WAAU,IAAD,OACP,OACE,gCACG7nB,KAAK+gD,UACJ,cAACC,GAAD,CACEx4C,QAASxI,KAAKyG,MAAM+B,QACpB+iC,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,IACnDqzB,SAAU,kBAAM,EAAKp1B,MAAMo1B,YAC3BshB,YAAan9C,KAAKyG,MAAM02C,cAG3Bn9C,KAAKihD,aACJ,cAACC,GAAD,CACE14C,QAASxI,KAAKyG,MAAM+B,QACpB6wB,IAAKr5B,KAAKyG,MAAM4yB,IAChBkS,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,IACnDqzB,SAAU,kBAAM,EAAKp1B,MAAMo1B,YAC3BshB,YAAan9C,KAAKyG,MAAM02C,qB,GA/Bbh0C,IAAMC,WA0CdsQ,gBAHS,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAEDnP,CAAyB8mC,IC3CnBW,G,4MACnBh6C,MAAQ,G,kDAER,SAAai6C,GACX,IAAM35B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWE,WAAWC,QAAQtU,IAAM8tC,EACpCphD,KAAKyG,MAAM8kC,cAAc9jB,K,oBAG3B,WAAU,IAAD,OACC4R,EAAQr5B,KAAKyG,MAAb4yB,IACR,OACE,sBAAKzoB,MAAO,CAAExO,MAAO,QAArB,UACE,sBAAKiC,UAAU,UAAf,UACE,cAAC,GAAD,CACEtE,MAAOC,KAAKyG,MAAM+B,QAAQmf,WAAWC,QAAQtU,IAC7CxP,SAAU,SAAAs9C,GAAO,OAAI,EAAK1zC,aAAa0zC,IACvCl7C,MAAM,kBAEPlG,KAAKyG,MAAMo1B,UACV,qBAAKx3B,UAAU,UAAUiB,QAAS,kBAAM,EAAKmB,MAAMo1B,YAAnD,SACE,qBAAKryB,IAAI,8BAA8BC,IAAI,gBAIjD,cAAC,GAAD,CACEjB,QAASxI,KAAKyG,MAAM+B,QACpB6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,a,GA5BrBW,IAAMC,W,+BCIxCV,GAAS,CACboP,UAAW,CACT7V,SAAU,WACVywB,SAAU,SACVtwB,MAAO,OACPG,OAAQ,QAEVwoC,KAAM,CACJrY,SAAU,SACV3V,YAAa,QACb7S,aAAc,QACdo2C,cAAe,GACfp+C,QAAS,QAEXsG,QAAS,CACPjG,OAAQ,cACR+1B,SAAU,QACV91B,OAAQ,MACRuD,UACE,iHACFpD,aAAc,GACdoa,YAAa,GACb9a,SAAU,YAEZs+C,WAAY,CACVjoB,SAAU,QACV91B,OAAQ,MACRuD,UACE,iHACFpD,aAAc,GACdoa,YAAa,GACb9a,SAAU,aAIRo/C,G,4MACJl6C,MAAQ,G,sDAER,SAAiBs5C,EAAW1gD,GAC1B,IAAM0nB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMge,GAAWr6C,KAAOrG,EACnCC,KAAKyG,MAAM8kC,cAAc9jB,K,8BAG3B,SAAiB1nB,GACf,IAAM0nB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAW/jB,KAAO3D,EAClBC,KAAKyG,MAAM8kC,cAAc9jB,K,uBAG3B,SAAU8gB,EAAKgT,EAAUkF,GACvB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMge,GAAWz4B,QAAQuzB,GAAYhT,EAChDvoC,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAa8zB,EAAUkF,GACrB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMge,GAAWz4B,QAAQgT,OAAOugB,EAAU,GACrDv7C,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAag5B,GACX,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACb,MAAvCif,EAAWgb,MAAMge,GAAWz4B,UAC9BP,EAAWgb,MAAMge,GAAWz4B,QAAU,IAExCP,EAAWgb,MAAMge,GAAWz4B,QAAQ1d,KAAK,CACvC9J,KAAM,WACN0F,MAAO,GACP0hB,QAAS,KAEX5nB,KAAKyG,MAAM8kC,cAAc9jB,K,qBAG3B,WACE,IAAMA,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMn4B,KAAK,CACpBlE,KAAM,KAERpG,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAag5B,GACX,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMzH,OAAOylB,EAAW,GACnCzgD,KAAKyG,MAAM8kC,cAAc9jB,K,oBAG3B,WAAU,IAAD,OACDi5B,EAAc1gD,KAAKyG,MAAM+B,QAAQi6B,MAAMn8B,OAC7C,EAA6BtG,KAAKyG,MAA1B4yB,EAAR,EAAQA,IAAK8jB,EAAb,EAAaA,YACb,OACE,gCACE,eAAC,cAAD,CACEvsC,MAAOlI,GAAOoP,UACdwpC,WAAY,SAAA76C,GAAK,OAAI,+CAASA,GAAT,IAAgBmK,MAAOlI,GAAOqiC,SAFrD,UAGG/qC,KAAKyG,MAAM+B,QAAQi6B,MAAMvoB,KAAI,SAAC6D,EAAM0iC,GAAP,OAC5B,sBAAqB7vC,MAAOlI,GAAOF,QAAnC,UACE,cAAC,GAAD,CACEtC,MAAM,eACNpC,SAAU,SAAA/D,GAAK,OAAI,EAAKo7C,iBAAiBsF,EAAW1gD,IACpDA,MAAOge,EAAK3X,KACZxC,YAAY,gBACZu5C,YAAaA,IAEduD,EAAc,GACb,cAAC,KAAD,CACE,aAAW,SACX9vC,MAAO,CACL3O,SAAU,WACVsB,MAAO,QACPmB,IAAK,QAEPY,QAAS,kBAAM,EAAKi8C,aAAad,IAPnC,SAQE,qBAAKj3C,IAAI,8BAA8BC,IAAI,eAjBvCg3C,MAsBZ,qBACEn7C,QAAS,kBAAM,EAAKk8C,WACpB5wC,MAAK,2BAAOlI,GAAO63C,YAAd,IAA0Br+C,QAAS,SAF1C,SAGE,qBAAK0O,MAAO,CAAEpO,OAAQ,OAAQS,MAAO,WAArC,SACE,cAAC,KAAD,QAGHjD,KAAKyG,MAAMo1B,UACV,cAAC,KAAD,CACE,aAAW,SACXjrB,MAAO,CACLjM,OAAQ,UACR1C,SAAU,WACVsB,MAAO,EACPmB,IAAK,GAEPY,QAAS,kBAAM,EAAKmB,MAAMo1B,YAR5B,SASE,qBAAKryB,IAAI,8BAA8BC,IAAI,gBAIjD,cAAC,GAAD,CACEjB,QAASxI,KAAKyG,MAAM+B,QACpB6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,a,GA7G7BW,IAAMC,WAwHvBsQ,gBAJS,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAGDnP,CAAyB2nC,IC3JlC34C,GAAS,CACboP,UAAW,CACT7V,SAAU,WACVywB,SAAU,SACVtwB,MAAO,OACPG,OAAQ,QAEVwoC,KAAM,CACJrY,SAAU,SACV3V,YAAa,QACb7S,aAAc,QACdo2C,cAAe,GACfp+C,QAAS,QAEXsG,QAAS,CACPjG,OAAQ,cACR+1B,SAAU,QACV91B,OAAQ,MACRuD,UACE,iHACFpD,aAAc,GACdoa,YAAa,GACb9a,SAAU,YAEZs+C,WAAY,CACVjoB,SAAU,QACV91B,OAAQ,MACRuD,UACE,iHACFpD,aAAc,GACdoa,YAAa,GACb9a,SAAU,aAIRo/C,G,4MACJl6C,MAAQ,G,qDAER,SAAgBi6C,EAASX,GACvB,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMge,GAAW94B,WAAWC,QAAQtU,IAAM8tC,EACrDphD,KAAKyG,MAAM8kC,cAAc9jB,K,qBAG3B,WACE,IAAMA,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMn4B,KAAK,CACpBqd,WAAY,CACVnnB,KAAM,QACNonB,QAAS,CACPtU,IAAK,OAIXtT,KAAKyG,MAAM8kC,cAAc9jB,K,0BAG3B,SAAag5B,GACX,IAAMh5B,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAM+B,UACxDif,EAAWgb,MAAMzH,OAAOylB,EAAW,GACnCzgD,KAAKyG,MAAM8kC,cAAc9jB,K,oBAG3B,WAAU,IAAD,OACDi5B,EAAc1gD,KAAKyG,MAAM+B,QAAQi6B,MAAMn8B,OACrC+yB,EAAQr5B,KAAKyG,MAAb4yB,IAER,OACE,gCACE,eAAC,cAAD,CACEzoB,MAAOlI,GAAOoP,UACdwpC,WAAY,SAAA76C,GAAK,OAAI,+CAASA,GAAT,IAAgBmK,MAAOlI,GAAOqiC,SAFrD,UAGG/qC,KAAKyG,MAAM+B,QAAQi6B,MAAMvoB,KAAI,SAAC6D,EAAM0iC,GAAP,OAC5B,sBAAqB7vC,MAAOlI,GAAOF,QAAnC,UACE,cAAC,GAAD,CACEzI,MAAOge,EAAK4J,WAAWC,QAAQtU,IAC/BxP,SAAU,SAAAs9C,GAAO,OAAI,EAAKK,gBAAgBL,EAASX,IACnDv6C,MAAM,kBAEPw6C,EAAc,GACb,cAAC,KAAD,CACE,aAAW,SACX9vC,MAAO,CACL3O,SAAU,WACVsB,MAAO,QACPmB,IAAK,QAEPY,QAAS,kBAAM,EAAKi8C,aAAad,IAPnC,SAQE,qBAAKj3C,IAAI,8BAA8BC,IAAI,eAfvCg3C,MAqBZ,qBACEn7C,QAAS,kBAAM,EAAKk8C,WACpB5wC,MAAK,2BAAOlI,GAAO63C,YAAd,IAA0Br+C,QAAS,SAF1C,SAGE,qBAAK0O,MAAO,CAAEpO,OAAQ,OAAQS,MAAO,WAArC,SACE,cAAC,KAAD,QAIHjD,KAAKyG,MAAMo1B,UACV,cAAC,KAAD,CACE,aAAW,SACXjrB,MAAO,CACLjM,OAAQ,UACR1C,SAAU,WACVsB,MAAO,EACPmB,IAAK,GAEPY,QAAS,kBAAM,EAAKmB,MAAMo1B,YAR5B,SASE,qBAAKryB,IAAI,8BAA8BC,IAAI,gBAIjD,cAAC,GAAD,CACEjB,QAASxI,KAAKyG,MAAM+B,QACpB6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI,EAAK/B,MAAM8kC,cAAc/iC,a,GApF7BW,IAAMC,WA+FvBsQ,gBAJS,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAGDnP,CAAyB2nC,I,qBCrIlC34C,I,OAAS,CACboP,UAAW,CACT7N,UAAW,GACXhI,SAAU,WACVQ,QAAS,GACTC,OAAQ,oBACRC,aAAc,GACdP,MAAO,UAILs/C,G,4MACJh0C,aAAe,SAAA3N,GACb,IAAM0nB,EAAavc,KAAK6B,MAAM7B,KAAKC,UAAU,EAAK1E,MAAM+B,UACxDif,EAAW3L,KAAO/b,EAClB,EAAK0G,MAAM8kC,cAAc9jB,I,4CAG3B,WAAU,IAAD,OACP,OACE,sBAAKpjB,UAAU,SAASuM,MAAOlI,GAAOoP,UAAtC,UACE,0DAA6B9X,KAAKyG,MAAM+B,QAAQsT,KAAhD,cACA,cAAC,KAAD,CACEb,IAAK,EACL0mC,IAAK,GACL5hD,MAAOC,KAAKyG,MAAM+B,QAAQsT,KAC1B8lC,cAAe5hD,KAAK6hD,kBACpB/9C,SAAU9D,KAAK0N,eAEhB1N,KAAKyG,MAAMo1B,UACV,qBAAKx3B,UAAU,UAAUiB,QAAS,kBAAM,EAAKmB,MAAMo1B,YAAnD,SACE,qBAAKryB,IAAI,8BAA8BC,IAAI,oB,GApBlCN,IAAMC,WAgCZsQ,gBAJS,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAGDnP,CAAyBgoC,IC6BlCI,G,4MACJ36C,MAAQ,CACN2kB,KAAM,CACJroB,GAAI,KACJC,KAAM,MAER0kB,UAAW,M,8CA2Bb,SAASK,EAAUwF,GAAS,IAAD,OACnBzlB,EAAUxI,KAAKyG,MAAM+B,QAC3BA,EAAQ6f,UAAY4F,EACpBjuB,KAAK2G,SACH,CACEmlB,KAAM,CACJroB,GAAIwqB,EACJvqB,KAAM+kB,KAGV,WACE,EAAKhiB,MAAM8kC,cAAc/iC,Q,wBAK/B,SAAWmF,GAAQ,IAAD,OACVnF,EAAUxI,KAAKyG,MAAM+B,QAC3BA,EAAQ4f,UAAYza,EAAM9G,OAAO9G,MACjCC,KAAK2G,SACH,CACEyhB,UAAWza,EAAM9G,OAAO9G,QAE1B,WACE,EAAK0G,MAAM8kC,cAAc/iC,Q,oBAK/B,WAAU,IAAD,OACP,EAAyBxI,KAAKyG,MAAtBrC,EAAR,EAAQA,QAASi1B,EAAjB,EAAiBA,IACjB,OACE,sBAAKh1B,UAAS,UAAKD,EAAQ0T,UAAb,aAAd,UACG9X,KAAKyG,MAAMo1B,WAAa77B,KAAKyG,MAAM+B,QAAQ4yC,aAC1C,qBAAK/2C,UAAU,kBAAf,SACE,cAAC,KAAD,CACEA,UAAU,YACVuM,MAAO,CACLjL,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,IAEV,aAAW,SACX+C,QAAS,kBAAM,EAAKmB,MAAMo1B,YAV5B,SAWE,cAAC,GAAD,CAAWz5B,MAAM,OAAOG,OAAO,OAAOU,MAAM,gBAIlD,qBAAKoB,UAAWD,EAAQV,KAAxB,wBACA,sBAAKW,UAAWD,EAAQ2xB,QAAxB,UACE,mBAAG1xB,UAAWD,EAAQgC,KAAtB,+BACA,qBAAK/B,UAAWD,EAAQk1B,YAAxB,SACE,uBACEj1B,UAAWD,EAAQ9B,MACnBsB,YAAY,mBACZw1B,UAAW,GACXxoB,MAAO,CAAE+4B,YAAatQ,GAAO,iBAC7Bt5B,MAAOC,KAAKmH,MAAMihB,UAClBoR,IAAKH,GAAO,MACZv1B,SAAU,SAAA6J,GAAK,OAAI,EAAKo0C,WAAWp0C,QAGvC,mBAAGtJ,UAAWD,EAAQgC,KAAtB,6CACA,cAAC,GAAD,CAAYrG,MAAOC,KAAKmH,MAAM2kB,KAAKpoB,KACjCI,SAAU,WAAYL,GAAZ,IAAGJ,EAAH,EAAGA,MAAH,OAAmB,EAAKS,SAAST,EAAOI,e,uCA1F5D,SAAgCgD,EAAOU,GAerC,MAAO,CACL2kB,KAAM,CACJroB,GAAIgD,EAAM+B,QAAQ6f,UAClB3kB,KAjBJ,SAA6BuqB,EAAQX,GACnC,IAAI00B,EAUJ,OATA10B,EAAMjT,SAAQ,SAAAoT,GACRA,EAAKiJ,OACPjJ,EAAKiJ,MAAMrc,SAAQ,SAAAyR,GACbA,EAAKroB,KAAOwqB,IACd+zB,EAAmBl2B,EAAKpoB,YAKzBs+C,EAMCC,CAAoBx7C,EAAM+B,QAAQ6f,UAAW5hB,EAAM6mB,QAE3DlF,UAAW3hB,EAAM+B,QAAQ4f,e,GA7BPjf,IAAMC,WA+GftH,yBAtLA,SAAAC,GAAK,MAAK,CACvB+V,UAAW,CACTnS,WAAY,UACZjD,OAAQ,oBACRC,aAAc,GACdP,MAAO,KAETk3B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,OACVpuB,aAAc,IAEhB5H,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBM,KAAM,CACJjB,QAAS,YACTy9B,aAAc,oBACdh9B,SAAU,GACVD,MAAO,UACPE,WAAY,QAEd4yB,QAAS,CACPtzB,QAAS,IAEX2D,KAAM,CACJlD,SAAU,GACVD,MAAO,UACPT,OAAQ,WAEV,UAAW,CACT,mCAAoC,CAClCN,QAAS,SAEX,YAAa,CACXD,SAAU,YAEZ,6BAA8B,CAC5B6H,KAAM,QACNpF,IAAK,QACLzC,SAAU,WACVgE,WAAY,iBAEd,4BAA6B,CAC3BuO,OAAQ,WAEV,cAAe,CACb7O,WAAY,UACZ1C,MAAO,SAET,oBAAqB,CACnB0C,WAAY,QACZ1C,MAAO,eAmHEnB,CAAmB4X,aALV,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,WACdyE,MAAOnmB,EAAMmmB,SAGmB5T,CAAyBooC,K,qBCzJ5CI,GAxB0B,SAAC,GAA8D,IAA5D5/B,EAA2D,EAA3DA,YAAapc,EAA8C,EAA9CA,MAAOsc,EAAuC,EAAvCA,SAAUqZ,EAA6B,EAA7BA,SAAUsmB,EAAmB,EAAnBA,aAClF,OACE,sBAAK99C,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAxB,UACE,iCACGzc,EACD,cAAC,GAAD,CAASmc,UAAW,wBAAyBC,YAAaA,OAE3D6/B,KAGF3/B,EAEAqZ,GACC,mBAAGx3B,UAAWD,KAAQu2C,eAAtB,SACE,cAAC,KAAD,CAAYt2C,UAAWD,KAAQw2C,WAAY,aAAW,SAASt1C,QAASu2B,EAAxE,SACE,cAAC,GAAD,CAAWz5B,MAAM,OAAOG,OAAO,OAAOU,MAAM,oBCmGzCoG,eACbvH,sBClIoB,iBAAO,CAC3BgW,UAAW,CACTnV,aAAc,GACdD,OAAQ,kCACRT,SAAU,WACVO,OAAQ,WACRJ,MAAO,OACP,UAAW,CACT,MAAO,CACLF,QAAS,WAIfygB,OAAQ,CACNlgB,QAAS,GACTS,SAAU,GACVg9B,aAAc,oBACdh+B,QAAS,QAEX+I,KAAM,CACJxI,QAAS,sBAEX09B,OAAQ,CACNC,UAAW,oBACX39B,QAAS,GACTP,QAAS,OACTyH,eAAgB,YAElBzD,MAAO,CACLjD,MAAO,UACPT,OAAQ,EACRW,WAAY,KAEdi/C,SAAU,CACRz9C,OAAQ,UACRyd,WAAY,GAEdqC,OAAQ,CACNviB,QAAS,OACT0pB,IAAK,OACLub,aAAc,OACd,MAAO,CACL/kC,MAAO,MACPc,SAAU,GACVC,WAAY,MACZF,MAAO,YAGXm7B,SAAU,CACRz5B,OAAQ,UACRzC,QAAS,OACT0H,WAAY,SACZwY,WAAY,EACZngB,SAAU,WACVsB,MAAO,MACPmB,IAAK,OAEPm5B,cAAe,CACb37B,QAAS,OACT2a,SAAU,MACV3S,aAAc,EACd0hB,IAAK,OACL3pB,SAAU,WACVklC,aAAc,OACd,cAAe,CACbjlC,QAAS,SAGb87B,QAAS,CACP/7B,SAAU,WACVgB,MAAO,UACPC,SAAU,IAEZZ,MAAO,CACLI,OAAQ,kCACRK,QAAS,OACTR,OAAQ,GACRI,aAAc,EACdP,MAAO,QACPK,QAAS,WACTQ,MAAO,yBAET03C,eAAgB,CACdp3C,MAAO,OACPmB,IAAK,QACLzC,SAAU,WACVC,QAAS,OACT+D,WAAY,iBAEd20C,WAAY,CACVj1C,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,GACRN,SAAU,WACVsB,OAAQ,GACRrB,QAAS,YDiCXJ,CAAmB4X,aANG,SAAAvS,GAAK,YAAK,CAChC0hB,WAAY1hB,EAAM0hB,WAClBoU,YAAW,UAAE91B,EAAMyL,iBAAR,aAAE,EAAiBnP,MAIXiW,EAlHA,SAAAjT,GAAU,IAAD,EACpBrC,EAA8CqC,EAA9CrC,QAASoE,EAAqC/B,EAArC+B,QAAS+iC,EAA4B9kC,EAA5B8kC,cAAe1P,EAAap1B,EAAbo1B,SAEzC,EAA0B72B,mBAAS,MAAnC,mBAAO05B,EAAP,KAAca,EAAd,KA8CA,OACE,cAAC,GAAD,CACEr5B,MAAO,gBACPoc,YACE,iEAEFuZ,SAAUA,EALZ,SAME,qCACE,sBAAKx3B,UAAWD,EAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,EAAQqgB,OAAxB,UACE,qCACA,yCAHJ,OAKGjc,QALH,IAKGA,GALH,UAKGA,EAASqgB,kBALZ,aAKG,EAAqB3O,KAAI,SAACwP,EAAWvQ,GAAZ,aACxB,sBAAK9U,UAAWD,EAAQy5B,cAAxB,UACE,cAAC,GAAD,CACEa,MAAOA,IAAUvlB,IAAUuQ,EAAUjmB,GACrC1D,MAAK,OAAE2pB,QAAF,IAAEA,OAAF,EAAEA,EAAWjmB,GAClBK,SAAU,SAAAS,GAAC,OA9DK,SAACA,EAAG4U,GAAW,IAAD,EAC1C3Q,EAAQqgB,WAAR,UAAqByC,GAAgB,OAAC9iB,QAAD,IAACA,OAAD,EAACA,EAASqgB,mBAA/C,aAAqB,EAAuC3O,KAC1D,SAACwP,EAAWpL,GAMV,OALIA,IAAMnF,IACRuQ,EAAUjmB,GAAV,OAAec,QAAf,IAAeA,OAAf,EAAeA,EAAGxE,MAClB2pB,EAAUhmB,KAAV,OAAiBa,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAGlB,OAGfqmB,KAGX6hB,EAAc/iC,GACd+2B,GAAS,GAkDkBqI,CAAsBrjC,EAAG4U,IACxCpV,OAAQ,kBAAMw7B,GAAS,IACvBj6B,QAAS,kBAAMi6B,EAASpmB,IACxBxV,UAAU,EACVyhC,eAAgB,CAAClC,GAASC,IAC1B9B,eAAgB,CAAEj/B,MAAO,OACzB+iC,aAAa,EACbE,kBAAmB,CAAC,WAAY,qBAAsB,0BAExD,cAAC,GAAD,CACE7F,YAAW,OAAE9V,QAAF,IAAEA,OAAF,EAAEA,EAAWjmB,GACxB1D,MAAK,OAAE2pB,QAAF,IAAEA,OAAF,EAAEA,EAAW3pB,MAClB6D,YAAa,OACbgN,MAAO,CAAExO,MAAO,OAChB0B,SAAU,SAAAS,GAAC,OA7DU,SAACA,EAAG4U,GAAW,IAAD,EAC/C3Q,EAAQqgB,WAAR,UAAqByC,GAAgB,OAAC9iB,QAAD,IAACA,OAAD,EAACA,EAASqgB,mBAA/C,aAAqB,EAAuC3O,KAC1D,SAACwP,EAAWpL,GAIV,OAHIA,IAAMnF,IACRuQ,EAAU3pB,MAAQwE,EAAEsC,OAAO9G,OAEtB2pB,KAIX6hB,EAAc/iC,GAmDa81B,CAA2B/5B,EAAG4U,OAEvC,OAAP3Q,QAAO,IAAPA,GAAA,UAAAA,EAASqgB,kBAAT,eAAqBviB,QAAS,GAC7B,mBACEjC,UAAWD,EAAQg6B,SACnB94B,QAAS,kBA5CK,SAAA6T,GAC5B3Q,EAAQqgB,WAAayC,GAAgB,OAAC9iB,QAAD,IAACA,OAAD,EAACA,EAASqgB,YAAY3W,QACzD,SAACwX,EAAWpL,GAAZ,OAAkBnF,IAAUmF,KAE9BitB,EAAc/iC,GAwCei2B,CAAsBtlB,IAFvC,SAGE,cAAC,GAAD,QAxBN,OAA4CuQ,QAA5C,IAA4CA,OAA5C,EAA4CA,EAAWjmB,UA8B3D,qBAAKY,UAAWD,EAAQ+7B,OAAxB,SACE,cAAC,GAAD,CACEj6B,MAAM,gBACNZ,QA/DiB,WACzB,IAAMm6B,EAAmBnU,GAAgB,OAAC9iB,QAAD,IAACA,OAAD,EAACA,EAASqgB,aAAe,GAGlE4W,EAAiBn1B,KAFI,CAAE7G,GAAI,KAAM1D,MAAO,KAAM2D,KAAM,OAGpD8E,EAAQqgB,WAAa4W,EACrB8L,EAAc/iC,kBE5CLupB,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,GACHD,EAAM+qB,WAAa/qB,EAAMgrB,WAAahrB,EAAMirB,YAAYC,QAE3D,OAAO,2BACFJ,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACT,UAAW,CACTC,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACP,UAAW,CACTC,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTiwB,SAAU,YAEZ9uB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,kBCLIN,yBDxDO,iBAAO,CAC3B6pC,WAAY,CACVzpC,QAAS,OACT0H,WAAY,SACZD,eAAgB,iBAElB04C,kBAAmB,CACjBp/C,MAAO,4BCiDInB,EAjDU,SAAA2E,GACvB,IAAQ1G,EAA+C0G,EAA/C1G,MAAO+D,EAAwC2C,EAAxC3C,SAAUuuB,EAA8B5rB,EAA9B4rB,QAAS+D,EAAqB3vB,EAArB2vB,QAAShyB,EAAYqC,EAAZrC,QAErC2xB,EAAU,CACd,CAAE1yB,MAAO,OAAQtD,MAAO,OAAQynB,YAAa,MAC7C,CAAEnkB,MAAO,SAAUtD,MAAO,SAAUynB,YAAa,cACjD,CAAEnkB,MAAO,QAAStD,MAAO,QAASynB,YAAa,oBAC/C,CAAEnkB,MAAO,QAAStD,MAAO,QAASynB,YAAa,gBAC/C,CAAEnkB,MAAO,OAAQtD,MAAO,OAAQynB,YAAa,YAC7C,CAAEnkB,MAAO,OAAQtD,MAAO,OAAQynB,YAAa,SAC7C,CAAEnkB,MAAO,oBAAqBtD,MAAO,WAoBvC,OACE,cAAC,KAAD,CACE6D,YAAa,OACbmyB,QAASA,EACTrtB,OAAQqpB,GACRhyB,MAtBa,SAAAA,GACf,OAAOg2B,EAAQ1jB,MAAK,SAAAmgB,GAAM,OAAIA,EAAOzyB,QAAUA,KAqBtCuiD,CAASviD,GAChB+D,SAAUA,EACV8yB,cAAe,IACfE,cAAe,OACfC,WAAY,CAAE+P,OAtBH,SAAArgC,GACb,OACE,cAAC,KAAWqgC,OAAZ,2BAAuBrgC,GAAvB,aACE,sBAAKpC,UAAWD,EAAQunC,WAAxB,UACE,8BAAMllC,EAAM2T,KAAK/W,QACjB,qBAAKgB,UAAWD,EAAQi+C,kBAAxB,SACG57C,EAAM2T,KAAKoN,sBAiBlB6K,QAASA,EACT+D,QAASA,OCnCTmsB,GAAiB,CACrBx5B,YAAY,EACZC,uBAAuB,EACvBC,2BAA2B,EAC3BE,iBAAiB,EACjBD,wBAAwB,GA6KXpnB,yBC/LO,iBAAO,CAC3BgW,UAAW,CACTnV,aAAc,GACdD,OAAQ,oBACRN,MAAO,OACP8H,aAAc,GACdouB,SAAU,IACV,UAAW,CACT,MAAO,CACLp2B,QAAS,WAIfygB,OAAQ,CACNlgB,QAAS,qBACTU,WAAY,IACZF,MAAO,sBACPi9B,aAAc,qBAEhBj1B,KAAM,CACJxI,QAAS,IAEXY,MAAO,CACLH,SAAU,GACVD,MAAO,UACPiH,aAAc,EACd,SAAU,CACRjH,MAAO,QAGX4oB,QAAS,CACPqU,aAAc,oBACdh2B,aAAc,IAEhB6zB,UAAW,CACT7zB,aAAc,IAEhBs4C,eAAgB,CACdpgD,MAAO,OAETE,MAAO,CACLF,MAAO,OACPc,SAAU,GACVH,QAAS,OACTN,QAAS,GACTC,OAAQ,oBACRC,aAAc,GACdJ,OAAQ,GACR,UAAW,CACTG,OAAQ,sBAGZ+/C,cAAe,CACbvgD,QAAS,OACTwgD,SAAU,OACV92B,IAAK,QAEP+uB,eAAgB,CACdp3C,MAAO,OACPmB,IAAK,QACLzC,SAAU,WACVC,QAAS,OACT+D,WAAY,iBAEd20C,WAAY,CACVj1C,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,GACRN,SAAU,WACVsB,OAAQ,GACRrB,QAAS,YDuHEJ,EA1KO,SAAA2E,GAAU,IAAD,sBACrBrC,EAAwDqC,EAAxDrC,QAASoE,EAA+C/B,EAA/C+B,QAAS+iC,EAAsC9kC,EAAtC8kC,cAAe1P,EAAuBp1B,EAAvBo1B,SAAU8J,EAAal/B,EAAbk/B,SAEnD,EAA0B3gC,mBAAS,MAAnC,mBAAO05B,EAAP,KAAca,EAAd,KACA,EAA8Bv6B,mBAASu9C,IAAvC,mBAAOlwB,EAAP,KAAgBiT,EAAhB,KACMQ,EAAe7C,GAAY0C,GAGjC/f,qBAAU,WACR,GAAI+f,GAAYG,GAAgBH,IAAaG,EAAc,CASzDR,EARgB,CACdvc,YAAY,EACZC,uBAAuB,EACvBC,2BAA2B,EAC3BE,iBAAiB,EACjBD,wBAAwB,OAK3B,CAACyc,IAEJ,IA8CMgd,EAAgB,SAACC,EAAOC,GAC5B,IAAMC,EAAcx3B,GAAiB+G,GACrCywB,EAAYF,GAASC,EAErBvd,EAAWwd,IAGb,OACE,cAAC,GAAD,CACE58C,MAAO,kBACPoc,YACE,8DAEFuZ,SAAUA,EALZ,SAME,sBAAKx3B,UAAWD,EAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,EAAQynB,QAAxB,UACE,sBAAKxnB,UAAWD,EAAQ25B,UAAxB,UACE,oBAAG15B,UAAWD,EAAQf,MAAtB,wBACa,wCAEb,cAAC,GAAD,CACEtD,MAAK,OAAEyI,QAAF,IAAEA,GAAF,UAAEA,EAASsgB,qBAAX,aAAE,EAAwBC,WAC/BjlB,SApEmB,SAAAS,GAC7B,IAAMw+C,EAAcz3B,GAAiB9iB,GACrCu6C,EAAYj6B,cAAcC,WAAaxkB,EAAExE,MAEzB,WAAZwE,EAAExE,OACJ4iD,EAAc,yBAAyB,GAGA,SAArCn6C,EAAQsgB,cAAcC,YACxB45B,EAAc,0BAA0B,GAG1CpX,EAAcwX,IAyDJ1wB,QAASA,EAAQtJ,WACjBqN,QAAS,kBAAMusB,EAAc,cAAc,SAGP,YAAhC,OAAPn6C,QAAO,IAAPA,GAAA,UAAAA,EAASsgB,qBAAT,eAAwBC,aACvB,sBAAK1kB,UAAWD,EAAQ25B,UAAxB,UACE,oBAAG15B,UAAWD,EAAQf,MAAtB,0BACe,wCAEf,uBACEgB,UAAWD,EAAQ9B,MACnBsO,MAAO,CACLlO,OACE2vB,EAAQrJ,yBACR,OAACxgB,QAAD,IAACA,GAAD,UAACA,EAASsgB,qBAAV,aAAC,EAAwBE,wBACzB,iBAEJplB,YAAY,6BACZ7D,MAAK,OAAEyI,QAAF,IAAEA,GAAF,UAAEA,EAASsgB,qBAAX,aAAE,EAAwBE,sBAC/BllB,SAzEY,SAAAS,GACxB,IAAMw+C,EAAcz3B,GAAiB9iB,GACrCu6C,EAAYj6B,cAAcE,sBAAwBzkB,EAAEsC,OAAO9G,MAE3DwrC,EAAcwX,IAsEFh/C,OAAQ,kBAAM4+C,EAAc,yBAAyB,YAM7D,sBAAKt+C,UAAWD,EAAQq+C,cAAxB,UACE,sBAAKp+C,UAAWD,EAAQo+C,eAAxB,UACE,oBAAGn+C,UAAWD,EAAQf,MAAtB,kCACuB,wCAEvB,cAAC,GAAD,CACEtD,MAAK,OAAEyI,QAAF,IAAEA,GAAF,UAAEA,EAASsgB,qBAAX,aAAE,EAAwBG,0BAC/BnlB,SAtEsB,SAAAS,GAChC,IAAMw+C,EAAcz3B,GAAiB9iB,GACrCu6C,EAAYj6B,cAAcG,0BAA4B1kB,EAAExE,MAExDwrC,EAAcwX,IAmEJ1wB,QAASA,EAAQpJ,0BACjBmN,QAAS,kBAAMusB,EAAc,6BAA6B,SAI9D,sBAAKt+C,UAAWD,EAAQo+C,eAAxB,UACE,mBAAGn+C,UAAWD,EAAQf,MAAtB,qBACA,cAAC,GAAD,CACEq7B,MAAOA,KAAS,OAACl2B,QAAD,IAACA,GAAD,UAACA,EAASsgB,qBAAV,iBAAC,EAAwBK,uBAAzB,aAAC,EAAyC1lB,IAC1D1D,MAAK,OAAEyI,QAAF,IAAEA,GAAF,UAAEA,EAASsgB,qBAAX,iBAAE,EAAwBK,uBAA1B,aAAE,EAAyC1lB,GAChDM,OAAQ,kBAAMw7B,GAAS,IACvBj6B,QAAS,kBAAMi6B,GAAS,IACxBz7B,SA7FkB,SAAAS,GAC5B,IAAMw+C,EAAcz3B,GAAiB9iB,GACrCu6C,EAAYj6B,cAAcK,gBAAkB,CAC1C1lB,IAAK,OAADc,QAAC,IAADA,OAAA,EAAAA,EAAGxE,QAAS,KAChB2D,MAAO,OAADa,QAAC,IAADA,OAAA,EAAAA,EAAGlB,QAAS,MAEpBkoC,EAAcwX,GACdxjB,GAAS,IAuFC57B,UAAU,EACV+E,OAAQ,CAAE/F,aAAc,GAAIF,QAAS,WACrC2iC,eAAgB,CAAClC,GAASC,IAC1BgC,aAAa,EACbvhC,YAAa,mBACbyhC,kBAAmB,CAAC,iBAIgB,UAAhC,OAAP78B,QAAO,IAAPA,GAAA,UAAAA,EAASsgB,qBAAT,eAAwBC,aACvB,sBAAK1kB,UAAWD,EAAQo+C,eAAxB,UACE,oBAAGn+C,UAAWD,EAAQf,MAAtB,oCACyB,wCAEzB,cAAC,GAAD,CACEtD,MAAK,OAAEyI,QAAF,IAAEA,GAAF,UAAEA,EAASsgB,qBAAX,aAAE,EAAwBI,uBAC/BplB,SA7FiB,SAAAS,GAC7B,IAAMw+C,EAAcz3B,GAAiB9iB,GACrCu6C,EAAYj6B,cAAcI,uBAAyB3kB,EAAExE,MAErDwrC,EAAcwX,IA0FF1wB,QAASA,EAAQnJ,uBACjBkN,QAAS,kBAAMusB,EAAc,0BAA0B,oBE7K1D5wB,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,GACHD,EAAM+qB,WAAa/qB,EAAMgrB,WAAahrB,EAAMirB,YAAYC,QAE3D,OAAO,2BACFJ,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACTL,MAAO,GACP,UAAW,CACTM,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACPR,QAAS,UACT,UAAW,CACTS,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTiwB,SAAU,SACVtwB,MAAO,MAETwB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,iBAETy6B,kBAAmB,SAAC5K,EAAU9qB,GAAX,mBAAC,eACf8qB,GADc,IAEjB/vB,QAAS,WCtDP6zB,GAAU,CACd,CAAEh2B,MAAO,KAAMsD,MAAO,MACtB,CAAEtD,MAAO,SAAUsD,MAAO,UAC1B,CAAEtD,MAAO,eAAgBsD,MAAO,gBAChC,CAAEtD,MAAO,YAAasD,MAAO,aAC7B,CAAEtD,MAAO,WAAYsD,MAAO,YAC5B,CAAEtD,MAAO,aAAcsD,MAAO,cAC9B,CAAEtD,MAAO,iBAAkBsD,MAAO,mBA8BrBvB,yBD5CO,iBAAO,CAC3BgW,UAAW,MC2CEhW,EA3BQ,SAAA2E,GACrB,IAAQrC,EAA+CqC,EAA/CrC,QAASrE,EAAsC0G,EAAtC1G,MAAOsyB,EAA+B5rB,EAA/B4rB,QAAS+D,EAAsB3vB,EAAtB2vB,QAAStyB,EAAa2C,EAAb3C,SAM1C,OACE,qBAAKO,UAAWD,EAAQ0T,UAAxB,SACE,cAAC,KAAD,CACEpP,OAAQqpB,GACRgE,QAASA,GACTh2B,MATW,SAAAA,GACf,OAAOg2B,GAAQ1jB,MAAK,SAAAmgB,GAAM,OAAIA,EAAOzyB,QAAUA,KAQpCuiD,CAASviD,GAChB62B,cAAe,IACfC,cAAe,IACfC,cAAe,OACfzE,QAASA,EACTvuB,SAAUA,EACVsyB,QAASA,SC/BJrE,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,GACHD,EAAM+qB,WAAa/qB,EAAMgrB,WAAahrB,EAAMirB,YAAYC,QAE3D,OAAO,2BACFJ,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACTL,MAAO,GACP,UAAW,CACTM,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACPR,QAAS,WACT,UAAW,CACTS,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTL,MAAO,GACPswB,SAAU,YAEZ9uB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,iBAETy6B,kBAAmB,SAAC5K,EAAU9qB,GAAX,mBAAC,eACf8qB,GADc,IAEjB/vB,QAAS,WCtDP6zB,GAAU,CACd,CAAEh2B,MAAO,MAAOsD,MAAO,OACvB,CAAEtD,MAAO,KAAMsD,MAAO,OA8BTvB,yBDvCO,iBAAO,CAC3BgW,UAAW,MCsCEhW,EA3BW,SAAA2E,GACxB,IAAQrC,EAA+CqC,EAA/CrC,QAASrE,EAAsC0G,EAAtC1G,MAAOsyB,EAA+B5rB,EAA/B4rB,QAAS+D,EAAsB3vB,EAAtB2vB,QAAStyB,EAAa2C,EAAb3C,SAM1C,OACE,qBAAKO,UAAWD,EAAQ0T,UAAxB,SACE,cAAC,KAAD,CACEpP,OAAQqpB,GACRgE,QAASA,GACTh2B,MATW,SAAAA,GACf,OAAOg2B,GAAQ1jB,MAAK,SAAAmgB,GAAM,OAAIA,EAAOzyB,QAAUA,KAQpCuiD,CAASviD,GAChB62B,cAAe,IACfC,cAAe,IACfC,cAAe,OACfzE,QAASA,EACTvuB,SAAUA,EACVsyB,QAASA,SC2HFjtB,OAAM65C,KAAKlhD,sBCzJJ,iBAAO,CAC3BgW,UAAW,CACT5V,QAAS,OACT0H,WAAY,SACZgiB,IAAK,MACL1hB,aAAc,OAEhBk0B,SAAU,CACRz5B,OAAQ,UACRzC,QAAS,QAEXglC,UAAW,CACTxkC,OAAQ,iCACRH,OAAQ,GACR+1B,SAAU,GACVp2B,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhH,aAAc,GACdgC,OAAQ,cDsIc7C,EAnIE,SAAA2E,GAAU,IAAD,MAEjCrC,EAUEqC,EAVFrC,QACA6+C,EASEx8C,EATFw8C,WACApnB,EAQEp1B,EARFo1B,SACA4M,EAOEhiC,EAPFgiC,SACA7e,EAMEnjB,EANFmjB,YACAs5B,EAKEz8C,EALFy8C,oBACAC,EAIE18C,EAJF08C,OACAC,EAGE38C,EAHF28C,MACAC,EAEE58C,EAFF48C,MACA1d,EACEl/B,EADFk/B,SAEF,EAA0B3gC,mBAAS,MAAnC,mBAAO05B,EAAP,KAAca,EAAd,KACA,EAA8Bv6B,mBAAS,CAAE0kB,WAAW,EAAO3pB,OAAO,IAAlE,mBAAOsyB,EAAP,KAAgBiT,EAAhB,KACMQ,EAAe7C,GAAY0C,GAGjC/f,qBAAU,WACR,GAAI+f,GAAYG,GAAgBH,IAAaG,EAAc,CAMzDR,EALgB,CACd5b,WAAW,EACX3pB,OAAO,OAKV,CAAC4lC,IAEJ/f,qBAAU,WACJy9B,GACFH,EAAoB,CAAEnjD,MAAO,MAAOsD,MAAO,UAE5C,CAACggD,IAEJ,IA2BMV,EAAgB,SAACC,EAAOC,GAC5B,IAAMC,EAAcx3B,GAAiB+G,GACrCywB,EAAYF,GAASC,EAErBvd,EAAWwd,IAGb,OACE,sBAAKz+C,UAAS,OAAED,QAAF,IAAEA,OAAF,EAAEA,EAAS0T,UAAzB,UACE,cAAC,GAAD,CACE4mB,MAAOA,KAAS,OAACukB,QAAD,IAACA,GAAD,UAACA,EAAYv5B,iBAAb,aAAC,EAAuBjmB,IACxC1D,MAAK,OAAEkjD,QAAF,IAAEA,GAAF,UAAEA,EAAYv5B,iBAAd,aAAE,EAAuBjmB,GAC9BM,OAAQ,kBAAMw7B,GAAS,IACvBj6B,QAAS,kBAAMi6B,GAAS,IACxBz7B,SAzCwB,SAAAS,GAC5B,IAAM++C,EAAiBh4B,GAAiB23B,GAExCK,EAAe55B,UAAY,CAAEjmB,IAAK,OAADc,QAAC,IAADA,OAAA,EAAAA,EAAGxE,QAAS,KAAM2D,MAAO,OAADa,QAAC,IAADA,OAAA,EAAAA,EAAGlB,QAAS,MAErEolC,EAAS6a,GACT/jB,GAAS,IAoCL57B,UAAU,EACV+E,OAAQ,CAAE/F,aAAc,GAAIF,QAAS,WACrC4+B,eAAgB,CAAE/I,SAAU,IAAKl2B,MAAO,oBACxCwB,YAAa,mBACbwhC,eAAgB,CAAClC,GAASC,GAASC,GAAQC,GAAUC,GAAUC,IAC/D8B,kBAAmB,CAAC,WAAY,WAAY,qBAAsB,wBAClEF,aAAa,EACb/O,QAAS,kBAAMusB,EAAc,aAAa,IAC1CtwB,QAAO,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAS3I,YAGpB,cAAC,GAAD,CACE3pB,MAAK,OAAEkjD,QAAF,IAAEA,OAAF,EAAEA,EAAYt5B,SACnB7lB,SA9CuB,SAAAS,GAC3B,IAAM++C,EAAiBh4B,GAAiB23B,GACxCK,EAAe35B,SAAWplB,EAAExE,MAExB,CAAC,aAAc,kBAAkBwS,SAAjC,OAA0C0wC,QAA1C,IAA0CA,OAA1C,EAA0CA,EAAYt5B,YACxD25B,EAAevjD,MAAQ,MAGzB0oC,EAAS6a,OAyCL,CAAC,aAAc,kBAAkB/wC,SAAjC,OAA0C0wC,QAA1C,IAA0CA,OAA1C,EAA0CA,EAAYt5B,WACtD,cAAC,GAAD,CACE6V,YAAW,OAAEyjB,QAAF,IAAEA,GAAF,UAAEA,EAAYv5B,iBAAd,aAAE,EAAuBjmB,GACpC1D,MAAK,OAAEkjD,QAAF,IAAEA,OAAF,EAAEA,EAAYljD,MACnB6D,YAAa,QACby9B,eAAgB,CACd1+B,aAAc,GACdJ,OAAQ,IAEV6E,MAAOirB,EAAQtyB,SAAS,OAACkjD,QAAD,IAACA,OAAD,EAACA,EAAYljD,OACrCuhC,UAAW,CAAE58B,IAAK,IAClBkM,MAAO,CAAE0nB,SAAU,GAAIl2B,MAAO,oBAC9B0B,SAlD2B,SAAAS,GACjC,IAAM++C,EAAiBh4B,GAAiB23B,GACxCK,EAAevjD,MAAQwE,EAAEsC,OAAO9G,OAASwE,EAAEsC,OAAOghC,UAElDY,EAAS6a,IA+CHv/C,OAAQ,kBAAM4+C,EAAc,SAAS,MAIxCQ,EACC,qBAAK9+C,UAAS,OAAED,QAAF,IAAEA,OAAF,EAAEA,EAAS8iC,UAAW5hC,QAAS89C,EAA7C,SACE,cAAC,GAAD,MAGF,cAAC,GAAD,CAAmBrjD,MAAO6pB,EAAa9lB,SAAUo/C,KAGjDG,GACA,qBAAKh/C,UAAS,OAAED,QAAF,IAAEA,OAAF,EAAEA,EAASg6B,SAAU94B,QAASu2B,EAA5C,SACE,cAAC,GAAD,aE9IG0nB,GAAa,WACxB,MAAO,uCAAuCn2C,QAAQ,SAAS,SAASo2C,GACtE,IAAItrC,EAAqB,GAAhBkL,KAAK2d,SAAiB,EAE/B,OADW,KAALyiB,EAAWtrC,EAAS,EAAJA,EAAW,GACxBoD,SAAS,QCiHPnS,OAAM65C,KAAKlhD,sBCrHJ,iBAAO,CAC3BgW,UAAW,CACTnV,aAAc,GACdD,OAAQ,oBACRN,MAAO,OACP8H,aAAc,IAEhByY,OAAQ,CACNlgB,QAAS,OACTQ,MAAO,sBACPi9B,aAAc,oBACdh9B,SAAU,GACVhB,QAAS,OACTyH,eAAgB,gBAChBC,WAAY,UAEd6xC,aAAc,CACZx4C,MAAO,uBACPC,SAAU,GACVyB,OAAQ,WAEVsG,KAAM,CACJxI,QAAS,IAEXY,MAAO,CACLH,SAAU,GACVD,MAAO,UACPT,OAAQ,eACR,SAAU,CACRS,MAAO,WDwFanB,EA1GH,SAAA2E,GAAU,IAAD,EACtBrC,EACNqC,EADMrC,QAASy3B,EACfp1B,EADeo1B,SAAU4nB,EACzBh9C,EADyBg9C,UAAWC,EACpCj9C,EADoCi9C,gBAAiB/d,EACrDl/B,EADqDk/B,SAEvD,EAA8B3gC,mBAAS,CAAE6kB,YAAY,IAArD,mBAAOwI,EAAP,KAAgBiT,EAAhB,KACMQ,EAAe7C,GAAY0C,GAGjC/f,qBAAU,WACR,GAAI+f,GAAYG,GAAgBH,IAAaG,EAAc,CAKzDR,EAJgB,CACdzb,YAAY,OAKf,CAAC8b,IAEJ,IAqBMge,EAA0B,SAAAp/C,GAC9B,IAAMq/C,EAAgBt4B,GAAiBm4B,GACvCG,EAAch6B,YAAcrlB,EAAExE,MAE9B2jD,EAAgBE,IAGZC,EAAsB,WAC1B,IAAMD,EAAgBt4B,GAAiBm4B,GACvCG,EAAcn6B,YAAYnf,KAAK,CAC7Bof,UAAW,KACXC,SAAU,KACV5pB,MAAO,GACP0D,GAAI8/C,OAGNG,EAAgBE,IAUlB,OACE,sBAAKv/C,UAAWD,EAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,EAAQue,OAAxB,UACE,mDACA,sBAAMte,UAAWD,EAAQq3C,aAAcn2C,QAASu2B,EAAhD,uBAIF,sBAAKx3B,UAAWD,EAAQ6G,KAAxB,iBACGw4C,QADH,IACGA,GADH,UACGA,EAAWh6B,mBADd,aACG,EAAwBvP,KAAI,SAAC+oC,EAAY9pC,GAAb,eAC3B,cAAC,GAAD,CAEE8pC,WAAYA,EACZE,QAAiB,OAATM,QAAS,IAATA,GAAA,UAAAA,EAAWh6B,mBAAX,eAAwBnjB,UAAW6S,EAAQ,EACnDkqC,MAA0C,KAA1B,OAATI,QAAS,IAATA,GAAA,UAAAA,EAAWh6B,mBAAX,eAAwBnjB,QAC/BsjB,YAAW,OAAE65B,QAAF,IAAEA,OAAF,EAAEA,EAAW75B,YACxBs5B,oBAAqBS,EACrB9nB,SAAU,kBAzDW,SAAA1iB,GAC7B,IAAMyqC,EAAgBt4B,GAAiBm4B,GACvCG,EAAcn6B,YAAYuR,OAAO7hB,EAAO,GAExCuqC,EAAgBE,GAqDQE,CAAuB3qC,IACvCsvB,SAAU,SAAAwa,GAAU,OAnDC,SAACA,EAAY9pC,GAC1C,IAAMyqC,EAAgBt4B,GAAiBm4B,GACvCG,EAAcn6B,YAAYtQ,GAAS8pC,EAEnCS,EAAgBE,GA+CgBG,CAAuBd,EAAY9pC,IAC3DiqC,MAAOS,EACPle,SAAUA,GATLsd,EAAWx/C,OAYpB,sBAAKY,UAAWD,EAAQ25B,UAAxB,UACE,oBAAG15B,UAAWD,EAAQf,MAAtB,yBACc,wCAEd,cAAC,GAAD,CACEtD,MAAK,OAAE0jD,QAAF,IAAEA,OAAF,EAAEA,EAAW55B,WAClB/lB,SA5EqB,SAAAS,GAC7B,IAAMq/C,EAAgBt4B,GAAiBm4B,GACvCG,EAAc/5B,WAAatlB,EAAExE,MAE7B2jD,EAAgBE,IAyERvxB,QAASA,EAAQxI,WACjBuM,QAAS,kBAtCG,SAACwsB,EAAOC,GAC5B,IAAMC,EAAcx3B,GAAiB+G,GACrCywB,EAAYF,GAASC,EAErBvd,EAAWwd,GAkCYH,CAAc,cAAc,mBEoExCx5C,OAAM65C,KAAKlhD,sBC9KJ,iBAAO,CAC3BgW,UAAW,CACTnV,aAAc,GACdD,OAAQ,oBACRN,MAAO,OACP8H,aAAc,GACdjI,SAAU,WACVq2B,SAAU,IACV,UAAW,CACT,MAAO,CACLp2B,QAAS,WAIfygB,OAAQ,CACNlgB,QAAS,sBACTU,WAAY,IACZF,MAAO,sBACPi9B,aAAc,oBACdh+B,QAAS,OACT0H,WAAY,SACZD,eAAgB,iBAElBgxC,eAAgB,CACdp3C,MAAO,OACPmB,IAAK,QACLzC,SAAU,WACVC,QAAS,OACT+D,WAAY,iBAEd20C,WAAY,CACVj1C,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,GACRN,SAAU,WACVsB,OAAQ,GACRrB,QAAS,SAEX+I,KAAM,CACJxI,QAAS,IAEXY,MAAO,CACLH,SAAU,GACVD,MAAO,UACPiH,aAAc,EACd,SAAU,CACRjH,MAAO,QAGX86B,UAAW,CACTqC,UAAW,oBACX4jB,WAAY,GACZ/5C,UAAW,ODwHWnI,EA1IJ,SAAA2E,GAAU,IAAD,MACrBrC,EAAwDqC,EAAxDrC,QAASy3B,EAA+Cp1B,EAA/Co1B,SAAU0P,EAAqC9kC,EAArC8kC,cAAe/iC,EAAsB/B,EAAtB+B,QAASm9B,EAAal/B,EAAbk/B,SACnD,EAAsD3gC,mBAxBd,SAAAqkB,GAAwB,IAAD,EAC/D,MAAO,CACLE,gBAAiBF,EAAoBE,gBACrCD,gBAAe,OAAED,QAAF,IAAEA,GAAF,UAAEA,EAAqBC,uBAAvB,aAAE,EAAsCpP,KAAI,SAAAupC,GACzD,MAAO,CACLhgD,GAAIggD,EAAUhgD,IAAM8/C,KACpB35B,YAAa65B,EAAU75B,YACvBC,WAAY45B,EAAU55B,WACtBo6B,SAAUR,EAAUQ,SACpBx6B,YAAag6B,EAAUh6B,YAAYvP,KAAI,SAAA+oC,GACrC,MAAO,CACLx/C,GAAIw/C,EAAWx/C,IAAM8/C,KACrB75B,UAAWu5B,EAAWv5B,UACtBC,SAAUs5B,EAAWt5B,SACrB5pB,MAAOkjD,EAAWljD,eAW1BmkD,CAAkC17C,EAAQ6gB,sBAD5C,mBAAOA,EAAP,KAA4B86B,EAA5B,KAGA,EAA8Bn/C,mBAAS,CAAEukB,iBAAiB,IAA1D,mBAAO8I,EAAP,KAAgBiT,EAAhB,KACMQ,EAAe7C,GAAY0C,GAC3Bye,KAAqB,OAAC/6B,QAAD,IAACA,GAAD,UAACA,EAAqBC,uBAAtB,aAAC,EAAsChjB,QAGlEsf,qBAAU,WACR,GAAI+f,GAAYG,GAAgBH,IAAaG,EAAc,CAKzDR,EAJgB,CACd/b,iBAAiB,OAKpB,CAACoc,IAEJ,IAQM0e,EAA0B,WAAO,IAAD,EAC9BtB,EAAcz3B,GAAiB9iB,GAC/B87C,EAAoBh5B,GAAiB9B,IAC3C86B,EAAkB7gD,GAAK8/C,KACvBe,EAAkBL,SAAWM,KAEzB,OAACxB,QAAD,IAACA,GAAD,UAACA,EAAa15B,2BAAd,aAAC,EAAkCC,mBACrCy5B,EAAY15B,oBAAoBC,gBAAkB,IAGpDy5B,EAAY15B,oBAAoBC,gBAAgBhf,KAAKg6C,GACrDH,EAAuB,eAAKpB,EAAY15B,sBACxCkiB,EAAcwX,IAgCVwB,EAAiB,WAAO,IAAD,QAC3B,OAAc,OAAP/7C,QAAO,IAAPA,GAAA,UAAAA,EAAS6gB,2BAAT,mBAA8BC,uBAA9B,eAA+ChjB,SAC3C,OAAPkC,QAAO,IAAPA,GAAA,UAAAA,EAAS6gB,2BAAT,mBAA8BC,uBAA9B,eAA+CvF,QAAO,SAACygC,EAAM3+B,GAAP,OACrD2+B,EAAKP,SAAWp+B,EAAQo+B,SAAWO,EAAO3+B,KAC3Co+B,UAAW,EACX,GAGAQ,GAA2BL,GAC/B,cAAC,GAAD,CACEl+C,MAAM,sBACNZ,QAAS++C,EACT37C,OAAQ,CAAEhG,OAAQ,OAAQD,QAAS,MAAOL,MAAO,OAIrD,OACE,cAAC,GAAD,CACE8D,MAAO,iBACPoc,YAEE,qHAEFuZ,SAAUA,EACVsmB,aAAcsC,EAPhB,SAQE,sBAAKpgD,UAAWD,EAAQ6G,KAAxB,iBACGoe,QADH,IACGA,GADH,UACGA,EAAqBC,uBADxB,iBACG,EACGjQ,MAjCQ,SAACC,EAAGlB,GACpB,OAAIkB,EAAE2qC,SAAW7rC,EAAE6rC,UAAkB,EACjC3qC,EAAE2qC,SAAW7rC,EAAE6rC,SAAiB,EAC7B,YA4BL,aACG,EAEG/pC,KAAI,SAACupC,EAAWtqC,GAAZ,OACJ,cAAC,GAAD,CAEEsqC,UAAWA,EACXC,gBAAiB,SAAAD,GAAS,OArDR,SAACA,EAAWtqC,GACxC,IAAM4pC,EAAcz3B,GAAiB9iB,GACrCu6C,EAAY15B,oBAAoBC,gBAAgBnQ,GAASsqC,EAEzDU,EAAuB,eAAKpB,EAAY15B,sBACxCkiB,EAAcwX,GAiDF2B,CAAsBjB,EAAWtqC,IAEnC0iB,SAAU,kBAhEQ,SAAA1iB,GAC5B,IAAM4pC,EAAcz3B,GAAiB9iB,GACrCu6C,EAAY15B,oBAAoBC,gBAAgB0R,OAAO7hB,EAAO,GAE9DgrC,EAAuB,eAAKpB,EAAY15B,sBACxCkiB,EAAcwX,GA2DY4B,CAAsBxrC,IACtCwsB,SAAUA,GANL8d,EAAUhgD,OASpB2gD,GACC,cAAC,GAAD,CACEl+C,MAAM,sBACNZ,QAAS++C,EACT37C,OAAQ,CAAEhG,OAAQ,OAAQD,QAAS,MAAOL,MAAO,OAGrD,sBAAKiC,UAAW+/C,GAAqBhgD,EAAQ25B,UAA7C,UACE,oBAAG15B,UAAWD,EAAQf,MAAtB,8BACmB,wCAEnB,cAAC,GAAD,CACEtD,MAAK,OAAEspB,QAAF,IAAEA,OAAF,EAAEA,EAAqBE,gBAC5BzlB,SAxG0B,SAAAS,GAClC,IAAMw+C,EAAcz3B,GAAiB9iB,GACrCu6C,EAAY15B,oBAAoBE,gBAAkBhlB,EAAExE,MAEpDokD,EAAuB,eAAKpB,EAAY15B,sBACxCkiB,EAAcwX,IAoGN1wB,QAASA,EAAQ9I,gBACjB6M,QAAS,kBAnEG,SAACwsB,EAAOC,GAC5B,IAAMC,EAAcx3B,GAAiB+G,GACrCywB,EAAYF,GAASC,EAErBvd,EAAWwd,GA+DYH,CAAc,mBAAmB,kBE9G/CiC,GAAe,CAC1BjsC,QAAS,CACP1V,MAAO,Y,qBCtDE4hD,GACQ,CACjBp8B,SAAU,GACVC,OAAQ,GCyJG5mB,yBF5JO,iBAAO,CAC3BgW,UAAW,CACT1V,MAAO,IACPO,aAAc,GACdD,OAAQ,oBACRO,MAAO,UACPhB,SAAU,YAEZ0gB,OAAQ,CACNlgB,QAAS,GACTy9B,aAAc,oBACd/8B,WAAY,KAEd8H,KAAM,CACJxI,QAAS,eAEXqiD,aAAc,CACZ5iD,QAAS,OACT0H,WAAY,SACZD,eAAgB,iBAElBu9B,UAAW,CACTjkC,MAAO,UACP0B,OAAQ,UACRsF,UAAW,GAEb86C,SAAU,CACRviD,OAAQ,QACRP,SAAU,WACV,UAAW,CACT,MAAO,CACLC,QAAS,WAIf8iD,qBAAsB,CACpB/iD,SAAU,WACV0C,OAAQ,UACRD,IAAK,EACLnB,OAAQ,GACRwG,OAAQ,EACR7H,QAAS,OACTK,OAAQ,OACRmwB,SAAU,UAEZ,UAAW,CACT,sBAAuB,CACrB5oB,KAAM,QE6GGhI,EA/IK,SAAA2E,GAClB,IAAQrC,EAA8CqC,EAA9CrC,QAASoE,EAAqC/B,EAArC+B,QAAS+iC,EAA4B9kC,EAA5B8kC,cAAe1P,EAAap1B,EAAbo1B,SAEnCopB,EAAqBz8C,EAAQ+f,eAAeI,sBAC9CngB,EAAQ+f,eAAeC,YAAYtW,QAAO,SAAAvB,GAAO,OAAuB,IAAnBA,EAAQ+X,UAC7DlgB,EAAQ+f,eAAeC,YAuBrB08B,EAAoB,SAAC3gD,EAAGmkB,GAC5B,IAAIy8B,EAAc,aAAO38C,EAAQ+f,eAAeC,aAEhD28B,EAAiBA,EAAejrC,KAAI,SAAA6D,GAElC,OADIA,EAAK2K,SAAWA,IAAQ3K,EAAKkQ,OAAS1pB,EAAExE,OACrCge,KAGTvV,EAAQ+f,eAAeC,YAAc28B,EACrC5Z,EAAc/iC,IAkChB,OACE,sBAAKnE,UAAWD,EAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,EAAQue,OAAxB,4BAEE,cAAC,GAAD,CACEN,UAAU,iCACVC,YAAY,kEAIhB,sBAAKje,UAAWD,EAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,EAAQ0gD,aAAxB,UACE,sDAEE,cAAC,GAAD,CACEziC,UAAU,+BACVC,YAzFZ,+GA4FQ,cAAC,KAAD,CACEle,QAASwgD,GACT3hD,MAAM,UACNusB,KAAK,QACL7W,QAASnQ,EAAQ+f,eAAeI,sBAChC7kB,SAxFW,SAAAS,GACnB,IAAM6gD,EAAoBrsC,OAAOsC,OAAO,GAAIwpC,IACxCM,EAAc,aAAO38C,EAAQ+f,eAAeC,aAE5CjkB,EAAEsC,OAAO8R,QACXwsC,EAAc,CAAIC,GAAJ,oBAA0BD,IAExCA,EAAeE,QAGjBF,EAAiBA,EAAejrC,KAAI,SAAC6D,EAAM5E,GAEzC,OADA4E,EAAK2K,OAASvP,EACP4E,KAGTvV,EAAQ+f,eAAeC,YAAc28B,EACrC38C,EAAQ+f,eAAeI,sBAAwBpkB,EAAEsC,OAAO8R,QAExD4yB,EAAc/iC,SA0ETA,EAAQ+f,eAAeI,uBACtB,cAAC,GAAD,CACE5oB,MAAOyI,EAAQ+f,eAAeC,YAAY,GAAGyF,OAC7CnqB,SAAU,SAAAS,GAAC,OAAI2gD,EAAkB3gD,EAAG,MAGxC,+CAEG0gD,EAAmB/qC,KAAI,SAAAvJ,GAAO,OAC7B,sBAAKtM,UAAWD,EAAQ2gD,SAAxB,UACGv8C,EAAQ+f,eAAeC,YAAYliB,OAAS,GAC3C,mBACEjC,UAAWD,EAAQ4gD,qBACnB1/C,QAAS,kBAxDM,SAAAojB,GAC7B,IAAIy8B,EAAc,aAAO38C,EAAQ+f,eAAeC,aAEhD28B,EAAiBA,EACdjzC,QAAO,SAAA6L,GAAI,OAAIA,EAAK2K,SAAWA,KAC/BxO,KAAI,SAAC6D,EAAM5E,GAEV,OADA4E,EAAK2K,OAASvP,EACP4E,KAGXvV,EAAQ+f,eAAeC,YAAc28B,EAErC5Z,EAAc/iC,GA4Ce88C,CAAuB30C,EAAQ+X,SAFhD,SAGE,qBACElf,IAAI,8BACJC,IAAI,SACJlH,OAAO,SAKb,cAAC,GAAD,CACExC,MAAO4Q,EAAQsd,OACfnqB,SAAU,SAAAS,GAAC,OAAI2gD,EAAkB3gD,EAAGoM,EAAQ+X,aAfT/X,EAAQ+X,cAqBlDlgB,EAAQ+f,eAAeC,YAAYliB,OAAS,IAC3C,qBAAKjC,UAAWD,EAAQ8iC,UAAW5hC,QA1Ff,WAC1B,IAAMy9C,EAAcz3B,GAAiB9iB,GAEjC28C,EAAc,aAAO38C,EAAQ+f,eAAeC,aAC1C+8B,EAAgB,CACpB98B,SAAU,GACVC,OAAQy8B,EAAe7+C,OAAS,GAGlC6+C,EAAc,uBAAOA,GAAP,CAAuBI,IAErCxC,EAAYx6B,eAAeC,YAAc28B,EAEzC5Z,EAAcwX,IA6ER,kCAMJ,qBAAK1+C,UAAU,UAAUiB,QAASu2B,EAAlC,SACE,qBAAKryB,IAAI,8BAA8BC,IAAI,mB,qBClJtCsoB,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,GACHD,EAAM+qB,WAAa/qB,EAAMgrB,WAAahrB,EAAMirB,YAAYC,QAE3D,OAAO,2BACFJ,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACTL,MAAO,IACP,UAAW,CACTM,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACPR,QAAS,WACT,UAAW,CACTS,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTL,MAAO,IACPswB,SAAU,YAEZ9uB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,kBCxCL2zB,GAD+B,CAAC,OAAQ,MAAO,MAAO,UACtB7b,KAAI,SAAC8kC,GAAD,MAAU,CAAEj/C,MAAOi/C,EAAK37C,MAAO27C,MA6B1Dl9C,yBD9CO,iBAAO,CAC3BgW,UAAW,MC6CEhW,EA3B4B,SAAC,GAKrC,IAJL/B,EAII,EAJJA,MACAsyB,EAGI,EAHJA,QACA+D,EAEI,EAFJA,QACAtyB,EACI,EADJA,SAMA,OACE,8BACE,cAAC,KAAD,CACE4E,OAAQqpB,GACRgE,QAASA,GACTh2B,MATW,SAACA,GAChB,OAAOg2B,GAAQ1jB,MAAK,SAAAmgB,GAAM,OAAIA,EAAOzyB,QAAUA,KAQpCuiD,CAASviD,GAChB62B,cAAe,IACfC,cAAe,IACfC,cAAe,OACfzE,QAASA,EACTvuB,SAAUA,EACVsyB,QAASA,S,gCCmBFovB,GA/CqB,SAAC,GAK9B,IAJLzlD,EAII,EAJJA,MACA6D,EAGI,EAHJA,YACAD,EAEI,EAFJA,SACAG,EACI,EADJA,SAEM6hC,EAAWC,qBAAWC,IAE5B,EAA8B7gC,oBAAS,GAAvC,mBAAOqtB,EAAP,KAAgBiT,EAAhB,KACA,EAA8BtgC,oBAAS,GAAvC,mBAAOw4C,EAAP,KAAgBC,EAAhB,KACM3X,EAAe7C,GAAY0C,GAEjC/f,qBAAU,WACJ+f,GAAYG,GAAgBH,IAAaG,GAC3CR,GAAW,KAEZ,CAACK,IAEJ/f,qBAAU,WACR0f,GAAW,KACV,CAAC3hC,IAYJ,OACE,uBACEU,UAAWD,KAAQ9B,MACnBsB,YAAaA,EACb7D,MAAOA,EACP+D,SAfiB,SAAAS,GACnB+gC,GAAW,GACXxhC,EAASS,EAAEsC,OAAO9G,QAchB6Q,MAAO,CACLlO,OAAQiB,GAAY0uB,IAAYtyB,IAAUy9C,GAAW,iBAEvDpnB,QAdgB,WAClBqnB,GAAW,GACXnY,GAAW,IAaTvhC,OAAQ,kBAAM05C,GAAW,O,qBCNhBgI,GApCsB,SAAC,GAAoC,IAAlC9iC,EAAiC,EAAjCA,OAAQ7e,EAAyB,EAAzBA,SAAU+3B,EAAe,EAAfA,SAClD6pB,EAAatgD,mBAAQ,iCAAYud,KAAW,CAACA,IAYnD,OACE,sBAAKte,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CACElU,YAAa,MACbE,SAdkB,SAAA/D,GACtB2lD,EAAW5lD,IAAMC,EACjB+D,EAAS4hD,IAaL3lD,MAAO4iB,EAAO7iB,IACd6D,WAAYgf,EAAO5iB,QAGrB,cAAC,GAAD,CACE6D,YAAa,QACbE,SAhBoB,SAAA/D,GACxB2lD,EAAW3lD,MAAQA,EACnB+D,EAAS4hD,IAeL3lD,MAAO4iB,EAAO5iB,MACd4D,WAAYgf,EAAO7iB,MAGrB,sBAAMuE,UAAS,OAAED,WAAF,IAAEA,UAAF,EAAEA,KAASg6B,SAAU94B,QAASu2B,EAA7C,SACE,cAAC,GAAD,U,qBCqBO8pB,GAhD+B,SAAC,GAKxC,IAJL/C,EAII,EAJJA,MACAzpC,EAGI,EAHJA,MACArV,EAEI,EAFJA,SACA+3B,EACI,EADJA,SAEA,EAA0B72B,mBAAS,MAAnC,mBAAO05B,EAAP,KAAca,EAAd,KACMmmB,EAAoCtgD,mBAAQ,iCAAYw9C,KAAU,CAACA,IAOnEgD,EAAoB,SAAArhD,GACxBmhD,EAAW5lD,IAAX,OAAiByE,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAGlB,MACpBS,EAAS4hD,IAGX,OACE,sBAAKrhD,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CACE4mB,MAAOA,IAAUvlB,KAAS,OAACypC,QAAD,IAACA,OAAD,EAACA,EAAO9iD,KAClCC,MAAK,OAAE6iD,QAAF,IAAEA,OAAF,EAAEA,EAAO9iD,IACdgE,SAAU,SAAAS,GAAC,OAAIqhD,EAAkBrhD,IACjCR,OAAQ,kBAAMw7B,GAAS,IACvBj6B,QAAS,kBAAMi6B,EAASpmB,IACxBxV,WAAYi/C,EAAM7iD,MAClBqlC,eAAgB,CAAClC,GAASC,IAC1BgC,aAAa,EACbE,kBAAmB,CAAC,YACpBzhC,YAAa,0BAGf,cAAC,GAAD,CACEA,YAAa,kBACbE,SA3BkB,SAAA/D,GACtB2lD,EAAW3lD,MAAQA,EACnB+D,EAAS4hD,IA0BL3lD,MAAO6iD,EAAM7iD,MACb4D,WAAYi/C,EAAM9iD,MAGpB,sBAAMuE,UAAS,OAAED,WAAF,IAAEA,UAAF,EAAEA,KAASg6B,SAAU94B,QAASu2B,EAA7C,SACE,cAAC,GAAD,U,qBCcOgqB,GArDuB,SAAC,GAAoC,IAAlCpjB,EAAiC,EAAjCA,MAAO3+B,EAA0B,EAA1BA,SAAUgiD,EAAgB,EAAhBA,UAClDC,EAAY3gD,mBAAQ,kBAAMkmB,GAAiBmX,KAAQ,CAACA,IAOpDujB,EAAmB,SAAC76B,EAAMhS,GAC9B4sC,EAAU5sC,GAASgS,EACnBrnB,EAASiiD,IAGLE,EAAmB,SAAA9sC,GACvB4sC,EAAU/qB,OAAO7hB,EAAO,GACxBrV,EAASiiD,IAGX,OACE,sBAAK1hD,UAAWD,KAAQ0T,UAAxB,YACK2qB,EAAMn8B,QACP,sBAAKjC,UAAWD,KAAQqgB,OAAxB,UACE,+BAAOqhC,EAAY,MAAQ,iBAC3B,+BAAOA,EAAY,QAAU,iBAGhCrjB,EAAMvoB,KAAI,SAACiR,EAAMhS,GAAP,OACR2sC,EACC,cAAC,GAAD,CACEnjC,OAAQwI,EAERrnB,SAAU,SAAAqnB,GAAI,OAAI66B,EAAiB76B,EAAMhS,IACzC0iB,SAAU,kBAAMoqB,EAAiB9sC,KAF5BgS,EAAK1nB,IAKZ,cAAC,GAAD,CAEEm/C,MAAOz3B,EACPrnB,SAAU,SAAAqnB,GAAI,OAAI66B,EAAiB76B,EAAMhS,IACzC0iB,SAAU,kBAAMoqB,EAAiB9sC,IACjCA,MAAOA,GAJFgS,EAAK1nB,OAShB,sBAAKY,UAAWD,KAAQ8iC,UAAW5hC,QA1CjB,WACpBygD,EAAUz7C,KAAK,CAAExK,IAAK,GAAIC,MAAO,GAAI0D,GAAI8/C,OACzCz/C,EAASiiD,IAwCP,UACE,cAAC,GAAD,IACCD,EAAY,iBAAmB,sB,qBChDzBI,GAdI,WACjB,OACE,sBACEhyC,MAAM,6BACN3R,OAAO,OACPyR,QAAQ,YACR5R,MAAM,OACN6R,KAAK,UALP,UAME,sBAAMI,EAAE,kBAAkBJ,KAAK,SAC/B,sBAAMI,EAAE,mGCKC8xC,GAdW,WACxB,OACE,sBACEjyC,MAAM,6BACN3R,OAAO,OACPyR,QAAQ,YACR5R,MAAM,OACN6R,KAAK,UALP,UAME,sBAAMI,EAAE,kBAAkBJ,KAAK,SAC/B,sBAAMI,EAAE,8JCQC+xC,GATsB,SAAC,GAAgC,IAA9BtiD,EAA6B,EAA7BA,SAAUoC,EAAmB,EAAnBA,MAAOnG,EAAY,EAAZA,MACvD,OACE,sBAAKsE,UAAWD,KAAQqB,OAAQH,QAASxB,EAAzC,UACG/D,EAAQ,cAAC,GAAD,IAAwB,cAAC,GAAD,IAChCmG,M,qBCkBQmgD,GAlBkB,SAAC,GAA2D,IAAzDt8B,EAAwD,EAAxDA,YAAa9e,EAA2C,EAA3CA,KAAMkyC,EAAqC,EAArCA,YAAar5C,EAAwB,EAAxBA,SAAUwiD,EAAc,EAAdA,QAC5E,OACE,qBAAKjiD,UAAWD,KAAQ0T,UAAxB,SACE,cAAC,GAAD,CACElU,YAAY,uBACZE,SAAUA,EACV/D,MAAOkL,GAAQ,GACfkyC,YAAaA,EACbz0C,OAAQ,CACNnG,OAAQ,IACRW,SAAU,IAEZm6C,YAAa,cAAC,GAAD,CAAav5C,SAAUwiD,EAASpgD,MAAO,qBAAsBnG,MAAOgqB,S,+DCN1Ew8B,GAdwB,SAAC,GAAiB,IAAfv+C,EAAc,EAAdA,QACxC,OACE,qBAAK3D,UAAWD,KAAQ4D,QAAxB,SACG+Q,OAAO+B,QAAQ9S,GAASkS,KAAI,WAAef,GAAf,uBAAErZ,EAAF,KAAOC,EAAP,YAC3B,sBAAiBsE,UAAWD,KAAQue,OAApC,UACE,+BAAO7iB,IACP,sCACA,+BAAOC,EAAM,OAHLoZ,SCOZ0wB,GAAkB,CAAC,mBAAoB,gBAAiB,kBAAmB,gBA2DlE2c,GAzDsB,SAAC,GAAc,IAAD,QAAXpsC,EAAW,EAAXA,KACtC,EAAsCpV,mBAAS,oBAA/C,mBAAOyhD,EAAP,KAAoBC,EAApB,KACMC,EAAkC,QAAxBvsC,EAAKiG,QAAQ7Y,OAOvBo/C,EAAkBxhD,mBAAQ,WAC9B,OAAQgV,EAAKtS,SAAS++C,gBAAgBvrC,WAAW,IACjD,IAAK,IACH,MvM9BoB,UuM+BtB,IAAK,IACH,MvM/BwB,UuMgC1B,IAAK,IACH,MvMhCkB,UuMiCpB,IAAK,IACH,MvMjCyB,UuMkC3B,QACE,MvMlCuB,auMoCxB,CAAClB,EAAKtS,SAAS++C,kBAElB,OACE,sBAAKxiD,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQ0iD,WAAYl2C,MAAO,CAAE3N,MAAO2jD,GAApD,UACGxsC,EAAKtS,SAAS++C,gBADjB,IACmCzsC,EAAKtS,SAASg/C,cAEjD,sBAAKziD,UAAWD,KAAQ6G,KAAxB,UACE,qBAAK5G,UAAWD,KAAQylC,KAAxB,SACGA,GAAK3vB,KAAI,SAAC8vB,EAAK7wB,GAAN,OACR,qBAEE9U,UAAWoiD,IAAgBzc,EAAM5lC,KAAQ2iD,UAAY3iD,KAAQ4lC,IAC7Dp5B,MAAO,CACL3N,MAAO0jD,GAAW3c,IAAQH,GAAK,IAAM,aAEvCvkC,QAAS,kBAlCG,SAAC0kC,GACnB2c,GAAW3c,IAAQH,GAAK,IAC5B6c,EAAe1c,GAgCUgd,CAAgBhd,IANjC,SAOGA,GANI7wB,QAUX,sBAAK9U,UAAWD,KAAQ9B,MAAxB,UACGmkD,IAAgB5c,GAAK,IAAM,cAAC,GAAD,CAAgB7hC,QAAO,OAAEoS,QAAF,IAAEA,GAAF,UAAEA,EAAMtS,gBAAR,aAAE,EAAgBE,UAEpEy+C,IAAgB5c,GAAK,IAAM,cAAC,KAAD,CAAYpmC,GAAG,cAAc2W,KAAI,OAAEA,QAAF,IAAEA,GAAF,UAAEA,EAAMtS,gBAAR,aAAE,EAAgBmD,OAE9Ew7C,IAAgB5c,GAAK,IAAM,cAAC,GAAD,CAAgB7hC,QAAO,OAAEoS,QAAF,IAAEA,GAAF,UAAEA,EAAMiG,eAAR,aAAE,EAAerY,UAEnEy+C,IAAgB5c,GAAK,IAAM,cAAC,KAAD,CAAYpmC,GAAG,cAAc2W,KAAI,OAAEA,QAAF,IAAEA,GAAF,UAAEA,EAAMiG,eAAR,aAAE,EAAepV,iB,qBClE3Eg8C,GAAiB,SAAAn7B,GAC5B,IAAMo7B,EAAW57B,GAAiBQ,GAqBlC,OAnBA,OAAIo7B,QAAJ,IAAIA,OAAJ,EAAIA,EAAUj7B,YACZi7B,EAASj7B,SAAWi7B,EAASj7B,SAAS/R,KAAI,SAAA1R,GACxC,GAAIA,EAAQhI,OAAS0mB,GAA2B,CAC9C,IAAQmC,EAAwB7gB,EAAxB6gB,oBAEJ7gB,EAAQ6gB,sBACV7gB,EAAQ6gB,oBAAsB89B,GAAyB99B,IAS3D,OALI7gB,EAAQhI,OAAS4mB,IACf5e,EAAQshB,UACVthB,EAAQshB,QAAUs9B,GAAc5+C,EAAQshB,UAGrCthB,MAIJ0+C,GAGIE,GAAgB,SAAAt9B,GAC3B,MAAgEwB,GAAiBxB,GAAzEC,EAAR,EAAQA,YAAa9e,EAArB,EAAqBA,KAAMjD,EAA3B,EAA2BA,QAASR,EAApC,EAAoCA,OAAQ8L,EAA5C,EAA4CA,IAAKuV,EAAjD,EAAiDA,WAE3Cw+B,EAAc,CAClBt9B,cACA9e,OACAzD,SACA8L,OAGIg0C,EAAgB,OAAGz+B,QAAH,IAAGA,OAAH,EAAGA,EACrB3W,QAAO,SAAAq1C,GAAG,OAAIA,EAAIznD,OACnBikB,QAAO,SAACkC,EAAKshC,GAAN,mBAAC,eAAmBthC,GAApB,mBAA0BshC,EAAIznD,IAAMynD,EAAIxnD,UAAU,IAEtDynD,EAAa,OAAGx/C,QAAH,IAAGA,OAAH,EAAGA,EAASkK,QAAO,SAAAq1C,GAAG,OAAIA,EAAIznD,OAAKikB,QAAO,SAACkC,EAAKshC,GAAN,mBAAC,eAAmBthC,GAApB,mBAA0BshC,EAAIznD,IAAMynD,EAAIxnD,UAAU,IAU/G,OARIunD,IAAqBzuC,GAAcyuC,KACrCD,EAAYx+B,WAAay+B,GAGvBE,IAAkB3uC,GAAc2uC,KAClCH,EAAYr/C,QAAUw/C,GAGjBH,GAGHF,GAA2B,SAAA99B,GAC/B,IAAQE,EAAqCF,EAArCE,gBAAiBD,EAAoBD,EAApBC,gBAEzB,MAAO,CACLC,kBACAD,gBAAe,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAiBpP,IAAIutC,MAIpCA,GAAmB,SAAAhE,GACvB,IAAQ75B,EAAmD65B,EAAnD75B,YAAaC,EAAsC45B,EAAtC55B,WAAYo6B,EAA0BR,EAA1BQ,SAAUx6B,EAAgBg6B,EAAhBh6B,YAE3C,MAAO,CACLG,cACAC,aACAo6B,WACAx6B,YAAW,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAavP,IAAIwtC,MAI5BA,GAA6B,SAAAzE,GAGjC,MAAO,CACLv5B,UAHqCu5B,EAA/Bv5B,UAINC,SAJqCs5B,EAApBt5B,SAKjB5pB,MALqCkjD,EAAVljD,QCzElBgyB,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,GACHD,EAAM+qB,WAAa/qB,EAAMgrB,WAAahrB,EAAMirB,YAAYC,QAE3D,OAAO,2BACFJ,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACT,UAAW,CACTC,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACP,UAAW,CACTC,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTiwB,SAAU,YAEZ9uB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,kBC1BJ,SAASulD,GAAwB51C,GAAqC,IAA9B61C,EAA6B,uDAAhB,GAC1D,OAAOrgD,MAAM,GAAD,OACP/F,EADO,6BACsBuQ,EADtB,uBAC0C61C,GACpD,CACEngD,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBACL4H,GAAW,2DAIV,SAASw3C,GAA0B91C,GAAqC,IAA9B61C,EAA6B,uDAAhB,GAC5D,OAAOrgD,MAAM,GAAD,OAAI/F,EAAJ,yBAA6BuQ,EAA7B,uBAAiD61C,GAAc,CACzEngD,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBACL4H,GAAW,2DAIV,SAASy3C,GACd/1C,GAGC,IAFD61C,EAEA,uDAFa,GAGb,OAAOrgD,MAAM,GAAD,OACP/F,EADO,4BACqBuQ,EADrB,uBACyC61C,GACnD,CACEngD,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBACL4H,GAAW,2DAIV,SAAS03C,GAAmBh2C,GAAqC,IAA9B61C,EAA6B,uDAAhB,GAAIlwC,EAAY,uDAAH,EAClE,OAAOnQ,MAAM,GAAD,OACP/F,EADO,4BACqBuQ,EADrB,uBACyC61C,EADzC,iBC3EoB,GD2EpB,mBACyFlwC,GACnG,CACEjQ,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBACL4H,GAAW,2DAIV,SAAS23C,GAAkBj2C,GAAqC,IAA9B61C,EAA6B,uDAAhB,GAAIlwC,EAAY,uDAAH,EACjE,OAAOnQ,MAAM,GAAD,OACP/F,EADO,2BACoBuQ,EADpB,uBACwC61C,EADxC,iBC1FoB,GD0FpB,mBACwFlwC,GAClG,CACEjQ,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBACL4H,GAAW,2D,gDAiBV,WAA2B0B,GAA3B,gBAAAuH,EAAA,+EAEoB/R,MAAM,GAAD,OACvB/F,EADuB,qBACFuQ,EADE,0BAE1B,CACEtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU,MARtB,cAEGrD,EAFH,gBAYU8H,GAA8B9H,GAZxC,wEAcHuI,GAAW,wDAdR,0D,sBE5GP,IAyCevO,yBHlDO,iBAAO,CAC3BgW,UAAW,MGiDEhW,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGe8G,EAzCd,SAAAjT,GAClB,IAAQ1G,EAA+B0G,EAA/B1G,MAAO+D,EAAwB2C,EAAxB3C,SAAU8O,EAAcnM,EAAdmM,UACzB,EAA8B5N,mBAAS,IAAvC,mBAAO+wB,EAAP,KAAgBM,EAAhB,KAEAzQ,qBAAU,YFwGL,SAAP,oCEvGIqiC,CAAYr1C,EAAUnP,IAAIoE,MAAK,SAAAC,GAC7B,IAAMogD,EAAiBpgD,EAASqgD,MAAMjuC,KAAI,SAAA5S,GAAI,MAAK,CACjDjE,MAAOiE,EAAK7D,GACZ1D,MAAOuH,EAAK7D,OAEd4yB,EAAW6xB,QAEZ,IAMH,OACE,cAAC,KAAD,CACEE,cAAY,EACZ1/C,OAAQqpB,GACRgE,QAASA,EACTh2B,MATa,SAAAA,GACf,OAAOg2B,EAAQ1jB,MAAK,SAAAmgB,GAAM,OAAIA,EAAOzyB,QAAUA,KAQtCuiD,CAASviD,GAChB62B,cAAe,IACfC,cAAe,IACfC,cAAe,OACfhzB,SAAUA,EACVF,YAAa,uBC6BJykD,GAnD4B,SAAC,GAA8B,IAA5Bv+B,EAA2B,EAA3BA,QAASw+B,EAAkB,EAAlBA,YACrD,EAA8BtjD,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KACA,EAA4BxjD,mBAAS,MAArC,mBAAOqpB,EAAP,KAAeo6B,EAAf,KAEMC,EAAiB,yCAAG,iCAAApvC,EAAA,0DAClBqvC,EAAmBvB,GAAct9B,IAEjBxW,IAHE,uBAItBjD,GAAW,qBAJW,iCAQxBm4C,GAAW,GARa,SAUDp6B,GAAeu6B,EAAkBt6B,GAVhC,QAYxB,QAFMvmB,EAVkB,cAYxB,IAAIA,OAAJ,EAAIA,EAAUsS,MACZkuC,EAAYxgD,EAASsS,MAErB/J,IAAmB,OAARvI,QAAQ,IAARA,GAAA,UAAAA,EAAUV,aAAV,eAAiBoB,UAAW,wBAGzCggD,GAAW,GAlBa,4CAAH,qDAqBvB,OACE,qBAAKnkD,UAAWD,KAAQ0T,UAAxB,SACGywC,EACC,cAAC,EAAD,CAAah/C,YAAY,IAEzB,qCACE,qBAAKC,IAAI,+BAA+BC,IAAI,YAC5C,sBAAKpF,UAAWD,KAAQpC,eAAxB,UACE,qBAAKqC,UAAWD,KAAQ25B,UAAxB,SACE,cAAC,GAAD,CACEh+B,MAAOsuB,EACPvqB,SAAU,SAAA/D,GAAK,OAAI0oD,EAAU1oD,EAAMA,YAGvC,cAAC,GAAD,CACEmG,MAAM,mBACNZ,QAASojD,EACTzkD,UAAWoqB,a,qBCpCnBwb,GAAkB,CAAC,UAAW,OAAQ,WAAY,oBAiHzC+e,GA/GsB,SAAC,GAK/B,IAJLjC,EAII,EAJJA,QACAxJ,EAGI,EAHJA,YACA30C,EAEI,EAFJA,QACA+iC,EACI,EADJA,cAEA,EAAsCvmC,mBAAS6kC,GAAK,IAApD,mBAAO4c,EAAP,KAAoBC,EAApB,KACA,EAAgC1hD,mBAAS,MAAzC,mBAAO8C,EAAP,KAAiBwgD,EAAjB,KACMO,EAAc5lB,aAAYz6B,GAC1Bu6C,EAAc39C,mBAAQ,kBAAMkmB,GAAiB9iB,KAAU,CAACA,IAE9Dod,qBAAU,WACJ1a,KAAKC,UAAU09C,KAAiB39C,KAAKC,UAAU3C,IACjD8/C,EAAY,QAEb,CAAC9/C,IAEJod,qBAAU,WACJ+gC,GAAWF,IAAgB5c,GAAK,IAClC6c,EAAe7c,GAAK,MAErB,CAAC8c,IAgCJ,OACE,sBAAKtiD,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAxB,UACE,qBAAKte,UAAWD,KAAQylC,KAAxB,SACGA,GAAK3vB,KAAI,SAAC8vB,EAAK7wB,GAAN,OACR,qBAEE9U,UAAWoiD,IAAgBzc,EAAM5lC,KAAQ2iD,UAAY3iD,KAAQ4lC,IAC7Dp5B,MAAO,CAAE3N,MAAO0jD,GAAW3c,IAAQH,GAAK,IAAM,aAC9CvkC,QAAS,kBAnBG,SAAC0kC,GACnB2c,GAAW3c,IAAQH,GAAK,IAC5B6c,EAAe1c,GAiBUgd,CAAgBhd,IAJjC,SAKGA,GAJI7wB,QAQX,qBAAK9U,UAAWD,KAAQqB,OAAQH,QAnBV,WAC1BgjD,EAAY,MACZ5B,EAAe7c,GAAK,KAiBhB,iCAKD4c,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CACE/lC,SAnDoB,SAACkE,GAC3B+6C,EAAYj5B,QAAQ9hB,QAAUA,EAC9BujC,EAAcwX,IAkDRtgB,MAAOj6B,EAAQshB,QAAQ9hB,QACvB89C,WAAW,IAIdW,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CACE5+B,KAAMzC,EAAQshB,QAAQ7e,KACtB8e,YAAavhB,EAAQshB,QAAQC,YAC7BozB,YAAaA,EACbr5C,SApDiB,SAACmH,GACxB83C,EAAYj5B,QAAQ7e,KAAOA,EAC3BsgC,EAAcwX,IAmDRuD,QAhDe,WACrBvD,EAAYj5B,QAAQC,aAAeg5B,EAAYj5B,QAAQC,YACvDwhB,EAAcwX,MAkDX0D,IAAgB5c,GAAK,KACnB/hC,EACC,cAAC,GAAD,CAAasS,KAAMtS,IAEnB,cAAC,GAAD,CACEgiB,QAASthB,EAAQshB,QACjBw+B,YAAaA,KAIlB7B,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CACE/lC,SA1EuB,SAAC+kB,GAC9Bk6B,EAAYj5B,QAAQjB,WAAaA,EACjC0iB,EAAcwX,IAyERtgB,MAAOj6B,EAAQshB,QAAQjB,WACvBi9B,WAAW,QC3DNgD,GAlDkB,SAAC,GAAiE,IAA/DnjB,EAA8D,EAA9DA,SAAUwX,EAAoD,EAApDA,YAAa30C,EAAuC,EAAvCA,QAASqzB,EAA8B,EAA9BA,SAAU0P,EAAoB,EAApBA,cACtEwX,EAAc39C,mBAAQ,kBAAMkmB,GAAiB9iB,KAAU,CAACA,IACxDm+C,EAAmBvhD,mBAAQ,WAG/B,MAFgD,CAAC,MAAO,UAE9BmN,SAAS/J,EAAQshB,QAAQtiB,UAClD,CAACgB,EAAQshB,QAAQtiB,SAYpB,OACE,cAAC,GAAD,CAAiBtB,MAAO,WAAYoc,YAAa,GAAIuZ,SAAUA,EAA/D,SACE,sBAAKx3B,UAAWD,KAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,KAAQ2kD,WAAxB,UACE,gCACE,mBAAG1kD,UAAWD,KAAQf,MAAtB,0BACA,cAAC,GAAD,CAAmBtD,MAAOyI,EAAQshB,QAAQtiB,OAAQ6qB,SAAS,EAAOvuB,SAX5C,SAAC/D,GAC/BgjD,EAAYj5B,QAAQtiB,OAASzH,EAAMA,MACnCwrC,EAAcwX,SAYR,sBAAK1+C,UAAWD,KAAQ25B,UAAxB,UACE,mBAAG15B,UAAWD,KAAQf,MAAtB,yBACA,cAAC,GAAD,CACEO,YAAY,uCACZE,SAvBmB,SAAC/D,GAC9BgjD,EAAYj5B,QAAQxW,IAAMvT,EAC1BwrC,EAAcwX,IAsBJhjD,MAAOyI,EAAQshB,QAAQxW,KAAO,GAC9B6pC,YAAaA,EACbC,YAAY,EACZzX,SAAUA,EACVhiC,UAAU,EACV+E,OAAQ,CACNnG,OAAQ,YAMhB,cAAC,GAAD,CAAaokD,QAASA,EAASn+C,QAASA,EAAS+iC,cAAeA,EAAe4R,YAAaA,UCnCvFtX,GAAkB18B,IAAM6/C,gBA+GtBlnD,yBvH1IO,iBAAO,CAC3BgW,UAAW,MuHyIEhW,EA7GM,SAAA2E,GACnB,IAAQ+B,EAA6E/B,EAA7E+B,QAAS6wB,EAAoE5yB,EAApE4yB,IAAKlgB,EAA+D1S,EAA/D0S,MAAOoyB,EAAwD9kC,EAAxD8kC,cAAe0d,EAAyCxiD,EAAzCwiD,cAAe9L,EAA0B12C,EAA1B02C,YAAaxX,EAAal/B,EAAbk/B,SACxE,OACE,eAACE,GAAgBqjB,SAAjB,CAA0BnpD,MAAO4lC,EAAjC,UACGn9B,EAAQkf,OACP,cAAC,GAAD,CACElf,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9B6wB,IAAKA,EACL8jB,YAAaA,IAGM,MAAtB30C,EAAQmf,aACsB,aAA5Bnf,EAAQmf,WAAWnnB,KAClB,cAAC,GAAD,CACEgI,QAASA,EACT6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9B20C,YAAaA,IAGf,cAAC,GAAD,CACE30C,QAASA,EACT6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,OAGjB,MAAlBA,EAAQu4B,QAAkBv4B,EAAQhI,OAASwmB,IAC1C,cAAC,GAAD,CACExe,QAASA,EACT6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9B20C,YAAaA,IAGE,MAAlB30C,EAAQu4B,QAAmC,eAAjBv4B,EAAQhI,MACjC,cAAC2oD,GAAD,CACE3gD,QAASA,EACT6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,MAGP,eAAnB,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAAS0f,eACR,cAAC,GAAD,CACE1f,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,MAGjCA,EAAQhI,OAASsmB,IAChB,cAAC,GAAD,CACEte,QAASA,EACT6wB,IAAKA,EACLkS,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,MAGjCA,EAAQhI,OAASumB,IAChB,cAAC,GAAD,CACEve,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,MAGjCA,EAAQhI,OAASymB,IAChB,cAAC,GAAD,CACEze,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9Bm9B,SAAUA,IAGbn9B,EAAQhI,OAAS0mB,IAChB,cAAC,GAAD,CACE1e,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9Bm9B,SAAUA,IAGbn9B,EAAQhI,OAAS2mB,IAChB,cAAC,GAAD,CACE3e,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9Bm9B,SAAUA,IAGbn9B,EAAQhI,OAAS4mB,IAChB,cAAC,GAAD,CACE5e,QAASA,EACT+iC,cAAe,SAAA/iC,GAAO,OAAI+iC,EAAc/iC,EAAS2Q,IACjD0iB,SAAU,kBAAMotB,EAAczgD,IAC9B20C,YAAaA,EACbxX,SAAUA,UC9HPyjB,GAAuB,SAACnG,GAAgC,IAAD,EAClE,QACE,OAACA,QAAD,IAACA,GAAD,UAACA,EAAYv5B,iBAAb,aAAC,EAAuBjmB,QACZ,OAAVw/C,QAAU,IAAVA,OAAA,EAAAA,EAAYljD,QAAS,CAAC,aAAc,kBAAkBwS,SAAjC,OAA0C0wC,QAA1C,IAA0CA,OAA1C,EAA0CA,EAAYt5B,YCmH3E0/B,G,kDAuBJ,WAAY5iD,GAAQ,IAAD,8BACjB,cAAMA,IAvBRiH,aAAe,SAAAC,GACb,IAAMme,EAAI,eAAQ,EAAK3kB,MAAM2kB,MAC7BA,EAAKpoB,KAAOiK,EAAM9G,OAAO9G,MACzB,EAAK4G,SAAS,CACZmlB,KAAMA,KAkBS,EAfnB2C,WAAa,WACN,EAAKtnB,MAAM2kB,KAAKsvB,aACnB,EAAKz0C,SAAS,CAAEuJ,MAAM,KAaP,EAVnBwe,YAAc,WACR,EAAKvnB,MAAMmiD,UAAU,EAAK3iD,SAAS,CAAEuJ,MAAM,KAS9B,EAPnBq5C,uBAAyB,WACvB,EAAK5iD,SAAS,CAAE6iD,SAAS,KAMR,EAJnBC,wBAA0B,WACxB,EAAK9iD,SAAS,CAAE6iD,SAAS,KAGR,EA0BnBE,mBAAqB,WACf,EAAKC,sBACP5oD,OAAO6oD,eAAiB,kBAAM,GAE9B7oD,OAAO6oD,oBAAiB/zB,GA9BT,EAkCnBg0B,mBAAqB,WACnBztB,GAAgB,EAAK31B,MAAMmM,UAAUnP,IAClCoE,MAAK,SAAAw0B,GACJ,GAAIA,EAAaC,gBAAiB,CAChC,IAAQA,EAAqCD,EAArCC,gBAAiBC,EAAoBF,EAApBE,gBACnBnH,EAAiB,CACrB/xB,MAAOi5B,EAAgBiB,SACvBx9B,MAAOu8B,EAAgBnI,UACvBkF,IAAKiD,EAAgBmB,OAGjBC,EAAkBnB,EAAgBriB,KAAI,SAAA9G,GAC1C,MAAO,CACL/P,MAAO+P,EAASmqB,SAChBx9B,MAAOqT,EAAS+gB,UAChBkF,IAAKjmB,EAASqqB,UAQlB,OAJA,EAAK92B,SAAS,CACZ+2B,gBAAiBA,EACjBL,uBAAwBjI,IAEnBA,MAGVvtB,MAAK,SAAAutB,GACJyK,GAAc,EAAKp5B,MAAM0I,MAAMC,OAAO2C,MAAOqjB,EAAer1B,WA7D/C,EA4InB+pD,qBAAuB,SAAAthD,GAAY,IAAD,EAC1BpB,EAAK,OAAGoB,QAAH,IAAGA,GAAH,UAAGA,EAASkf,aAAZ,aAAG,EAAgB0E,MAAK,SAAArO,GAAI,OAAI5X,EAAc4X,MAIzD,OAHI3W,GACFiJ,GAAW,qCAELjJ,GAjJS,EAoJnB2iD,qBAAuB,SAAAvhD,GAAY,IAAD,EAC1BpB,EAAK,OAAGoB,QAAH,IAAGA,GAAH,UAAGA,EAASqgB,kBAAZ,aAAG,EAAqBuD,MAAK,SAAArO,GAAI,aAAI5X,EAAa,OAAC4X,QAAD,IAACA,GAAD,UAACA,EAAMta,UAAP,aAAC,EAAU6X,eAIxE,OAHIlU,GACFiJ,GAAW,qCAELjJ,GAzJS,EA4JnB4iD,sBAAwB,SAAAxhD,GAAY,IAAD,YAC3BpB,GACH,EAAK6iD,iBAAiBzhD,MACvB,OAACA,QAAD,IAACA,GAAD,UAACA,EAASsgB,qBAAV,aAAC,EAAwBC,eACzB,OAACvgB,QAAD,IAACA,GAAD,UAACA,EAASsgB,qBAAV,aAAC,EAAwBG,4BACe,UAAhC,OAAPzgB,QAAO,IAAPA,GAAA,UAAAA,EAASsgB,qBAAT,eAAwBC,eAAyB,OAACvgB,QAAD,IAACA,GAAD,UAACA,EAASsgB,qBAAV,aAAC,EAAwBI,yBACnC,YAAhC,OAAP1gB,QAAO,IAAPA,GAAA,UAAAA,EAASsgB,qBAAT,eAAwBC,eAA2B,OAACvgB,QAAD,IAACA,GAAD,UAACA,EAASsgB,qBAAV,aAAC,EAAwBE,uBAI/E,OAHI5hB,GACF,EAAK8iD,iBAAiB1hD,EAAS,oBAEzBpB,GAtKS,EAyKnB+iD,gBAAkB,SAAA3hD,GAAY,IAAD,MACrBpB,IACJ,OAACoB,QAAD,IAACA,GAAD,UAACA,EAASshB,eAAV,aAAC,EAAkBxW,MACnB,EAAK82C,qBAAL,OAA0B5hD,QAA1B,IAA0BA,GAA1B,UAA0BA,EAASshB,eAAnC,aAA0B,EAAkBjB,aAC5C,EAAKuhC,qBAAL,OAA0B5hD,QAA1B,IAA0BA,GAA1B,UAA0BA,EAASshB,eAAnC,aAA0B,EAAkB9hB,SAI9C,OAHIZ,GACFiJ,GAAW,qCAELjJ,GAjLS,EAoLnBgjD,qBAAuB,SAAA3nB,GACrB,OAAOA,EAAMrW,MAAK,SAAAjB,GAChB,OAAQA,EAAKrrB,MAAQqrB,EAAKprB,OAAWorB,EAAKprB,QAAUorB,EAAKrrB,QAtL1C,EA0LnBuqD,sBAAwB,SAAA7hD,GAAY,IAAD,MAC3BpB,GACH,EAAK6iD,iBAAiBzhD,MACvB,OAACA,QAAD,IAACA,GAAD,UAACA,EAAS6gB,2BAAV,aAAC,EAA8BE,mBAD/B,OAEA/gB,QAFA,IAEAA,GAFA,UAEAA,EAAS6gB,2BAFT,iBAEA,EAA8BC,uBAF9B,aAEA,EAA+C8C,MAAK,SAAAq3B,GAClD,QACE,OAACA,QAAD,IAACA,OAAD,EAACA,EAAW55B,aACZ45B,EAAUh6B,YAAY2C,KAAKg9B,QAMjC,OAHIhiD,GACF,EAAK8iD,iBAAiB1hD,EAAS,mBAEzBpB,GAvMS,EA0MnBkjD,uBAAyB,SAAA9hD,GAAY,IAAD,MAOvB,EANLpB,GACH,EAAK6iD,iBAAiBzhD,IACwB,KAA/C,UAAAA,EAAQ+f,sBAAR,eAAwBC,YAAYliB,UADpC,UAEAkC,EAAQ+f,sBAFR,iBAEA,EAAwBC,mBAFxB,aAEA,EAAqC4D,MAAK,SAAAm+B,GACxC,YAA6B10B,IAAtB00B,EAAWt8B,WAElB7mB,IAC6C,KAA/C,UAAAoB,EAAQ+f,sBAAR,eAAwBC,YAAYliB,QAChC+J,GAAW,wCACX,EAAK65C,iBAAiB1hD,EAAS,oBAErC,OAAQpB,GAtNS,EAyNnBojD,gBAAkB,SAAAxiC,GAChB,QAAO,OAACA,QAAD,IAACA,OAAD,EAACA,EAASoE,KAAK,EAAKq+B,qBA1NV,EA6NnBC,gBAAkB,SAAAC,GAChB,IAAM/hB,EAAU,OAAG+hB,QAAH,IAAGA,OAAH,EAAGA,EAASv+B,MAAK,SAAAw+B,GAAM,OAAKA,EAAO1kD,SAC7C2kD,EAAY,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAASv+B,MAAK,SAAAw+B,GAAM,OAAKA,EAAOhjC,WAC/CkjC,EAAe,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAASv+B,KAAK,EAAKq+B,mBAU3C,OARI7hB,GACFv4B,GAAW,yCAGTw6C,GACFx6C,GAAW,6CAGLu4B,IAAeiiB,IAAiBC,GA1OvB,EA4PnBL,kBAAoB,SAAAt/B,GAAS,IAAD,EAC1B,UAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAMtC,kBAAV,aAAI,EAAkBuD,MAAK,SAAA1C,GAAS,OAAKA,EAAUjmB,MAEjD,OADA4M,GAAW,qCACJ,GA/PQ,EA0SnB44C,cAAgB,SAAAzgD,GACd,IAAMwjB,EAAO,eAAQ,EAAK7kB,MAAM2kB,MAChCE,EAAQC,SAAS+O,OAAOhP,EAAQC,SAAShsB,QAAQuI,GAAU,GAC3D,EAAK7B,SAAS,CAAEmlB,KAAME,KA7SL,EAgTnBuf,cAAgB,SAAC/iC,EAAS2Q,GACxB,IAAM6S,EAAO,eAAQ,EAAK7kB,MAAM2kB,MAChCE,EAAQC,SAAS9S,GAAS3Q,EAC1B,EAAK7B,SAAS,CACZmlB,KAAME,KApTS,EAkZnB+C,kBAAoB,WAClB,QAAmC8G,IAA/B,EAAK1uB,MAAM2kB,KAAKjC,YAA2D,OAA/B,EAAK1iB,MAAM2kB,KAAKjC,WAAqB,CACnF,IAAMmC,EAAO,eAAQ,EAAK7kB,MAAM2kB,MAChCE,EAAQxD,YAActd,KAAK6B,MAAM7B,KAAKC,UAAUmd,GAA2BE,cAC3EwD,EAAQrD,sBAAwBL,GAA2BK,sBAC3D,EAAKhiB,SAAS,CACZmlB,KAAME,SAGR3b,GAAW,mFA3ZI,EAsanBib,iBAAmB,SAAAC,GACjB,IAAIxrB,EAAOD,EACX,GAAwB,kBAAbyrB,GAAsC,OAAbA,EAClC,OAAOA,EAGT,IAAMC,EAAYC,MAAMC,QAAQH,GAAY,GAAK,GACjD,IAAKzrB,KAAOyrB,EACVxrB,EAAQwrB,EAASzrB,GAEjB0rB,EAAU1rB,GAAwB,kBAAVC,GAAgC,OAAVA,EAAiB,EAAKurB,iBAAiBvrB,GAASA,EAGhG,OAAOyrB,GAnbU,EA8bnBu/B,uBAAyB,SAAAC,GACvB,EAAKrkD,SACH,CACE02B,uBAAwB2tB,IAE1B,WACEh9B,GAAQ,EAAKvnB,MAAM0I,MAAMC,OAAO6e,OAAQ,EAAK9mB,MAAMk2B,uBAAuBt9B,OAAO,SAAA+rB,GAC/E,EAAKnlB,SAAS,CAAEmlB,KAAM5gB,KAAK6B,MAAM7B,KAAKC,UAAU2gB,MAChD+M,GAAS,EAAKpyB,MAAM0I,MAAMC,OAAO2C,cAtctB,EA4cnBk5C,WAAa,WACX,EAAKtkD,SACH,CACEg/B,SAAU,IAAI2U,OAEhB,kBAAM,EAAK4Q,eAjdI,EAqdnBn/B,WAAa,SAAAD,GACX,EAAKnlB,SAAS,CAAEmlB,UApdhB,EAAKqxB,YAAch0C,IAAMgiD,YACzB,EAAKhkD,MAAQ,CACX+I,MAAM,EACNo5C,UAAU,EACV5lD,KAAM,GACN8lD,SAAS,EACT9rB,gBAAiB,GACjBiI,SAAU,IAAI2U,KACdjd,uBAAwB,CACtBt9B,MAAO,KACPsD,MAAO,UACPg2B,KAAK,IAbQ,E,qDAkBnB,WAAqB,IAAD,OAClBrL,GAAQhuB,KAAKyG,MAAM0I,MAAMC,OAAO6e,OAAQjuB,KAAKmH,MAAMk2B,uBAAuBt9B,OAAO,SAAA+rB,GAC/E,EAAKnlB,SAAS,CAAEmlB,KAAM5gB,KAAK6B,MAAM7B,KAAKC,UAAU2gB,MAChD+M,GAAS,EAAKpyB,MAAM0I,MAAMC,OAAO2C,OACjC,EAAK83C,mBAAmB,EAAKpjD,MAAM0I,MAAMC,OAAO2C,Y,8BA2CpD,SAAiB3L,GACf,IAAM0lB,EAAI,eAAQ9rB,KAAKmH,MAAM2kB,MAC7BA,EAAKpoB,KAAO0C,EACZpG,KAAK2G,SAAS,CACZmlB,KAAMA,IAEH9rB,KAAKyG,MAAMqlB,KAAKpoB,OAAS0C,GAAQpG,KAAKorD,eAAe74C,SAASnM,IAA0B,KAAhBA,EAAKC,OAChFrG,KAAK2G,SAAS,CAAE2iD,UAAU,IAE1BtpD,KAAK2G,SAAS,CAAE2iD,UAAU,M,0BAI9B,WACE,IAAM+B,EAAQ,GASd,OARIrrD,KAAKyG,MAAM6mB,OACbttB,KAAKyG,MAAM6mB,MAAMjT,SAAQ,SAAAoT,GACT,MAAdA,EAAKiJ,OACHjJ,EAAKiJ,MAAMrc,SAAQ,SAAAyR,GACjBu/B,EAAM/gD,KAAKwhB,EAAKpoB,YAIjB2nD,I,8BAGT,WACE,IAAIpsB,GAAU,EAEd,IAAKj/B,KAAKmH,MAAM2kB,KAAKG,SAAU,OAAOgT,EAHrB,qBAKKj/B,KAAKmH,MAAM2kB,KAAKG,UALrB,IAKjB,2BAAgD,CAAC,IAAD,IAArCzjB,EAAqC,QAC9C,OAAQA,EAAQhI,MAChB,KAAKwmB,GACHiY,EAAUj/B,KAAK8pD,qBAAqBthD,GACpC,MAEF,KAAKue,GACHkY,EAAUj/B,KAAK+pD,qBAAqBvhD,GACpC,MAEF,KAAKye,GACHgY,EAAUj/B,KAAKgqD,sBAAsBxhD,GACrC,MAEF,KAAK4e,GACH6X,EAAUj/B,KAAKmqD,gBAAgB3hD,GAC/B,MAEF,KAAK0e,GACH+X,EAAUj/B,KAAKqqD,sBAAsB7hD,GACrC,MAEF,KAAK2e,GACH8X,EAAUj/B,KAAKsqD,uBAAuB9hD,GAaxC,GARIy2B,IAAO,OAAIz2B,QAAJ,IAAIA,GAAJ,UAAIA,EAASwf,eAAb,aAAI,EAAkB1hB,UAC/B24B,EAAUj/B,KAAKwqD,gBAAgBhiD,EAAQwf,UAGrCiX,IAAO,OAAIz2B,QAAJ,IAAIA,GAAJ,UAAIA,EAAS8iC,qBAAb,aAAI,EAAwBhlC,UACrC24B,EAAUj/B,KAAK0qD,gBAAgBliD,EAAQ8iC,iBAGpCrM,EACH,OAAOA,GA1CM,8BA8CjB,OAAOA,I,8BAoGT,SAAiBz2B,EAAS8iD,GACnBtrD,KAAKiqD,iBAAiBzhD,GAMzB6H,GAAW,oCALXA,GACE,UAAGi7C,EAAH,+CACE,uD,8BAOR,SAAiB9iD,GACf,OAAOxI,KAAKmH,MAAM2kB,KAAKG,SAAShsB,QAAQuI,KAAaxI,KAAKmH,MAAM2kB,KAAKG,SAAS3lB,OAAS,I,sBAUzF,WAAY,IAAD,WACLilD,EAAOvrD,KAAKwrD,mBAEZxrD,KAAKmH,MAAM2kB,KAAKtD,aAAexoB,KAAKmH,MAAM2kB,KAAKtD,YAAY4D,MAAK,SAAAm+B,GAAU,OAAKA,EAAW9hC,cAC5FpY,GAAW,qCACXk7C,GAAO,IAIP,UAAAvrD,KAAKmH,MAAM2kB,KAAKG,gBAAhB,eAA0B3lB,UAA1B,UACAtG,KAAKmH,MAAM2kB,KAAKG,gBADhB,aACA,EAA0B4U,OAAM,SAAAr4B,GAAO,OAAIA,EAAQhI,OAASumB,SAE5D1W,GAAW,yDACXk7C,GAAO,GAGTA,G,2CACEL,CACEjE,GAAejnD,KAAKmH,MAAM2kB,MAC1B9rB,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxB/R,KAAKmH,MAAMk2B,uBAAuBt9B,OAClC,SAAA+rB,GACE,EAAKnlB,SAAS,CAAEmlB,KAAM5gB,KAAK6B,MAAM7B,KAAKC,UAAU2gB,W,4BA+BxD,SAAejC,GACb,IAAMmC,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAChCE,EAAQnC,WAAaA,EACrB7pB,KAAK2G,SAAS,CACZmlB,KAAME,M,wBAIV,SAAWK,GACT,IAAML,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAChCE,EAAQK,KAAOA,EACfrsB,KAAK2G,SAAS,CACZmlB,KAAME,M,uBAIV,SAAUy/B,GACR,IAAMC,EAAWD,EAAW,EACtB3/B,EAAO5gB,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKmH,MAAM2kB,OAClDA,EAAKG,SAAS0/B,KAAKF,EAAUC,GAC7B1rD,KAAK2G,SAAS,CACZmlB,KAAMA,M,0BAIV,SAAa2/B,GACX,IAAMC,EAAWD,EAAW,EACtB3/B,EAAO5gB,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKmH,MAAM2kB,OAClDA,EAAKG,SAAS0/B,KAAKF,EAAUC,GAC7B1rD,KAAK2G,SAAS,CACZmlB,KAAMA,M,8BAIV,SAAiBtjB,GACf,IAAMwjB,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAC3BE,EAAQC,WAAUD,EAAQC,SAAW,IAC1CzjB,EAAO,OAAa0jB,OACpBF,EAAQC,SAAS3hB,KAAKY,KAAK6B,MAAM7B,KAAKC,UAAU3C,KAChDxI,KAAK2G,SAAS,CACZmlB,KAAME,M,6BAIV,WACE,IAAMA,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAEhC,GADKE,EAAQC,WAAUD,EAAQC,SAAW,KACrCD,EAAQC,SAASG,MAAK,SAAA5jB,GAAO,OAAIA,EAAQhI,OAASumB,MAAqB,CAC1E,IAAMU,EAAa6D,GAAiB1C,IACpCnB,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAKY,KAAK6B,MAAM7B,KAAKC,UAAUsc,KAChDznB,KAAK2G,SAAS,CACZmlB,KAAME,O,8BAKZ,WACE,IAAMA,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAEhC,GADKE,EAAQC,WAAUD,EAAQC,SAAW,KACrCD,EAAQC,SAASG,MAAK,SAAA5jB,GAAO,OAAIA,EAAQhI,OAASymB,MAAuB,CAC5E,IAAMQ,EAAa6D,GAAiBxC,IACpCrB,EAAU,OAAayE,OACvBF,EAAQC,SAAS3hB,KAAKY,KAAK6B,MAAM7B,KAAKC,UAAUsc,KAChDznB,KAAK2G,SAAS,CACZmlB,KAAME,O,yBAKZ,WACE,GAAKhsB,KAAKmH,MAAM2kB,KAAKtD,YAOnBnY,GAAW,sFAPqB,CAChC,IAAM2b,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAChCE,EAAQnC,WAAa,GACrB7pB,KAAK2G,SAAS,CACZmlB,KAAME,O,qBAOZ,WACE,IAAMA,EAAO,eAAQhsB,KAAKmH,MAAM2kB,MAChCE,EAAQK,KAAO,GACfrsB,KAAK2G,SAAS,CACZmlB,KAAME,M,iCAiBV,WACE,IAAM4/B,EAAY3E,GAAejnD,KAAKsrB,iBAAiBtrB,KAAKyG,MAAMqlB,OAC5D+/B,EAAY5E,GAAejnD,KAAKsrB,iBAAiBtrB,KAAKmH,MAAM2kB,OAElE,OAAO5gB,KAAKC,UAAUygD,KAAe1gD,KAAKC,UAAU0gD,K,8BAmBtD,SAAiB//B,GACf,GAAKA,GAASA,EAAKG,SAInB,OAHAH,EAAKG,SAAS5R,SAAQ,SAAAyxC,UACbA,EAAIpkC,SAENoE,I,oBA8BT,WAAU,IAAD,aACC1nB,EAAYpE,KAAKyG,MAAjBrC,QACAi1B,EAAQr5B,KAAKmH,MAAMk2B,uBAAnBhE,IACF0yB,EAAc/rD,KAAKmH,MAAMmiD,SAAiC,oBAAtB,oBAE1C,OACE,qBAAKjlD,UAAWD,EAAQsmB,KAAM9Z,MAAO,CAAErO,OAAQ,OAAQN,SAAU,QAASG,MAAO,OAAjF,SACGpC,KAAKmH,MAAM2kB,MACV,qCACE,cAACkgC,GAAA,EAAD,CACEC,KAAMjsD,KAAK2pD,sBACXnhD,QAAQ,kFAEV,gCACE,sBAAKnE,UAAWD,EAAQ8nD,YAAxB,UACE,qBACEt7C,MAAO,CACL/L,UAAW,GACX3C,QAAS,OACT0H,WAAY,SACZD,eAAgB,iBALpB,SAOG3J,KAAKmH,MAAM+I,KACV,qBACE7L,UAAWD,EAAQk1B,YACnB1oB,MAAO,CACL1O,QAAS,QACTQ,OAAQqpD,GAJZ,SAME,uBACE1nD,UAAWD,EAAQ9B,MACnB48B,WAAS,EACTn7B,OAAQ,kBAAM,EAAK2qB,eACnB3uB,MAAOC,KAAKmH,MAAM2kB,KAAKpoB,KACvBm/B,QAAS7iC,KAAKmsD,gBACdroD,SAAU,SAAA6J,GAAK,OAAI,EAAK2tC,iBAAiB3tC,EAAM9G,OAAO9G,YAI1D,mBACE6Q,MAAO,CACLzN,WAAY,IACZuC,WAAY,OACZxC,SAAU,GACVD,MAAO,WAETqC,QAAS,kBAAM,EAAKmpB,cAPtB,SAQGzuB,KAAKmH,MAAM2kB,KAAKpoB,SAIvB,sBAAKW,UAAWD,EAAQgoD,wBAAxB,UACE,qBAAKx7C,MAAO,CAAExO,MAAO,QAAS2a,YAAa,QAA3C,SACE,cAAC,KAAD,CACEgZ,QAAS/1B,KAAKmH,MAAMu2B,gBACpB39B,MAAOC,KAAKmH,MAAMk2B,uBAClBv5B,SAAU9D,KAAK+qD,2BAInB,cAAC,KAAD,CACE9mD,UAAWjE,KAAKmH,MAAMmiD,SACtBjlD,UAAWD,EAAQ+9C,aACnB78C,QAAS,kBAAM,EAAK2lD,cAHtB,qBAQF,cAAC,KAAD,CACE,kBAAgB,qBAChB,mBAAiB,2BACjB/6C,KAAMlQ,KAAKmH,MAAMqiD,QACjBn/B,QAASrqB,KAAKypD,wBAJhB,SAKE,cAAC,GAAD,CACEx7B,OAAQjuB,KAAKmH,MAAM2kB,KAAKroB,GACxBglB,SAAUzoB,KAAKmH,MAAM2kB,KAAKpoB,KAC1B2oD,aAAcrsD,KAAKypD,+BAIzB,sBACEplD,UAAWD,EAAQ0T,UACnBlH,MAAO,CAAEqZ,UAAW,SAAU6F,UAAW,UACzC1J,IAAKpmB,KAAKm9C,YAHZ,oBAIGn9C,KAAKmH,aAJR,iBAIG,EAAY2kB,YAJf,iBAIG,EAAkBG,gBAJrB,aAIG,EAA4B/R,KAAI,SAAC1R,EAAS2Q,GAAV,OAC/B,sBAEEvI,MAAO,CACL3O,SAAU,WACVC,QAAS,OACT0H,WAAY,UALhB,UAOE,sBACEgH,MAAO,CACLjM,OAAQ,UACR1C,SAAU,WACVsB,MAAO,IAJX,UAOG,EAAK4D,MAAM2kB,KAAKG,SAAS3lB,OAAS,GAAc,GAAT6S,GACtC,sBACEvI,MAAO,CACL1O,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZzH,cAAe,UAEjBkC,UAAU,UACViB,QAAS,WACP,EAAKgnD,UAAUnzC,IATnB,UAWE,sBAAK9U,UAAU,eAAeuM,MAAO,CAAE1N,SAAU,GAAIb,UAAW,UAAhE,kBACO,uBADP,QAIA,qBAAKuO,MAAO,CAAEpO,OAAQ,UAAtB,SACE,cAAC,GAAD,SAIL,EAAK2E,MAAM2kB,KAAKG,SAAS3lB,OAAS,GAAK6S,EAAQ,IAAM,EAAKhS,MAAM2kB,KAAKG,SAAS3lB,QAC7E,sBACEsK,MAAO,CACL1O,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZzH,cAAe,UAEjBmD,QAAS,kBAAM,EAAKinD,aAAapzC,IACjC9U,UAAU,UARZ,UASE,qBAAKuM,MAAO,CAAEpO,OAAQ,UAAtB,SACE,cAAC,GAAD,MAEF,sBAAK6B,UAAU,eAAeuM,MAAO,CAAE1N,SAAU,GAAIb,UAAW,UAAhE,kBACO,uBADP,eAnCC8W,GA0CP,cAAC,GAAD,CACE3Q,QAASA,EACT6wB,IAAKA,EACLlgB,MAAOA,EACPoyB,cAAe,EAAKA,cACpB0d,cAAe,EAAKA,cACpB9L,YAAa,EAAKA,YAClBxX,SAAU,EAAKx+B,MAAMw+B,aA7DlBn9B,EAAQ/E,IAAM+E,EAAQgkD,WAiEN,MAAxBxsD,KAAKmH,MAAM2kB,KAAKO,MACf,cAAC,GAAD,CACEtsB,MAAOC,KAAKmH,MAAM2kB,KAAKO,KACvBvoB,SAAU,SAAA/D,GAAK,OAAI,EAAK0sD,WAAW1sD,IACnC87B,SAAU,kBAAM,EAAK4wB,WAAW,YAItC,cAAC,GAAD,CAAY3gC,KAAM9rB,KAAKmH,MAAM2kB,KAAMC,WAAY/rB,KAAK+rB,eAlJ5C/rB,KAAKmH,MAAM2kB,KAAKroB,Y,uCAxMpC,SAAgCgD,EAAOU,GACrC,OAAIA,EAAM2kB,MAAQ3kB,EAAM2kB,KAAKroB,IAAMgD,EAAM0I,MAAMC,OAAO6e,QACpDD,GAAQvnB,EAAM0I,MAAMC,OAAO6e,OAAQ9mB,EAAMk2B,uBAAuBt9B,OACzD,CACL+rB,KAAMrlB,EAAMqlB,KACZ5b,MAAM,EACNo5C,UAAU,IAGP,S,GA9TcngD,IAAMC,WA8pBhBC,eAAWvH,sBAhvBX,SAAAC,GAAK,MAAK,CACvB+V,UAAW,CACT7V,SAAU,WACVyC,IAAK,EACLoF,KAAM,EACNvG,MAAO,EACPsG,OAAQ,EACRkT,YAAa,QACbta,QAAS,iBACTF,OAAQ,sBACRH,MAAO,QAET47B,QAAS,CACP57B,MAAO,GACPG,OAAQ,GACR0H,UAAW,IAEbiiD,YAAa,CACXzpD,QAAS,YACTP,QAAS,OACTyH,eAAgB,iBAElByiD,wBAAyB,CACvBlqD,QAAS,OACT0H,WAAY,SACZzH,cAAe,MACfm2B,SAAU,MACV/1B,OAAQ,QAEV4/C,aAAc,CACZ3/C,OAAQ,MACRmD,WAAY,4DACZI,UAAW,0CACX9C,MAAO,QACPN,aAAc,GACdJ,OAAQ,IAEVmoB,KAAM,CACJ/kB,WAAY,UACZI,UAAW,6CAEbzD,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBk2B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACT+D,WAAY,cACZ0D,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACTD,OAAQ,EACRqC,UAAW,IAEb,UAAW,CACT,+BAAgC,CAC9B0X,QAAS,IACTtW,WAAY,iBAEd,sBAAuB,CACrBgO,KAAM,UACNhO,WAAY,iBAEd,sBAAuB,CACrBuO,OAAQ,UACRvO,WAAY,iBAEd,yBAA0B,CACxBsW,QAAS,IACTtW,WAAY,qBAmqBQnE,CAAmB4X,aANrB,SAAAvS,GAAK,MAAK,CAChC2kB,KAAM3kB,EAAM2kB,KACZlZ,UAAWzL,EAAMyL,UACjB0a,MAAOnmB,EAAMmmB,SAG8B5T,CAAyB2vC,MC3sBhEqD,G,4MACJvlD,MAAQ,CACN+I,MAAM,EACNy8C,UAAW,GACXrD,UAAU,EACV5lD,KAAM,GACNk2B,OAAO,G,EAGTnL,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EAYxBi8C,gBAAkB,SAAAx+C,GACE,UAAdA,EAAM7N,KACR,EAAK8sD,e,sDAXT,SAAiBxmD,GACfpG,KAAK2G,SAAS,CAAEjD,KAAM0C,IAClBpG,KAAKmH,MAAMwlD,UAAUp6C,SAASnM,GAChCpG,KAAK2G,SAAS,CAAE2iD,UAAU,IAE1BtpD,KAAK2G,SAAS,CAAE2iD,UAAU,M,yBAU9B,WACOtpD,KAAKmH,MAAMmiD,WAGXnjD,EAAcnG,KAAKmH,MAAMzD,MAQ5B1D,KAAK2G,SAAS,CAAEizB,OAAO,GAAQ55B,KAAK0uB,e,uCAHpCm+B,CAJgB,CACdnpD,KAAM1D,KAAKmH,MAAMzD,KACjBopD,OAAQ9sD,KAAKyG,MAAMqmD,QAEE9sD,KAAKyG,MAAMw2B,aAClCj9B,KAAK2G,SAAS,CAAEuJ,MAAM,EAAOxM,KAAM,GAAIk2B,OAAO,GAAS55B,KAAK0uB,iB,uCAMhE,SAA0BmJ,GACxB,GAAIA,EAAUvK,MAAO,CACnB,IAAM+9B,EAAQ,GACdxzB,EAAUvK,MAAMjT,SAAQ,SAAAoT,GACR,MAAdA,EAAKiJ,OACHjJ,EAAKiJ,MAAMrc,SAAQ,SAAAyR,GACjBu/B,EAAM/gD,KAAKwhB,EAAKpoB,YAGtB1D,KAAK2G,SAAS,CAAEgmD,UAAWtB,O,gCAI/B,WACMrrD,KAAKmH,MAAM+I,MAA0B,MAAlBlQ,KAAK+sD,WAAmB/sD,KAAK+sD,UAAUruB,U,oBAGhE,WAAU,IAAD,OACCt6B,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,sBAAKwM,MAAO,CAAE1O,QAAS,QAAvB,UACE,sBAAKoD,QAAStF,KAAKyuB,WAAYpqB,UAAWD,EAAQ4oD,OAAlD,UACE,cAAC,GAAD,CAAUzqD,OAAO,KAAKH,MAAM,KAAKa,MAAM,YADzC,qBAGCjD,KAAKmH,MAAM+I,MACV,qBACE7L,UAAWD,EAAQk1B,YACnB1oB,MAAO,CACL1O,QAAS,QACTQ,OAAS1C,KAAKmH,MAAMmiD,SAEhB,oBADA,qBALR,SAQE,uBACEjlD,UAAWD,EAAQ9B,MACnBsB,YAAY,YACZs7B,WAAS,EACTn7B,OAAQ,kBAAM,EAAK6oD,eACnB7sD,MAAOC,KAAKmH,MAAMzD,KAClBm/B,QAAS7iC,KAAKmsD,gBACdroD,SAAU,SAAA6J,GAAK,OAAI,EAAK2tC,iBAAiB3tC,EAAM9G,OAAO9G,mB,GAxF9CoJ,IAAMC,WAuGb6jD,GAFOnrD,sBAtKP,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzBo9B,OAAQ,CACN5pD,gBAAiB,QACjBH,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BpD,OAAQ,oBACRC,aAAc,GACdF,QAAS,GACTP,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChBnH,OAAQ,gBACRmC,OAAQ,WAEVrC,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBk2B,YAAa,CACX52B,OAAQ,oBACRG,UAAW,aACXkD,UAAW,4CACX3D,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACTD,OAAQ,GAGV,UAAW,CACT,2BAA4B,CAC1BuD,UAAW,uCACXpD,aAAc,IAEhB,sBAAuB,CACrBM,MAAO,UACP0C,WAAY,SAEd,gBAAiB,CACfsE,UAAW,GACXtE,WAAY,UACZ1C,MAAO,QACPN,aAAc,IAEhB,wBAAyB,CACvBV,SAAU,WACVyC,IAAK,EACLnB,MAAO,OA0GSzB,CAAmB4qD,IC1JnCQ,G,4MACJ/lD,MAAQ,CACN+I,MAAM,G,EAGRue,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,gDAGxB,WAAc,IxJUW48C,EAAQ/6C,EAAOrB,EwJV3B,OACH+c,EAASztB,KAAKyG,MAAdgnB,KAERA,GACEA,EAAKiJ,OACLjJ,EAAKiJ,MAAMrc,SAAQ,SAAAyR,GACFA,EAAKroB,IACN,EAAKgD,MAAMwnB,QACvB,EAAKxnB,MAAM0mD,WAAW,EAAK1mD,MAAM6mB,MAAM,GAAGoJ,MAAM,GAAGjzB,OxJElCqpD,EwJErB9sD,KAAKyG,MAAMgnB,KAAKhqB,GxJFasO,EwJG7B/R,KAAKyG,MAAM0I,MAAMC,OAAO2C,MxJHYrB,EwJIpC1Q,KAAK0uB,YxJHTnnB,MAAM/F,EAAW,QAAUuQ,EAAQ,SAAW+6C,EAAQ,CACpDrlD,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,iCACbqd,GAAStb,GACTrB,OAEDjI,OAAM,SAASrB,GACdiJ,GAAW,2B,oBwJLf,WAAU,IAAD,OACCjM,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKC,UAAU,SAAf,UACE,cAAC,KAAD,CACEuM,MAAO,CACLjL,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,GACRN,SAAU,YAEZ,aAAW,SACXqD,QAAStF,KAAKyuB,WAVhB,SAWE,cAAC,GAAD,CAAWrsB,MAAM,OAAOG,OAAO,OAAOU,MAAM,cAE9C,cAAC,GAAD,CACEiN,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAK0uB,YACdxoB,MACE,mCAAqClG,KAAKyG,MAAMgnB,KAAK/pB,KAAO,SAJhE,SAME,sBAAKW,UAAWD,EAAQgpD,cAAxB,UACE,cAAC,GAAD,CAAc9nD,QAAS,kBAAM,EAAK+nD,cAAcnnD,MAAM,WACtD,cAAC,GAAD,CAAcZ,QAAStF,KAAK0uB,YAAakL,OAAK,EAAC1zB,MAAM,uB,GAzDxCiD,IAAMC,WA0EhBC,eACbvH,sBAnFa,SAAAC,GAAK,MAAK,CACvBqrD,cAAe,CACblrD,QAAS,OACTyH,eAAgB,eAChBlH,QAAS,gBA+EQ,CAAEe,WAAW,GAAhC1B,CAAwC4X,aANlB,SAAAvS,GAAK,MAAK,CAChCmmB,MAAOnmB,EAAMmmB,MACb1a,UAAWzL,EAAMyL,aAIuB8G,CAAyBwzC,M,oFCrD7DR,G,4MACJvlD,MAAQ,CACN+I,MAAM,EACNy8C,UAAW,GACXrD,UAAU,EACV5lD,KAAM,I,EAGR+qB,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EAGxBi8C,gBAAkB,SAAAx+C,GAEA,UAAdA,EAAM7N,KACLqG,EAAc,EAAKgB,MAAMzD,OACzB,EAAKyD,MAAMwlD,UAAUp6C,SAAS,EAAKpL,MAAMzD,OAE1C,EAAK4pD,e,sDAIT,SAAiBlnD,GACfpG,KAAK2G,SAAS,CAAEjD,KAAM0C,IAClBpG,KAAKmH,MAAMwlD,UAAUp6C,SAASnM,GAChCpG,KAAK2G,SAAS,CAAE2iD,UAAU,IAE1BtpD,KAAK2G,SAAS,CAAE2iD,UAAU,M,yBAI9B,WACE,IACGnjD,EAAcnG,KAAKmH,MAAMzD,QACzB1D,KAAKmH,MAAMwlD,UAAUp6C,SAASvS,KAAKmH,MAAMzD,MAC1C,CACA,IAAM6pD,EAAU,CACd7pD,KAAM1D,KAAKmH,MAAMzD,MAEnB8pB,GAAcxtB,KAAKyG,MAAMsL,MAAOw7C,GAChCvtD,KAAK2G,SAAS,CAAEuJ,MAAM,EAAOxM,KAAM,Q,uCAIvC,SAA0Bm0B,GACxB,GAAIA,EAAUvK,MAAO,CACnB,IAAM+9B,EAAQ,GACdxzB,EAAUvK,MAAMjT,SAAQ,SAAAoT,GACtB49B,EAAM/gD,KAAKmjB,EAAK/pB,SAElB1D,KAAK2G,SAAS,CAAEgmD,UAAWtB,O,oBAI/B,WAAU,IAAD,OACCjnD,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,gCACE,sBACEC,UAAWD,EAAQopD,QACnBloD,QAAStF,KAAKyuB,WACd7d,MAAO,CACLjM,OAAQ,UACRzC,QAAS,OACT0H,WAAY,UANhB,UAQE,cAAC,KAAD,CACE2lB,QAAQ,MACR3e,MAAO,CACLjL,WACE,4DACFpD,OAAQ,GACRH,MAAO,GACP2D,UAAW,2CAEb,aAAW,MATb,SAUE,cAAC,GAAD,CAAU3D,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAEzC,mBAAGoB,UAAWD,EAAQqpD,cAAtB,6BAEF,eAAC,GAAD,CACEv9C,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAK0uB,YACdxoB,MAAM,oBAHR,UAIE,eAAC,KAAD,CACE7B,UAAWD,EAAQspD,YACnBtmD,OAAQpH,KAAKmH,MAAMmiD,SACnB,mBAAiB,kBACjB14C,MAAO,CAAExO,MAAO,QAJlB,UAKE,cAAC,KAAD,CAAYurD,QAAQ,aAApB,uBACA,cAAC,KAAD,CACElqD,GAAG,aACH1D,MAAOC,KAAKmH,MAAMzD,KAClBI,SAAU,SAAA6J,GAAK,OAAI,EAAK2tC,iBAAiB3tC,EAAM9G,OAAO9G,QACtD8iC,QAAS7iC,KAAKmsD,mBAEdnsD,KAAKmH,MAAMmiD,UACX,cAAC,KAAD,CAAgB7lD,GAAG,kBAAnB,gDAKJ,qBAAKY,UAAWD,EAAQwmB,aAAxB,SACE,cAAC,KAAD,CACE3mB,UAAWjE,KAAKmH,MAAMmiD,SACtBrmD,MAAM,UACNoB,UAAWD,EAAQqB,OACnB8pB,QAAQ,SACRC,KAAK,QACL5e,MAAO,CAAE6e,MAAO,SAChBnqB,QAAS,kBAAM,EAAKgoD,eAPtB,gC,GA3GUnkD,IAAMC,WAgIbtH,yBA7JA,SAAAC,GAAK,MAAK,CACvByrD,QAAS,CACP7nD,WAAY,UACZI,UAAW,4CACXpD,aAAc,GACdF,QAAS,GACTkH,eAAgB,UAElBmO,UAAW,CACT5V,QAAS,OACTwgD,SAAU,QAEZgL,YAAa,CACXlrD,OAAQT,EAAM4tB,QAAQC,MAExBhF,aAAc,CACZ1oB,QAAS,OACTyH,eAAgB,SAChBM,UAAW,IAEbwjD,cAAe,CACbtqD,WAAY,IACZD,SAAU,GACVD,MAAO,UACPT,OAAQ,aACRI,WAAY,WAoIDd,CAAmB4qD,ICzJ5BkB,G,4MACJzmD,MAAQ,CACN+I,MAAM,G,EAGRue,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EAGxB29C,iBAAmB,WACjB,EAAKpnD,MAAMqnD,oBACX,EAAKp/B,e,EAGPR,WAAa,WACXA,GACE,EAAKznB,MAAMqlB,KAAKroB,GAChB,EAAKgD,MAAMw2B,YACX,EAAK4wB,mB,4CAIT,WAAU,IAAD,OACCzpD,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKwM,MAAO,CAAEwR,WAAY,QAA1B,UACE,qBAAK9c,QAAS,kBAAM,EAAKmpB,cAAzB,SACE,cAAC,GAAD,CAAWrsB,MAAM,OAAOG,OAAO,OAAOU,MAAM,cAE9C,cAAC,GAAD,CACEiN,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAK0uB,YACdxoB,MACE,mCAAqClG,KAAKyG,MAAMqlB,KAAKpoB,KAAO,SAJhE,SAME,sBAAKW,UAAWD,EAAQgpD,cAAxB,UACE,cAAC,GAAD,CAAc9nD,QAAStF,KAAKkuB,WAAYhoB,MAAM,WAC9C,cAAC,GAAD,CAAcZ,QAAStF,KAAK0uB,YAAakL,OAAK,EAAC1zB,MAAM,uB,GA1CxCiD,IAAMC,WAsDhBtH,yBA9DA,SAAAC,GAAK,MAAK,CACvBqrD,cAAe,CACblrD,QAAS,OACTyH,eAAgB,eAChBlH,QAAS,gBA0DEX,CAAmB8rD,I,UCvErBG,ICFgBh1C,OAAOi1C,OAAO,CACzCC,gBAAiB,IDCmB,0BEO/B,SAASC,GAAqBn8C,GACnC,OAAOxK,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,uBAAgD,CAC1DtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAJ,GFZ0B,IAAAy9B,EEc9B,OFd8BA,EEaTz9B,EFZzBnH,GAAMC,SAAS,CACbC,KAAMutD,GACN7oB,sBEWSz9B,KAERgB,OAAM,kBAAM4H,GAAW,4BCS5B,IA0FM89C,G,kDASJ,aAAe,IAAD,8BACZ,gBATFhnD,MAAQ,CACNinD,WAAY,GACZngC,OAAQ,KACR6+B,OAAQ,KACRuB,UAAU,EACVC,WAAY,MAGA,EAwBdR,kBAAoB,WAClB,IAAQxgC,EAAU,EAAK7mB,MAAf6mB,MAENA,GACAA,EAAMhnB,OAAS,GACfgnB,EAAM,GAAGoJ,OACTpJ,EAAM,GAAGoJ,MAAM,GAAGjzB,IACQ,OAA1B,EAAK0D,MAAMmnD,YAEX,EAAK3nD,SACH,CACE0nD,UAAU,EACVC,WAAYhhC,EAAM,GAAGoJ,MAAM,GAAGjzB,KAEhC,WACE,EAAKkD,SAAS,CACZ0nD,UAAU,QAxCN,EAmFdE,gBAAkB,SAAAziC,GAChB,GAAI3lB,EAAc,EAAKgB,MAAMinD,YAAa,OAAO,EAEjD,GAAItiC,EAAKpoB,KAAKua,cAAc1L,SAAS,EAAKpL,MAAMinD,WAAWnwC,eACzD,OAAO,EAET,IAAMuwC,EAAa,EAAK/nD,MAAMqmB,YAAYhB,EAAKghC,QAC/C,QAAS0B,GAAcA,EAAWpiC,MAAK,qBAAG3oB,KAAgBqoB,EAAKroB,OA1FnD,EA0GdgrD,eAAiBC,qBAAS,SAAAC,GACpB,EAAKxnD,MAAMinD,WAAW9nD,OAAS,G,qCACjCsoD,CAAqB,EAAKznD,MAAMinD,cFxOD,KE8HjC,EAAKK,eAAiB,EAAKA,eAAe5S,KAApB,iBAFV,E,qDAKd,WAAqB,IAAD,OACZmD,EAAMj+C,OAAOC,SAASoH,SAASqR,MAAM,KACrCwU,EAAiC,UAAxB+wB,EAAIA,EAAI14C,OAAS,GAAiB04C,EAAIA,EAAI14C,OAAS,GAAK,KAEvEtG,KAAK2G,SAAS,CAAEsnB,WAAU,WACxBZ,GAAS,EAAK5mB,MAAM0I,MAAMC,OAAO2C,OACjCm8C,GAAqB,EAAKznD,MAAM0I,MAAMC,OAAO2C,OAC7CiB,GAAO,EAAKvM,MAAM0I,MAAMC,OAAO2C,Y,gCAInC,SAAmB88C,GACbA,EAAUvhC,QAAUttB,KAAKyG,MAAM6mB,QAC5BttB,KAAKmH,MAAM8mB,QACdjuB,KAAK8tD,uB,wBA4BX,SAAWrqD,GAAK,IAAD,OACbzD,KAAK2G,SACH,CACE2nD,WAAY7qD,EACZ4qD,UAAU,IAEZ,WACE,EAAK1nD,SAAS,CACZ0nD,UAAU,S,iCAMlB,SAAoB5gC,GAClB,IAAIqhC,GAAe,EAQnB,YAPmBj5B,IAAfpI,EAAKiJ,OACPjJ,EAAKiJ,MAAMrkB,MAAK,SAAAyZ,GACVA,EAAKsvB,cACP0T,GAAe,MAIdA,I,4BAGT,WACE,GAAI9uD,KAAKmH,MAAMknD,SACb,OACE,cAAC/+C,EAAA,EAAD,CACErG,GAAE,UAAKvH,EAAL,gBAAsB1B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAA9C,kBAA6D/R,KAAKmH,MAAMmnD,gB,uBAgBlF,SAAU7gC,GACR,GAAItnB,EAAcnG,KAAKmH,MAAMinD,YAAa,OAAO,EACjD,GAAkB,MAAd3gC,EAAKiJ,MACP,IAAK,IAAIlgB,EAAI,EAAGA,EAAIiX,EAAKiJ,MAAMpwB,OAAQkQ,IACrC,GAAIxW,KAAKuuD,gBAAgB9gC,EAAKiJ,MAAMlgB,IAClC,OAAO,EAKb,OAAO,I,oBAST,WAAU,IAAD,OACCpS,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,8BACE,sBACEwM,MAAO,CACLjL,WAAY,UACZzD,QAAS,OACTyH,eAAgB,iBAJpB,UAME,sBAAKiH,MAAO,CAAEnO,QAAS,kBAAmBL,MAAO,OAAjD,UACE,qBAAKiC,UAAWD,EAAQue,OAAxB,SACE,qBAAK/R,MAAO,CAAE1O,QAAS,QAAvB,SACE,sBACE0O,MAAO,CACL1O,QAAS,OACTE,MAAO,OACPuH,eAAgB,gBAChBC,WAAY,UALhB,UAOE,cAAC,GAAD,CAAU1D,MAAM,UAEhB,sBAAK7B,UAAWD,EAAQk1B,YAAxB,UACE,uBACEj1B,UAAWD,EAAQ9B,MACnBvC,MAAOC,KAAKmH,MAAMinD,WAClBxqD,YAAY,SACZE,SAAU,SAAA6J,GACR,EAAKhH,SAAS,CAAEynD,WAAYzgD,EAAM9G,OAAO9G,QACzC,EAAK0uD,eAAe9gD,EAAM9G,OAAO9G,UAIrC,cAAC,GAAD,CAAYqC,MAAM,KAAKG,OAAO,KAAKU,MAAM,sBAKjD,qBACE2N,MAAO,CACL8hB,SAAU,UACVthB,KAAM,EACN3O,QAAS,MACTL,MAAO,QALX,SAOE,gCACE,cAAC,GAAD,CACE2P,MAAO/R,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAC/Bub,MAAOttB,KAAKyG,MAAM6mB,QAEC,MAApBttB,KAAKyG,MAAM6mB,OACVttB,KAAKyG,MAAM6mB,MACRpb,QAAO,SAAAub,GAAI,OAAI,EAAKshC,UAAUthC,MAC9BuhC,UACA90C,KAAI,SAAAuT,GAAI,aACP,eAAC,KAAD,CACEwhC,gBACExhC,EAAKiJ,OACiB,IAAtBjJ,EAAKiJ,MAAMpwB,SACV,EAAK4oD,oBAAoBzhC,GAE5B7c,MAAO,CACLjO,aAAc,GACdH,OAAQ,SACRuD,UACE,8CAEJ1B,UAAU,UAZZ,UAcE,cAAC,KAAD,CACEA,UAAWD,EAAQ+qD,SACnBC,WAAY,cAAC,KAAD,IAFd,SAGE,sBACEx+C,MAAO,CACL1O,QAAS,OACTyH,eAAgB,gBAChBvH,MAAO,QAJX,UAME,cAAC,KAAD,CAAYiC,UAAWD,EAAQue,OAA/B,SACG8K,EAAK/pB,QAEN+pB,EAAKiJ,OAAS,EAAKw4B,oBAAoBzhC,IACvC,cAAC,GAAD,CACE0/B,WAAY,SAAAl/B,GAAM,OAAI,EAAKk/B,WAAWl/B,IACtCR,KAAMA,EACNQ,OAAQ,EAAK9mB,MAAM8mB,cAK3B,eAAC,KAAD,CACErd,MAAO,CAAE1O,QAAS,QAAS8hD,WAAY,GADzC,WAEI,EAAKkL,oBAAoBzhC,IACzB,qBACE7c,MAAO,CACLhO,WAAY,OACZM,SAAU,GACVD,MAAO,UACPq9C,cAAe,IALnB,0FAWF,sBACE1vC,MAAO,CACLzO,cAAe,MACfD,QAAS,OACTwgD,SAAU,QAJd,UAME,cAAC2M,GAAD,CACEvC,OAAQr/B,EAAKhqB,GACbw5B,YAAW,UAAE,EAAKx2B,MAAMmM,iBAAb,aAAE,EAAsBnP,GACnC6pB,MAAO,EAAK7mB,MAAM6mB,QAGL,MAAdG,EAAKiJ,OACJjJ,EAAKiJ,MACFxkB,QAAO,SAAA4Z,GAAI,OAAI,EAAKyiC,gBAAgBziC,MACpCkjC,UACA90C,KAAI,SAAC4R,EAAMhsB,GAAP,OACH,eAACwvD,GAAA,EAAD,CAEEjrD,UAAWD,EAAQmrD,KACnB3+C,MAAO,CACLxN,gBAAiB,QACjBH,MAAO,UACPR,QAAS,GACTE,aAAc,GACdT,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChBhF,OAAQ,WACVsE,GAAE,UAAKvH,EAAL,gBAAsB,EAAK+E,MAAM0I,MAAMC,OAAO2C,MAA9C,kBAA6D+Z,EAAKroB,IAZtE,UAaGqoB,EAAKpoB,KACN,qBACEkN,MAAO,CACLjM,OAAQ,UACRyd,WAAY,IAHhB,UAKI0J,EAAKsvB,aACL,cAAC,GAAD,CACEtvB,KAAMA,EACNmR,YACE,EAAKx2B,MAAM0I,MAAMC,OAAO2C,MAE1B+7C,kBAAmB,kBACjB,EAAKX,WACH,EAAK1mD,MAAM6mB,MAAM,GAAGoJ,MAAM,GAAGjzB,WA1BlCqoB,EAAKroB,eAtDjBgqB,EAAKhqB,eA+FvBzD,KAAKyG,MAAM6mB,MAAM,IAAMttB,KAAKyG,MAAM6mB,MAAM,GAAGoJ,MAAM,IAChD,qBAAK9lB,MAAO,CAAEpD,UAAW,OAAzB,SACE,sBAAKoD,MAAO,CAAE3O,SAAU,YAAxB,UACE,cAAC6O,EAAA,EAAD,CACEjQ,KAAI,UAAKa,EAAL,6BACJqP,UAAWs4C,KAEZrpD,KAAKwvD,+B,GApSArmD,IAAMC,WAyTbC,eACbvH,sBApZa,SAAAC,GAAK,MAAK,CACvBO,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBhB,MAAO,QAETk3B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,KAEZm3B,WAAY,CACVjtD,OAAQ,GACRU,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQC,MAE/B4pD,YAAa,CACXjtD,QAAS,IAEXktD,WAAY,CACVvsD,gBAAiBrB,EAAM6D,QAAQC,QAAQC,KACvC7C,MAAO,QACPT,OAAQ,GAEV+sD,KAAM,CACJ/sD,OAAQ,EACRE,OAAQ,qBAEVysD,SAAU,CACRxpD,WAAY,UACZI,UAAW,OACXpD,aAAc,GACdJ,OAAQ,OACRL,QAAS,OACTyH,eAAgB,iBAElBgZ,OAAQ,CACN1f,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BvnB,SAAU,GACVC,WAAY,IACZP,WAAY,oBAEd,UAAW,CACT,uCAAwC,CACtCV,QAAS,QAEX,yBAA0B,CACxBA,QAAS,SAEX,mBAAoB,CAClBA,QAAS,QAEX,UAAW,CACTD,SAAU,WACV6H,KAAM,GACND,OAAQ,GACR3H,QAAS,OACT+D,WAAY,iBAEd,sCAAuC,CACrC4D,OAAQ,GACR5D,WAAY,kBAGhB+mD,OAAQ,CACN5pD,gBAAiB,QACjBH,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BpD,OAAQ,oBACRD,QAAS,GACTE,aAAc,GACdT,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB9E,UAAW,GACXrC,OAAQ,MA8TS,CAAEgB,WAAW,GAAhC1B,CAAwC4X,aAPlB,SAAC,GAAD,MAAwC,CAC9D4T,MADsB,EAAGA,MAEzB1a,UAFsB,EAAUA,UAGhCka,YAHsB,EAAqBA,eAOHpT,CAAyBy0C,M,oBCzanE,SAAS78B,GAAW7qB,GAClB,OAAO,cAAC,KAAD,aAAO8qB,UAAU,MAAS9qB,IAGnC,IA6CMmpD,G,4MACJzoD,MAAQ,CACN+I,MAAM,G,EAORue,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,kDAGxB,WACE2kB,GAAa70B,KAAKyG,MAAMquB,SAAU90B,KAAKyG,MAAMqtB,aAC7C9zB,KAAK2G,SAAS,CAAEuJ,MAAM,M,oBAGxB,WAAU,IAAD,OACC9L,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKC,UAAWD,EAAQyrD,UAAxB,UACE,qBAAKvqD,QAAS,kBAAM,EAAKmpB,cAAzB,oBAEA,eAAC,KAAD,CACEmD,WAAY,GACZ1hB,KAAMlQ,KAAKmH,MAAM+I,KACjBjK,WAAYqrB,GACZO,aAAW,EACXxH,QAASrqB,KAAK0uB,YACd,kBAAgB,2BAChB,mBAAiB,iCAPnB,UAQE,cAAC,KAAD,CAAajrB,GAAG,2BAAhB,SACG,kCAAoCzD,KAAKyG,MAAM/C,KAAO,MAEzD,eAAC,KAAD,CACEkN,MAAO,CAAE1O,QAAS,OAAQyH,eAAgB,gBAD5C,UAEE,cAAC,KAAD,CACEtF,UAAS,UAAKD,EAAQqB,OAAb,gBACTH,QAAS,kBAAM,EAAKuvB,gBACpB5xB,MAAM,UAHR,oBAMA,cAAC,KAAD,CACEoB,UAAS,UAAKD,EAAQqB,OAAb,iBACTH,QAAStF,KAAK0uB,YAFhB,+B,4BAWV,WACE,OAAO1uB,KAAKyG,MAAM8pB,SAASrW,KAAI,SAAA3V,GAAC,OAAIA,EAAE8yB,eAAa1S,KAAK,U,GA5DjCxb,IAAMC,WAyElBtH,yBAtHA,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzBigC,UAAW,CACTriD,UAAW,MACXvK,MAAO,UACP0B,OAAQ,WAEV8oB,KAAM,CACJ1nB,UAAW,uCACXpD,aAAc,IAEhB8C,OAAQ,CACNE,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdH,OAAQ,SACRS,MAAO,QACPL,WAAY,oBAEd,UAAW,CACT,oCAAqC,CACnCmD,UAAW,uCACXpD,aAAc,IAEhB,qBAAsB,CACpBgD,WAAY,QACZ1C,MAAO,WAET,sBAAuB,CACrBA,MAAO,QACP0C,WAAY,WAEd,gBAAiB,CACfA,WAAY,QACZ1C,MAAO,eA8EEnB,CAAmB4X,aALV,SAAAvS,GAAK,MAAK,CAChCopB,SAAUppB,EAAMopB,SAChB+C,QAASnsB,EAAMmsB,WAGiB5Z,CAAyBk2C,KClGrDE,G,kDACJ,WAAYrpD,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,GAFI,E,0CAKnB,WACE,MAA8CnH,KAAKyG,MAA3CrC,EAAR,EAAQA,QAASojB,EAAjB,EAAiBA,YAAard,EAA9B,EAA8BA,YAC9B,OACE,sBAAK9F,UAAWD,EAAQ2rD,KAAxB,UACE,qBAAK1rD,UAAWD,EAAQ4rD,IAAKxmD,IC1CtB,ypED0CgCC,IAAI,QAC3C,mBAAGpF,UAAWD,EAAQgC,KAAtB,SAA6BohB,IAC5Brd,GACC,cAAC,GAAD,CACEqlB,KAAK,KACLtpB,MAAOiE,EACP7E,QAAStF,KAAKyG,MAAMnB,iB,GAhBX6D,IAAMC,WAiCZC,eAAWvH,sBAtDX,SAAAC,GAAK,MAAK,CACvBguD,KAAM,CACJ7tD,QAAS,OACTC,cAAe,SACfwH,eAAgB,aAChBC,WAAY,UAEdxD,KAAM,CACJxB,SAAU,IACVc,WAAY,OACZxC,SAAU,GACVb,UAAW,SACXY,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B8D,aAAc,IAEhB8lD,IAAK,CACH9tD,QAAS,QACTgI,aAAc,OAqCQpI,CAAmB4X,aAJrB,SAAAvS,GAAK,MAAK,CAChCmsB,QAASnsB,EAAMmsB,WAG4B5Z,CAAyBo2C,M,yGE1ChEG,G,4MACJC,2BAA6B,SAAAviD,GAC3B,EAAKlH,MAAM0pD,aAAaxiD,EAAO,I,EAGjCyiD,sBAAwB,SAAAziD,GACtB,EAAKlH,MAAM0pD,aAAaxiD,EAAO,EAAKlH,MAAMgqB,KAAO,I,EAGnD4/B,sBAAwB,SAAA1iD,GACtB,EAAKlH,MAAM0pD,aAAaxiD,EAAO,EAAKlH,MAAMgqB,KAAO,I,EAGnD6/B,0BAA4B,SAAA3iD,GAC1B,EAAKlH,MAAM0pD,aACTxiD,EACAyV,KAAKu+B,IAAI,EAAGv+B,KAAKmtC,KAAK,EAAK9pD,MAAMyf,MAAQ,EAAKzf,MAAMyxB,aAAe,K,4CAIvE,WAAU,IAAD,OACP,EAAqDl4B,KAAKyG,MAAlDrC,EAAR,EAAQA,QAAS8hB,EAAjB,EAAiBA,MAAOuK,EAAxB,EAAwBA,KAAMyH,EAA9B,EAA8BA,YAAan2B,EAA3C,EAA2CA,MAE3C,OACE,sBAAKsC,UAAWD,EAAQsmB,KAAxB,UACGxE,EAAQ,GACP,uBAAMtV,MAAO,CAAEmM,YAAa,IAA5B,UACG0T,EAAOyH,EAAc,EADxB,KAC6B,IAC1BhS,GAASuK,EAAO,GAAKyH,GACjBzH,EAAO,GAAKyH,EACbhS,EAAO,IAJb,MAKMA,KAIR,cAAC,KAAD,CACEjjB,MAAM,UACNqC,QAAStF,KAAKkwD,2BACdjsD,SAAmB,IAATwsB,EACV,aAAW,aAJb,SAKuB,QAApB1uB,EAAMwvB,UAAsB,cAAC,KAAD,IAAmB,cAAC,KAAD,MAElD,cAAC,KAAD,CACEtuB,MAAM,UACNqC,QAAStF,KAAKowD,sBACdnsD,SAAmB,IAATwsB,EACV,aAAW,gBAJb,SAKuB,QAApB1uB,EAAMwvB,UACL,cAAC,KAAD,IAEA,cAAC,KAAD,MAGHd,EAAO,GAAK,MACZA,EAAO,GACN,cAAC,KAAD,CACExtB,MAAM,UACNoB,UAAWD,EAAQqsB,KACnBnrB,QAAS,SAAAqI,GAAK,OACZ,EAAKlH,MAAM0pD,aAAaxiD,EAAO,EAAKlH,MAAMgqB,KAAO,IAEnD,aAAW,UANb,SAOGzwB,KAAKyG,MAAMgqB,KAAO,IAGtBA,EAAO,GACN,cAAC,KAAD,CACExtB,MAAM,UACNoB,UAAWD,EAAQqsB,KACnBnrB,QAAS,SAAAqI,GAAK,OACZ,EAAKlH,MAAM0pD,aAAaxiD,EAAO,EAAKlH,MAAMgqB,KAAO,IAEnD,aAAW,UANb,SAOGzwB,KAAKyG,MAAMgqB,OAGhB,cAAC,KAAD,CACExtB,MAAM,UACN,aAAW,UACXoB,UAAWD,EAAQqsB,KACnB7f,MAAO,CAAEzN,WAAY,QAJvB,SAKGnD,KAAKyG,MAAMgqB,KAAO,IAEpBA,EAAOrN,KAAKmtC,KAAKrqC,EAAQgS,GAAe,GACvC,cAAC,KAAD,CACEj1B,MAAM,UACNoB,UAAWD,EAAQqsB,KACnBnrB,QAAS,SAAAqI,GAAK,OACZ,EAAKlH,MAAM0pD,aAAaxiD,EAAO,EAAKlH,MAAMgqB,KAAO,IAEnD,aAAW,UANb,SAOGzwB,KAAKyG,MAAMgqB,KAAO,IAGtBA,EAAO,EAAIrN,KAAKmtC,KAAKrqC,EAAQgS,GAAe,GAC3C,cAAC,KAAD,CACEj1B,MAAM,UACNoB,UAAWD,EAAQqsB,KACnBnrB,QAAS,SAAAqI,GAAK,OACZ,EAAKlH,MAAM0pD,aAAaxiD,EAAO,EAAKlH,MAAMgqB,KAAO,IAEnD,aAAW,UANb,SAOGzwB,KAAKyG,MAAMgqB,KAAO,IAGtBA,EAAO,EAAIrN,KAAKmtC,KAAKrqC,EAAQgS,GAAe,GAAK,MAClD,cAAC,KAAD,CACEj1B,MAAM,UACNqC,QAAStF,KAAKqwD,sBACdpsD,SAAUwsB,GAAQrN,KAAKmtC,KAAKrqC,EAAQgS,GAAe,EACnD,aAAW,YAJb,SAKuB,QAApBn2B,EAAMwvB,UACL,cAAC,KAAD,IAEA,cAAC,KAAD,MAGJ,cAAC,KAAD,CACEtuB,MAAM,UACNqC,QAAStF,KAAKswD,0BACdrsD,SAAUwsB,GAAQrN,KAAKmtC,KAAKrqC,EAAQgS,GAAe,EACnD,aAAW,YAJb,SAKuB,QAApBn2B,EAAMwvB,UAAsB,cAAC,KAAD,IAAoB,cAAC,KAAD,a,GA1HtBpoB,IAAMC,WA0I5BtH,yBArJO,SAAAC,GAAK,MAAK,CAC9B2oB,KAAM,CACJ8lC,WAAY,EACZvtD,MAAOlB,EAAM6D,QAAQQ,KAAK6zB,UAC1B7X,WAAiC,IAArBrgB,EAAM4tB,QAAQC,MAE5Ba,KAAM,CACJvtB,SAAU,WA8I2B,CAAEM,WAAW,GAAvC1B,CACbmuD,ICnJIQ,G,4JACJ,WACE,IAAQrsD,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,cAAC,KAAD,CACE8hB,MAAOlmB,KAAKyG,MAAMyf,MAClBgS,YAAal4B,KAAKyG,MAAMyxB,YACxBw4B,mBAAoB,CAAC,EAAG,GAAI,IAC5BjgC,KAAMzwB,KAAKyG,MAAMgqB,KACjBrsB,QAAS,CAAEusD,QAASvsD,EAAQusD,SAC5BR,aAAcnwD,KAAKyG,MAAM0pD,aAEzBS,iBAAkBC,GAClBC,YAAa,CACXlgD,MAAO,CACL1O,QAAS,SAGb6uD,mBAAoB/wD,KAAKyG,MAAMsqD,yB,GAlBd5nD,IAAMC,WAgChBtH,SAtCA,SAAAC,GAAK,MAAK,CACvB4uD,QAAS,CACPzuD,QAAS,qBAoCEJ,CAAmB2uD,ICyDrBO,GAAe,CAC1B/tD,MAAO,UACPR,QAAS,YACTL,MAAO,OACP2a,YAAa,GAGFk0C,GAAoB,CAC/B/uD,QAAS,QACTO,QAAS,KCYI4G,eAAWvH,sBA9GX,SAAAC,GAAK,MAAK,CACvBmvD,WAAY,CACVhvD,QAAS,OACTE,MAAO,QAET+uD,mBAAoB,CAClB/uD,MAAO,OACPF,QAAS,OACTC,cAAe,MACfwH,eAAgB,iBAElB6d,YAAa,CACX5kB,WAAY,OACZM,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAK+zB,KAC1BjwB,aAAc,GAEhBxG,KAAM,CACJd,WAAY,OACZM,SAAU,GACVgH,aAAc,EACdjH,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5ByuC,QAAS,CACPzuD,aAAc,kBACd+vB,SAAU,SACVlwB,OAAQ,sBACRuD,UAAW,6CACX,SAAU,CACRtD,QAAS,WAGb0sD,SAAU,CACRxsD,aAAc,GACdJ,OAAQ,OACRL,QAAS,OACTyH,eAAgB,gBAChB,6BAA8B,CAC5BpG,MAAO,IAET,+DAAgE,CAC9Df,OAAQ,UAEV,yCAA0C,CACxCN,QAAS,QAEX,WAAY,CACVA,QAAS,YA+D8B,CAAEsB,WAAW,GAAhC1B,EA1DN,SAAC,GAAD,IAClBsC,EADkB,EAClBA,QACA4lC,EAFkB,EAElBA,IACAqnB,EAHkB,EAGlBA,SACAvtD,EAJkB,EAIlBA,SACA0e,EALkB,EAKlBA,SACA/c,EANkB,EAMlBA,OACA6rD,EAPkB,EAOlBA,aAPkB,OASlB,eAAC,KAAD,CACEjtD,UAAWD,EAAQgtD,QACnBC,SAAUA,EACVvtD,SAAUA,EAHZ,UAIE,cAAC,KAAD,CACEO,UAAS,UAAKD,EAAQ+qD,SAAb,YACTC,WAAY,cAAC,KAAD,IAFd,SAGE,sBAAK/qD,UAAWD,EAAQ8sD,WAAxB,UACE,qBACEtgD,MAAO,CACLmM,YAAa,GACb7a,QAAS,OACT0H,WAAY,UAJhB,SAMGogC,EAAI1iB,OAEN0iB,EAAItmC,MAAQsmC,EAAIunB,cACf,sBAAKltD,UAAWD,EAAQ+sD,mBAAxB,UACE,mBAAG9sD,UAAWD,EAAQV,KAAtB,SAA6BsmC,EAAItmC,OACjC,oBAAGW,UAAWD,EAAQojB,YAAtB,UAAoCwiB,EAAIunB,cAAxC,iBAGF,gCACE,mBAAGltD,UAAWD,EAAQV,KAAtB,SAA6BsmC,EAAItmC,OACjC,mBAAGW,UAAWD,EAAQojB,YAAtB,SAAoCwiB,EAAIxiB,iBAG3C/hB,GACC,qBAAKmL,MAAO,CAAEwR,WAAY,OAAQovC,UAAW,UAA7C,SACE,cAAC,GAAD,CACEhiC,KAAM/pB,EAAOjF,KACb0F,MAAOT,EAAOS,MACdZ,QAAS,SAAAf,GAAC,OAAIkB,EAAOH,QAAQf,aAMvC,cAAC,KAAD,CACEqM,MAAO0gD,GAAgB,CAAEpvD,QAAS,QAASO,QAAS,YADtD,SAEG+f,WCxCDivC,G,kDACJ,WAAYhrD,GAAQ,IAAD,8BACjB,cAAMA,IAuBRirD,aAAe,SAAAntD,GACT4B,EAAc5B,EAAEsC,OAAO9G,OACzB,EAAK4G,SAAS,CACZ8yB,KAAK,KAGP,EAAK11B,SACL,EAAK0C,MAAMkrD,eAAe,EAAKlrD,MAAM0S,MAAO5U,GACxC,EAAKkC,MAAMmrD,UAAY,EAAKnrD,MAAM0S,QACpC,EAAK1S,MAAMorD,YAAY,MACvB,EAAKprD,MAAMqrD,YAAY,SAhC3B,EAAK3qD,MAAQ,CACXsyB,KAAK,GAHU,E,oDAOnB,SAAiBtgB,EAAO5U,GACtB,IAAMd,EAAKzD,KAAKyG,MAAM0S,MACtBnZ,KAAKyG,MAAMsrD,iBAAiBtuD,EAAIc,K,4BAGlC,SAAed,GACbzD,KAAKyG,MAAMqrD,YAAYruD,K,oBAGzB,WACEzD,KAAK2G,SAAS,CAAE62C,SAAS,M,qBAG3B,WACEx9C,KAAK2G,SAAS,CAAE62C,SAAS,M,oBAkB3B,WAAU,IAAD,OACP,EAAkDx9C,KAAKyG,MAA/CrC,EAAR,EAAQA,QAAS4tD,EAAjB,EAAiBA,KAAM74C,EAAvB,EAAuBA,MAAOy4C,EAA9B,EAA8BA,SAAUn0B,EAAxC,EAAwCA,MAChChE,EAAQz5B,KAAKmH,MAAbsyB,IACFw4B,EAASjyD,KAAKyG,MAAMmrD,WAAaz4C,EAEvC,OACE,qBAAK9U,UAAS,UAAKD,EAAQ8tD,SAAb,YAAd,SACE,sBACEthD,MAAO,CAAE1O,QAAS,OAAQiwD,UAAW,UACrC9tD,UACE4tD,EACKx4B,EAECr1B,EAAQq1B,IADRr1B,EAAQk1B,YAEVl1B,EAAQH,SAPhB,UASE,qBACE2M,MAAO,CAAEpD,UAAW,OACpBlI,QAAS,SAACf,EAAG4U,GACX,IAAM1V,EAAK,EAAKgD,MAAM0S,MACtB,EAAKi5C,eAAe3uD,IAJxB,SAME,uBACE+1B,IAAKiE,GAAS,MACdrE,UAAW,IACXhT,IAAK,SAAA6iB,GACH,EAAKopB,UAAYppB,GAEnB/J,UAAW+yB,EACXjpB,SAAUhpC,KAAKyG,MAAM6rD,YAAcn5C,EACnCpV,OAAQ/D,KAAK0xD,aACbptD,WAAY,SAAAqJ,GACa,KAAnBA,EAAMy0B,UAA0C,KAAvBz0B,EAAM9G,OAAO9G,QACxC,EAAK0G,MAAMkrD,eAAex4C,EAAOxL,GACjC,EAAK5J,SACD6tD,GAAYz4C,GACd,EAAK1S,MAAMorD,YAAY,QAI7Bz7B,QAAS,kBAAM,EAAKA,WACpB/xB,UAAS,WAAMD,EAAQ9B,MAAd,cACTsO,MACE5Q,KAAKyG,MAAM6rD,YAAcn5C,EACrB,CAAE1W,QAAS,YACX,CAAEA,QAAS,iBAEjBuB,aAAcguD,MAIlB,sBACE3tD,UAAS,qBACPrE,KAAKyG,MAAM6rD,YAAcn5C,EAAQ/U,EAAQmuD,KAAO,IAElD3hD,MACE5Q,KAAKyG,MAAM6rD,YAAcn5C,EACrB,CACAxP,eAAgB,gBAChBhF,OAAQ,UACRiF,WAAY,SACZxH,MAAO,IAEP,CACAF,QAAS,QAbjB,UAgBE,qBACE0O,MAAO,CACL1O,QAAS,OACTC,cAAe,SACfyH,WAAY,UAEdvF,UAAWrE,KAAKyG,MAAM6rD,YAAcn5C,EAAQ/U,EAAQmuD,KAAO,GAC3DjtD,QAAS,SAACf,EAAG4U,GACX,IAAM1V,EAAK,EAAKgD,MAAM0S,MACtB,EAAK1S,MAAMqrD,YAAYruD,GACvB,EAAKgD,MAAMorD,YAAYpuD,IAV3B,SAYE,cAAC,GAAD,MAEF,qBACEmN,MAAO,CACL1O,QAAS,OACT0H,WAAY,UAEdtE,QAAS,SAACf,EAAG4U,GACX,EAAK44C,iBAAiBxtD,EAAG4U,IAN7B,SAQE,cAAC,GAAD,CAAW/W,MAAM,OAAOG,OAAO,OAAOU,MAAM,0B,GAjInCkG,IAAMC,WA8IdC,eAAWvH,sBAhNX,SAAAC,GAAK,MAAK,CACvBO,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAO,WAETw2B,IAAK,CACH/2B,OAAQ,oBACRO,MAAO,UACPb,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZgB,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZr0B,SAAU,CACRvB,OAAQ,kBACRqa,YAAa,GACblY,UAAW,IAEbqtD,SAAU,CACRhvD,SAAU,GACVD,MAAO,UACPT,OAAQ,GAEV+vD,KAAM,CACJrwD,QAAS,QAEX,UAAW,CACT,qCAAsC,CACpCe,MAAO,WAET,6BAA8B,CAC5Bf,QAAS,OACT0H,WAAY,UAEd,mCAAoC,CAClC1H,QAAS,QAEX,cAAe,CACbA,QAAS,YAmJWJ,CAAmB2vD,KCxMvCe,G,kDACJ,WAAY/rD,GAAQ,IAAD,8BACjB,cAAMA,IAiDRgsD,QAAU,SAAAC,GAGR,IAFA,IAAMC,EAAY,GAElB,MAA2B55C,OAAO+B,QAAQ43C,GAA1C,eAAiD,CAA5C,0BAAO5yD,EAAP,KAAYC,EAAZ,KACH4yD,EAAUl2B,QAAQ,CAChBm2B,UAAU,EACVz+B,UAAWr0B,EACX+yD,QAAS9yD,IAIb,OAAO4yD,GA7DU,EAgEnBG,eAAiB,SAAAC,GACf,IAAMb,EAAW,GAQjB,OAPAa,EAAU14C,SAAQ,SAAAjH,GAChB8+C,EAAS5nD,KAAK,CACZsoD,UAAU,EACVz+B,UAAW/gB,EAAS+gB,UACpB0+B,QAAS,QAGNX,GAzEU,EA4EnBc,iBAAmB,SAAArlD,GACjB,EAAKhH,SAAS,CACZssD,WAAYtlD,EAAM9G,OAAO9G,SA9EV,EAkFnBmzD,sBAAwB,SAAA7B,GACtB,EAAK1qD,SAAS,CACZ0qD,SAAUA,IAAa,EAAKlqD,MAAMkqD,SAAW,KAAOA,EACpDjrD,KAAM,MArFS,EAyFnB+sD,kBAAoB,SAAA5uD,GAClB,EAAKoC,SAAS,CACZP,KAAM7B,EAAEsC,OAAO9G,SA3FA,EA+FnBqzD,iBAAmB,YAAgB,IAAb/vD,EAAY,EAAZA,MACpB,EAAKsD,SAAS,CAAE0sD,WAAYhwD,KAhGX,EAmGnBiwD,YAAc,SAAC3lD,EAAO4lD,GAAkB,IAAD,EACrC,EAA2B,EAAKpsD,MAAxB+qD,EAAR,EAAQA,SAAU9rD,EAAlB,EAAkBA,KACdotD,EAAW,aAAOtB,GAChBuB,GACO,QAAX,EAAAD,SAAA,eAAanhD,MAAK,SAAA0L,GAAI,OAAIA,EAAKoW,YAAco/B,KAAcV,UAAW,GAExE,GACkB,aAAfllD,EAAMnN,MAA0C,KAAnBmN,EAAMy0B,UACrB,UAAfz0B,EAAMnN,KACN,CACA,IAAIg/C,GAAQ,EAeZ,GAbAiU,EAAgBp5C,SAAQ,SAAA0D,GAEpBA,EAAK1X,OAAO4X,gBAAkB,EAAK9W,MAAMf,KAAKC,OAAO4X,eACpDuhC,IAEDA,GAAQ,EACR,EAAK74C,SAAS,CACZ+sD,SAAU,EAAKvsD,MAAMf,KACrButD,kBAAkB,SAKnBnU,GAA6B,KAApB,EAAKr4C,MAAMf,KAcvB,OAbAotD,EAAcA,EAAYt5C,KAAI,SAAA6D,GAK5B,OAJIA,EAAKoW,YAAco/B,IACrBx1C,EAAK80C,QAAQp2B,QAAQr2B,GACrB2X,EAAK60C,UAAW,GAEX70C,UAGT,EAAKpX,SAAS,CACZurD,SAAUsB,EACVG,kBAAkB,EAClBvtD,KAAM,OAxIK,EA+InBurD,eAAiB,SAACx4C,EAAOo6C,EAAc5lD,GAOrC,IANA,IAAI6xC,GAAQ,EACJ0S,EAAa,EAAK/qD,MAAlB+qD,SACJsB,EAAW,aAAOtB,GAChBuB,EAAkBD,EAAYnhD,MAClC,SAAA0L,GAAI,OAAIA,EAAKoW,YAAco/B,KAC3BV,QACOv0C,EAAI,EAAGA,EAAIm1C,EAAgBntD,SAAWk5C,EAAOlhC,IACpD,GACEm1C,EAAgBn1C,GAAGjY,OAAO4X,gBACxBtQ,EAAM9G,OAAO9G,MAAMsG,OAAO4X,eAC5B9E,IAAUmF,EACV,CACAkhC,GAAQ,EACR,EAAK74C,SAAS,CACZ+sD,SAAU/lD,EAAM9G,OAAO9G,MACvB4zD,kBAAkB,IAEpB,EAAK7B,YAAY34C,GACjB,MAIJ,IAAKqmC,GAAgC,KAAvB7xC,EAAM9G,OAAO9G,MAazB,OAZAyzD,EAAcA,EAAYt5C,KAAI,SAAA6D,GAK5B,OAJIA,EAAKoW,YAAco/B,IACrBx1C,EAAK80C,QAAQ73B,OAAO7hB,EAAO,EAAGxL,EAAM9G,OAAO9G,OAC3Cge,EAAK60C,UAAW,GAEX70C,KAET,EAAKpX,SAAS,CACZurD,SAAUsB,EACVG,kBAAkB,SAEpB,EAAK7B,YAAY,OAlLF,EAuLnBC,iBAAmB,SAAC54C,EAAOo6C,GACzB,IAAQrB,EAAa,EAAK/qD,MAAlB+qD,SACFsB,EAAW,aAAOtB,GAExBsB,EAAYD,GAAgBC,EACzBnhD,MAAK,SAAA0L,GAAI,OAAIA,EAAKoW,YAAco/B,KAChCV,QAAQ73B,OAAO7hB,EAAO,GAEzB,EAAKxS,SACH,CACEurD,SAAUsB,IAEZ,kBAAM,EAAK1B,YAAY,UAnMR,EAuMnB8B,WAAa,SAAAxgD,GACX,IAAQ8+C,EAAa,EAAK/qD,MAAlB+qD,SACA30B,EAAwBnqB,EAAxBmqB,SAAUpJ,EAAc/gB,EAAd+gB,UAElB,MAAO,CACLzwB,KAAM65B,EACNg0B,cACEW,EAAS5rD,QACT4rD,EAAS7/C,MAAK,SAAA0L,GAAI,OAAIA,EAAKoW,YAAcA,KAAW0+B,QAAQvsD,SA/M/C,EAmNnBwrD,YAAc,SAAAruD,GACZ,EAAKkD,SAAS,CACZ2rD,UAAW7uD,KArNI,EAyNnBouD,YAAc,SAAA14C,GACZ,EAAKxS,SAAS,CACZirD,SAAUz4C,KA3NK,EA+NnB06C,aAAe,WACb,GAAI1tD,EAAc,EAAKgB,MAAM8rD,YAC3B5iD,GAAW,gBAAD,OACQ,EAAK5J,MAAMqtD,WAAa,MAAQ,SADxC,eAKZ,GAAI,EAAKrtD,MAAMqtD,YAAuC,MAAzB,EAAK3sD,MAAMksD,WACtChjD,GAAW,4BADb,CAIA,IAAI0jD,GAAS,EAWb,GAVA,EAAKttD,MAAM6sB,QAAQjZ,SAAQ,SAAAia,GACzB,GACEA,EAAO5wB,KAAKua,gBAAkB,EAAK9W,MAAM8rD,WAAWh1C,eACpDqW,EAAO7wB,KAAO,EAAKgD,MAAMutD,cAIzB,OAFA3jD,GAAW,qBAAD,OAAsBikB,EAAO5wB,KAA7B,yBACVqwD,GAAS,MAIC,GAAVA,EAAgB,CAClB,IAAMz/B,EAAS,CACb5wB,KAAM,EAAKyD,MAAM8rD,WACjBn+B,SAAU,EAAK3tB,MAAM2tB,SACrB/iB,MAAO,EAAKtL,MAAM0I,MAAMC,OAAO2C,MAC/BmgD,SAAU,EAAK/qD,MAAM+qD,SACrBmB,WAAY,EAAKlsD,MAAMksD,WACvB1/B,IAAK,EAAKltB,MAAMqtD,YAEc,MAA5B,EAAKrtD,MAAMutD,cACb3/B,GAAgBC,EAAQ,EAAK7tB,MAAMqtB,cAEnCQ,EAAO7wB,GAAK,EAAKgD,MAAMutD,cACvBr/B,GAAaL,IAEf,EAAK7tB,MAAMwtD,iBAlQb,EAAK9sD,MAAQ,CACX8rD,WAAY,KACZf,SAAU,GACVmB,WAAY,KACZv+B,SAAU,KACVnB,IAAK,KACL09B,SAAU,KACV9I,SAAS,GATM,E,qDAanB,WAAqB,IAAD,OAClB,EAAiCvoD,KAAKyG,MAA9ButD,EAAR,EAAQA,cAER53B,GAFA,EAAuBjtB,MAEDC,OAAO2C,OAC1BlK,MAAK,SAAAw0B,GACJ,GAAIA,EAAc,CAChB,IAAQE,EAAoBF,EAApBE,gBACR,EAAK51B,SAAS,CACZutD,uBAAwB33B,EACxB21B,SAAU,EAAKY,eAAev2B,SAInC10B,MAAK,W3J6JL,IAA2BitB,E2J5JL,MAAjBk/B,IACF,EAAKrtD,SAAS,CACZ4hD,SAAS,K3J0JazzB,E2JvJN,EAAKruB,MAAMutD,c3JwJ9BzsD,MAAM/F,EAAW,WAAaszB,EAAU,CAC7CrtB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GACJ,GAAwB,MAApBA,EAASQ,OAIb,OAAOsH,GAA8B9H,GAHnCA,EAAS1B,OAAOyB,MAAK,SAAAzB,GAAI,OAAI4J,GAAa5J,SAK7CqC,OAAM,SAASrB,GACdiJ,GACE,8E2JtK8CxI,MAAK,SAAAU,GAC/C,GAAIA,EAAM,CACR,IAAQ7E,EAA8C6E,EAA9C7E,KAAM2vD,EAAwC9qD,EAAxC8qD,WAAYv+B,EAA4BvsB,EAA5BusB,SAAUnB,EAAkBprB,EAAlBorB,IAAKu+B,EAAa3pD,EAAb2pD,SAEzC,EAAKvrD,SAAS,CACZssD,WAAYvvD,EACZwuD,SAAUA,EACVmB,WAAYA,EACZv+B,SAAUA,EACVnB,IAAKA,EACL40B,SAAS,c,oBA8NvB,WAAU,IAAD,OACP,EAA+CvoD,KAAKyG,MAA5CrC,EAAR,EAAQA,QAAS4vD,EAAjB,EAAiBA,cAAeF,EAAhC,EAAgCA,WAChC,EAWI9zD,KAAKmH,MAVP8rD,EADF,EACEA,WACAiB,EAFF,EAEEA,uBACA7C,EAHF,EAGEA,SACAjrD,EAJF,EAIEA,KACAutD,EALF,EAKEA,iBACAD,EANF,EAMEA,SACA9B,EAPF,EAOEA,SACAU,EARF,EAQEA,UACAJ,EATF,EASEA,SACA3J,EAVF,EAUEA,QAEI4L,EAAYL,EAAa,MAAQ,SAEvC,OACE,8BACGvL,EACC,cAAC,GAAD,IAEA,gCACE,qBAAIlkD,UAAWD,EAAQgwD,QAAvB,UACoB,MAAjBJ,EAAA,eAAgCf,GAAe,aAAc,IAC7DkB,KAEH,oBAAG9vD,UAAWD,EAAQiwD,aAAtB,UAAqCF,EAArC,WACA,cAAC,GAAD,CACEvwD,YAAY,YACZw1B,UAAW,GACXF,YAAa83B,GACbhtD,aAAcivD,EACdnvD,SAAU9D,KAAKgzD,mBAGjB,mBAAG3uD,UAAWD,EAAQiwD,aAAtB,uBACCH,GACCA,EAAuBh6C,KAAI,SAAA9G,GAAQ,OACjC,eAAC,GAAD,CAEE42B,IAAK,EAAK4pB,WAAWxgD,GACrBi+C,SAAUA,IAAaj+C,EAAS+gB,UAChCrwB,SAAU,kBACR,EAAKovD,sBAAsB9/C,EAAS+gB,YAEtCm9B,aAAcL,GAPhB,UAQE,sBAAK5sD,UAAWD,EAAQk1B,YAAxB,UACE,uBACEF,UAAW,IACX/0B,UAAS,UAAKD,EAAQ9B,MAAb,cACTvC,MAAOqG,EACPggB,IAAK,SAAA6iB,GACH,EAAKopB,UAAYppB,GAEnBzP,IAAKpmB,EAASqqB,OAAS,MACvB75B,YAAY,8CACZU,WAAY,SAACqJ,EAAOvH,GAAR,OACV,EAAKktD,YAAY3lD,EAAOyF,EAAS+gB,UAAW/tB,IAE9CtC,SAAU,EAAKqvD,oBAEjB,qBACE7tD,QAAS,SAAAf,GACP,EAAK+uD,YAAY/uD,EAAG6O,EAAS+gB,YAE/B9vB,UAAS,UAAKD,EAAQkwD,MAAb,UAJX,SAKE,cAAC,GAAD,CAAWlyD,MAAO,GAAIG,OAAQ,GAAIU,MAAM,iBAG3C0wD,GACC,mBAAGtvD,UAAWD,EAAQmwD,MAAtB,gCACmBb,EADnB,qBAKF,qBAAKrvD,UAAWD,EAAQowD,gBAAxB,WACKtC,EAAS5rD,QACV4rD,EACG7/C,MAAK,SAAA0L,GAAI,OAAIA,EAAKoW,YAAc/gB,EAAS+gB,aACzC0+B,QAAQ34C,KAAI,SAAC83C,EAAMvuD,GAAP,OACX,8BACE,cAAC,GAAD,CACEuuD,KAAMA,EACNv0B,MAAOrqB,EAASqqB,MAChBm0B,SAAUA,EACVU,UAAWA,EACXR,YAAa,EAAKA,YAClBD,YAAa,EAAKA,YAClBF,eAAgB,SAACluD,EAAIc,GAAL,OACd,EAAKotD,eAAeluD,EAAI2P,EAAS+gB,UAAW5vB,IAE9CwtD,iBAAkB,SAACtuD,EAAIc,GAAL,OAChB,EAAKwtD,iBAAiBtuD,EAAI2P,EAAS+gB,UAAW5vB,IAEhD4U,MAAO1V,KAdDuuD,UAzCb5+C,EAAS3P,OA8DnBqwD,GACC,sBAAKljD,MAAO,CAAE3G,UAAW,IAAzB,UACE,mBAAG5F,UAAWD,EAAQiwD,aAAtB,qBACA,cAAC,GAAD,CACEt0D,MAAOC,KAAKmH,MAAMksD,WAClBvvD,SAAU9D,KAAKozD,sBAGrB,cAAC,GAAD,CACE1qD,OAAQ,CAAElG,OAAQ,cAAeN,QAAS,SAC1CoD,QAAStF,KAAK6zD,aACd3tD,MAAwB,MAAjB8tD,EAAwB,SAAW,kB,GAzX9B7qD,IAAMC,WA4YjBC,eAAWvH,sBH9ZJ,SAAAC,GAAK,MAAK,CAC9BwyD,MAAO,CACLtxD,MAAO,UACPC,SAAU,IAEZ4U,UAAW,CACTmS,UAAW,OACX1nB,OAAQ,QAEVkyD,YAAa,CACXlyD,OAAQ,GACRE,QAAS,UAEX2xD,QAAS,CACP1uD,WAAY,SACZxC,SAAU,GACVD,MAAO,UACPZ,UAAW,UAEbqyD,UAAW,CACTtyC,WAAYrgB,EAAM4tB,QAAQC,KAC1B7S,YAAahb,EAAM4tB,QAAQC,KAC3BxtB,MAAO,IACPoL,UAAW,OAEbmnD,SAAU,CACRnyD,OAA6B,EAArBT,EAAM4tB,QAAQC,MAExBlF,KAAM,CACJtoB,MAAO,OACP6H,UAAgC,EAArBlI,EAAM4tB,QAAQC,MAE3B8I,MAAO,CACLJ,SAAU,KAEZs8B,aAAc,CACZ9kC,UAAW,QAEbxtB,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTX,MAAO,MACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAO,WAETqxD,MAAO,CACLlyD,MAAO,MACPuC,OAAQ,WAEV20B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZk8B,gBAAiB,CACf3vD,UAAW,QACX6tB,SAAU,QAEZxqB,KAAM,CACJ1F,OAAQ,eAEV6xD,aAAc,CACZnxD,SAAU,GACVD,MAAO,UACPE,WAAY,IACZ8G,UAAW,IAEb4qD,sBAAuB,CACrB3xD,SAAU,GACVD,MAAO,UACPE,WAAY,IACZ8G,UAAW,IAEbsoD,KAAM,CACJrwD,QAAS,QAEX,UAAW,CACT,sBAAuB,CACrBe,MAAO,UACPyC,WAAY,QAEd,wBAAyB,CACvBA,WAAY,QAEd,gBAAiB,CACfs+C,WAAY,GAEd,kBAAmB,CACjBzhD,OAAQ,QG2TYT,CAAmB0wD,KCpSvCsC,G,kDACJ,WAAYruD,GAAQ,IAAD,8BACjB,cAAMA,IAuCR2xB,iBAAmB,SAACzqB,EAAO8iB,GACzB,EAAK9pB,SAAS,CAAE8pB,SAChBmD,GACE,EAAKntB,MAAM0I,MAAMC,OAAO2C,MACxB,EAAKtL,MAAMsuD,MACXtkC,EACA,EAAKtpB,MAAM6tD,eA9CI,EAkDnB38B,wBAA0B,SAAA1qB,GACxB,EAAKhH,SAAS,CAAEuxB,YAAavqB,EAAM9G,OAAO9G,SAnDzB,EAsDnBk1D,iBAAmB,WACjB,EAAKtuD,SAAS,CAAEuJ,MAAM,KAvDL,EA2EnBglD,YAAc,SAAA/7C,GACZ,OAAKA,EAAQ,GAAK,IAAM,EACf,CAAExT,WAAY,WAEd,CACLA,WAAY,0BACZhD,aAAc,KAjFD,EAsFnBwyD,WAAa,SAAAJ,GACX,OAAIA,EACK,CACL5qD,YAAa,MACbirD,YAAa,SACbC,oBACE,0GACFC,sBAAuB,WAGlB,CACLnrD,YAAa,SACbirD,YAAa,cACbC,oBACE,qGACFC,sBAAuB,eAnG3B,EAAKnuD,MAAQ,CACXspB,KAAM,EACNyH,YAAa,GACbhoB,MAAM,EACN8jD,cAAe,EACfgB,aAAc,I9JlHlB10D,GAAMC,SAAS,CACbC,KAAMyyB,K8JqHNW,GACE,EAAKntB,MAAM0I,MAAMC,OAAO2C,MACxB,EAAKtL,MAAMsuD,MACX,EAAK5tD,MAAMspB,KACX,IAfe,E,6DAkBnB,WAC4B,MAAtBzwB,KAAKyG,MAAM6sB,WACRtzB,KAAKyG,MAAM6sB,QAAQhtB,OAAS,IAAMtG,KAAKyG,MAAMqtB,YAAgC,GAAlB9zB,KAAKmH,MAAMspB,KAAY,IACnFzwB,KAAKyG,MAAM6sB,QAAQhtB,OAAS,KAC9BstB,GACE5zB,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxB/R,KAAKyG,MAAMsuD,MACX/0D,KAAKmH,MAAMspB,KACX,IAG8B,IAA9BzwB,KAAKyG,MAAM6sB,QAAQhtB,QAAgBtG,KAAKyG,MAAMqtB,YAAc,GAC9DF,GACE5zB,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxB/R,KAAKyG,MAAMsuD,MACS,IAApB/0D,KAAKmH,MAAMspB,KAAa,EAAIzwB,KAAKmH,MAAMspB,KAAO,EAC9C,O,6BAwBR,SAAgBhtB,GACdzD,KAAK2G,SAAS,CACZqtD,cAAevwD,EACfyM,MAAM,M,gCAIV,SAAmBnQ,GACjBC,KAAK2G,SAAS,CAAEquD,aAAcj1D,IAC9B6zB,GACE5zB,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxB/R,KAAKyG,MAAMsuD,MACX,EACAQ,UAAUx1D,M,oBAmCd,WAAU,IAAD,OACP,EAAoCC,KAAKyG,MAAjCrC,EAAR,EAAQA,QAASkvB,EAAjB,EAAiBA,QAASyhC,EAA1B,EAA0BA,MAC1B,EAA8B/0D,KAAKmH,MAA3B+wB,EAAR,EAAQA,YAAazH,EAArB,EAAqBA,KACf+kC,GAAsB,OAAPliC,QAAO,IAAPA,OAAA,EAAAA,EAAShtB,SAAsC,KAA5BtG,KAAKmH,MAAM6tD,aAC7CS,EAAez1D,KAAKm1D,WAAWJ,GAErC,OACE,sBAAKnkD,MAAO,CAAEqZ,UAAW,OAAQ1nB,OAAQ,QAAzC,UACE,cAAC,GAAD,CAAO2N,KAAMlQ,KAAKmH,MAAM+I,KAAMma,QAASrqB,KAAKi1D,iBAA5C,SACE,cAAC,GAAD,CACE3hC,QAAStzB,KAAKyG,MAAM6sB,QACpBQ,YAAa9zB,KAAKyG,MAAMqtB,YACxBtuB,SAAS,KACTwuD,cAAeh0D,KAAKmH,MAAM6sD,cAC1BF,WAAYiB,EACZd,YAAaj0D,KAAKi1D,qBAItB,sBACErkD,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZ0uB,SAAU,IACV3uB,eAAgB,iBALpB,UAOE,sBACEiH,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB6D,UAAW,OALf,UAOE,oBAAInJ,UAAWD,EAAQ8B,MAAO0K,MAAO,CAAEmM,YAAa,IAApD,SACG/c,KAAKyG,MAAMivD,aAEbpiC,GACC,sBACE1iB,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZxH,MAAO,QAJX,UAME,cAAC,KAAD,CACEiC,UAAWD,EAAQm0B,mBACnBjzB,QAAS,kBAAM,EAAKqwD,gBAAgB,OACpCpmC,QAAQ,SAHV,SAIE,cAAC,GAAD,CAAUhtB,OAAO,OAAOH,MAAM,OAAOa,MAAM,cAE7C,oBACEoB,UAAWD,EAAQwxD,SACnBhlD,MAAO,CAAEpO,OAAQ,cAFnB,qBAGU,+BAAOizD,EAAatrD,uBAMnCqrD,GACC,sBAAKnxD,UAAWD,EAAQk1B,YAAxB,UACE,uBACEj1B,UAAWD,EAAQ9B,MACnBsB,YAAW,iBAAY5D,KAAKyG,MAAMivD,YAClC5xD,SAAU,SAAA6J,GAAK,OAAI,EAAKkoD,mBAAmBloD,EAAM9G,OAAO9G,UAE1D,cAAC,GAAD,CAAYqC,MAAM,KAAKG,OAAO,KAAKU,MAAM,mBAK7CqwB,GAAW,cAAC,GAAD,IAEZA,GAAWkiC,EACV,cAAC,KAAD,CAAOnxD,UAAWD,EAAQsmB,KAA1B,SACE,qBAAKrmB,UAAWD,EAAQwwD,aAAxB,SACE,sBAAKvwD,UAAWD,EAAQs0B,MAAxB,UACE,sBAAK9nB,MAAO,CAAEjL,WAAY,WAA1B,UACE,sBACEtB,UAAWD,EAAQ0xD,WACnBllD,MAAO,CACLsvB,aAAc,oBACdv6B,WAAY,UACZy6B,UAAW,QALf,UAOE,qBAAK/7B,UAAWD,EAAQV,KAAxB,kBACA,qBAAKW,UAAWD,EAAQ2xD,OAAxB,SACGN,EAAaL,iBAGjB9hC,EACEphB,QACC,SAAA8jD,GAAC,OAIE,IAHDA,EAAEtyD,KACCua,cACAhe,QAAQ,EAAKkH,MAAM6tD,aAAa/2C,kBAGtC/D,KAAI,SAAC87C,EAAG78C,GAAJ,OACH,sBAEEvI,MAAO,EAAKskD,YAAY/7C,GACxB9U,UAAWD,EAAQ0xD,WAHrB,UAIE,qBAAKzxD,UAAWD,EAAQV,KAAxB,SAA+BsyD,EAAEtyD,OACjC,qBAAKW,UAAWD,EAAQ2xD,OAAxB,SACGC,EAAEriC,IAAMqiC,EAAE3C,WAAa2C,EAAEC,aAE5B,qBACE5xD,UAAWD,EAAQ8xD,QACnB5wD,QAAS,kBAAM,EAAKqwD,gBAAgBK,EAAEvyD,KAFxC,kBAKA,cAAC,GAAD,CACEqxB,SAAUkhC,EAAEvyD,GACZC,KAAM,EAAK+C,MAAMivD,WACjB5hC,YAAa,EAAKrtB,MAAMqtB,gBAfrBkiC,EAAEvyD,UAoBf,cAAC,GAAD,CACEyiB,MAAOlmB,KAAKyG,MAAMqtB,YAClBoE,YAAaA,EACbzH,KAAMA,EACN0/B,aAAcnwD,KAAKo4B,0BAM3B,8BACE,cAAC,GAAD,CACE5Q,YAAaiuC,EAAaJ,oBAC1B/vD,QAAS,kBAAM,EAAKqwD,gBAAgB,OACpCxrD,YAAasrD,EAAaH,iC,GAhPlBnsD,IAAMC,WAkQbC,eAAWvH,sBAxWX,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzBlF,KAAM,CACJtoB,MAAO,OACP6H,UAAgC,EAArBlI,EAAM4tB,QAAQC,MAE3B8I,MAAO,CACLJ,SAAU,KAEZs8B,aAAc,CACZ9kC,UAAW,OACXnqB,WAAY,sBAEd+uD,UAAW,CACTtyC,WAAYrgB,EAAM4tB,QAAQC,KAC1B7S,YAAahb,EAAM4tB,QAAQC,KAC3BxtB,MAAO,KAETm2B,mBAAoB,CAClB5yB,WAAY,4DACZI,UAAW,0CACXxD,OAAQ,GACRH,MAAO,GACPK,QAAS,EACT61B,SAAU,GACV31B,aAAc,IAEhBuD,MAAO,CACLtD,WAAY,OACZO,WAAY,OACZD,SAAU,GACVD,MAAO,WAETX,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBk2B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,KAEZw9B,WAAY,CACVrzD,QAAS,GACTS,SAAU,GACVhB,QAAS,OACTU,WAAY,mBACZK,MAAO,WAETS,KAAM,CACJ8J,UAAW,MACX5I,SAAU,MACVk4C,SAAU,aACVr6C,QAAS,UAEXszD,OAAQ,CACNvoD,UAAW,MACX5I,SAAU,MACVk4C,SAAU,aACVr6C,QAAS,UAEXyzD,QAAS,CACP1oD,UAAW,MACXvK,MAAO,UACP0B,OAAQ,WAEVkrD,UAAW,CACTriD,UAAW,MACXvK,MAAO,UACP0B,OAAQ,WAEV8yB,KAAM,CACJ/xB,WAAY,GACZxC,SAAU,GACVD,MAAO,WAET2yD,SAAU,CACRhzD,WAAY,OACZO,WAAY,OACZD,SAAU,GACVD,MAAO,cAsQenB,CAAmB4X,aALrB,SAAAvS,GAAK,MAAK,CAChCmsB,QAASnsB,EAAMmsB,QACfQ,YAAa3sB,EAAM2sB,eAGwBpa,CAAyBo7C,MC1ThEqB,G,kDACJ,WAAY1vD,GAAQ,IAAD,8BACjB,cAAMA,IAkCRiH,aAAe,SAAChK,EAAM3D,EAAO0D,GAC3B,EAAKkD,SAAL,gBACGjD,EAAO3D,IAEV,EAAKy4B,cAAc/0B,IAvCF,EA0CnB+0B,cAAgB,WACd,EAAK7xB,SAAS,CACZ8qB,YAAY,KA5CG,EAgDnBC,iBAAmB,WACjB,EAAK/qB,SAAS,CACZ8qB,YAAY,KAlDG,EAsDnB2G,iBAAmB,SAACzqB,EAAO8iB,GACzB,EAAK9pB,SAAS,CAAE8pB,SAChBD,GAAiB,EAAK/pB,MAAM0I,MAAMC,OAAO2C,MAAO0e,IAxD/B,EA2DnB4H,wBAA0B,SAAA1qB,GACxB,EAAKhH,SAAS,CAAEuxB,YAAavqB,EAAM9G,OAAO9G,SAzD1C,EAAKoH,MAAQ,CACXspB,KAAM,EACNyH,YAAa,GACbhoB,MAAM,EACNknB,eAAgB,EAChBC,YAAa,KACbrL,QAAS,KACTsI,OAAQ,KACR7C,YAAY,GpKzChBnxB,GAAMC,SAAS,CACbC,KAAM6vB,KoK4CNqD,GAAW,EAAKjtB,MAAM0I,MAAMC,OAAO2C,OAAO,GAC1Cye,GAAiB/pB,EAAM0I,MAAMC,OAAO2C,MAAO,EAAK5K,MAAMspB,MAhBrC,E,6DAmBnB,WACE,GAA2B,MAAvBzwB,KAAKyG,MAAM8pB,WACqB,GAA9BvwB,KAAKyG,MAAM8pB,SAASjqB,QAAetG,KAAKyG,MAAMiqB,YAAc,IACtC,IAApB1wB,KAAKmH,MAAMspB,MACbD,GAAiBxwB,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAAO/R,KAAKmH,MAAMspB,MAG7B,GAA9BzwB,KAAKyG,MAAM8pB,SAASjqB,QAAetG,KAAKyG,MAAMiqB,YAAc,GAC1D1wB,KAAKmH,MAAMspB,KAAO,GAAG,CACvB,IAAMA,EAAOzwB,KAAKmH,MAAMspB,KAAO,EAC/BD,GAAiBxwB,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAAO0e,M,oBAkCxD,WAAU,IAAD,OACP,EAA8BzwB,KAAKyG,MAA3BrC,EAAR,EAAQA,QAASmsB,EAAjB,EAAiBA,SACjB,EAA0CvwB,KAAKmH,MAAvC+wB,EAAR,EAAQA,YAAazH,EAArB,EAAqBA,KAAMgB,EAA3B,EAA2BA,WAErBZ,EAAU,CACd6G,aAAc13B,KAAKmH,MAAMkwB,YACzB/C,OAAQt0B,KAAKmH,MAAMmtB,OACnB+C,YAAar3B,KAAKmH,MAAM6kB,SAG1B,OACE,qBAAKpb,MAAO,CAAErO,OAAQ,QAAtB,SACE,qBAAKqO,MAAO,CAAErO,OAAQ,OAAtB,SACE,qBAAKqO,MAAO,CAAErO,OAAQ,QAAtB,SACE,sBAAK8B,UAAWD,EAAQsmB,KAAM9Z,MAAO,CAAErO,OAAQ,QAA/C,UACE,oBAAI8B,UAAWD,EAAQ8B,MAAO0K,MAAO,CAAEmM,YAAa,IAApD,sBAIEwT,EAEGA,EAASjqB,QAAWmrB,EASvB,qBAAKptB,UAAWD,EAAQwwD,aAAxB,SAEI,kCACKrkC,EAASjqB,QACV,qBACEsK,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZ0uB,SAAU,IACV3uB,eAAgB,iBALpB,SAOE,qBACEiH,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB6D,UAAW,OALf,SAOE,sBACEoD,MAAO,CACL1O,QAAS,OACT0H,WAAY,SACZxH,MAAO,QAJX,UAME,cAAC,KAAD,CACEiC,UAAWD,EAAQm0B,mBACnBjzB,QAAStF,KAAKw4B,cACdjJ,QAAQ,SAHV,SAIE,cAAC,GAAD,CACEhtB,OAAO,OACPH,MAAM,OACNa,MAAM,cAGV,mBACEoB,UAAWD,EAAQwxD,SACnBhlD,MAAO,CAAEpO,OAAQ,cAFnB,oCAUR,sBAAK6B,UAAWD,EAAQs0B,MAAxB,UACGjH,GACC,cAAC,GAAD,CACEA,WAAYA,EACZC,iBAAkB1xB,KAAK0xB,iBACvBb,QAASA,EACTuG,eAAgBvG,EAAQptB,GACxBitB,YAAa1wB,KAAKyG,MAAMiqB,gBAGzBH,EAASjqB,QACV,gCACGiqB,EAASrW,KAAI,SAAA2W,GAAO,OACnB,8BACE,cAAC,GAAD,CACEA,QAASA,EACTuG,eAAgBvG,EAAQptB,GACxBitB,YAAa,EAAKjqB,MAAMiqB,eAJlBG,EAAQptB,OAQpB,cAAC,GAAD,CACEyiB,MAAOlmB,KAAKyG,MAAMiqB,YAClBwH,YAAaA,EACbzH,KAAMA,EACN0/B,aAAcnwD,KAAKo4B,8BA7EjC,cAAC,GAAD,CACE5Q,YACE,kGAEFliB,QAAStF,KAAKw4B,cACdruB,YAAa,gBAPf,cAAC,GAAD,iB,GApFOhB,IAAMC,WAoL7B+sD,GAAS1oB,aAAe,CACtB76B,UAAW,IAQb,IAOevJ,eACbvH,sBArPa,SAAAC,GAAK,MAAK,CACvB2oB,KAAM,CACJtoB,MAAO,OACPswB,SAAU,WAEZgG,MAAO,CACLJ,SAAU,IACV5F,SAAU,WAEZ0jC,oBAAqB,CACnB3mC,MAAO,SAET8H,aAAc,CACZr1B,QAAS,OACTM,OAAQ,SACRJ,MAAO,OACPuH,eAAgB,gBAChBhE,WAAY,UACZI,UAAW,4CACXpD,aAAc,IAEhB60B,WAAY,CACVhqB,UAAW,MACX/K,QAAS,IAEXyD,MAAO,CACLtD,WAAY,OACZO,WAAY,OACZD,SAAU,GACVD,MAAO,WAETs1B,mBAAoB,CAClB5yB,WAAY,4DACZI,UAAW,0CACXxD,OAAQ,GACRH,MAAO,GACPK,QAAS,EACT61B,SAAU,GACV31B,aAAc,IAEhBizD,SAAU,CACRhzD,WAAY,OACZO,WAAY,OACZD,SAAU,GACVD,MAAO,cAyMTnB,CAAmB4X,aARG,SAAAvS,GAAK,MAAK,CAChCmsB,QAASnsB,EAAMmsB,QACf/C,SAAUppB,EAAMopB,SAChB3d,UAAWzL,EAAMyL,UACjB8d,YAAavpB,EAAMupB,eAIAhX,CAAyBy8C,MCvQjCztD,GAAS,SAAA3G,GAAK,MAAK,CAC9B2oB,KAAM,CACJtoB,MAAO,OACP6H,UAAgC,EAArBlI,EAAM4tB,QAAQC,KACzB8C,SAAU,UACV/sB,WAAY,OAEd+yB,MAAO,CACLJ,SAAU,IACV5F,SAAU,WAEZ2jC,SAAU,CACR1wD,WAAY,SAEdywD,oBAAqB,CACnB3mC,MAAO,SAEThqB,OAAQ,CACN/C,OAAQ,oBACRO,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BH,WAAY,UACZhD,aAAc,GACdF,QAAS,YACTsD,UAAW,OACX,UAAW,CACTJ,WAAY,YAGhB4xB,aAAc,CACZr1B,QAAS,OACTM,OAAQ,SACRJ,MAAO,OACPuH,eAAgB,gBAChBhE,WAAY,UACZI,UAAW,4CACXpD,aAAc,GACdV,SAAU,YAEZu1B,WAAY,CACVhqB,UAAW,MACX/K,QAAS,GACTs1B,YAAa,qBAEfN,KAAM,CACJt0B,WAAY,OACZD,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B2zC,WAAY,CACV3wD,WAAY,OAEd4wD,YAAa,CACX5wD,WAAY,UACZjD,OAAQ,oBACRC,aAAc,GACdF,QAAS,YACTsD,UAAW,OACXL,WAAY,QACZxC,SAAU,WACV01C,UAAW,QAEb4d,UAAW,CACTt0D,QAAS,OACTyC,OAAQ,UACRE,UAAW,GACX+E,WAAY,UAEd6sD,QAAS,CACPjqC,oBAAqB,GACrBD,uBAAwB,GACxB5mB,WAAY5D,EAAM6D,QAAQC,QAAQm0B,MAClC/2B,MAAO,UACPR,QAAS,YACToC,UAAW,QAEb6xD,SAAU,CACRjqC,wBAAyB,GACzBC,qBAAsB,GACtB/mB,WAAY,UACZ1C,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B3D,QAAS,YACToC,UAAW,QAEb8xD,YAAa,CACXz0D,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZrH,OAAQ,QAEV2D,MAAO,CACLtD,WAAY,OACZO,WAAY,OACZD,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,OAC1BnV,UAAW,MACXuP,YAAa,QAEf65C,cAAe,CACb10D,QAAS,OACTyH,eAAgB,iBAElBgZ,OAAQ,CACNzgB,QAAS,OACT0H,WAAY,UAEditD,UAAW,CACTlxD,WAAY,qBACZ1C,MAAO,sBAET6zD,WAAY,CACVnxD,WAAY,qBACZ1C,MAAO,sBAET8zD,cAAe,CACb70D,QAAS,OACT0H,WAAY,WACZzH,cAAe,OAEjB60D,WAAY,CACVj6C,YAAa,OACb7Z,SAAU,OACVN,WAAY,OACZK,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5Bs0C,cAAe,CACb3+B,SAAU,SAEZ4+B,QAAS,CACP10D,OAAQ,KC5GGV,4BAAW4G,GAAX5G,EAbf,SAAqB2E,GACnB,IAAQrC,EAAqBqC,EAArBrC,QAASkB,EAAYmB,EAAZnB,QACjB,OACE,cAAC,KAAD,CACEiqB,QAAQ,SACRtsB,MAAM,UACNoB,UAAWD,EAAQqB,OACnBH,QAASA,EAJX,sBCqCWxD,4BAAW4G,GAAX5G,EArCf,SAA6B2E,GAC3B,ICX6BqS,EAAKjY,EAAMs2D,EDWhC/yD,EAAuDqC,EAAvDrC,QAASic,EAA8C5Z,EAA9C4Z,QAAS+2C,EAAqC3wD,EAArC2wD,mBAAoBC,EAAiB5wD,EAAjB4wD,aAC9C,OACE,sBAAKhzD,UAAWD,EAAQmzB,aAAxB,UACE,sBAAKlzB,UAAWD,EAAQozB,WAAxB,UACE,mBAAGnzB,UAAWD,EAAQqzB,KAAtB,uBACA,mBACEpzB,UAAWD,EAAQ8yD,QACnBtmD,MAAO,CACLvO,WCnBmByW,EDmBOuH,ECnBFxf,EDmBW,kBClB5BA,EACduM,QAAQ,MAAO,KACfA,QAAQ,KAAM,IACdqM,MAAM,KACNvH,OAAOi7B,SAEMtM,OAEhB,SAAmBziB,GAEjB,QAASA,QAA8ByX,KAArB/c,EAAMA,EAAIsF,QAJKtF,EAAMq+C,IDYyB,QAH5D,SAKG92C,EAAQ62C,aAGb,sBAAK7yD,UAAWD,EAAQozB,WAAxB,UACE,mBAAGnzB,UAAWD,EAAQqzB,KAAtB,oBACA,cAAC,GAAD,CACEh0B,GAAI4c,EAAQi3C,kBACZv3D,MAAOsgB,EAAQk3C,oBACfpiC,kBAAmB,SAAAp1B,GAAK,OAAIq3D,EAAmBr3D,EAAOsgB,SAG1D,qBAAKhc,UAAWD,EAAQozB,WAAxB,SACE,qBAAKnzB,UAAWD,EAAQuyD,YAAxB,SACGt2C,EAAQm3C,QACP,qBAAKnzD,UAAWD,EAAQmyD,YAAxB,SACE,cAAC,GAAD,MAGF,cAAC,GAAD,CAAajxD,QAAS,kBAAM+xD,EAAah3C,YA1BNA,EAAQ5c,OEb1Cg0D,GAAO,OACPC,GAAQ,QCsCN51D,4BAAW4G,GAAX5G,EA9Bf,SAA8B2E,GAC5B,IACEkxD,EAMElxD,EANFkxD,YACAvzD,EAKEqC,EALFrC,QACAqsB,EAIEhqB,EAJFgqB,KACA2mC,EAGE3wD,EAHF2wD,mBACAC,EAEE5wD,EAFF4wD,aACAj/B,EACE3xB,EADF2xB,iBAEF,OACE,sBAAK/zB,UAAWD,EAAQwzD,KAAxB,UACGD,EAAYv9C,KAAK9T,QAChBqxD,EAAYv9C,KAAKF,KAAI,SAAAmG,GAAO,OAC1B,cAAC,GAAD,CAEEA,QAASA,EACT+2C,mBAAoBA,EACpBC,aAAcA,GAHTh3C,EAAQ5c,OAMnB,cAAC,GAAD,CACEgtB,KAAMA,EACNyH,YD7BiB,EC8BjBhS,MAAOyxC,EAAYE,WACnB1H,aAAc/3B,U,oBCzBhB0/B,G,4MACJC,cAAgB,SAACh4D,EAAO0mD,GACtB,IAAMriD,EAAU,EAAKqC,MAAMrC,QAC3B,OAAO4zD,KAAW,0BAEV5zD,EAAQqyD,SAAY12D,IAAU03D,IAFrB,0BAKTrzD,EAAQsyD,UAAa32D,IAAU23D,IALtB,0BAQTtzD,EAAQyyD,WAAc92D,IAAU0mD,GARvB,0BAWTriD,EAAQ0yD,YAAe/2D,IAAU0mD,K,4CAK3C,WACE,MAOIzmD,KAAKyG,MANPrC,EADF,EACEA,QACA6zD,EAFF,EAEEA,UACAxR,EAHF,EAGEA,YACAppB,EAJF,EAIEA,uBACAK,EALF,EAKEA,gBACAw6B,EANF,EAMEA,qBAEF,OACE,sBAAK7zD,UAAWD,EAAQwyD,cAAxB,UACE,sBAAKvyD,UAAWD,EAAQue,OAAxB,UACE,oBAAIte,UAAWD,EAAQ8B,MAAvB,sBAEA,sBAAK7B,UAAWD,EAAQoyD,UAAxB,UACE,qBACEnyD,UAAWrE,KAAK+3D,cAAcN,GAAMhR,GACpCnhD,QAAS,kBAAM2yD,EAAUR,KAF3B,sBAKA,qBACEpzD,UAAWrE,KAAK+3D,cAAcL,GAAOjR,GACrCnhD,QAAS,kBAAM2yD,EAAUP,KAF3B,2BAQJ,sBAAKrzD,UAAWD,EAAQ2yD,cAAxB,UACE,mBAAG1yD,UAAWD,EAAQ4yD,WAAtB,oBACA,qBAAK3yD,UAAWD,EAAQ6yD,cAAxB,SACE,cAAC,KAAD,CACElhC,QAAS2H,EACT39B,MAAOs9B,EACPv5B,SAAU,SAAA0uB,GAAM,OAAI0lC,EAAqB1lC,kB,GArDtBrpB,IAAMC,WA8DxBtH,wBAAW4G,GAAX5G,CAAmBg2D,ICjD5BK,G,kDACJ,WAAY1xD,GAAQ,IAAD,8BACjB,cAAMA,IAgCR2xD,oBAAsB,SAAArmD,GACpBqqB,GAAgBrqB,GAAOlK,MAAK,SAAAw0B,GAC1B,GAAIA,EAAc,CAChB,IAEMqB,EAFsBrB,EAApBE,gBAGLrqB,QAAO,SAAAkB,GAAQ,OAAIA,KACnB8G,KAAI,SAAA9G,GACH,MAAO,CACL/P,MAAO+P,EAASmqB,SAChBx9B,MAAOqT,EAAS+gB,cAIhBkkC,EAAgC,CAAEh1D,MAAO,MAAOtD,MAAO,OAE7D29B,EAAgBjB,QAAQ47B,GAExB,EAAK1xD,SAAS,CACZ+2B,gBAAiBA,EACjBL,uBAAwBg7B,SArDb,EA2DnBJ,UAAY,SAAAK,GACV,IAAMvmD,EAAQ,EAAKtL,MAAM0I,MAAMC,OAAO2C,MACtCghB,KACIulC,IAAYZ,GACdtjC,GACEriB,EACA,EHrFiB,EGuFjB,EAAK5K,MAAMk2B,uBAAuBt9B,OAGpCm0B,GACEniB,EACA,EH5FiB,EG8FjB,EAAK5K,MAAMk2B,uBAAuBt9B,OAGtC,EAAK4G,SAAS,CACZ4xD,SAAUD,EACV7nC,KAAM,EACNknC,YAAa,QAhFE,EAoFnBv/B,iBAAmB,SAACzqB,EAAO8iB,GACzB,EAAK9pB,SAAS,CAAE8pB,KAAMA,IAAQ,WAC5B,IAAQ1e,EAAU,EAAKtL,MAAM0I,MAAMC,OAA3B2C,MACR,EAA6C,EAAK5K,MAA1CoxD,EAAR,EAAQA,SAAUl7B,EAAlB,EAAkBA,uBAEdk7B,IAAad,GACfvjC,GAAgBniB,EAAO0e,EH9GN,EG8GuB4M,EAAuBt9B,OAE/Dq0B,GAAeriB,EAAO0e,EHhHL,EGgHsB4M,EAAuBt9B,WA5FjD,EAiGnBs3D,aAAe,SAAAh3C,GAEkB,MAA7BA,EAAQi3C,mBACuB,MAA/Bj3C,EAAQk3C,qBACRl3C,EAAQk3C,oBAAoBhlD,SAAS,eAKvCkiB,GAAYpU,EADM,EAAK5Z,MAAM0I,MAAMC,OAA3B2C,QAzGS,EA6GnBqlD,mBAAqB,SAACr3D,EAAOsgB,GAC3B,IAAMm4C,EAAW,aAAO,EAAKrxD,MAAMwwD,YAAYv9C,MAC/CiG,EAAQi3C,kBAAoBv3D,EAAM0D,GAClC4c,EAAQk3C,oBAAsBx3D,EAAMA,MACpCsgB,EAAQm3C,SAAU,EAClB,EAAK7wD,SAAL,2BAAmB,EAAKQ,MAAMwwD,aAA9B,IAA2Cv9C,KAAMo+C,MAlHhC,EAqHnBC,sBAAwB,SAAAjmC,GACtB,EAAK7rB,SACH,CACE02B,uBAAwB7K,IAE1B,WACE,IAAQzgB,EAAU,EAAKtL,MAAM0I,MAAMC,OAA3B2C,MACR,EAAmD,EAAK5K,MAAhDspB,EAAR,EAAQA,KAAM8nC,EAAd,EAAcA,SAAUl7B,EAAxB,EAAwBA,uBACpBk7B,IAAad,GACfvjC,GAAgBniB,EAAO0e,EHlJR,EGkJyB4M,EAAuBt9B,OAE/Dq0B,GAAeriB,EAAO0e,EHpJP,EGoJwB4M,EAAuBt9B,WA7HpE,EAAKoH,MAAQ,CACX+I,MAAM,EACNknB,eAAgB,EAChBugC,YAAa,KACbY,SAAUd,GACVhnC,KAAM,EACN4M,uBAAwB,CAAEt9B,MAAO,MAAOsD,MAAO,QAThC,E,qDAanB,WACErD,KAAKo4D,oBAAoBp4D,KAAKyG,MAAM0I,MAAMC,OAAO2C,OACjDiiB,GAAoBh0B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAAO,IACnDmiB,GACEl0B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxB/R,KAAKmH,MAAMspB,KHtCQ,EGwCnBzwB,KAAKmH,MAAMk2B,uBAAuBt9B,S,kCAStC,WACEgzB,O,oBAwGF,WAAU,IAAD,OACC3uB,EAAYpE,KAAKyG,MAAjBrC,QACR,EAAwCpE,KAAKmH,MAArCwwD,EAAR,EAAQA,YAAalnC,EAArB,EAAqBA,KAAM8nC,EAA3B,EAA2BA,SAE3B,OACE,sBAAKl0D,UAAWD,EAAQwwD,aAAxB,UACE,cAAC,GAAD,CACEnO,YAAa8R,EACbN,UAAW,SAAAl4D,GAAK,OAAI,EAAKk4D,UAAUl4D,IACnCs9B,uBAAwBr9B,KAAKmH,MAAMk2B,uBACnCK,gBAAiB19B,KAAKmH,MAAMu2B,gBAC5Bw6B,qBAAsBl4D,KAAKy4D,yBAG3Bd,GAAe,cAAC,GAAD,IAEhBA,IACGA,EAAYE,WAGZ,cAAC,GAAD,CACEF,YAAaA,EACblnC,KAAMA,EACN4mC,aAAcr3D,KAAKq3D,aACnBD,mBAAoBp3D,KAAKo3D,mBACzBh/B,iBAAkBp4B,KAAKo4B,mBAPzB,cAAC,GAAD,CAAQ5Q,YH1KlB,6G,uCG0CA,SAAgCqQ,GAC9B,IAAQ8/B,EAAgB9/B,EAAhB8/B,YACR,OAAOA,EAAc,CAAEA,eAAgB,S,GA3BpBxuD,IAAMC,WChBhBsvD,GAAY,CACvB,CACE73D,KAAM,WACN6C,KAAM,WACNqN,UD6LWjP,qBAAW4G,GAAX5G,CAAmB4X,aALV,SAAAvS,GAAK,MAAK,CAChCmsB,QAASnsB,EAAMmsB,QACfqkC,YAAaxwD,EAAMwwD,eAGaj+C,CAAyBy+C,MC3LzD,CACEt3D,KAAM,MACN6C,KAAM,MACNqN,UAAW,kBACT,cAAC,GAAD,CAASgkD,OAAO,EAAMW,WAAW,MAAMiD,aAAa,iBAGxD,CACE93D,KAAM,UACN6C,KAAM,UACNqN,UAAW,kBACT,cAAC,GAAD,CACEgkD,OAAO,EACPW,WAAW,UACXiD,aAAa,oBAInB,CACE93D,KAAM,WACN6C,KAAM,WACNqN,UAAWolD,K,0CC+BTyC,G,4JACJ,WAAU,IAAD,OACCx0D,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,8BACE,sBAAKC,UAAWD,EAAQ0T,UAAxB,UACE,qBAAKzT,UAAWD,EAAQy0D,WAAxB,SACE,cAAC,KAAD,CAAMx0D,UAAWD,EAAQ00D,SAAzB,SACG94D,KAAKyG,MAAMsyD,OAAO7+C,KAAI,SAAA8+C,GAAK,OAC1B,cAAC1J,GAAA,EAAD,CACEjrD,UAAWD,EAAQwpC,KAEnBqrB,gBAAiB70D,EAAQ80D,WACzBjwD,GAAE,UAAK,EAAKxC,MAAM0yD,SAAhB,YAA4BH,EAAMn4D,MAJtC,SAKE,cAAC,KAAD,CAAU4E,QAAM,EAAhB,SACE,cAAC,KAAD,CAAcI,QAASmzD,EAAMt1D,UAJ1Bs1D,EAAMn4D,aAUnB,qBAAKwD,UAAWD,EAAQ6G,KAAxB,SACE,eAAC,IAAD,WACGjL,KAAKyG,MAAMsyD,OAAO7+C,KAAI,SAAA8+C,GAAK,OAC1B,cAACloD,EAAA,EAAD,CACEE,OAAK,EAELnQ,KAAI,UAAK,EAAK4F,MAAM2yD,WAAhB,OAA4BJ,EAAMn4D,MACtCkQ,UAAWioD,EAAMjoD,WAFZioD,EAAMn4D,SAKf,cAACyO,EAAA,EAAD,CACEnH,KAAMnI,KAAKyG,MAAM2yD,UACjBnwD,GAAE,UAAKjJ,KAAKyG,MAAM0yD,SAAhB,YAA4Bn5D,KAAKyG,MAAMsyD,OAAO,GAAGl4D,sB,GAlC7CsI,IAAMC,WAoDbC,eAAWvH,sBAxGX,SAAAC,GAAK,MAAK,CACvB+V,UAAW,CACT5V,QAAS,OACTK,OAAQ,QAEVs2D,WAAY,CACVvgC,SAAU,QACVvb,YAAa,IAEf9R,KAAM,CACJqtB,SAAU,QACVl2B,MAAO,OACP2a,YAAa,IAEf+7C,SAAU,CACR/yD,UAAW,4CACXpD,aAAc,GACdF,QAAS,EACTkD,WAAY5D,EAAM6D,QAAQC,QAAQiX,cAEpC8wB,KAAM,CACJvsB,eAAgB,OAChBpe,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B1D,OAAQ,OACR,cAAe,CACbiD,WAAY,2BAEd,QAAS,CACPpD,OAAQ,IAEV,sBAAuB,CACrBiqB,oBAAqB,GACrBE,qBAAsB,IAExB,mBAAoB,CAClBH,uBAAwB,GACxBE,wBAAyB,KAG7BysC,WAAY,CACV,SAAU,CACRj2D,MAAOlB,EAAM6D,QAAQC,QAAQiX,cAE/B,SAAU,CACRnX,WAAY5D,EAAM6D,QAAQC,QAAQm0B,OAEpC,cAAe,CACbr0B,WAAY5D,EAAM6D,QAAQC,QAAQm0B,WAyDK,CAAEx2B,WAAW,GAAhC1B,CAAwC82D,KCpG5DS,G,kDACJ,WAAY5yD,GAAQ,uCACZA,G,0CAGR,WACE,IAAQrC,EAAYpE,KAAKyG,MAAjBrC,QACR,OAAO,oBAAIC,UAAWD,EAAQgwD,QAAvB,SAAiCp0D,KAAKyG,MAAM+b,e,GAPjCrZ,IAAMC,WAebC,eAAWvH,sBAzBX,SAAAC,GAAK,MAAK,CACvBqyD,QAAS,CACPxxD,WAAY,OACZO,WAAY,OACZD,SAAU,GACVD,MAAO,UACPiH,aAAc,MAmBQpI,CAAmBu3D,KCEvCC,G,4MACJnyD,MAAQ,CACN+I,MAAM,G,4CAGR,WACE,IAAQ9L,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKC,UAAWD,EAAQ0T,UAAxB,UACE,qBAAKzT,UAAWD,EAAQi4C,MAAO7yC,IAAI,oCAEnC,cAAC,GAAD,gCAEA,mBAAGnF,UAAWD,EAAQgC,KAAtB,2E,GAde+C,IAAMC,WA0BdC,eACbvH,sBArDa,SAAAC,GAAK,MAAK,CACvBs6C,MAAO,CACLj6C,MAAO,GACPG,OAAQ,GACRga,QAAS,KACTrS,aAAc,IAEhB4N,UAAW,CACT1V,MAAO,OACPF,QAAS,OACTC,cAAe,SACfwH,eAAgB,SAChBC,WAAY,SAEZvH,UAAW,UAEb+D,KAAM,CACJ5D,OAAQ,WACRS,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7BlD,SAAU,IAEZ0nB,aAAc,CACZvoB,UAAW,aA+BM,CAAEmB,WAAW,GAAhC1B,CAAwC4X,aALlB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIuB8G,CAAyB4/C,MCvC7DC,G,4MACJpyD,MAAQ,CACNqyD,WAAW,EACXjR,SAAS,G,uDAGX,WAAqB,IAAD,OAClBl7B,GAASrtB,KAAKyG,MAAM0I,MAAMC,OAAO2C,OACjCiB,GAAOhT,KAAKyG,MAAM0I,MAAMC,OAAO2C,OAAOlK,MAAK,WACzC,EAAKlB,SAAS,CAAE4hD,SAAS,S,oBAI7B,WAAU,IAAD,EACD4Q,EAAQ,UAAMz3D,EAAN,gBAAuB1B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAA/C,QACRqnD,EAAS,UAAM13D,EAAN,oBACP6mD,EAAYvoD,KAAKmH,MAAjBohD,QACAnkD,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,gCACE,cAAC,GAAD,CAAU8B,MAAM,iBACfqiD,GACC,qBAAKlkD,UAAWD,EAAQq1D,WAAxB,SACE,cAAC,GAAD,OAIFlR,KACC,UAAAvoD,KAAKyG,MAAMmM,iBAAX,eAAsB8mD,YACrB,cAAC,GAAD,CACEP,SAAUA,EACVC,UAAWA,EACXL,OAAQL,KAGV,cAAC,GAAD,CAAU9lD,UAAW5S,KAAKyG,MAAMmM,oB,GApC1BzJ,IAAMC,WAoDTC,eACbvH,sBA3Da,SAAAC,GAAK,MAAK,CACvB03D,WAAY,CACVl3D,OAAQ,0BAyDS,CAAEiB,WAAW,GAAhC1B,CAAwC4X,aALlB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIuB8G,CAAyB6/C,MCzEtDI,GAAgB,gBAChBC,GAAkB,kBCuChB93D,yBCxCO,iBAAO,CAC3BgW,UAAW,CACT5V,QAAS,OACTE,MAAO,OACPG,OAAQ,GACR29B,aAAc,mCAEhB8J,IAAK,CACH5nC,MAAO,MACPc,SAAU,GACVD,MAAO,UACPf,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhF,OAAQ,WAEVoiD,UAAW,CACTphD,WAAY,UACZ1C,MAAO,cDsBInB,EA/BE,SAAA2E,GACf,IAAQrC,EAAyCqC,EAAzCrC,QAASqiD,EAAgChgD,EAAhCggD,YAAaC,EAAmBjgD,EAAnBigD,eAExBqR,EAAgB,SAAA/tB,GACpB,OAAOguB,KAAW5zD,EAAQ4lC,IAAT,0BACX5lC,EAAQ2iD,WAAcN,IAAgBzc,KAI9C,OACE,sBAAK3lC,UAAWD,EAAQ0T,UAAxB,UACE,qBACEzT,UAAW0zD,EAAc4B,IACzBr0D,QAAS,kBAAMohD,EAAeiT,KAFhC,2BAKA,qBACEt1D,UAAW0zD,EAAc6B,IACzBt0D,QAAS,kBAAMohD,EAAekT,KAFhC,mCEtBOrkD,GAAa,WACxB,OACE,sBAAKnT,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,0YACFJ,KAAK,UACLmC,YAAY,QAEd,sBACEjC,SAAS,UACTC,SAAS,UACTC,EAAE,oPACFJ,KAAK,UACLmC,YAAY,YCeLtU,yBCjCO,iBAAO,CAC3BgW,UAAW,CACT7V,SAAU,YAEZK,MAAO,CACLS,QAAS,OACTN,QAAS,oBACTS,SAAU,GACVd,MAAO,OACPM,OAAQ,kCACRC,aAAc,EACdM,MAAO,UACP,iBAAkB,CAChBA,MAAO,0BAGXm7B,SAAU,CACRn8B,SAAU,WACVyC,IAAK,EACLnB,MAAO,ODcIzB,EAzBA,SAAA2E,GACb,IAAQrC,EAAuDqC,EAAvDrC,QAASy5C,EAA8Cp3C,EAA9Co3C,aAAc7wC,EAAgCvG,EAAhCuG,OAAQtE,EAAwBjC,EAAxBiC,OAAQ9E,EAAgB6C,EAAhB7C,YAE/C,OACE,sBAAKS,UAAWD,EAAQ0T,UAAxB,UACE,uBACEzT,UAAWD,EAAQ9B,MACnBsB,YAAaA,GAAe,qBAC5B7D,MAAOiN,EACP4D,MAAOlI,EACP5E,SAAU,SAAAS,GAAC,OAAIs5C,EAAat5C,EAAEsC,OAAO9G,UAEvC,qBAAKsE,UAAWD,EAAQg6B,SAAxB,SACE,cAAC,GAAD,Y,qBEfKy7B,GAGD,WCPCC,GAAe,eACfC,GAA2B,2BAC3BC,GAA6B,6BAC7BC,GAAkC,kCAElCC,GAAiB,SAAAC,GAC5B75D,GAAMC,SAAS,CACbC,KAAMu5D,GACNnyC,QAAS,CACPuyC,iBAKOC,GAA0B,SAAC,GAAY,IAAXhgD,EAAU,EAAVA,KACvC9Z,GAAMC,SAAS,CACbC,KAAMw5D,GACNpyC,QAAS,CACPqE,SAAU7R,EAAKigD,YAKRC,GAA8B,SAAC,GAAY,IAAXlgD,EAAU,EAAVA,KAC3C9Z,GAAMC,SAAS,CACbC,KAAMy5D,GACNryC,QAAS,CACPqE,SAAU7R,EAAKigD,YCRNv4D,yBCrBO,iBAAO,CAC3By4D,MAAO,CACL71D,KAAM,GACNnB,OAAQ,GACRnB,MAAO,GACPG,OAAQ,GACRL,QAAS,OACT6H,OAAQ,EACR9H,SAAU,WACVygD,SAAU,OACVx/C,SAAU,UACV0G,WAAY,SACZhH,WAAY,6CACZ43D,aAAc,SACd73D,aAAc,MACdR,cAAe,MACfwH,eAAgB,SAChB1G,MAAO,UACPG,gBAAiB,WAEnBq3D,UAAW,CACTv4D,QAAS,cACTD,SAAU,WACVkb,cAAe,aDFJrb,EAfD,SAAA2E,GACZ,IAAQrC,EAA0BqC,EAA1BrC,QAASs2D,EAAiBj0D,EAAjBi0D,aAEjB,OACE,sBAAMr2D,UAAWD,EAAQq2D,UAAzB,SACE,sBAAMp2D,UAAWD,EAAQm2D,MAAzB,SAAiCG,SER1BC,GAAiB,SAAAp8C,GAC5B,IAAMg8B,EAAM95B,KAAO85B,MACbqgB,EAAUn6C,KAAOlC,GAAOs8C,KAAI,GAElC,OCP4B,KDOJp6C,KAAO85B,GAAKugB,KAAKF,EAAS,YEEpD,IA8Ce94D,yBCvDO,iBAAO,CAC3Bi5D,gBAAiB,CACfv4D,OAAQ,UACRC,QAAS,UACTQ,MAAO,UACPC,SAAU,OACV83D,UAAW,SACX73D,WAAY,SACZuC,WAAY,OACZ9C,WAAY,mBACZD,aAAc,MACdS,gBAAiB,UACjBhB,MAAO,eAET64D,mBAAoB,CAClBz4D,OAAQ,UACRC,QAAS,UACTQ,MAAO,UACPC,SAAU,OACV83D,UAAW,SACX73D,WAAY,SACZuC,WAAY,OACZ9C,WAAY,mBACZD,aAAc,MACdS,gBAAiB,UACjBhB,MAAO,eAET84D,gBAAiB,CACf94D,MAAO,GACPG,OAAQ,GACR6f,WAAY,MDyBDtgB,EA9CU,SAAA2E,GACvB,IAAQrC,EAAiCqC,EAAjCrC,QACF+2D,EERD,SAAkB58C,GACvB,IAAM68C,EAAcT,GAAep8C,GACnC,EAA0BvZ,mBAASo2D,GAAnC,mBAAOl1C,EAAP,KAAcm1C,EAAd,KAgBA,OAdAz1C,qBAAU,WACR,IAAMw1C,EAAcT,GAAep8C,GACnC88C,EAASD,KACR,CAAC78C,IAEJqH,qBAAU,WACR,GAAIw1C,EAAa,CACf,IAAME,EAAcC,aAAY,WAC9BF,GAAS,SAAA7X,GAAC,OAAIA,EAAI,OACjB,KACH,OAAO,kBAAMgY,cAAcF,OAE5B,CAACF,IAEGl1C,EFVWu1C,CADuBh1D,EAAxBi1D,qBAgBXC,EAbgB,SAAAC,GACpB,GAAIA,GAAW,EAAG,MAAO,GAEzB,IAAM9/C,EACGsH,KAAKC,MAAMu4C,EAAU,IADxB9/C,EAEK8/C,EAAU,GAKrB,OAHoC,IAAf9/C,EAAmB,GAAKA,EAAa,OAClB,IAAjBA,EAAqB,GAAKA,EAAe,MAEzB,OAGnB+/C,CAAcV,GAEpC,OACE,8BACqB,KAAlBQ,EACC,qBACEnyD,IN5BkB,oCM6BlBC,IAAI,oBACJpF,UAAWD,EAAQ82D,kBAGrB,mBACE72D,UACE82D,GAAa,GACT/2D,EAAQ22D,gBACR32D,EAAQ62D,mBAJhB,SAMGU,SG3CEG,GACD,qBCoDGh6D,yBCrDO,iBAAO,CAC3Bi6D,aAAc,CACZ75D,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB+4C,SAAU,QAEZsZ,gBAAiB,CACf95D,QAAS,OACT0H,WAAY,SACZrH,OAAQ,GACRH,MAAO,qBAETsB,KAAM,CACJR,SAAU,OACVwC,WAAY,OACZwE,aAAc,IACdmX,eAAgB,kBAChB8c,WAAY,SACZD,aAAc,WACdxL,SAAU,SACVzvB,MAAO,WAETg5D,YAAa,CACX75D,MAAO,GACPG,OAAQ,GACR6f,WAAY,GAEd85C,YAAa,CACXj5D,MAAO,UACPC,SAAU,GACVC,WAAY,IACZif,WAAY,EACZhgB,MAAO,GACPC,UAAW,YDmBAP,EA3CO,SAAA2E,GACpB,IAAQrC,EAAwDqC,EAAxDrC,QAASkD,EAA+Cb,EAA/Ca,KAAM60D,EAAyC11D,EAAzC01D,WACjBF,EAD0Dx1D,EAA7B21D,yBVTN,uCUY1BD,GVduB,oCUgBpBE,EAAkB57C,KAAM,OAACnZ,QAAD,IAACA,OAAD,EAACA,EAAMg1D,iBAAiBC,OACpD,IAAIjiB,KACJ,OAEE,QACA75B,KAAM,OAACnZ,QAAD,IAACA,OAAD,EAACA,EAAMg1D,iBAAiB38C,OAAO,UAEnC68C,GAAqB,OAAJl1D,QAAI,IAAJA,OAAA,EAAAA,EAAM6S,YAAa2hD,GAE1C,OACE,sBAAKz3D,UAAWD,EAAQ23D,aAAxB,UACE,sBAAK13D,UAAWD,EAAQ43D,gBAAxB,UACE,oBAAG33D,UAAWD,EAAQV,KAAtB,iBACG4D,QADH,IACGA,OADH,EACGA,EAAMm1D,UADT,WACqBn1D,QADrB,IACqBA,OADrB,EACqBA,EAAMo1D,YAG1BT,GACC,qBACEzyD,IAAKyyD,EACL53D,UAAWD,EAAQ63D,YACnBxyD,IAAK,iBAIR+yD,GAAkBl1D,EAAKq1D,qBACtB,cAAC,GAAD,CAAkBjB,oBAAmB,OAAEp0D,QAAF,IAAEA,OAAF,EAAEA,EAAMq1D,yBAIjD,qBAAKt4D,UAAWD,EAAQ83D,YAAxB,SAAsCG,U,qBE5C/BO,GAAiB,CAC5BC,QAAS,mCACTC,aAAc,sCACdC,cAAe,qCACfC,mBAAoB,qCACpBC,SAAU,gCACVC,eAAgB,iCCOHC,GAVE,SAAC,GAA+B,IAA7B9gB,EAA4B,EAA5BA,MAAOliC,EAAqB,EAArBA,SAAUqV,EAAW,EAAXA,KACnC,OACE,qBACEnrB,UAAWD,KAAQg5D,aACnBxsD,MAAO,CAAEysD,gBAAgB,OAAD,OAAShhB,EAAT,kBDRE,mECQF,KAA6C95C,OAAQitB,EAAMptB,MAAOotB,GAF5F,SAGE,qBAAKhmB,IAAKozD,GAAeziD,GAAW1Q,IAAI,gBAAgBpF,UAAWD,KAAQk5D,iBCiElEj0D,eAAWvH,sBC1EJ,iBAAO,CAC3BgW,UAAW,CACTvV,OAAQ,GACRE,QAAS,WACTP,QAAS,QAEXk7D,aAAc,CACZ76D,OAAQ,OACRH,MAAO,OACPO,aAAc,MACd46D,mBAAoB,SACpB1sD,eAAgB,QAChB2sD,iBAAkB,YAClBv7D,SAAU,YAEZq7D,YAAa,CACXl7D,MAAO,GACPG,OAAQ,GACR6f,WAAY,EACZngB,SAAU,WACV4H,OAAQ,EACRtG,MAAO,GAETk6D,SAAU,CACRr7D,MAAO,oBACPG,OAAQ,OACR6f,WAAY,GACZsQ,SAAU,UAEZgrC,gBAAiB,CACfx7D,QAAS,OACTyH,eAAgB,gBAChBC,WAAY,SACZxH,MAAO,qBAETu7D,YAAa,CACXz6D,SAAU,GACVi7B,WAAY,SACZzL,SAAU,SACVwL,aAAc,WACdt5B,SAAU,oBACVpC,OAAQ,EACR6e,eAAgB,kBAChBpe,MAAO,WAET26D,kBAAmB,CACjB16D,SAAU,GACVi7B,WAAY,SACZzL,SAAU,SACVwL,aAAc,WACdt5B,SAAU,oBACVpC,OAAQ,EACR6e,eAAgB,kBAChBpe,MAAO,UACPE,WAAY,QAEd+1D,WAAY,CACV,QAAS,CACP91D,gBAAiB,eDgBGtB,CAAmB4X,aALrB,SAAAvS,GAAK,MAAK,CAChC0K,UAAW1K,EAAM0K,UACjBsoD,WAAYhzD,EAAMgzD,cAGyBzgD,EA1DnB,SAAAjT,GAAU,IAAD,YACzBrC,EAAgDqC,EAAhDrC,QAAS+K,EAAuC1I,EAAvC0I,MAAO0C,EAAgCpL,EAAhCoL,UAAWsoD,EAAqB1zD,EAArB0zD,WAAY7yD,EAASb,EAATa,KAEzC60D,GAAiB,OAAJ70D,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,eAAsBv1D,UAAWuxD,GAE9CuC,GACA,OAAJ90D,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,mBAAsBC,eAAtB,eAA+BC,YAA/B,OAA2ClsD,QAA3C,IAA2CA,OAA3C,EAA2CA,EAAWpO,MAClD,OAAJ6D,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,eAAsBv1D,UAAWuxD,GAE7BmE,GAAe,OAAJ12D,QAAI,IAAJA,OAAA,EAAAA,EAAM22D,kBAA4B,OAAV9D,QAAU,IAAVA,OAAA,EAAAA,EAAY9rC,WAAZ,OAAuB/mB,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAM+mB,QAAS,SAAW,GAEpF6vC,EAAkBF,GAAa7B,IAAeC,EAW9CuB,EACJxB,IAAeC,EAAf,gCACsB90D,QADtB,IACsBA,GADtB,UACsBA,EAAMu2D,sBAD5B,iBACsB,EAAsBC,eAD5C,aACsB,EAA+Bp6D,MAXhC,SAAA4D,GACrB,UAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAM62D,qBAAsB,CAAC,IAAD,EACxB31D,EAAU0C,KAAK6B,MAAMzF,EAAK62D,sBAEhC,OAAO31D,EAAQpC,OAAgB,OAAPoC,QAAO,IAAPA,GAAA,UAAAA,EAASsf,gBAAT,eAAmBxhB,SAAU,aAAuB,OAAPkC,QAAO,IAAPA,OAAA,EAAAA,EAAS41D,WAAY,aAE5F,MAAO,GAMHC,CAAe/2D,GAMrB,OACE,cAAC,KAAD,CAAS2B,GAAE,UAAKvH,EAAL,gBAAsByN,EAAMC,OAAO2C,MAAnC,2BAAoDzK,QAApD,IAAoDA,OAApD,EAAoDA,EAAM+mB,QAAU4qC,gBAAiB70D,EAAQ80D,WAAxG,SACE,sBAAK70D,UAAWD,EAAQ0T,UAAWxS,QANR,WAC7B40D,GAAe5yD,IAKb,UACE,cAAC,GAAD,CAAU6S,SAAQ,OAAE7S,QAAF,IAAEA,OAAF,EAAEA,EAAM6S,SAAUkiC,MAAK,OAAE/0C,QAAF,IAAEA,OAAF,EAAEA,EAAMg3D,aAEjD,sBAAKj6D,UAAWD,EAAQq5D,SAAxB,UACE,cAAC,GAAD,CAAen2D,KAAMA,EAAM60D,WAAYA,EAAYC,yBAA0BA,IAE7E,sBAAK/3D,UAAWD,EAAQs5D,gBAAxB,UACE,mBAAGr5D,UAAY65D,EAAwC95D,EAAQw5D,kBAA9Bx5D,EAAQu5D,YAAzC,SAAmFA,IAClFK,GAAY,cAAC,GAAD,CAAOtD,aAAY,OAAEpzD,QAAF,IAAEA,OAAF,EAAEA,EAAM22D,iCEDrCn8D,yBCxDO,iBAAO,CAC3BoE,MAAO,CACL3D,OAAQ,GACRU,MAAO,UACPR,QAAS,WACTg2B,cAAe,YACfv1B,SAAU,GACVyB,OAAQ,WAEV45D,QAAS,CACPn8C,WAAY,MACZvd,UAAW,OACXoB,WAAY,mBAEdu4D,iBAAkB,MD0CL18D,EA9CQ,SAAA2E,GAAU,IAAD,EACtBrC,EAAkCqC,EAAlCrC,QAAS8B,EAAyBO,EAAzBP,MAAOiiD,EAAkB1hD,EAAlB0hD,MAAOn7C,EAAWvG,EAAXuG,OAC/B,EAAkChI,oBAAS,GAA3C,mBAAOy5D,EAAP,KAAkBC,EAAlB,KAaA,OACE,sBAAKr6D,UAAWD,EAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,EAAQ8B,MAAOZ,QAAS,kBAAMo5D,GAAcD,IAA5D,UACGv4D,EACAiiD,KAAS,OAACA,QAAD,IAACA,OAAD,EAACA,EAAO7hD,QAChB,yCAEA,cAAC,GAAD,CAASlC,QAASA,EAAQm6D,QAAS1pD,OAAQ4pD,OAI9CA,GACC,qBAAKp6D,UAAWD,EAAQo6D,iBAAxB,SACGrW,IAAK,OACJA,QADI,IACJA,GADI,UACJA,EACIj2C,QA1BK,SAAA5K,GACjB,QAAIA,MACEnB,EAAc6G,MAEZ,OAAJ1F,QAAI,IAAJA,OAAA,EAAAA,EAAMm1D,UAAU3+C,cAAcvL,SAASvF,EAAO8Q,kBAA9C,OACAxW,QADA,IACAA,OADA,EACAA,EAAMo1D,SAAS5+C,cAAcvL,SAASvF,EAAO8Q,4BAmBrC,aACJ,EAEI5D,KAAI,SAAC5S,EAAM6R,GAAP,OACJ,cAAC,GAAD,CAAmB7R,KAAMA,GAAWA,EAAKq3D,OAASxlD,eExCrDylD,GAAqB,qBACrBC,GAA0B,0BAC1BC,GAA4B,4BAC5BC,GAAiC,iCACjCC,GAA2B,2BAC3BC,GAA6B,6BAE7BC,GAAmB,WAAqC,IAApCC,EAAmC,uDAApB,GAAIC,EAAgB,uCAClE9+D,GAAMC,SAAS,CACbC,KAAMo+D,GACNh3C,QAAS,CACPu3C,eACAC,kBAeOC,GAAyB,WAAwB,IAAvBF,EAAsB,uDAAP,GACpD7+D,GAAMC,SAAS,CACbC,KAAMs+D,GACNl3C,QAAS,CACPu3C,mBAKOG,GAA6B,SAAAH,GACxC7+D,GAAMC,SAAS,CACbC,KAAMu+D,GACNn3C,QAAS,CACPu3C,mBAKOI,GAAwB,SAACj4D,EAAM83D,GAC1C9+D,GAAMC,SAAS,CACbC,KAAMw+D,GACNp3C,QAAS,CACPtgB,OACA83D,kBClCSI,GAhBK,SAACz/D,EAAO0/D,GAC1B,MAA4Cz6D,mBAASjF,GAArD,mBAAO2/D,EAAP,KAAuBC,EAAvB,KAYA,OAVA/5C,qBAAU,WACR,IAAMg6C,EAAU5f,YAAW,WACzB2f,EAAkB5/D,KACjB0/D,GAEH,OAAO,WACLI,aAAaD,MAEd,CAAC7/D,EAAO0/D,IAEJC,GCfII,GAAY,WAGvB,OAFc/+D,OAAOC,SAASoH,SAASqR,MAAM,KAEhCsmD,OCHFC,GAAkB,SAAArqB,GAAE,OAC/BA,GAAMA,EAAGsqB,aAAetqB,EAAG1O,aAAe0O,EAAG+J,UAAY,GCD9CwgB,GAAuB,kBAClCn/D,OAAOC,SAASqS,KAAK2lC,SAAS,YCiJjB3vC,eACbvH,sBCnJoB,iBAAO,CAC3Bq+D,YAAa,CACXl2C,UAAW,OACX1nB,OAAQ,sBAEVk3D,WAAY,CACVl3D,OAAQ,qBACRL,QAAS,OACTyH,eAAgB,SAChBC,WAAY,UAEdw2D,gBAAiB,CACf59D,OAAQ,eDuIVV,CAAmB4X,aAVG,SAAAvS,GAAK,MAAK,CAChCk5D,kBAAmBl5D,EAAMm5D,gBAAgBD,kBACzCE,iBAAkBp5D,EAAMm5D,gBAAgBC,iBACxCC,qBAAsBr5D,EAAMm5D,gBAAgBE,qBAC5CC,sBAAuBt5D,EAAMm5D,gBAAgBG,sBAC7CC,SAAUv5D,EAAMm5D,gBAAgBI,SAChCtB,YAAaj4D,EAAM0K,UAAUpO,MAIViW,EA1HA,SAAAjT,GACnB,IACErC,EAQEqC,EARFrC,QACA+K,EAOE1I,EAPF0I,MACAkxD,EAME55D,EANF45D,kBACAE,EAKE95D,EALF85D,iBACAC,EAIE/5D,EAJF+5D,qBACAC,EAGEh6D,EAHFg6D,sBACAC,EAEEj6D,EAFFi6D,SACAtB,EACE34D,EADF24D,YAEF,EAA4Bp6D,mBAAS,IAArC,mBAAOgI,EAAP,KAAe2zD,EAAf,KACA,EAA8B37D,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KACMoY,EAAsBpB,GAAYxyD,EAAQ,KAEhD4Y,qBAAU,WACJg7C,EACFC,QAAQC,IAAI,CACVjZ,GAA0B14C,EAAMC,OAAO2C,MAAO6uD,GAC9C9Y,GAA8B34C,EAAMC,OAAO2C,MAAO6uD,GAClDjZ,GAAwBx4C,EAAMC,OAAO2C,MAAO6uD,GAC5C7Y,GAAmB54C,EAAMC,OAAO2C,MAAO6uD,KACtC/4D,MAAK,SAAAgmB,GAAG,OAAIqxC,GAAiBrxC,EAAIkzC,OAAQ3B,MAE5CyB,QAAQC,IAAI,CACVjZ,GAA0B14C,EAAMC,OAAO2C,OACvC+1C,GAA8B34C,EAAMC,OAAO2C,OAC3C41C,GAAwBx4C,EAAMC,OAAO2C,OACrCg2C,GAAmB54C,EAAMC,OAAO2C,SAE/BlK,MAAK,SAAAgmB,GACJ,IAAKqyC,QAA0B,OAACQ,QAAD,IAACA,OAAD,EAACA,EAAUp6D,QAAQ,CAChD,IAAM+nB,EAASyxC,KACTkB,EAAcnzC,EACjBkzC,OACA1uD,MAAK,SAAA/K,GAAI,OAAQ,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM+mB,UAAWjc,OAAOic,MACxC6rC,GAAe8G,GAEjB9B,GAAiBrxC,EAAIkzC,OAAQ3B,MAE9Bv3D,MAAK,kBAAM2gD,GAAW,QAE1B,CAACoY,IAcJ,OACE,qCACE,qBAAKv8D,UAAWD,EAAQg8D,gBAAxB,SACE,cAAC,GAAD,CAAQpzD,OAAQA,EAAQ6wC,aAAc8iB,MAEvCpY,EACC,qBAAKlkD,UAAWD,EAAQq1D,WAAxB,SACE,cAAC,EAAD,CAAalwD,YAAY,MAG3B,sBAAKlF,UAAWD,EAAQ+7D,YAAa1gB,SAtBtB,SAAA9xC,GACfqyD,GAAgBryD,EAAM9G,SACxBkhD,GACE54C,EAAMC,OAAO2C,MACb/E,GAAU4zD,EACVF,EAASp6D,QACTuB,MAAK,SAAAsgD,ILxDuB,WAAqC,IAApCgX,EAAmC,uDAApB,GAAIC,EAAgB,uCACtE9+D,GAAMC,SAAS,CACbC,KAAMq+D,GACNj3C,QAAS,CACPu3C,eACAC,iBKoDE6B,CAAqB9Y,EAAOiX,OAe5B,UACE,cAAC,GAAD,CACEl5D,MAAM,iBACN8G,OAAQ4zD,EACRzY,MAAOkY,IAGT,cAAC,GAAD,CACEn6D,MAAM,eACN8G,OAAQ4zD,EACRzY,MAAOoY,IAGT,cAAC,GAAD,CACEr6D,MAAM,mBACN8G,OAAQ4zD,EACRzY,MAAOqY,IAGT,cAAC,GAAD,CACEt6D,MAAM,WACN8G,OAAQ4zD,EACRzY,MAAOsY,IAGT,cAAC,GAAD,CACEv6D,MAAM,UACN8G,OAAQ4zD,EACRzY,MAAOuY,eE7BJr3D,eACbvH,sBC3FoB,iBAAO,CAC3BgW,UAAW,CACTmS,UAAW,OACX1nB,OAAQ,sBAEVk3D,WAAY,CACVl3D,OAAQ,qBACRL,QAAS,OACTyH,eAAgB,SAChBC,WAAY,UAEdw2D,gBAAiB,CACf59D,OAAQ,eD+EVV,CAAmB4X,aALG,SAAAvS,GAAK,MAAK,CAChC+5D,oBAAqB/5D,EAAMm5D,gBAAgBY,uBAIxBxnD,EAxEE,SAAAjT,GACrB,IAAQrC,EAAwCqC,EAAxCrC,QAAS+K,EAA+B1I,EAA/B0I,MAAO+xD,EAAwBz6D,EAAxBy6D,oBACxB,EAA8Bl8D,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KACA,EAA4BxjD,mBAAS,IAArC,mBAAOgI,EAAP,KAAe2zD,EAAf,KACMC,EAAsBpB,GAAYxyD,EAAQ,KAEhD4Y,qBAAU,WACJg7C,EACF5Y,GAAkB74C,EAAMC,OAAO2C,MAAO6uD,GAAqB/4D,MAAK,SAAAsgD,GAC9DkX,GAAuBlX,MAGzBH,GAAkB74C,EAAMC,OAAO2C,OAC5BlK,MAAK,SAAAsgD,GACJkX,GAAuBlX,MAExBtgD,MAAK,kBAAM2gD,GAAW,QAE1B,CAACoY,IAwBJ,OACE,qCACE,qBAAKv8D,UAAWD,EAAQg8D,gBAAxB,SACE,cAAC,GAAD,CAAQpzD,OAAQA,EAAQ6wC,aAAc8iB,MAEvCpY,EACC,qBAAKlkD,UAAWD,EAAQq1D,WAAxB,SACE,cAAC,EAAD,CAAalwD,YAAY,MAG3B,qBAAKlF,UAAWD,EAAQ0T,UAAW2nC,SAhCpB,SAAA9xC,GACfqyD,GAAgBryD,EAAM9G,UACpBmG,EACFg7C,GACE74C,EAAMC,OAAO2C,MACb6uD,EACAM,EAAoB56D,QACpBuB,MAAK,SAAAsgD,GACLmX,GAA2BnX,MAG7BH,GACE74C,EAAMC,OAAO2C,WACb8jB,EACAqrC,EAAoB56D,QACpBuB,MAAK,SAAAsgD,GACLmX,GAA2BnX,QAgB7B,gBACG+Y,QADH,IACGA,OADH,EACGA,EAAqBhnD,KAAI,SAAA5S,GAAI,OAC5B,cAAC,GAAD,CAAmBA,KAAMA,GAAWA,EAAK+mB,qBE5CtChlB,eAAWvH,sBC7BJ,iBAAO,CAC3BgW,UAAW,CACTtK,UAAW,MACXuqB,YAAa,kCACbrF,SAAU,SACV4F,SAAU,QDwBYx2B,EAjBD,SAAA2E,GACvB,IAAQrC,EAAYqC,EAAZrC,QACR,EAAsCY,mBAAS20D,IAA/C,mBAAOlT,EAAP,KAAoBC,EAApB,KAEA,OACE,sBAAKriD,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAU2uC,YAAaA,EAAaC,eAAgBA,IACnDD,IAAgBkT,IAAiB,cAAC,GAAD,IACjClT,IAAgBmT,IAAmB,cAAC,GAAD,WEjB7BuH,GAAe,WAC1B,OACE,sBAAK/+D,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,wMACFJ,KAAK,YAEP,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,8LACFJ,KAAK,YAEP,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,iMACFJ,KAAK,gBCnBN,SAASmtD,GAAYzC,EAAQluC,GAClC,IAAMrhB,EAAS,IAAIiyD,gBAAgB,CACjC5wC,OACAjB,KAAM,KACNnW,KAAM,YAGR,OAAO9R,MAAM,GAAD,OAAI/F,EAAJ,yBAA6Bm9D,EAA7B,YAAuCvvD,GAAU,CAC3D3H,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBAAM4H,GAAW,2DAYrB,SAASixD,GAAqBvvD,EAAOxJ,GAC1C,OAAOhB,MAAM,GAAD,OAAI/F,EAAJ,mBAA+B,CACzCiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU5C,KACpBE,OAAM,kBAAM4H,GAAW,2DClCrB,ICyHQhH,eACbvH,sBD1HoB,iBAAO,CAC3BgW,UAAW,CACT5V,QAAS,OACTQ,OAAQ,oBACRC,aAAc,EACdiH,WAAY,SACZrH,OAAQ,GACRoC,OAAQ,UACRxB,WAAY,QAEdo+D,YAAa,CACXr+D,SAAU,GACVT,QAAS,WACTQ,MAAO,UACPk7B,WAAY,SACZz7B,OAAQ,OACRU,gBAAiB,UACjBD,WAAY,OACZ,aAAc,CACZwB,OAAQ,YAGZy5B,SAAU,CACRhP,WAAY,oBACZ7sB,OAAQ,OACRH,MAAO,GACPF,QAAS,OACT0H,WAAY,SACZD,eAAgB,UAElB63D,iBAAkB,CAChBpyC,WAAY,oBACZ7sB,OAAQ,OACRH,MAAO,GACPF,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhF,OAAQ,WAEV8kC,QAAS,CACPrnC,MAAO,IACPyC,UAAW,KAEb48D,cAAe,CACbl/D,OAAQ,GACRY,WAAY,OACZjB,QAAS,OACT0H,WAAY,SACZ1G,SAAU,GACVT,QAAS,WACTy9B,aAAc,mCAEhBwhC,SAAU,CACRj/D,QAAS,WACTkC,OAAQ,UACRzB,SAAU,GACV,UAAW,CACTyC,WAAY,0BAGhBy6D,gBAAiB,CACf79D,OAAQ,GACRmwB,SAAU,SACVwN,aAAc,sCC2DhBp+B,CAAmB4X,aANG,SAAAvS,GAAK,MAAK,CAChCmmB,MAAOnmB,EAAMmmB,MACbhmB,KAAMH,EAAMgzD,cAIOzgD,EA3GM,SAAAjT,GACzB,IAAQrC,EAA6CqC,EAA7CrC,QAASkpB,EAAoC7mB,EAApC6mB,MAAOhmB,EAA6Bb,EAA7Ba,KAAMq6D,EAAuBl7D,EAAvBk7D,mBAC9B,EAAwC38D,oBAAS,GAAjD,mBAAO48D,EAAP,KAAsBC,EAAtB,KACA,EAA4B78D,mBAAS,MAArC,mBAAO6B,EAAP,KAAei7D,EAAf,KACA,EAAkC98D,mBAAS,IAA3C,mBAAO+8D,EAAP,KAAkBC,EAAlB,KACA,EAA4Bh9D,mBAAS,IAArC,mBAAOgI,EAAP,KAAe2zD,EAAf,KACA,EAA4B37D,oBAAS,GAArC,mBAAOwgB,EAAP,KAAeC,EAAf,KAEAG,qBAAU,WACR,IAAM8Q,EAAQ,GAEdpJ,EAAMjT,SAAQ,SAAAoT,GACE,MAAdA,EAAKiJ,OACHjJ,EAAKiJ,MAAMrc,SAAQ,SAAAyR,GACjB4K,EAAMpsB,KAAK,CACTvK,MAAO+rB,EAAKpoB,KACZD,GAAIqoB,EAAKroB,WAKjBu+D,EAAatrC,KACZ,CAACpJ,IAEJ,IAAM20C,EAAqB,SAAAh0C,GACzB,IFrB6B1lB,EEqBvB25D,EAAY,CAAE7zC,OAAQ/mB,EAAK+mB,QAC3B8zC,EAAWppD,OAAOsC,OAAO,GAAI/T,GAE/B2mB,GAA4B,kBAAXA,IAAqBi0C,EAAUj0C,OAASA,GAE7Dk0C,EAAStE,eAAiB,CACxBC,QAAS,GACTzvC,OAAQ/mB,EAAK+mB,QAGf5I,GAAU,IF/BmBld,EEgCZ25D,EF/BZ36D,MAAM,GAAD,OAAI/F,EAAJ,0BAAsC,CAChDiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU5C,KACpBE,OAAM,kBAAM4H,GAAW,4DE0BIxI,MAAK,WAC/B4d,GAAU,GACVy0C,GAAeiI,OASnB,OACE,sBAAK99D,UAAWD,EAAQ0T,UAAxB,UACE,wBACEzT,UAAWD,EAAQm9D,YACnBt9D,SAAUuhB,EACVlgB,QAAS28D,EAHX,4BAOEN,GACA,qBACEt9D,UAAWmhB,EAASphB,EAAQo9D,iBAAmBp9D,EAAQg6B,SACvDhY,IAAK,SAAA6iB,GAAI,OAAI64B,EAAU74B,IACvB3jC,QAAS,kBAAOkgB,GAAUq8C,GAAgBD,IAH5C,SAIE,cAAC,GAAD,MAIJ,cAAC,KAAD,CACE1xD,KAAM0xD,EACNrzC,SAAU1nB,EACVu7D,UAAW,EACX/4B,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDlf,QAAS,kBAAMw3C,GAAgBD,IANjC,SAOE,sBAAKv9D,UAAWD,EAAQqlC,QAAxB,UACE,qBAAKplC,UAAWD,EAAQg8D,gBAAxB,SACE,cAAC,GAAD,CACE13D,OAAQ,CAAEhG,OAAQ,QAClBsK,OAAQA,EACR6wC,aAAc8iB,EACd/8D,YAAY,kBAGfm+D,EAAU7vD,QAvCO,SAAA4Z,GACxB,QAAI3lB,EAAc6G,KAClB,OAAO8e,QAAP,IAAOA,OAAP,EAAOA,EAAM/rB,MAAM+d,cAAcvL,SAASvF,EAAO8Q,mBAqCN5D,KAAI,SAAA4R,GAAI,OAC3C,qBAEEznB,UAAWD,EAAQs9D,SACnBp8D,QAAS,kBAAM28D,EAAmBn2C,EAAKroB,KAHzC,SAIGqoB,EAAK/rB,OAHD+rB,EAAKroB,oBC3CT4F,eACbvH,sBCxDoB,iBAAO,CAC3BgW,UAAW,CACT1V,MAAO,IACPG,OAAQ,GACRa,gBAAiB,UACjBH,MAAO,UACPN,aAAc,EACdT,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhF,OAAQ,UACRnC,OAAQ,WACRW,WAAY,OACZg7B,WAAY,aD2Cdr8B,CAAmB4X,aAPG,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,UACjBwsD,YAAaj4D,EAAM0K,UAAUpO,GAC7B6D,KAAMH,EAAMgzD,cAIOzgD,EA9CI,SAAAjT,GACvB,IAAQrC,EAAiDqC,EAAjDrC,QAASkD,EAAwCb,EAAxCa,KAAMsL,EAAkCnM,EAAlCmM,UAAW1M,EAAuBO,EAAvBP,MAAOk5D,EAAgB34D,EAAhB24D,YAuBzC,OACE,qBAAK/6D,UAAWD,EAAQ0T,UAAWxS,QAtBjB,WAAO,IAAD,EAClBiD,EAAO,CACX85D,iBAAgB,UAAE/6D,EAAKu2D,sBAAP,aAAE,EAAqBp6D,GACvC4qB,OAAQ/mB,EAAK+mB,OACb0vC,QAASqB,GAEL+C,EAAWppD,OAAOsC,OAAO,GAAI/T,GAEnC66D,EAAStE,eAAiB,CACxBv1D,OAAQ,WACRw1D,QAAS,CACPC,QAASqB,GAEX/wC,OAAQ/mB,EAAK+mB,QAGfizC,GAAqB1uD,EAAUnP,GAAI8E,GAAMV,MAAK,WAC5CqyD,GAAeiI,OAKjB,SACGj8D,SE+DQmD,eACbvH,sBCpGoB,iBAAO,CAC3B2D,OAAQ,CACNrD,MAAO,IACPG,OAAQ,GACRG,OAAQ,oBACRC,aAAc,EACdM,MAAO,UACPf,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBhF,OAAQ,UACRxB,WAAY,OACZ4Z,YAAa,OACb3Z,gBAAiB,UACjB+6B,WAAY,SACZ,aAAc,CACZx5B,OAAQ,YAGZ8kC,QAAS,CACPrnC,MAAO,IACPyC,UAAW,KAEby9D,UAAW,CACT7/D,QAAS,WACTkC,OAAQ,UACRzB,SAAU,GACV,UAAW,CACTyC,WAAY,6BDwEhB7D,CAAmB4X,aANG,SAAAvS,GAAK,MAAK,CAChCG,KAAMH,EAAMgzD,WACZtoD,UAAW1K,EAAM0K,aAIE6H,EAxFG,SAAAjT,GACtB,IAAQrC,EAA2CqC,EAA3CrC,QAASkD,EAAkCb,EAAlCa,KAAM6H,EAA4B1I,EAA5B0I,MAAOjJ,EAAqBO,EAArBP,MAAO2L,EAAcpL,EAAdoL,UACrC,EAAwC7M,oBAAS,GAAjD,mBAAO48D,EAAP,KAAsBC,EAAtB,KACA,EAA4B78D,mBAAS,MAArC,mBAAO6B,EAAP,KAAei7D,EAAf,KACA,EAAoC98D,mBAAS,IAA7C,mBAAOu9D,EAAP,KAAmBC,EAAnB,KAEA58C,qBAAU,WLmBL,IAAuB7T,KKlBZ5C,EAAMC,OAAO2C,MLmBtBxK,MAAM,GAAD,OAAI/F,EAAJ,2BAA+BuQ,GAAS,CAClDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBAAM4H,GAAW,4DKzBUxI,MAAK,SAAA46D,GACrC,GAAIA,EAAQ,CACV,IAAMC,EAAiBD,EAAOvwD,QAC5B,SAAAywD,GAAK,OAAIA,EAAMj/D,MAAQi/D,EAAMl/D,KAAOoO,EAAUpO,MAEhD++D,EAAcE,SAGjB,IAwBH,OACE,qCACE,wBACEr+D,UAAWD,EAAQqB,OACnB2gB,IAAK,SAAA6iB,GAAI,OAAI64B,EAAU74B,IACvBhlC,UAAWs+D,EAAWj8D,OACtBhB,QAAS,kBAAMu8D,GAAgBD,IAJjC,SAKG17D,IAEH,cAAC,KAAD,CACEgK,KAAM0xD,EACNrzC,SAAU1nB,EACVu7D,UAAW,EACX/4B,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDlf,QAAS,kBAAMw3C,GAAgBD,IANjC,SAOE,qBAAKv9D,UAAWD,EAAQqlC,QAAxB,SACG84B,EACErwD,QAAO,SAAAywD,GAAK,OAAIA,EAAMj/D,MAAQi/D,EAAMl/D,KAAOoO,EAAUpO,MACrDyW,KAAI,SAAAyoD,GAAK,OACR,qBAEEt+D,UAAWD,EAAQk+D,UACnBh9D,QAAS,WACPu8D,GAAgBD,GA9CX,SAAAe,GACnB,IAAMp6D,EAAO,CACX85D,iBAAkB/6D,EAAKu2D,eAAep6D,GACtC4qB,OAAQ/mB,EAAK+mB,OACb0vC,QAAS4E,EAAMl/D,IAEX0+D,EAAWppD,OAAOsC,OAAO,GAAI/T,GAEnC66D,EAAStE,eAAiB,CACxBv1D,OAAQ,WACRw1D,QAAS,CACPC,QAAS4E,EAAMl/D,GACfC,KAAMi/D,EAAMj/D,MAEd2qB,OAAQ/mB,EAAK+mB,QAGfizC,GAAqBnyD,EAAMC,OAAO2C,MAAOxJ,GAAMV,MAAK,WAClDqyD,GAAeiI,MA6BHS,CAAaD,IALjB,SAOGA,EAAMj/D,MANFi/D,EAAMl/D,mBExEdo/D,GAAa,SAACvvD,EAAKwvD,GAC9B,IAAQ16D,EAAa,IAAI26D,IAAIzvD,GAArBlL,SAER,OAAKA,EACEA,EAAS9B,OAASw8D,EAAlB,UACA16D,EAASyV,OAAO,EAAGilD,GADnB,OAEH16D,EAHkBkL,GC2BTxR,yBC9BO,iBAAO,CAC3B8rC,KAAM,CACJ3qC,MAAO,UACPE,WAAY,SACZ+6B,aAAc,WACdxL,SAAU,SACVtwB,MAAO,IACP+7B,WAAY,SACZj8B,QAAS,gBAEX8gE,SAAU,CACR9gE,QAAS,eACTkgB,WAAY,EACZzd,OAAQ,WAEVs+D,SAAU,CACR/gE,QAAS,WDcEJ,EArBK,SAAA2E,GAClB,IAAQrC,EAAiBqC,EAAjBrC,QAASkP,EAAQ7M,EAAR6M,IAEjB,OACE,sBAAKjP,UAAWD,EAAQ6+D,SAAxB,UACE,mBAAG5vD,KAAMC,EAAKjP,UAAWD,EAAQwpC,KAAMnqC,GAAG,eAAeoD,OAAO,SAASq8D,IAAI,aAA7E,SACGL,GAAWvvD,KAEd,qBACEhO,QAAS,kBEhBmBvF,EFgBQuT,OEf1C+7B,UAAUC,UAAUC,UAAUxvC,GAAO8H,MAAK,kBAAMmI,GAAa,aAD3B,IAAAjQ,GFiB5BsE,UAAWD,EAAQ4+D,SAFrB,SAGE,cAAC,GAAD,CAAU//D,MAAO,UAAWb,MAAO,aGmB5BN,yBCvCO,iBAAO,CAC3BqhE,SAAU,CACRlgE,MAAO,UACPC,SAAU,GACVhB,QAAS,OACT0H,WAAY,UAEdw5D,aAAc,CACZlhE,QAAS,OACTC,cAAe,aD8BJL,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCG,KAAMH,EAAMgzD,cAGoBzgD,EA5BjB,SAAAjT,GAAU,IAAD,IAChBrC,EAAkBqC,EAAlBrC,QAASkD,EAASb,EAATa,KACXk1D,GAAqB,OAAJl1D,QAAI,IAAJA,OAAA,EAAAA,EAAM6S,YAAa2hD,GACpCuH,EAAmB,UAAG/7D,EAAK2kB,gBAAR,iBAAG,EAAe5Z,MAAK,SAAAixD,GAAC,OAA0B,OAAtBA,EAAEC,0BAA9B,aAAG,EAAsDA,gBAElF,OACE,sBAAKl/D,UAAWD,EAAQg/D,aAAxB,UACE,sBAAK/+D,UAAWD,EAAQ++D,SAAxB,UACG77D,EAAKm1D,UADR,IACoBn1D,EAAKo1D,SACtBF,GAAkBl1D,EAAKq1D,qBACtB,cAAC,GAAD,CAAkBjB,oBAAmB,OAAEp0D,QAAF,IAAEA,OAAF,EAAEA,EAAMq1D,yBAIhD0G,GAAuB,cAAC,GAAD,CAAa/vD,IAAK+vD,WEzBnCxJ,GACL,OADKA,GAGD,WAHCA,GAKF,UCLE2J,GACG,eCsGDn6D,eACbvH,sBCxGoB,iBAAO,CAC3BgW,UAAW,CACT1V,MAAO,OACPG,OAAQ,GACR29B,aAAc,oBACdz9B,QAAS,YACTP,QAAS,OACT0H,WAAY,SACZD,eAAgB,iBAElB85D,eAAgB,CACdxgE,MAAO,UACPC,SAAU,GACVV,OAAQ,YAEVkhE,mBAAoB,CAClBxhE,QAAS,OACT0H,WAAY,UAEd+5D,aAAc,CACZ1gE,MAAO,wBACPC,SAAU,GACVV,OAAQ,YAEVohE,UAAW,CACT1hE,QAAS,OACT0H,WAAY,aD8Ed9H,CAAmB4X,aANG,SAAAvS,GAAK,MAAK,CAChCG,KAAMH,EAAMgzD,WACZtoD,UAAW1K,EAAM0K,aAIE6H,EAtFF,SAAAjT,GAAU,IAAD,gBAClBrC,EAAoCqC,EAApCrC,QAASkD,EAA2Bb,EAA3Ba,KAAMuK,EAAqBpL,EAArBoL,UAAW1C,EAAU1I,EAAV0I,MAE5B00D,EACJhyD,EAAUF,YAAYO,QACpB,SAAAC,GAAE,OAAIA,EAAGJ,QAAUK,OAAOjD,EAAMC,OAAO2C,UACvC,GAAGO,OAAShB,GAEVwyD,GACJ,UAAAx8D,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,KAChC,UAAAvyD,EAAKu2D,sBAAL,mBAAqBC,eAArB,eAA8BC,WAAYlsD,EAAUpO,GAEhD04D,GAAa,UAAA70D,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,GAE7CkK,GAAY,UAAAz8D,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,GAE5C18B,GAAS,UAAA71B,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,GAEzCuB,EAAc9zD,GAAQqzD,GAAerzD,EAAKq1D,qBAAuB,EAEjEgF,GACC,OAAJr6D,QAAI,IAAJA,OAAA,EAAAA,EAAM6S,YAAa2hD,IAA0BV,GAC9C9zD,EAAK08D,aAAeR,GAEhBS,GACA,OAAJ38D,QAAI,IAAJA,OAAA,EAAAA,EAAM6S,YAAa2hD,GACf,uFACA,iEAEN,OACE,sBAAKz3D,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,IAEA,sBAAKzT,UAAWD,EAAQw/D,UAAxB,UACGjC,GACC,qBAAKt9D,UAAWD,EAAQu/D,aAAxB,SAAuCM,KAGvCtC,GAAsBxF,IAAe2H,GACrC,sBAAKz/D,UAAWD,EAAQq/D,eAAxB,gCACen8D,QADf,IACeA,GADf,UACeA,EAAMu2D,sBADrB,iBACe,EAAsBC,eADrC,aACe,EAA+Bp6D,SAI9Ci+D,GAAsBmC,GACtB,qBAAKz/D,UAAWD,EAAQs/D,mBAAxB,SACE,qBAAKr/D,UAAWD,EAAQq/D,eAAxB,gCAIF9B,GAAsBxF,GAAc0H,GACpC,sBAAKx/D,UAAWD,EAAQs/D,mBAAxB,WACII,GAAkB,cAAC,GAAD,CAAkB59D,MAAO,mBAC7C,cAAC,GAAD,CAAiBA,MAAO,uBAI1By7D,IAAuBxF,GACvB,sBAAK93D,UAAWD,EAAQs/D,mBAAxB,UACE,cAAC,GAAD,CAAkBx9D,MAAO,iBACzB,cAAC,GAAD,CAAiBA,MAAO,qBAI1B69D,GAAa5mC,GAAU2mC,GAAmBD,GAAW1H,IACrD,qBAAK93D,UAAWD,EAAQs/D,mBAAxB,SACE,cAAC,GAAD,CAAoB/B,mBAAoBA,iBEzDrC7/D,yBC3BO,iBAAO,CAC3BoiE,kBAAmB,CACjB9hE,MAAO,OACPI,OAAQ,UACRN,QAAS,OACTC,cAAe,cACfwH,eAAgB,WAChBC,WAAY,UAEdu6D,cAAe,CACb/hE,MAAO,OACPI,OAAQ,UACRN,QAAS,OACTyH,eAAgB,WAChBC,WAAY,UAEdw6D,SAAU,CACRlhE,SAAU,GACVD,MAAO,UACPE,WAAY,IACZX,OAAQ,eDOGV,EArBK,SAAA2E,GAClB,IAAQrC,EAA4CqC,EAA5CrC,QAASigE,EAAmC59D,EAAnC49D,WAAYC,EAAuB79D,EAAvB69D,SAAU9hD,EAAa/b,EAAb+b,SAEvC,OACE,sBACEne,UACEggE,EAAajgE,EAAQ8/D,kBAAoB9/D,EAAQ+/D,cAFrD,UAIGG,GAAY,sBAAMjgE,UAAWD,EAAQggE,SAAzB,SAAoCE,IAChD9hD,QEoBQ1gB,yBCnCO,iBAAO,CAC3ByiE,mBAAoB,CAClB3/D,SAAU,MACVnC,QAAS,WACTS,SAAU,GACVyC,WAAY,2BACZhD,aAAc,qBACdT,QAAS,gBAEXsiE,eAAgB,CACd5/D,SAAU,MACVnC,QAAS,WACTS,SAAU,GACVhB,QAAS,eACTyD,WAAY,UACZ1C,MAAO,UACPN,aAAc,yBDmBHb,EA1BK,SAAA2E,GAClB,IAAQrC,EAA6DqC,EAA7DrC,QAASoE,EAAoD/B,EAApD+B,QAAS87D,EAA2C79D,EAA3C69D,SAAUD,EAAiC59D,EAAjC49D,WAAY5mC,EAAqBh3B,EAArBg3B,MAAOgnC,EAAch+D,EAAdg+D,UAEjD7zD,EAAQ,CACZ2gB,UAAWkM,GAAS,MACpB/6B,OAAQ+hE,GAAa,oBACrBrhE,gBAAiBqhE,G1SFU,W0SK7B,OACE,cAAC,GAAD,CAAaH,SAAUA,EAAUD,WAAYA,EAA7C,SACE,sBAAMhgE,UAAWggE,EAAajgE,EAAQmgE,mBAAqBngE,EAAQogE,eAAgB5zD,MAAOA,EAA1F,SACGpI,EAAQpC,MAAQoC,EAAQk8D,gBEQlB5iE,yBC7BO,iBAAO,CAC3BiuD,KAAM,CACJ3tD,MAAO,KAETqD,OAAQ,CACNrC,gBAAiB,UACjBg9B,UAAW,oBACX79B,OAAQ,GACRL,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChB1G,MAAO,UACPE,WAAY,QAEdwhE,WAAY,CACVvhE,gBAAiB,UACjBg9B,UAAW,oBACX79B,OAAQ,GACRL,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChB1G,MAAO,UACPE,WAAY,OACZR,aAAc,sBDMHb,EAvBC,SAAA2E,GACd,IAAQrC,EAAqBqC,EAArBrC,QAAS4jB,EAAYvhB,EAAZuhB,QAEjB,OACE,qBAAK3jB,UAAWD,EAAQ2rD,KAAxB,SACG/nC,EAAQ9N,KAAI,SAACzU,EAAQ0T,GAAT,OACX,qBAEE9U,UACE8U,IAAU6O,EAAQ1hB,OAAS,EAAIlC,EAAQugE,WAAavgE,EAAQqB,OAHhE,SAKGA,EAAOS,OAJHiT,WEmBArX,yBChCO,iBAAO,CAC3B8iE,WAAY,CACVniE,QAAS,WACTS,SAAU,GACVyC,WAAY,2BACZzD,QAAS,eACTE,MAAO,SAET0V,UAAW,CACTpV,OAAQ,oBACRC,aAAc,EACdJ,OAAQ,kBDqBGT,EAvBW,SAAA2E,GAAU,IAAD,EACzBrC,EAA6DqC,EAA7DrC,QAASoE,EAAoD/B,EAApD+B,QAAS87D,EAA2C79D,EAA3C69D,SAAUD,EAAiC59D,EAAjC49D,WAAY5mC,EAAqBh3B,EAArBg3B,MAAOgnC,EAAch+D,EAAdg+D,UAEvD,OACE,cAAC,GAAD,CAAaH,SAAUA,EAAUD,WAAYA,EAA7C,SACE,sBAAKhgE,UAAWD,EAAQ0T,UAAWlH,MAAO,CAAElO,OAAQ+hE,GAAa,qBAAjE,UACE,sBAAMpgE,UAAWD,EAAQwgE,WAAYh0D,MAAO,CAAE2gB,UAAWkM,GAAS,OAAlE,SACGj1B,EAAQpC,MAAQoC,EAAQk8D,YAEnB,OAAPl8D,QAAO,IAAPA,OAAA,EAAAA,EAASwf,aAAY,OAACxf,QAAD,IAACA,GAAD,UAACA,EAASwf,eAAV,aAAC,EAAkB1hB,SAAU,cAAC,GAAD,CAAS0hB,QAAO,OAAExf,QAAF,IAAEA,OAAF,EAAEA,EAASwf,kBEYvElmB,yBC9BO,iBAAO,CAC3BkuD,IAAK,CACH5tD,MAAO,IACPG,OAAQ,IACRI,aAAc,MACdS,gBAAiB,SACjBZ,OAAQ,WACRN,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBk7D,UAAW,UACXniE,OAAQ,wBDmBGZ,EAtBM,SAAA2E,GACnB,IAAQrC,EAAqDqC,EAArDrC,QAASkgE,EAA4C79D,EAA5C69D,SAAUD,EAAkC59D,EAAlC49D,WAAYS,EAAsBr+D,EAAtBq+D,OAAQL,EAAch+D,EAAdg+D,UAE/C,OACE,cAAC,GAAD,CAAaH,SAAUA,EAAUD,WAAYA,EAA7C,SACE,qBACEzzD,MAAO,CAAEysD,gBAAiB,8BAA+B36D,OAAQ+hE,GAAa,qBAC9EpgE,UAAWD,EAAQ4rD,IACnBxmD,IAAKs7D,EACLr7D,IAAI,c,qBEKGs7D,GAhBM,SAAAt+D,GACnB,IAAQ69D,EAA8B79D,EAA9B69D,SAAUD,EAAoB59D,EAApB49D,WAAY/wD,EAAQ7M,EAAR6M,IAE9B,OACE,cAAC,GAAD,CAAagxD,SAAUA,EAAUD,WAAYA,EAA7C,SACE,cAAC,KAAD,CAAkB76D,IAAK8J,EAAK0xD,UAAQ,O,qBCa3BC,GAlBM,SAAAx+D,GACnB,IAAQ6M,EAA8B7M,EAA9B6M,IAAKgxD,EAAyB79D,EAAzB69D,SAAUD,EAAe59D,EAAf49D,WAEvB,OACE,cAAC,GAAD,CAAaC,SAAUA,EAAUD,WAAYA,EAA7C,SACE,8BACE,cAAC,KAAD,CAAajiE,MAAM,QAAQG,OAAO,QAAQ+Q,IAAKA,EAAK0xD,UAAQ,SC2BrDljE,yBCvCO,iBAAO,CAC3BkuD,IAAK,CACH5tD,MAAO,IACPG,OAAQ,IACRI,aAAc,kBACdS,gBAAiB,UACjBm6D,mBAAoB,UACpB1sD,eAAgB,SAElBzK,KAAM,CACJT,WAAY,UACZhD,aAAc,kBACdF,QAAS,gBACTU,WAAY,IACZf,MAAO,KAET8iE,YAAa,CACXv/D,WAAY,UACZlD,QAAS,gBACTU,WAAY,IACZf,MAAO,KAET4H,SAAU,CACRrE,WAAY,UACZhD,aAAc,kBACdF,QAAS,gBACTU,WAAY,IACZD,SAAU,GACVd,MAAO,IACPa,MAAO,WAETkiE,gBAAiB,CACfx/D,WAAY,UACZlD,QAAS,gBACTU,WAAY,IACZD,SAAU,GACVd,MAAO,IACPa,MAAO,WAET2qC,KAAM,CACJjoC,WAAY,UACZlD,QAAS,WACTS,SAAU,GACVd,MAAO,IACPF,QAAS,SAEX4V,UAAW,CACTpV,OAAQ,oBACRC,aAAc,EACdJ,OAAQ,kBDVGT,EAhCQ,SAAA2E,GAAU,IAAD,MACtBrC,EAA4BqC,EAA5BrC,QAASuM,EAAmBlK,EAAnBkK,QAAS8sB,EAAUh3B,EAAVg3B,MAE1B,OACE,sBAAKp5B,UAAWD,EAAQ0T,UAAxB,UACE,qBAAKzT,UAAWD,EAAQ4rD,IAAKp/C,MAAO,CAAEysD,gBAAiB,eAAS1sD,QAAT,IAASA,OAAT,EAASA,EAASytD,UAAW,OAEpF,qBACE/5D,WAAkB,OAAPsM,QAAO,IAAPA,GAAA,UAAAA,EAASqX,eAAT,eAAkB1hB,UAAlB,OAA4BqK,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAS3G,UAArC,OAAgD5F,QAAhD,IAAgDA,OAAhD,EAAgDA,EAAS8gE,YAAzD,OAAuE9gE,QAAvE,IAAuEA,OAAvE,EAAuEA,EAASgC,KAC3FwK,MAAO,CAAEvO,UAAWo7B,GAAS,OAF/B,gBAGG9sB,QAHH,IAGGA,OAHH,EAGGA,EAASzK,SAGJ,OAAPyK,QAAO,IAAPA,OAAA,EAAAA,EAAS3G,WACR,qBACE3F,WAAkB,OAAPsM,QAAO,IAAPA,GAAA,UAAAA,EAASqX,eAAT,eAAkB1hB,QAAlB,OAA2BlC,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAS+gE,gBAApC,OAAsD/gE,QAAtD,IAAsDA,OAAtD,EAAsDA,EAAS4F,SAC1E4G,MAAO,CAAEvO,UAAWo7B,GAAS,OAF/B,gBAGG9sB,QAHH,IAGGA,OAHH,EAGGA,EAAS3G,YAIN,OAAP2G,QAAO,IAAPA,OAAA,EAAAA,EAASqX,aAAY,OAACrX,QAAD,IAACA,GAAD,UAACA,EAASqX,eAAV,aAAC,EAAkB1hB,SAAU,cAAC,GAAD,CAAS0hB,QAAO,OAAErX,QAAF,IAAEA,OAAF,EAAEA,EAASqX,gBE5BvEtf,GAAS,iBAAO,CAC3BqnD,KAAM,CACJpqD,WAAY,UACZhD,aAAc,GACdoD,UAAW,kCACX3D,MAAO,GACPG,OAAQ,GACRL,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZpH,OAAQ,EACRP,SAAU,WACV0C,OAAQ,UACRD,IAAK,SCXI0gE,GAAb,4JACE,WACE,OACE,qBAAKhjE,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEI,EAAE,qFACFJ,KAAK,gBANf,GAA0B9K,IAAMC,WCejBtH,wBAAW4G,GAAX5G,EAVE,SAAA2E,GACf,IAAQrC,EAA0BqC,EAA1BrC,QAASkB,EAAiBmB,EAAjBnB,QAASZ,EAAQ+B,EAAR/B,IAE1B,OACE,qBAAKL,UAAWD,EAAQ2rD,KAAMn/C,MAAO,CAAErN,OAAQ,EAAGmB,OAAOY,QAASA,EAAlE,SACE,cAAC,GAAD,SCVO+/D,GAAb,4JACE,WACE,OACE,qBAAKjjE,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEI,EAAE,uFACFJ,KAAK,gBANf,GAA0B9K,IAAMC,WCejBtH,wBAAW4G,GAAX5G,EAVE,SAAA2E,GACf,IAAQrC,EAA0BqC,EAA1BrC,QAASkB,EAAiBmB,EAAjBnB,QAASZ,EAAQ+B,EAAR/B,IAE1B,OACE,qBAAKL,UAAWD,EAAQ2rD,KAAMn/C,MAAO,CAAE9G,MAAO,EAAGpF,OAAOY,QAASA,EAAjE,SACE,cAAC,GAAD,SC0BSxD,yBCtCO,iBAAO,CAC3Bs8B,SAAU,CACRn8B,SAAU,WACVG,MAAO,IACPG,OAAQ,eAEV+iE,WAAY,CAEVC,eAAgB,SAChBz1C,UAAW,SACX,uBAAwB,CACtB5tB,QAAS,YD2BAJ,EA9BA,SAAA2E,GACb,IAAQrC,EAAkCqC,EAAlCrC,QAASoe,EAAyB/b,EAAzB+b,SAAUgjD,EAAe/+D,EAAf++D,WAC3B,EAAsCxgE,mBAAS,GAA/C,mBAAOygE,EAAP,KAAoBC,EAApB,KACMC,EAAWhgD,iBAAO,GAYlBg6B,EAAa,SAAAxmC,GACjBwsD,EAAS9/C,QAAQ85B,WAAa,IAAMxmC,GAGtC,OACE,sBAAK9U,UAAWD,EAAQg6B,SAAxB,UACGqnC,EAAc,GAAK,cAAC,GAAD,CAAUngE,QAXjB,WACfogE,EAAeD,EAAc,GAC7B9lB,EAAW8lB,EAAc,MAUvB,qBAAKphE,UAAWD,EAAQkhE,WAAYl/C,IAAKu/C,EAAzC,SACGnjD,IAEFijD,EAAcD,EAAa,GAAK,cAAC,GAAD,CAAUlgE,QApB9B,WACfogE,EAAeD,EAAc,GAC7B9lB,EAAW8lB,EAAc,YEmBd3jE,yBClCO,iBAAO,CAC3B8jE,iBAAkB,CAChB1jE,QAAS,OACTE,MAAO,cACPI,OAAQ,WACRG,aAAc,OD6BHb,EAxBS,SAAA2E,GAAU,IAAD,IACvBrC,EAA6DqC,EAA7DrC,QAASkgE,EAAoD79D,EAApD69D,SAAUD,EAA0C59D,EAA1C49D,WAAYz8C,EAA8BnhB,EAA9BmhB,QAAS6V,EAAqBh3B,EAArBg3B,MAAOgnC,EAAch+D,EAAdg+D,UAEvD,OACE,cAAC,GAAD,CAAaH,SAAUA,EAAUD,WAAYA,EAA7C,SACE,cAAC,GAAD,CAAQmB,WAAU,UAAE59C,EAAQE,gBAAV,aAAE,EAAkBxhB,OAAtC,SACE,qBAAKjC,UAAWD,EAAQwhE,iBAAkBh1D,MAAO,CAAElO,OAAQ+hE,GAAa,qBAAxE,mBACG78C,EAAQE,gBADX,aACG,EAAkB5N,KAAI,SAACvJ,EAASwI,GAAV,OACrB,cAAC,GAAD,CAAgBxI,QAASA,EAAS8sB,MAAOA,GAAYtkB,eEiFlDrX,yBCnGO,iBAAO,CAC3BgW,UAAW,MDkGEhW,CAAmB4X,aAJV,SAAAvS,GAAK,YAAK,CAChCm9D,SAAQ,UAAEn9D,EAAMyL,iBAAR,aAAE,EAAiB0xD,YAGK5qD,EApFlB,SAAAjT,GAAU,IAAD,UACfqlD,EAAsCrlD,EAAtCqlD,IAAKwY,EAAiC79D,EAAjC69D,SAAUtV,EAAuBvoD,EAAvBuoD,QAASyV,EAAch+D,EAAdg+D,UAE1Bj8D,GAAa,OAAHsjD,QAAG,IAAHA,OAAA,EAAAA,EAAKqS,sBAAuBjzD,KAAK6B,MAAM++C,EAAIqS,sBAAwB,KAC7E0H,EAAYplD,KAAOqrC,EAAI+Z,WAAWllD,IAAI2jD,EAAU,SAAS3kD,OAAO,WAEhEmmD,IAAyB,OAAPt9D,QAAO,IAAPA,OAAA,EAAAA,EAASpC,SAAQ,OAACoC,QAAD,IAACA,GAAD,UAACA,EAASwf,eAAV,aAAC,EAAkB1hB,UAArC,OAAgDkC,QAAhD,IAAgDA,OAAhD,EAAgDA,EAASk8D,aAAcl8D,EAAQ41D,SAChG2H,GAAkC,OAAPv9D,QAAO,IAAPA,OAAA,EAAAA,EAASpC,UAAS,OAACoC,QAAD,IAACA,GAAD,UAACA,EAASwf,eAAV,aAAC,EAAkB1hB,QAChE0/D,EAAc,OAAGx9D,QAAH,IAAGA,OAAH,EAAGA,EAAS41D,SAC1B6H,GAAwB,OAAPz9D,QAAO,IAAPA,GAAA,UAAAA,EAAS09D,mBAAT,eAAsB5/D,SAA0C,UAAhCkC,EAAQ09D,YAAY,GAAG1lE,KACxE2lE,GAAwB,OAAP39D,QAAO,IAAPA,GAAA,UAAAA,EAAS09D,mBAAT,eAAsB5/D,SAA0C,UAAhCkC,EAAQ09D,YAAY,GAAG1lE,KACxE4lE,EAAiB,OAAG59D,QAAH,IAAGA,GAAH,UAAGA,EAASsf,gBAAZ,aAAG,EAAmBxhB,OAEvCm3B,GAAe,OAAPj1B,QAAO,IAAPA,OAAA,EAAAA,EAASi1B,SAAT,OAAkBquB,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAKruB,OAC/B4mC,EAAarV,IAAU,OAACxmD,QAAD,IAACA,OAAD,EAACA,EAAS69D,YAAb,OAA0B79D,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAS69D,WAE7D,OACE,qCACGP,GACC,cAAC,GAAD,CACEt9D,QAASA,EACT87D,SAAUuB,EACVpoC,MAAOA,EACP4mC,WAAYA,EACZI,UAAWA,IAIdsB,GACC,cAAC,GAAD,CACEv9D,QAASA,EACT87D,SAAUuB,EACVpoC,MAAOA,EACP4mC,WAAYA,EACZI,UAAWA,IAIduB,GACC,cAAC,GAAD,CACE1B,SAAUuB,EACVxB,WAAYA,EACZS,OAAQt8D,EAAQ41D,SAChBqG,UAAWA,IAIdwB,GACC,cAAC,GAAD,CACE3B,SAAUuB,EACVxB,WAAYA,EACZ/wD,IAAK9K,EAAQ09D,YAAY,GAAGt+C,QAAQtU,IACpCmxD,UAAWA,IAGd0B,GACC,cAAC,GAAD,CACE7B,SAAUuB,EACVxB,WAAYA,EACZ/wD,IAAK9K,EAAQ09D,YAAY,GAAGt+C,QAAQtU,IACpCmxD,UAAWA,IAGd2B,GACC,cAAC,GAAD,CACE9B,SAAUuB,EACVpoC,MAAOA,EACP4mC,WAAYA,EACZz8C,QAASpf,EACTi8D,UAAWA,WE/CNzhB,kBAAKlhD,sBCrCE,iBAAO,CAC3BgW,UAAW,MDoCOhW,EA7BC,SAAA2E,GACnB,IAAQrC,EAAuEqC,EAAvErC,QAAS6nB,EAA8DxlB,EAA9DwlB,SAAUpH,EAAoDpe,EAApDoe,KAAMyhD,EAA8C7/D,EAA9C6/D,gBAAiBC,EAA6B9/D,EAA7B8/D,UAAWvX,EAAkBvoD,EAAlBuoD,QAASwX,EAAS//D,EAAT+/D,KAMtE,OACE,qBAAKniE,UAAWD,EAAQ0T,UAAxB,SACGmU,GACCA,EACG/N,QACA8wC,UACA98C,QAAO,SAAA45C,GAAG,OAAIA,EAAI+Z,UAAUpsD,MAAM,KAAK,KAAOoL,KAC9C3K,KAAI,SAAA1R,GAAO,OACV,qBAAK4d,KAZA3iB,EAYY+E,EAAQ/E,IAXxB,OAAFA,QAAE,IAAFA,OAAA,EAAAA,EAAI6X,eAAJ,OAAmBkrD,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAM7vB,UAAU,KAAMlzC,IAAO8iE,EAAYD,EAAkB,MAW7E,SACE,cAAC,GAAD,CAASxa,IAAKtjD,EAASwmD,QAASA,EAASyV,UAAWj8D,EAAQ/E,KAAO8iE,KADlC/9D,EAAQ/E,IAZtC,IAAAA,WETJgjE,GAAa,SAAA5hD,GACxB,MAAM,GAAN,OAAUpE,KAAOoE,GACdlF,OAAO,WACPzB,MAAM,GAAI,GACVD,eAHH,OAGmBwC,KAAOoE,GAAMlF,OAAO,WAAWzB,OAAO,KCN9CwoD,GAAe,SAAA/wB,GAAE,OAAIA,IAAOA,EAAG+J,WCyI7Br2C,eAAWvH,sBCzIJ,iBAAO,CAC3BgW,UAAW,CACTrV,QAAS,WACTiwB,SAAU,OACVnwB,OAAQ,sBAEVokE,SAAU,CACRtkE,UAAW,SACXY,MAAO,UACPC,SAAU,GACVV,OAAQ,YAEV4kC,iBAAkB,CAChB3X,MAAO,OACP4X,MAAO,QAETxiB,KAAM,CACJxiB,UAAW,SACXa,SAAU,GACVC,WAAY,IACZF,MAAO,UACPT,OAAQ,cACRJ,MAAO,OACPF,QAAS,OACTyH,eAAgB,UAElB8vD,WAAY,CACVl3D,OAAQ,qBACRL,QAAS,OACTyH,eAAgB,SAChBC,WAAY,aD2GU9H,CAAmB4X,aAJrB,SAAAvS,GAAK,MAAK,CAChCG,KAAMH,EAAMgzD,cAG+BzgD,EAtHxB,SAAAjT,GAAU,IAAD,EACpBrC,EAAkBqC,EAAlBrC,QAASkD,EAASb,EAATa,KACjB,EAA4CtC,mBAAS,MAArD,mBAAO4hE,EAAP,KAAuBC,EAAvB,KACA,EAAsC7hE,oBAAS,GAA/C,mBAAO8hE,EAAP,KAAoBC,EAApB,KACA,EAA0B/hE,mBAAS,IAAnC,mBAAOgiE,EAAP,KAAcC,EAAd,KACA,EAAwBjiE,mBAAS,GAAjC,mBAAOyrB,EAAP,KAAay2C,EAAb,KACA,EAA8BliE,oBAAS,GAAvC,mBAAOmiE,EAAP,KAAgBC,EAAhB,KACA,EAA8BpiE,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KACM6e,EAAkB1hD,iBAAO,MACzB2hD,EAAc3hD,iBAAO,MACrB2gD,EAAkB3gD,iBAAO,MACzB4hD,EAAyBtkC,GAAW,UAAC37B,EAAK2kB,gBAAN,aAAC,EAAe3lB,QAE1Dsf,qBAAU,WACJte,EAAKq3D,QACPyC,GAAY95D,EAAKq3D,OAAQ,GACtB92D,KAAKuyD,IACLvyD,MAAK,WACJ2gD,GAAW,GACX0e,EAAQ,MAETr/D,KAAK2/D,GACL/+D,OAAM,kBAAM+/C,GAAW,QAE3B,CAAClhD,EAAKq3D,SAET/4C,qBAAU,WAAO,IAAD,EAKa,GAJvBkhD,GAAeF,IACjBS,EAAgBxhD,QAAQ65B,UAAY2nB,EAAgBxhD,QAAQo6C,aAAe2G,GAG7E,UAAIt/D,EAAK2kB,gBAAT,aAAI,EAAe3lB,UACjBmhE,IACAC,KAEI,UAAApgE,EAAK2kB,gBAAL,eAAe3lB,QAASihE,IAA2B,GACrDC,OAGH,CAAClgE,EAAK2kB,WAET,IAAMw7C,EAAqB,WACzB,IAAMT,EAAQ1/D,EAAK2kB,SAAS/R,KAAI,SAAAiR,GAAI,OAAIA,EAAK06C,UAAUpsD,MAAM,KAAK,MAClEwtD,EAAS,aAAI,IAAIU,IAAIX,MAGjBU,EAAoB,WACxB,I9CnB2B/I,EAAQ4H,E8CmB7BqB,EAAa,OAAGtgE,QAAH,IAAGA,OAAH,EAAGA,EAAM2kB,SAAS,GAAGxoB,GAEpCmkE,I9CrBuBjJ,E8CsBVr3D,EAAKq3D,O9CtBa4H,E8CsBLqB,E9CrBzBrgE,MAAM,GAAD,OAAI/F,EAAJ,8BAAkCm9D,EAAlC,oBAAoD4H,GAAa,CAC3E9+D,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QACPiB,OAAM,kBAAM4H,GAAW,4D8CiBqBxI,MAAK,kB1DZd,SAAAP,GACtChH,GAAMC,SAAS,CACbC,KAAMy+D,GACNr3C,QAAS,CACPtgB,U0DQsDugE,CAAyBvgE,OAI7EkgE,EAAiB,WACjBF,EAAYzhD,SACdyhD,EAAYzhD,QAAQgyB,kBAmBlBiwB,EAAgB,SAAAC,GAChBA,EAAiB,IACnBX,GAAW,IAQf,OACE,mCACG7e,EACC,qBAAKlkD,UAAWD,EAAQq1D,WAAxB,SACE,cAAC,EAAD,CAAalwD,YAAY,MAG3B,sBAAKlF,UAAWD,EAAQ0T,UAAWsO,IAAKihD,EAAiB5nB,SAhC1C,SAAC,GAAgB,IAAd54C,EAAa,EAAbA,OAClB6/D,GAAa7/D,IAAWsgE,IAC1BN,EAAkBQ,EAAgBxhD,QAAQo6C,cAC1C8G,GAAe,GACf3F,GAAY95D,EAAKq3D,OAAQluC,GACtB5oB,KAAKyyD,IACLzyD,MAAK,WACJq/D,EAAQz2C,EAAO,GACfq3C,EAAc1tD,KAAKigD,QAAQ/zD,WAE5BuB,KAAK2/D,GACL/+D,OAAM,kBAAM+/C,GAAW,QAqBxB,UACGwe,EACE9oD,QACA8wC,UACA90C,KAAI,SAAA2K,GAAI,OACP,gCACE,mBAAGxgB,UAAWD,EAAQygB,KAAtB,SAA6B4hD,GAAW5hD,KACxC,cAAC,GAAD,CAAcA,KAAMA,EAAMoH,SAAU3kB,EAAK2kB,SAAUq6C,gBAAiBA,MAF5DzhD,MAKd,qBAAKxgB,UAAWD,EAAQgjC,iBAAkBhhB,IAAKkhD,cElG1CxlE,wBAAW4G,GAAX5G,EAjBE,SAAA2E,GACf,IAAQxD,EAAUwD,EAAVxD,MACR,OACE,qBAAKb,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,gEACFG,OAAQvR,GAAS,UACjBwR,YAAY,IACZC,cAAc,QACdC,eAAe,e,gCCfhB,IAAMqzD,GAAyC,SAAzCA,EAA0Ct3D,EAAUu3D,GAC/D,OAAOv3D,IAAW7I,MAAK,SAAAC,GACrB,OAAImgE,EAAoBngE,GAAkBkgE,EAAqBt3D,EAAUu3D,GAClEngE,MCDEogE,GAAwB,SAAA5gE,GAKnC,OAAO0gE,IAA8B,kB/H+FhC,SAA2B1gE,GAChC,OAAOC,MAAM,GAAD,OAAI/F,EAAJ,yBAA6B8F,EAAK+mB,QAAU,CACtD5mB,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,kBACL4H,GAAW,2D+HvG4B83D,CAAkB7gE,MAJxB,SAAC,GACpC,MAAO,CAD6D,EAA9B+mB,OAA8B,EAAtBswC,QACtBvyC,MAAK,SAAAw2B,GAAK,OAAKA,S,UCD3C,SAASwlB,GAAcliE,EAAO+E,EAAMojB,EAAQtc,GAC1C,GAAIsc,GAAUtc,EAAO,CAOnBs2D,KAAMC,KACJ,gCACGpiE,EACD,uBACC+E,KAEH,CACE3F,QAbJ,WACEvE,OAAOmP,KAAP,UACKhP,EADL,sBAC6B6Q,EAD7B,oBAC8Csc,GAC5C,cAgBR,SAASk6C,GAAcriE,EAAO+E,EAAMojB,EAAQtc,GAC1C,GCvBkC,YDuB9By2D,aAAaC,WAAqC,CACpD,IAAM9E,EAAe,IAAI6E,aAAatiE,EAAO,CAAE+E,SAC3CojB,GAAUtc,IACZ4xD,EAAaluB,QAAU,SAAAlxC,GACrBA,EAAEgB,iBACFxE,OAAOmP,KAAP,UACKhP,EADL,sBAC6B6Q,EAD7B,oBAC8Csc,GAC5C,aAOK,kBAEXm6C,aAAaE,qBAFF,YAKOxiE,EAAO+E,GAAqB,IAAf8qB,EAAc,uDAAJ,GACjC1H,EAAkB0H,EAAlB1H,OAAQtc,EAAUgkB,EAAVhkB,MACZ8yB,SAAS8jC,OACXJ,GAAcriE,EAAO+E,EAAMojB,EAAQtc,GAEnCq2D,GAAcliE,EAAO+E,EAAMojB,EAAQtc,IElC5B62D,GAAyBz/D,IAAM6/C,gBAoH7B6f,G,kDAjHb,WAAYpiE,GAAQ,IAAD,8BACjB,cAAMA,IAgBRqiE,kBAAoB,WAClB,IAAMC,EAAS,IAAIC,KAAO1nE,EAAc,sBAAwBV,OAAY,iBACtEqoE,EAASC,KAAMC,KAAKJ,GAE1BE,EAAOG,gBAAkB,IAEzBH,EAAOI,MAAQ,aACfJ,EAAOK,UAAY,CACjBC,SAAU,IACVC,SAAU,KAGZP,EAAOvvD,QAAQ,GAAI,EAAK+vD,kBAExB,EAAK9iE,SAAS,CACZsiE,YAhCe,EAoCnBS,gBAAkB,WAChB,IAAQT,EAAW,EAAK9hE,MAAhB8hE,QAER,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ3iC,aACV2iC,EAAOU,YAAY,2BACnBV,EAAOU,YAAY,wBACnBV,EAAOW,eA1CQ,EA8CnBH,iBAAmB,WACjB,EAAK9iE,SAAS,CAAE2/B,WAAW,GAAQ,EAAKujC,YA/CvB,EAkDnBA,UAAY,WACV,EAAKC,uBACL,EAAKC,6BApDY,EAuDnBD,qBAAuB,WACrB,MAA6B,EAAKrjE,MAA1BsL,EAAR,EAAQA,MAAOF,EAAf,EAAeA,UACI,EAAK1K,MAAhB8hE,OACDY,UAAP,+BAAyC93D,IAAS,SAAA+5C,GAChD,IAAM7gD,EAAOC,KAAK6B,MAAM++C,EAAI7gD,MACtB++D,GC/EFjpE,OAAOC,SAASqS,KAAKpT,QAAQ,UD+EImS,OAAOL,MAAP,OAAkB9G,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAM8G,OACvDk4D,GAAqB,OAAJh/D,QAAI,IAAJA,OAAA,EAAAA,EAAM8yD,WAAYlsD,EAAUpO,GAGnD,IAAKwH,EAAKy5D,UAAYsF,GAAiBC,IACjCplC,SAAS8jC,UEpFX5nE,OAAOC,SAASqS,KAAKpT,QAAQ,aFoFS,CACtC,IAAMuI,EAAU0C,KAAK6B,MAAM9B,EAAKkzD,sBAChC,GAAI31D,EAAQ69D,WAAY,CACtB,IAAMngE,EAAK,wBAAoB+E,EAAKwxD,UAAzB,YAAsCxxD,EAAKyxD,UACtDwN,GAAwChkE,EAAOsC,EAAQpC,KAAM,CAC3DioB,OAAQpjB,EAAKojB,OACbtc,WAMRm2D,GAAsBj9D,GAAMpD,MAAK,SAAAP,GAC3BA,IACFi4D,GAAsBj4D,EAAMuK,EAAUpO,IAClC2O,OAAO0tD,SAAP,OAAwBx4D,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAM+mB,SlFlEjB,SAAA7lB,GACzBlI,GAAMC,SAAS,CACbC,KAAMs5D,GACNlyC,QAAS,CACPpf,akF8D8C2hE,CAAYl/D,WAhF3C,EAsFnB8+D,0BAA4B,WAC1B,MAA6B,EAAKtjE,MAA1BsL,EAAR,EAAQA,MAAOF,EAAf,EAAeA,UACI,EAAK1K,MAAhB8hE,OAEDY,UAAP,kCAA4C93D,IAAS,SAAAiyD,GACnD,IAAM18D,EAAO4D,KAAK6B,MAAMi3D,EAAW/4D,MACnC41D,QAAQC,IAAI,CAACoH,GAAsB5gE,GAAOuM,GAAmB9B,KAASlK,MAAK,SAAAgmB,GACzE,IAAMu8C,EAAWrxD,OAAOsC,OAAO,GAAIwS,EAAI,GAAIvmB,GAC3Ci4D,GAAsB6K,EAAUv4D,EAAUpO,IACtC2O,OAAO0tD,SAAP,OAAwBsK,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAU/7C,SAAQ6rC,GAAekQ,UA/FhD,EAoGnBC,YAAc,SAAA7hE,GACZ,EAAKrB,MAAM8hE,OAAO1d,KAAK,aAAc,GAAIrgD,KAAKC,UAAU3C,KAlGxD,EAAKrB,MAAQ,CACX8hE,OAAQ,KACR3iC,WAAW,GALI,E,qDASnB,WACEtmC,KAAK8oE,sB,kCAGP,WACE9oE,KAAK0pE,oB,oBA0FP,WACE,OACE,cAACd,GAAuB1f,SAAxB,CAAiCnpD,MAAO,CAAEsqE,YAAarqE,KAAKqqE,aAA5D,SACGrqE,KAAKyG,MAAM+b,e,GA5GKrZ,IAAMC,WGhBlBkhE,GAAiB,WAC5B,OACE,qBAAKloE,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEI,EAAE,moBACFG,OAAO,UACP+1D,cAAc,MACd91D,YAAY,IACZC,cAAc,QACdC,eAAe,aCZhB,IC2DQ7S,yBD3DO,iBAAO,CAC3B0oE,oBAAqB,CACnB7lE,OAAQ,UACRlC,QAAS,YACTF,OAAQ,GACRN,SAAU,WACVyC,IAAK,EACLoF,KAAM,GAER2gE,YAAa,CACXvoE,QAAS,WCiDEJ,CAAmB4X,aALV,SAAAvS,GAAK,MAAK,CAChCG,KAAMH,EAAMgzD,WACZiF,YAAaj4D,EAAM0K,UAAUpO,MAGGiW,EAhDb,SAAAjT,GACnB,IAAQrC,EAAyCqC,EAAzCrC,QAASkD,EAAgCb,EAAhCa,KAAMrD,EAA0BwC,EAA1BxC,SAAUm7D,EAAgB34D,EAAhB24D,YACzBiL,EAAgBzkC,qBAAWgjC,IAA3ByB,YAmBR,OACE,qCACE,uBAAOhmE,UAAWD,EAAQomE,oBAAqB7c,QAAQ,SAAvD,SACE,cAAC,GAAD,MAEF,uBACElqD,GAAG,SACHY,UAAWD,EAAQqmE,YACnBjqE,KAAK,OACLkD,KAAK,cACLO,SAAUA,EACVH,SA5BqB,SAAA6J,GACzB,IAAMquC,EAAOruC,EAAM9G,OAAOi1C,MAAM,GAC1B4uB,EAAW,IAAIzuB,SACrByuB,EAAS1/D,OAAO,OAAQgxC,GCdrB,SAAsBA,GAC3B,OAAOz0C,MAAM/F,EAAW,QAAS,CAC/BiG,YAAa,cACbD,OAAQ,OACRQ,QAAS,CAAEk0C,cAAe,UAAYt7C,OAAY,iBAClDqK,KAAM+wC,IAELn0C,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,WACL4H,GAAW,2DDObs6D,CAAaD,GAAU7iE,MAAK,SAAAgmB,GAC1B,IAAMrlB,EAAU,CACdu1D,QAASqB,EACTwL,UAAWtjE,EAAK+mB,OAChB+yB,QAASvzB,EAAIva,IACbu3D,SAAU7uB,EAAKt4C,MAEjB2mE,EAAY7hE,MAEdmF,EAAM9G,OAAO9G,MAAQ,aE6EVsJ,eACbvH,sBC3GoB,iBAAO,CAC3BgW,UAAW,CACT1V,MAAO,OACPg+B,UAAW,oBACXn+B,SAAU,YAEZK,MAAO,CACLI,OAAQ,OACRN,MAAO,OACPK,QAAS,WACTS,SAAU,GACVX,OAAQ,GACRQ,QAAS,OACT,iBAAkB,CAChBE,MAAO,0BAGXm7B,SAAU,CACRz5B,OAAQ,UACRlC,QAAS,YACTF,OAAQ,GACRN,SAAU,WACVyC,IAAK,EACLnB,MAAO,MDoFTzB,CAAmB4X,aAPG,SAAAvS,GAAK,MAAK,CAChCG,KAAMH,EAAMgzD,WACZiF,YAAaj4D,EAAM0K,UAAUpO,GAC7BmP,UAAWzL,EAAMyL,aAIE8G,EA1FH,SAAAjT,GAAU,IAAD,QACjBrC,EAA0CqC,EAA1CrC,QAASkD,EAAiCb,EAAjCa,KAAM83D,EAA2B34D,EAA3B24D,YAAaxsD,EAAcnM,EAAdmM,UAC5By3D,EAAgBzkC,qBAAWgjC,IAA3ByB,YACR,EAAsCrlE,mBAAS,IAA/C,mBAAO8lE,EAAP,KAAoBC,EAApB,KACM3P,EAAc9zD,GAAQqzD,GAAerzD,EAAKq1D,qBAAuB,EACjEmH,EAAiB1E,KAAW,UAAK93D,EAAKu2D,sBAAV,iBAAK,EAAqBC,eAA1B,aAAK,EAA8BC,SAC/DiN,GACA,OAAJ1jE,QAAI,IAAJA,OAAA,EAAAA,EAAM08D,cAAeR,KAChB,OAAJl8D,QAAI,IAAJA,OAAA,EAAAA,EAAM6S,YAAa2hD,IAA0BV,IAC7C,UAAA9zD,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,KAC9BiK,EACCrmC,GAAY,OAAJn2B,QAAI,IAAJA,OAAA,EAAAA,EAAM2kB,YAAN,OAAkB3kB,QAAlB,IAAkBA,GAAlB,UAAkBA,EAAM2kB,SAAS,UAAjC,aAAkB,EAAmBwR,OAE7CwtC,EAAoB,WACxB,IAAID,EACJ,GAAIlH,EACFoH,QACK,CAAC,IAAD,EACC3iE,EAAO,CACX85D,iBAAgB,UAAE/6D,EAAKu2D,sBAAP,aAAE,EAAqBp6D,GACvC4qB,OAAQ/mB,EAAK+mB,OACb0vC,QAASqB,GAGL+C,EAAWppD,OAAOsC,OAAO,GAAI/T,GAEnC66D,EAAStE,eAAiB,CACxBv1D,OAAQuxD,GACRiE,QAAS,CACPC,QAASqB,GAEX/wC,OAAQ/mB,EAAK+mB,QAGfizC,GAAqB1uD,EAAUnP,GAAI8E,GAChCV,MAAK,WACJqyD,GAAeiI,MAEhBt6D,KAAKqjE,KAUNA,EAAgB,WACpB,IAAM1iE,EAAU,CACdu1D,QAASqB,EACTh5D,KAAM0kE,EACNF,UAAWtjE,EAAK+mB,QAElBg8C,EAAY7hE,GACZuiE,EAAe,KAGjB,OACE,sBAAK1mE,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAc7T,SAAU+mE,IACxB,uBACE3mE,UAAWD,EAAQ9B,MACnBwB,SAAU,SAAAS,GAAC,OAAIwmE,EAAexmE,EAAEsC,OAAO9G,QACvCA,MAAO+qE,EACP7mE,SAAU+mE,EACVpnE,YAAY,yBACZ41B,IAAKiE,EAAQ,MAAQ,MACrBn5B,WA1BiB,SAAAqJ,GACH,UAAdA,EAAM7N,KAAmBgrE,GAC3BG,OA0BA,sBAAM5mE,UAAWD,EAAQg6B,SAAU94B,QAAS2lE,EAA5C,SACE,cAAC,GAAD,CAAUhoE,MAAO+nE,GAAgB,sBE9D1BlpE,yBC1BO,iBAAO,CAC3BgW,UAAW,CACTtK,UAAW,MACX8qB,SAAU,QDuBCx2B,EAhBO,SAAA2E,GACpB,IAAQrC,EAAYqC,EAAZrC,QAER,OACE,sBAAKC,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,UEKShW,yBCtBO,iBAAO,CAC3BqpE,WAAY,CACV39D,UAAW,MACXtL,QAAS,OACT0H,WAAY,SACZD,eAAgB,UAElByhE,OAAQ,CACNnoE,MAAO,UACP2B,SAAU,IACVvC,UAAW,aDYAP,EAhBM,SAAA2E,GACnB,IAAQrC,EAAYqC,EAAZrC,QAER,OACE,qBAAKC,UAAWD,EAAQ+mE,WAAxB,SACE,qBAAK9mE,UAAWD,EAAQgnE,OAAxB,wDEMAC,G,4MAOJC,oBAAsB,WACpB,IAAKpL,KAAwB,CAC3B,IAAMqL,EAAOxqE,OAAOC,SAASoH,SAASqR,MAAM,KACtChW,EAAK8nE,EAAKA,EAAKjlE,OAAS,GAC9B4hE,GAAsB,CAAE75C,OAAQ5qB,IAAMoE,KAAKqyD,M,uDAV/C,WACE7sC,GAASrtB,KAAKyG,MAAM0I,MAAMC,OAAO2C,OACjCiB,GAAOhT,KAAKyG,MAAM0I,MAAMC,OAAO2C,OAC/B/R,KAAKsrE,wB,oBAWP,WACE,IAAQlnE,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKC,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,IAECooD,MAA0B,cAAC,GAAD,IAE3B,cAACpvD,EAAA,EAAD,CAAOjQ,KAAMa,EAAY,8BAA+ByP,OAAQ,kBAAM,cAAC,GAAD,c,GAxB/C/H,aAkChBtH,yBCnDO,iBAAO,CAC3BgW,UAAW,CACTvV,OAAQ,oBACRC,OAAQ,qBACRmD,WAAY,UACZI,UAAW,4CACXpD,aAAc,GACd21B,SAAU,IACVp2B,QAAS,OACTwwB,SAAU,aD0CC5wB,CAAmBupE,IEjDrBG,GAAkB,kBAElBC,GAAiB,SAAAC,GAC5BprE,GAAMC,SAAS,CACbC,KAAMgrE,GACNE,gBCmBG,SAASC,GAAe55D,GAC7BxK,MAAM/F,EAAW,cAAgBuQ,EAAO,CACtCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJkjE,GAAeljE,MAEhBE,OAAM,SAASrB,GACdiJ,GAAW,2DAIV,SAASu7D,GAAgBC,GAC9BtkE,MAAM/F,EAAW,cAAgBqqE,EAAc,UAAW,CACxDpkE,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,UAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJkjE,GAAeljE,MAEhBE,OAAM,SAASrB,GACdiJ,GAAW,2D,yBCyFXy7D,G,kDACJ,WAAYrlE,GAAQ,IAAD,8BACjB,cAAMA,IAEDU,MAAQ,GAHI,E,0CAMnB,WACE,MAAkEnH,KAAKyG,MAA/DrC,EAAR,EAAQA,QAAS2nE,EAAjB,EAAiBA,OAAQC,EAAzB,EAAyBA,UAAWC,EAApC,EAAoCA,cAAeC,EAAnD,EAAmDA,WACnD,OACE,sBAAK7nE,UAAWD,EAAQkmB,MAAxB,UACE,2EACA,6BAAK0hD,IACL,sBAAK3nE,UAAWD,EAAQgqC,aAAxB,UACE,wBACE/pC,UAAWD,EAAQ+nE,QACnB7mE,QAAS,WACP2mE,EAAcF,GACdG,KAJJ,qBAQA,wBAAQ7nE,UAAWD,EAAQi2B,OAAQ/0B,QAAS4mE,EAA5C,8B,GAtBiB/iE,IAAMC,WAmClBC,eAAWvH,sBA3KX,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAAO,MACPgB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAW,uCACXtD,QAA8B,EAArBV,EAAM4tB,QAAQC,KACvB3F,UAAW,OACXtnB,aAAc,GACd+B,IAAK,MACLoF,KAAM,MACN9D,UAAW,wBACX3D,UAAW,UAEb+rC,aAAc,CACZlsC,QAAS,OACTyH,eAAgB,gBAChBxH,cAAe,OAEjBsyD,YAAa,CACXlyD,OAAQ,GACRE,QAAS,UAEX2xD,QAAS,CACP1uD,WAAY,SACZxC,SAAU,GACVD,MAAO,UACPZ,UAAW,UAEbqyD,UAAW,CACTtyC,WAAYrgB,EAAM4tB,QAAQC,KAC1B7S,YAAahb,EAAM4tB,QAAQC,KAC3BxtB,MAAO,IACPoL,UAAW,OAEbmnD,SAAU,CACRnyD,OAA6B,EAArBT,EAAM4tB,QAAQC,MAExBlF,KAAM,CACJtoB,MAAO,OACP6H,UAAgC,EAArBlI,EAAM4tB,QAAQC,MAE3B8I,MAAO,CACLJ,SAAU,KAEZs8B,aAAc,CACZ9kC,UAAW,QAEbxtB,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBk2B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZ45B,SAAU,CACRhvD,SAAU,GACVD,MAAO,UACPT,OAAQ,UAEV2pE,QAAS,CACP1pE,QAAS,YACTC,OAAQ,EACRiD,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdgC,OAAQ,UACR1B,MAAO,QACPT,OAAQ,cACRN,QAAS,eAEXm4B,OAAQ,CACN53B,QAAS,YACTC,OAAQ,EACRiD,WAAY,cACZymE,aAAc,UACdzpE,aAAc,GACdgC,OAAQ,UACR1B,MAAO,UACPT,OAAQ,cACRN,QAAS,cACT6D,UAAW,2CAEbsuD,aAAc,CACZnxD,SAAU,GACVD,MAAO,UACPE,WAAY,KAEd,UAAW,CACT,qCAAsC,CACpCF,MAAO,WAET,sBAAuB,CACrByC,WAAY,QAEd,wBAAyB,CACvBA,WAAY,QAEd,gBAAiB,CACfs+C,WAAY,GAEd,kBAAmB,CACjBzhD,OAAQ,IAEV,sBAAuB,CACrBH,MAAO,IAGT,4BAA6B,CAE3BO,aAAc,GAGhB,4BAA6B,CAC3BA,aAAc,GACd0pE,gBAAiB,sCACjBjpE,gBAAiB,6BAwCGtB,CAAmBgqE,KCNvC/1C,GAAU,CACd,CACE1yB,MAAO,eACPtD,MAAO,gBAET,CACEsD,MAAO,eACPtD,MAAO,iBAQLusE,G,kDASJ,WAAY7lE,GAAQ,IAAD,8BACjB,cAAMA,IATR8lE,kBAAoB,WAClB,EAAK5lE,SAAS,CACZuJ,MAAM,EACNs8D,iBAAkB,KAClBC,oBAAqB,MAIN,EAiGnBC,aAAe,SAAAvzD,GACb,OAAKA,EAAQ,GAAK,IAAM,EACf,CACLxT,WAAY,0BAGT,CACLA,WAAY,0BACZhD,aAAc,KAzGC,EA6GnBgqE,YAAc,SAAAC,GACZ,OAAOA,EAAUtI,SACb,EAAKuI,eAAeD,EAAUE,eAC9BrsD,KAAOmsD,EAAUE,eAChBC,UAA0C,GAAhC,EAAKtmE,MAAMmM,UAAU0xD,SAAgB7jD,OAASssD,aACxDptD,OAAO,sBAlHK,EAqHnBqtD,iBAAmB,SAAA1I,GACjB,OAAOA,EACH,iBADW,6BAEW,EAAK2I,WAFhB,MAtHE,EA2HnBC,eAAiB,SAAA5kE,GACf,OAAQA,GACR,IAAK,OACH,MAAO,UACT,IAAK,YACH,MAAO,UACT,IAAK,WACH,MAAO,UAGT,QACE,MAAO,YAnIT,EAAKnB,MAAQ,CACXspB,KAAM,EACNyH,YAAa,GACbhoB,MAAM,EACN8jD,cAAe,EACfgB,aAAc,GACd5/B,eAAgBW,GAAQ,GACxBy2C,iBAAkB,KAClBC,oBAAqB,IAGvBd,GAAellE,EAAM0I,MAAMC,OAAO2C,OAdjB,E,oDAiBnB,WACE/R,KAAK2G,SAAS,CACZuJ,MAAM,M,gCAIV,SAAmBsiB,GACjBxyB,KAAK2G,SAAS,CACZyuB,eAAgB5C,M,sBAIpB,SAAS26C,EAAOC,GACd,GAAwC,iBAApCptE,KAAKmH,MAAMiuB,eAAer1B,MAC5B,OAAOqtE,EAAM3pE,GAAK0pE,EAAM1pE,GAExB,GACoB,aAAjB0pE,EAAM7kE,QACY,SAAjB6kE,EAAM7kE,QACW,aAAjB8kE,EAAM9kE,QACS,SAAjB8kE,EAAM9kE,OAEN,MAAqB,cAAjB8kE,EAAM9kE,QAA2C,gBAAjB6kE,EAAM7kE,OACjC8kE,EAAM3pE,GAAK0pE,EAAM1pE,GAEnB0pE,EAAM1pE,GAAK2pE,EAAM3pE,GACnB,GACY,cAAjB2pE,EAAM9kE,QACW,gBAAjB6kE,EAAM7kE,OAEN,OAAO8kE,EAAM3pE,GAAK0pE,EAAM1pE,GAExB,IAAM+/C,EAAI,IAAIlJ,KAAK6yB,EAAML,eAAiB,IAE1C,OADU,IAAIxyB,KAAK8yB,EAAMN,eAAiB,IAC/BtpB,I,qCAKjB,SAAwBzjD,GACtBC,KAAK2G,SAAS,CACZuxB,YAAan4B,M,sBAIjB,WACE,OAAIC,KAAKyG,MAAMmM,UAAU0xD,SAAW,EAC5B,KAAN,OAAYtkE,KAAKyG,MAAMmM,UAAU0xD,UACU,IAAlCtkE,KAAKyG,MAAMmM,UAAU0xD,SACvB,IAED,IAAN,OAAWtkE,KAAKyG,MAAMmM,UAAU0xD,Y,8BAIpC,SAAiBvkE,GACfC,KAAK2G,SAAS,CACZ8pB,KAAM1wB,M,4BAIV,SAAestE,GACb,OAAO5sD,KAAO,IAAI65B,KAAK+yB,IAAoB1tD,OAAO,uB,2BAGpD,SAAcq2C,GACZ,OACGA,EAAEsX,KAAOtX,EAAEsX,KAAO,GACnB,MACCtX,EAAEsX,MAAQtX,EAAEuX,UACkD,OAA1C,IAAhBvX,EAAEuX,UAAkB,EAAK,IAAMvX,EAAEsX,KAAQtX,EAAEuX,WAC1B,IAAhBvX,EAAEuX,UACA,EACC,IAAMvX,EAAEsX,KAAQtX,EAAEuX,WACJ,IAAhBvX,EAAEuX,UAAkB,EAAK,IAAMvX,EAAEsX,KAAQtX,EAAEuX,WAAWC,QAAQ,GACjE,GACJ,O,oBA6CJ,WAAU,IAAD,OACCppE,EAAYpE,KAAKyG,MAAjBrC,QACFgW,EAAOpa,KAAKyG,MAAMilE,WACxB,EAA8B1rE,KAAKmH,MAA3B+wB,EAAR,EAAQA,YAAazH,EAArB,EAAqBA,KAErB,OACE,sBAAK7f,MAAO,CAAEqZ,UAAW,OAAQ1nB,OAAQ,QAAzC,UACE,sBAAK8B,UAAWD,EAAQqpE,WAAxB,UACE,cAAC,GAAD,CAAUppE,UAAWD,EAAQspE,eAAgBxnE,MAAO,eACpD,sBAAK7B,UAAWD,EAAQupE,iBAAxB,UACE,qBACEroE,QAAStF,KAAKyG,MAAMmnE,yBACpBvpE,UAAWD,EAAQ4oD,OAFrB,gCAME,OAAC5yC,QAAD,IAACA,OAAD,EAACA,EAAM9T,SACP,qBAAKsK,MAAO,CAAExO,MAAO,IAAKI,OAAQ,iBAAlC,SACE,cAAC,KAAD,CACEuzB,QAASA,GACT83C,aAAW,EACX9tE,MAAOC,KAAKmH,MAAMiuB,eAClBtxB,SAAU,SAAA/D,GAAK,OAAI,EAAK+tE,mBAAmB/tE,IAC3CguE,YAAY,YAMpB3zD,EAAK9T,OAGL,8BACG8T,EAAK9T,OACJ,qBAAKjC,UAAWD,EAAQwwD,aAAxB,SACE,qBAAKvwD,UAAWD,EAAQs0B,MAAxB,SACE,gCACE,sBACEr0B,UAAWD,EAAQ4pE,cACnBp9D,MAAO,CACLsvB,aAAc,oBACdE,UAAW,OACXkgB,cAAe,GALnB,UAOE,qBACEj8C,UAAS,UAAKD,EAAQV,KAAb,YAAqBU,EAAQ6pE,sBADxC,kBAIA,qBACE5pE,UAAS,UAAKD,EAAQ0nB,KAAb,YAAqB1nB,EAAQ6pE,sBADxC,qBAIA,qBACE5pE,UAAS,UAAKD,EAAQV,KAAb,YAAqBU,EAAQ6pE,sBADxC,uBAIA,qBACE5pE,UAAS,UAAKD,EAAQV,KAAb,YAAqBU,EAAQ6pE,sBADxC,sBAIA,qBACE5pE,UAAS,UAAKD,EAAQ0X,KAAb,YAAqB1X,EAAQ6pE,sBADxC,kBAIA,qBACE5pE,UAAS,UAAKD,EAAQV,KAAb,YAAqBU,EAAQ6pE,sBACtC3oE,QAAS,kBAAM,EAAK4oE,YAFtB,uBAMD9zD,EACEf,MAAK,SAACC,EAAGlB,GAAJ,OAAU,EAAK81D,SAAS50D,EAAGlB,MAChC8F,MACCuS,EAAOyH,EACPzH,EAAOyH,EAAcA,GAEtBhe,KAAI,SAAC0yD,EAAWzzD,GAAZ,OACH,sBAEEvI,MAAO,EAAK87D,aAAavzD,GACzB9U,UAAWD,EAAQ4pE,cAHrB,UAIE,qBAAK3pE,UAAWD,EAAQV,KAAxB,SAA+BkpE,EAAUlpE,OACzC,qBAAKW,UAAWD,EAAQ0nB,KAAxB,SAA+B8gD,EAAU9gD,OACzC,qBAAKznB,UAAWD,EAAQV,KAAxB,SACGkpE,EAAUW,UAAYX,EAAUW,UAAY,IAE/C,qBAAKlpE,UAAWD,EAAQV,KAAxB,SACG,EAAKyqE,cAAcvB,KAEtB,sBAAKvoE,UAAWD,EAAQ0X,KAAxB,UACG,EAAK6wD,YAAYC,GAClB,uBACC,EAAKI,iBAAiBJ,EAAUtI,aAEnC,qBACE1zD,MAAO,CACL1O,QAAS,OACTsL,UAAW,OAHf,SAKE,sBACEnJ,UAAWD,EAAQkE,OACnBsI,MAAO,CACLxN,gBAAiB,EAAK8pE,eACpBN,EAAUtkE,SAJhB,SAOGskE,EAAUtkE,YAGQ,cAArBskE,EAAUtkE,QACW,gBAArBskE,EAAUtkE,SACV,qBAAKjE,UAAS,UAAKD,EAAQyrD,UAAb,eAAd,SACE,cAAC,KAAD,CACE5sD,MAAM,UACNoB,UAAU,SACVkrB,QAAQ,SACRjqB,QAAS,WACP,EAAKqB,SACH,CACE6lE,iBAAkBI,EAAUnpE,GAC5BgpE,oBAAqBG,EAAUlpE,MAEjC,EAAK0qE,yBA5CVxB,EAAUnpE,OAoDJ,IAAhB2W,EAAK9T,QACJ,qBACEsK,MAAO,CACLvO,UAAW,iBAFf,SAIE,cAAC,GAAD,CACEouB,KAAMzwB,KAAKmH,MAAMspB,KACjByH,YAAal4B,KAAKmH,MAAM+wB,YACxBhS,MAAO9L,EAAK9T,OACZ6pD,aAAc,SAACxiD,EAAO5N,GAAR,OACZ,EAAKq4B,iBAAiBr4B,QAM9B,cAAC,KAAD,CACE,kBAAgB,qBAChB,mBAAiB,2BACjBmQ,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAKusE,kBAJhB,SAKE,cAAC,GAAD,CACER,OAAQ/rE,KAAKmH,MAAMqlE,iBACnBR,UAAWhsE,KAAKmH,MAAMslE,oBACtBP,WAAYlsE,KAAKusE,kBACjBN,cAAeL,cAOzB,cAAC,GAAD,CACEpkD,YAxTZ,yHAyTYliB,QAAStF,KAAKyG,MAAMmnE,yBACpBzjE,YAAa,oBAvInB,cAAC,EAAD,W,GAjLsBhB,IAAMC,WA0UvBC,eACbvH,sBApfa,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLroB,SAAU,WACVG,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzB8I,MAAO,CACLJ,SAAU,KAEZs8B,aAAc,CACZ9kC,UAAW,QAEb4kC,UAAW,CACTtyC,WAAYrgB,EAAM4tB,QAAQC,KAC1B7S,YAAahb,EAAM4tB,QAAQC,KAC3BxtB,MAAO,KAET8D,MAAO,CACLhD,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,YAE/BnoB,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBk2B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,KAEZ01C,cAAe,CACbvrE,QAAS,GACTS,SAAU,GACVhB,QAAS,OACT2C,UAAW,GACXjC,WAAY,mBACZK,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7BnE,SAAU,WACV,sBAAuB,CACrBC,QAAS,SAEXmsE,kBAAmB,OACnBC,cAAe,UAEjB5qE,KAAM,CACJ8J,UAAW,MACX5I,SAAU,MACVk4C,SAAU,aACVr6C,QAAS,SACTP,QAAS,OACT0H,WAAY,UAEdqkE,qBAAsB,CACpB9qE,WAAY,QAEd2oB,KAAM,CACJte,UAAW,MACX5I,SAAU,MACVk4C,SAAU,aACVr6C,QAAS,SACTP,QAAS,OACT0H,WAAY,UAEdkS,KAAM,CACJtO,UAAW,MACXvK,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7BlE,QAAS,OACT0H,WAAY,UAEdtB,OAAQ,CACNpG,QAAS,OACT0H,WAAY,SACZnH,QAAS,UACTW,gBAAiB,MACjBT,aAAc,GACdO,SAAU,GACVsuD,UAAW,SACX5uD,WAAY,mBACZK,MAAO,SAET4sD,UAAW,CACT5sD,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7BzB,OAAQ,UACR1C,SAAU,WACVC,QAAS,OACTqB,MAAO,GACPmB,IAAK,MACLsB,UAAW,oBAEbyxB,KAAM,CACJ/xB,WAAY,GACZxC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,YAE/B8jD,UAAW,CACTrrE,SAAU,OACVC,WAAY,OACZP,WAAY,OACZK,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,YAE/BgjD,WAAY,CACVvrE,QAAS,OACTyH,eAAgB,cAElB+jE,eAAgB,CACdlgE,UAAW,OAEbmgE,iBAAkB,CAChBzrE,QAAS,OACTyH,eAAgB,iBAElBqjD,OAAQ,CACN5pD,gBAAiB,QACjBH,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BpD,OAAQ,aAAeX,EAAM6D,QAAQ4oE,eAAeC,QACpD9rE,aAAc,GACdF,QAAS,GACTP,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB9E,UAAW,GACXrC,OAAQ,iBACRmC,OAAQ,WAEV,UAAW,CACT,oBAAqB,CACnBwD,KAAM,CACJlG,SAAU,WACVyC,IAAK,GACL6X,QAAS,GAEXtT,GAAI,CACFhH,SAAU,WACVyC,IAAK,EACL6X,QAAS,QAgWfza,CAAmB4X,aALG,SAAAvS,GAAK,MAAK,CAChCukE,WAAYvkE,EAAMukE,cAIChyD,CAAyB4yD,M,mHCtWxCoC,G,kDACJ,WAAYjoE,GAAQ,IAAD,8BACjB,cAAMA,IA8BR8zB,WAAa,SAAAh2B,GACX,EAAKoC,SAAS,CAAEjD,KAAMa,EAAEsC,OAAO9G,SAhCd,EA8CnB4uE,cAAgB,WACd,GAAuB,MAAnB,EAAKxnE,MAAM2kB,KAAc,CAC3B,IAUIghD,EAVJ,EASI,EAAK3lE,MARP2kB,EADF,EACEA,KACApoB,EAFF,EAEEA,KACAkP,EAHF,EAGEA,UACAg8D,EAJF,EAIEA,WACAC,EALF,EAKEA,QACAC,EANF,EAMEA,aACAn2D,EAPF,EAOEA,QACAo2D,EARF,EAQEA,aAKAjC,EADE+B,EACcpuD,OAASo6C,MAAMl7C,OAAO,oBAC7BivD,EACOnuD,KAAOquD,GAAcnvD,OAAO,oBAE5Bc,KAAOquD,GACpB/B,UAA2C,IAAhC,EAAKtmE,MAAMmM,UAAU0xD,SAAgB7jD,OAASssD,aACzDptD,OAAO,oBAGZ,IAAMitD,EAAY,CAChB76D,MAAO,EAAKtL,MAAMmM,UAAUnP,GAC5BqoB,OACApoB,OACA4gE,SAAUsK,EACV9B,gBACAzgD,KAAM0iD,EACNC,UAAWr2D,GAEb,EAAKhS,SACH,CACEmlB,UAAM+J,EACNld,SAAS,EACTjV,KAAM,GACNorE,aAAcruD,KAAOA,OAASo6C,MAAMkS,UAAUn6D,EAAU0xD,WACxDuK,SAAS,EACTD,YAAY,EACZn1C,KAAK,EACLs1C,aAAc,KAEhB,YHhPD,SAAyBnC,GAC9BrlE,MAAM/F,EAAW,aAAc,CAC7BiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUyhE,KAEpB/kE,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,sCACb27D,GAAeiB,EAAU76D,UAE1BtJ,OAAM,SAASrB,GACdiJ,GAAW,yBGoOP4+D,CAAgBrC,GAChB,EAAKnmE,MAAM4jB,kBAIf,EAAK1jB,SAAS,CACZ8yB,KAAK,KAjGQ,EAsInBy1C,YAAc,SAAAvhE,GACZ,EAAKhH,SAAS,CAAEgS,QAAgC,SAAvBhL,EAAM9G,OAAO9G,SAvIrB,EA8InBovE,cAAgB,SAAAxhE,GACd,MAAgC,EAAKxG,MAA7B0nE,EAAR,EAAQA,QAASD,EAAjB,EAAiBA,WACbQ,EAAoBR,EACT,GAAXC,GAAkC,GAAdD,IACtBQ,GAAqBR,GAEvB,EAAKjoE,SAAS,CACZkoE,QAAgC,SAAvBlhE,EAAM9G,OAAO9G,MACtB6uE,WAAYQ,KAtJG,EAyJnBC,eAAiB,WACf,EAAK1oE,SAAS,CACZioE,YAAa,EAAKznE,MAAMynE,cA3JT,EA8JnBU,iBAAmB,SAAAzqD,GACjB,IAAMiqD,EAAeruD,KAAOoE,GAC5B,EAAKle,SAAS,CACZmoE,kBA/JF,EAAK3nE,MAAQ,CACXwR,SAAS,EACTk2D,SAAS,EACTD,YAAY,EACZtK,SAAU,KACV7qC,KAAK,EACL7mB,UAAW,GACX28D,gBAAgB,EAChBT,aAAc,KACdU,QAAQ,EACRT,aAAc,IAGhB,EAAK5nE,MAAM2nE,aAAgB,EAAK3nE,MAAMyL,UAAUtM,OAE5Cma,KAAOo6C,MAAMkS,UAAU,EAAK5lE,MAAMyL,UAAU0xD,UAD5C7jD,OAhBa,E,4CAoBnB,WACE,OAAIzgB,KAAKyG,MAAMmM,UAAU0xD,SAAW,EAC5B,KAAN,OAAYtkE,KAAKyG,MAAMmM,UAAU0xD,UAEE,GAAjCtkE,KAAKyG,MAAMmM,UAAU0xD,SAChB,IAED,GAAN,OAAUtkE,KAAKyG,MAAMmM,UAAU0xD,Y,8BAQnC,SAAiBvkE,GACfC,KAAKmH,MAAMsyB,IACPz5B,KAAK2G,SAAS,CACdmlB,KAAM/rB,EACN05B,KAAK,IAELz5B,KAAK2G,SAAS,CACdmlB,KAAM/rB,M,+BA4DZ,WACE,IAAQwvE,EAAmBvvE,KAAKmH,MAAxBooE,eACA38D,EAAc5S,KAAKyG,MAAnBmM,UACJmG,OAAO02D,oBAAoB78D,GAAWtM,SAAWipE,GACnDvvE,KAAK2G,SAAS,CACZmoE,aAAcruD,KACZA,OACGo6C,MACAkS,UAA+B,GAArBn6D,EAAU0xD,WACvB3kD,OAAO,oBACT6vD,QAAQ,EACRD,gBAAgB,M,gCAKtB,WACE,IAAQA,EAAmBvvE,KAAKmH,MAAxBooE,eACA38D,EAAc5S,KAAKyG,MAAnBmM,UACJmG,OAAO02D,oBAAoB78D,GAAWtM,SAAWipE,GACnDvvE,KAAK2G,SAAS,CACZmoE,aAAcruD,KACZA,OACGo6C,MACAkS,UAA+B,GAArBn6D,EAAU0xD,WACvB3kD,OAAO,oBACT6vD,QAAQ,EACRD,gBAAgB,M,+BAStB,SAAkBxvE,GAChBC,KAAK2G,SAAS,CAAEooE,aAAchvE,M,oBA0BhC,WAAU,IAAD,OACCqE,EAAYpE,KAAKyG,MAAjBrC,QACR,EAAuCpE,KAAKmH,MAApCqoE,EAAR,EAAQA,OAAQV,EAAhB,EAAgBA,aAAcprE,EAA9B,EAA8BA,KAC9B,OACE,qBAAKW,UAAWD,EAAQquB,KAAxB,SACE,gCACE,qBACE7hB,MAAO,CACL1O,QAAS,OACTC,cAAe,OAHnB,SAKE,oBAAIkC,UAAWD,EAAQsrE,mBAAvB,6BAEF,qBAAKrrE,UAAWD,EAAQurE,aAAxB,SACE,sBAAKtrE,UAAU,SAAf,UACE,sBAAKA,UAAWD,EAAQwrE,YAAxB,UACE,oBAAIvrE,UAAWD,EAAQojB,YAAvB,4BACA,cAAC,GAAD,CACE5jB,YAAY,YACZw1B,UAAW,GACXiU,WAAW,EACXrpC,aAAcN,EACdw1B,YAAa,CAAEj2B,MAAO,WACtBa,SAAU9D,KAAKu6B,WACfgT,iBAAkBvtC,KAAK2uE,mBAG3B,sBACEtqE,UAAWD,EAAQyrE,WACnBj/D,MAAO,CACLsvB,aAAc,qBAHlB,UAKE,oBAAI77B,UAAWD,EAAQojB,YAAvB,0CAGA,qBAAKnjB,UAAWD,EAAQ+7B,OAAxB,SACE,cAAC,GAAD,CACEpgC,MAAOC,KAAKmH,MAAM2kB,KAClBuG,QAASryB,KAAKmH,MAAMsyB,IACpB31B,SAAU,gBAAGT,EAAH,EAAGA,MAAH,OAAe,EAAK+vD,iBAAiB/vD,WAGrD,sBACEgB,UAAWD,EAAQyrE,WACnBj/D,MACE5Q,KAAKmH,MAAM4nE,aAAazoE,QAAU,EAC9B,CAAE45B,aAAc,qBAChB,GALR,UAOE,oBAAI77B,UAAWD,EAAQojB,YAAvB,yBACA,cAAC,GAAD,CACE1jB,SAAU,SAAA/D,GAAK,OAAI,EAAK+vE,kBAAkB/vE,IAC1CA,MAAOC,KAAKmH,MAAM4nE,aAClBvzC,YAAU,EACV5qB,MAAO,CACLxO,MAAO,SAET2tE,WAAW,EACX3rE,QAAS,CAAEshC,OAAQthC,EAAQshC,QAC3BsqC,cAAc,OAGjBhwE,KAAKmH,MAAM4nE,aAAazoE,OAAS,EAChC,sBACEsK,MAAO,CACLsvB,aAAc,oBACdogB,cAAe,GAHnB,UAKE,mBAAGj8C,UAAWD,EAAQ6rE,WAAtB,uBACA,eAAC,KAAD,CACE,aAAW,OACXvsE,KAAK,OACLW,UAAWD,EAAQ8rE,MACnBnwE,MAAOC,KAAKmH,MAAMwR,QAAQ2C,WAC1BxX,SAAU9D,KAAKkvE,YALjB,UAME,cAAC,KAAD,CACE7qE,UAAU,sBACVtE,MAAM,QACNiyB,QAAS,cAAC,KAAD,CAAO/uB,MAAM,YACtBI,MAAM,2CAER,cAAC,KAAD,CACEgB,UAAU,sBACVtE,MAAM,OACNiyB,QAAS,cAAC,KAAD,CAAO/uB,MAAM,YACtBI,MAAM,oDAKZ,wBAGF,qBAAKgB,UAAWD,EAAQwrE,YAAxB,SACE,gCACE,mBAAGvrE,UAAWD,EAAQ6rE,WAAtB,yBACA,eAAC,KAAD,CACE,aAAW,QACXvsE,KAAK,OACLW,UAAWD,EAAQ8rE,MACnBnwE,MAAOC,KAAKmH,MAAM0nE,QAAQvzD,WAC1BxX,SAAU9D,KAAKmvE,cALjB,UAME,cAAC,KAAD,CACE9qE,UAAU,sBACVtE,MAAM,OACNiyB,QAAS,cAAC,KAAD,CAAO/uB,MAAM,YACtBI,MAAM,aAER,cAAC,KAAD,CACEgB,UAAU,sBACVtE,MAAM,QACNiyB,QAAS,cAAC,KAAD,CAAO/uB,MAAM,YACtBI,MAAM,iCAKZrD,KAAKmH,MAAM0nE,QA4CX,wBA3CA,gCACE,sBAAKxqE,UAAWD,EAAQwrE,YAAxB,UACE,oBACEvrE,UAAWD,EAAQojB,YACnB5W,MAAO,CAAE1G,aAAc,IAFzB,6BAKA,sBAAK7F,UAAWD,EAAQk1B,YAAxB,UACE,+BACIt5B,KAAKmH,MAAM0nE,SAAWW,GACtB,cAAC,KAAD,CACEnrE,UAAS,UAAKD,EAAQsb,OAAb,YAAuBtb,EAAQ+rE,YACxCv/D,MAAO,CACL1N,SAAU,GACVD,MAAO,WAETlD,MAAO+uE,EACPsB,aAAW,EACXtsE,SAAU,SAAA6J,GAAK,OAAI,EAAK2hE,iBAAiB3hE,IACzC0iE,cAAe,cAAC,KAAD,oCACfC,eAAgB,cAAC,KAAD,yCAItB,cAAC,GAAD,UAGJ,qBAAK1/D,MAAO,CAAE1O,QAAS,SAAvB,SACE,cAAC,KAAD,CACEmC,UAAU,YACV2tB,QACE,cAAC,KAAD,CACErZ,QAAS3Y,KAAKmH,MAAMynE,WACpB9qE,SAAU9D,KAAKqvE,eAEfpsE,MAAM,YAGVI,MAAK,0DAAqDrD,KAAKitE,WAA1D,sBAOb,qBAAK5oE,UAAS,UAAKD,EAAQqB,OAAb,YAAuBrB,EAAQmsE,cAA7C,SACE,cAAC,GAAD,CACE7nE,OAAQ,CAAElG,OAAQ,OAAQC,QAAS,aACnC6C,QAAStF,KAAK2uE,cACdzoE,MAAM,sC,GA7UKiD,IAAMC,WA6VpBC,eACbvH,sBA1ea,SAAAC,GAAK,MAAK,CACvB0wB,KAAM,CACJvwB,QAAS,OACTyH,eAAgB,eAChB/G,WAAY,QAEd+sE,aAAc,CACZltE,QAAS,EACTsD,UAAW,QAGb6pE,YAAa,CACX3lE,UAAW,IAEb4lE,WAAY,CACV5lE,UAAW,OACXq2C,cAAe,OACfl+C,MAAO,OAGTolB,YAAa,CACX5kB,WAAY,OACZM,SAAU,GACVD,MAAO,WAGTyiC,OAAQ,CACNvjC,cAAe,UAGjBm3B,YAAa,CACX52B,OAAQ,+BACRN,MAAO,cACPO,aAAc,MACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,KAEZk4C,UAAW,CACTpuE,MAAO,SAETmuE,aAAc,CACZtmE,UAAW,mBAEb3H,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBsc,OAAQ,CACNld,OAAQ,OACRN,QAAS,SAEXuD,OAAQ,CACNvD,QAAS,OACTyH,eAAgB,aAChBM,UAAW,IAEbwmE,WAAY,CACVxtE,MAAO,WAETktE,WAAY,CACVxqE,WAAY,UACZzC,SAAU,OACVT,QAAS,SACTE,aAAc,OAEhB+tE,UAAW,CACTtuD,WAAYrgB,EAAM4tB,QAAQC,MAE5BuQ,OAAQ,CACNv7B,SAAU,IACVxC,MAAO,QAET+/C,aAAc,CACZ3/C,OAAQ,MACRmD,WAAY,4DACZI,UAAW,0CACX9C,MAAO,QACPN,aAAc,GACdJ,OAAQ,IAEVmtE,mBAAoB,CAClBxsE,SAAU,OACVC,WAAY,OACZP,WAAY,OACZK,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BjoB,OAAQ,QAGVytE,WAAY,CACV/sE,SAAU,OACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAG5B,UAAW,CACT,wCAAyC,CACvCzgB,QAAS,QAEX,4CAA6C,CAC3CM,OAAQ,eACRE,OAAQ,EACRD,QAAS,GAEX,SAAU,CACRS,SAAU,GACVD,MAAO,WAET,oBAAqB,CACnBN,aAAc,IAEhB,0CAA2C,CACzCD,OAAQ,GAEV,iCAAkC,CAChC23D,QAAS,QAEX,6BAA8B,CAC5B73D,OAAQ,wBAEV,4CAA6C,CAC3C4f,WAAY,QAEd,4BAA6B,CAC3B5f,OAAQ,YACRU,SAAU,GACVN,WAAY,YAmWG,CAAEY,WAAW,GAAhC1B,CACE4X,aAPoB,SAAAvS,GAAK,MAAK,CAChCklB,KAAMllB,EAAMklB,KACZzZ,UAAWzL,EAAMyL,aAKf8G,CAAyBg1D,MC1dvBiC,G,kDACJ,WAAYlqE,GAAQ,IAAD,8BACjB,cAAMA,IAuBRmqE,oBAAsB,WACpB,EAAKjqE,SAAS,CAAEkqE,sBAAsB,KAzBrB,EA2BnBC,mBAAqB,WACnB,EAAKnqE,SAAS,CAAEkqE,sBAAsB,KAzBtC,EAAK1pE,MAAQ,CACXm9D,SAAU,KACV1xD,UAAW,GACXk8D,aAAc,KACdiC,UAAW,KACXF,sBAAsB,GAGxB,EAAK1pE,MAAM2nE,aAAgB,EAAK3nE,MAAMyL,UAAUtM,OAE5Cma,KAAOo6C,MAAMkS,UAAU,EAAK5lE,MAAMyL,UAAU0xD,UAD5C7jD,OAEJ,EAAKtZ,MAAM4pE,UAAa,EAAK5pE,MAAMyL,UAAUtM,OAEzCma,KAAOo6C,MAAMkS,UAAU,EAAK5lE,MAAMyL,UAAU0xD,UAD5C7jD,OAfa,E,qDAmBnB,WACEoY,GAAS74B,KAAKyG,MAAM0I,MAAMC,OAAO2C,OACjCsb,GAASrtB,KAAKyG,MAAM0I,MAAMC,OAAO2C,S,oBAUnC,WACE,IAAQ3N,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,sBAAKC,UAAWD,EAAQ4lC,IAAxB,UACE,qBAAK3lC,UAAWD,EAAQ4sE,eAAxB,SACE,cAAC,GAAD,CACEp+D,UAAW5S,KAAKyG,MAAMmM,UACtBg7D,yBAA0B5tE,KAAK8wE,uBAGnC,cAAC,GAAD,CACE1sE,QAAS,CAAEkmB,MAAOlmB,EAAQ6sE,YAC1B/gE,KAAMlQ,KAAKmH,MAAM0pE,qBACjBxmD,QAASrqB,KAAK4wE,oBAHhB,SAIE,cAAC,GAAD,CAAgBvmD,QAASrqB,KAAK4wE,+B,GA9CfznE,IAAMC,WAgEhBC,eACbvH,sBAxFa,iBAAO,CACpBkoC,IAAK,CACH/f,UAAW,OACX6F,UAAW,SACXvtB,OAAQ,QAEVyuE,eAAgB,CACdxjE,UAAW,OACX8qB,SAAU,IACV6O,aAAc,QAEhB8pC,WAAY,CACV7uE,MAAO,QACPK,QAAS,iBACTM,QAAS,OACTd,SAAU,WACV8D,UACE,iHACFpD,aAAc,OACdS,gBAAiB,WAqEA,CAAEI,WAAW,GAAhC1B,CAAwC4X,aAPlB,SAAAvS,GAAK,MAAK,CAChCklB,KAAMllB,EAAMklB,KACZq/C,WAAYvkE,EAAMukE,WAClB94D,UAAWzL,EAAMyL,aAIuB8G,CAAyBi3D,MC1CpD7uE,yBC1DO,iBAAO,CAC3BgW,UAAW,CACTooB,aAAc,oBACdogB,cAAe,GACfp2C,aAAc,ODsDHpI,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGe8G,EA7ChB,SAAC,GAA4B,IAA1BtV,EAAyB,EAAzBA,QAASwO,EAAgB,EAAhBA,UAC5B,EAA8B5N,mBAAS,IAAvC,mBAAOksE,EAAP,KAAgBC,EAAhB,KAEAvrD,qBAAU,WACRurD,EAAWv+D,EAAUlP,QACpB,CAACkP,IAaJ,OACE,sBAAKvO,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,kCACA,cAAC,GAAD,CACE5R,MAAM,qBACN0K,MAAO,CAAExO,MAAO,KAChBrC,MAAOmxE,EACPttE,YAAY,iBACZE,SAnBmB,SAAA6J,GACvBwjE,EAAWxjE,EAAM9G,OAAO9G,UAoBtB,cAAC,GAAD,CACE2I,OAAQ,CAAEuB,UAAW,IACrB/D,MAAM,SACNZ,QApBe,WACnB,IAAM4N,EAAMoY,GAAiB1Y,GAC7BM,EAAIxP,KAAOwtE,EAEXj+D,GAAUC,aEdRk+D,G,kDACJ,WAAY3qE,GAAQ,uCACZA,G,0CAGR,WACE,IAAQrC,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,qBAAKC,UAAWD,EAAQitE,UAAWzgE,MAAO5Q,KAAKyG,MAAMmK,MAArD,SACG5Q,KAAKyG,MAAM+b,e,GATIrZ,IAAMC,WAoBfC,eAAWvH,sBA7BX,SAAAC,GAAK,MAAK,CACvBsvE,UAAW,CACTzuE,WAAY,OACZM,SAAU,GACVD,MAAO,UACPgH,UAAW,OAwBWnI,CAAmBsvE,KCkB9BtvE,yBCpDO,iBAAO,CAC3BgW,UAAW,CACTooB,aAAc,oBACdogB,cAAe,GACfp2C,aAAc,ODgDHpI,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGe8G,EAxCX,SAAC,GAA4B,IAA1BtV,EAAyB,EAAzBA,QAASwO,EAAgB,EAAhBA,UACjC,EAAoD5N,oBAAS,GAA7D,mBAAOssE,EAAP,KAA2BC,EAA3B,KAEMC,EAA2B,SAAAF,GAC/BC,EAAsBD,IAGxB,OACE,qCACE,sBAAKjtE,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,iCACA,cAAC,GAAD,kHAIA,cAAC,GAAD,CACE5R,MAAO,oBACP1F,KAAM,YACNkI,OAAQ,CAAE/F,aAAc,EAAGsH,UAAW,IACtC3E,QAAS,kBAAMksE,GAAyB,SAI5C,cAAC,GAAD,CACEthE,KAAMohE,EACNjnD,QAAS,kBAAMmnD,GAAyB,IACxCN,QAASt+D,EAAUlP,cEnCd+tE,GAAe,SAAAhrE,GAEOA,EAAzBrE,MAAyBqE,EAAlBlE,OAAkBkE,EAAVxD,MAEvB,OACE,sBAAKb,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACE,sBAAMG,EAAE,8MAA8MG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,UAC/R,sBAAMH,EAAE,mDAAmDG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,UACpI,sBAAMH,EAAE,eAAeG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,cCRzFk9D,GAAa,SAAAjrE,GAESA,EAAzBrE,MAAyBqE,EAAlBlE,OAAkBkE,EAAVxD,MAEvB,OACE,sBAAKb,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACE,sBAAMG,EAAE,8MAA8MG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,UAC/R,sBAAMH,EAAE,+CAA+CG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,UAChI,sBAAMH,EAAE,eAAeG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,cCsBvF1S,yBCjCO,iBAAO,CAC3BQ,MAAO,CACL,YAAa,CACXia,QAAS,EACTna,MAAO,EACPG,OAAQ,EACRN,SAAU,YAEZ,YAAa,CACX0C,OAAQ,UACRzB,SAAU,GACVT,QAAS,WACTC,OAAQ,iCACRC,aAAc,EACdM,MAAO,uBACPb,MAAO,cACPe,WAAY,IACZC,gBAAiB,UACjBZ,OAAQ,mBACR,WAAY,CACVA,OAAQ,wBDaDV,EA3BM,SAAC,GAA2B,IAAzBsC,EAAwB,EAAxBA,QAASN,EAAe,EAAfA,SAK/B,OACE,sBAAKO,UAAWD,EAAQ9B,MAAxB,UACE,uBACE9B,KAAK,OACLiD,GAAG,OACHkuE,OAAO,OACP7tE,SAAUA,EACVwB,QAXe,SAAAqI,GACnBA,EAAM9G,OAAO9G,MAAQ,MAYnB,wBAAO4tD,QAAQ,OAAf,UACE,+BACE,cAAC,GAAD,MAFJ,8BEXC,SAASikB,GAAU7/D,GACxB,OAAOxK,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,WAAoC,CAC9CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QACPK,MAAK,SAAAC,GAAQ,OxXYX,SAAuCA,GAC5C,GAAIA,EAASC,GACX,OAAOD,EAAS+H,WAAalP,IAAWmH,EAAS+pE,OAEnD,MAAM,IAAI9hE,MAAM,oBwXhBI+hE,CAA8BhqE,MCd7C,IC2EQhG,yBD3EO,iBAAO,CAC3BsrD,cAAe,CACblrD,QAAS,OACTyH,eAAgB,gBAChBlH,QAAS,eACTigD,SAAU,OACVtgD,MAAO,KAETgE,KAAM,CACJnD,MAAO,sBACPE,WAAY,IACZd,UAAW,UAEb0vE,QAAS,CACP9uE,MAAO,UACPZ,UAAW,UAEbkyD,MAAO,CACLtxD,MAAO,UACPZ,UAAW,UAEb4I,KAAM,CACJxI,QAAS,GACTP,QAAS,OACTC,cAAe,SACfwH,eAAgB,SAChBC,WAAY,UAEdooE,gBAAiB,CACfzvE,OAAQ,IACRL,QAAS,OACT0H,WAAY,SACZD,eAAgB,aC2CL7H,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGe8G,EA7DX,SAAC,GAAqD,IAAnDtV,EAAkD,EAAlDA,QAAS8L,EAAyC,EAAzCA,KAAMma,EAAmC,EAAnCA,QAASzX,EAA0B,EAA1BA,UAAW83D,EAAe,EAAfA,SAC3D,EAA8B1lE,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KA2BA,OACE,cAAC,GAAD,CAAOt4C,KAAMA,EAAMma,QAND,WAClBm+B,GAAW,GACXn+B,KAIA,SACGk+B,EACC,qBAAKlkD,UAAWD,EAAQ4tE,gBAAxB,SACE,cAAC,EAAD,CAAazoE,WAAYg/C,MAG3B,sBAAKlkD,UAAWD,EAAQ6G,KAAxB,UACE,qBAAK5G,UAAWD,EAAQgC,KAAxB,2DAGA,qBAAK/B,UAAWD,EAAQ2tE,QAAxB,4DAGA,qBAAK1tE,UAAWD,EAAQmwD,MAAxB,wCACA,sBAAKlwD,UAAWD,EAAQgpD,cAAxB,UACE,cAAC,GAAD,CAAc9nD,QAzCH,WFAhB,IAAmByM,EAAOiqC,EEC7BwM,GAAW,IFDWz2C,EEEZa,EAAUnP,GFFSu4C,EEEL0uB,EFDnBnjE,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,WAAoC,CAC9CtK,YAAa,cACbO,QAAS,CAAEk0C,cAAe,UAAYt7C,OAAY,iBAClDqK,KAAM+wC,EACNx0C,OAAQ,SAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,SAAAF,GAAS,IAAD,EACb8H,GAAU,UAAC9H,EAAKnB,aAAN,aAAC,EAAYoB,aENtBX,MAAK,SAAAgmB,GAAQ,IAAD,EAGc,GAFzB26B,GAAW,GACXn+B,IACA,OAAIwD,QAAJ,IAAIA,GAAJ,UAAIA,EAAKzmB,aAAT,aAAI,EAAYoB,SACd6H,GAAU,OAACwd,QAAD,IAACA,GAAD,UAACA,EAAKzmB,aAAN,aAAC,EAAYoB,SAEvBwH,GAAa,+CAGhBnI,MAAK,WACJmL,GAAOJ,EAAUnP,OAElBgF,OAAM,WACL+/C,GAAW,OAyB8B5uB,OAAK,EAAC1zB,MAAM,WACjD,cAAC,GAAD,CAAcZ,QAAS+kB,EAASnkB,MAAM,uBCwDnCpE,yBCnHO,iBAAO,CAC3BgW,UAAW,CACTooB,aAAc,oBACdogB,cAAe,GACfp2C,aAAc,IAEhB9D,KAAM,CACJnD,MAAO,sBACPC,SAAU,GACV,WAAY,CACVyB,OAAQ,UACRnC,OAAQ,aAGZyvE,UAAW,CACT/vE,QAAS,QACTE,MAAO,GACPyiE,UAAW,QACXqN,eAAgB,MAChBvvE,aAAc,MACd+vB,SAAU,SACVnwB,OAAQ,GACRN,SAAU,WACV8a,YAAa,EACbra,OAAQ,gCAEVyvE,kBAAmB,CACjBjwE,QAAS,OACT0H,WAAY,SACZK,UAAW,MDsFAnI,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGe8G,EAhGb,SAAC,GAA4B,IAA1BtV,EAAyB,EAAzBA,QAASwO,EAAgB,EAAhBA,UAC/B,EAAoD5N,oBAAS,GAA7D,mBAAOotE,EAAP,KAA2BC,EAA3B,KACA,EAAgCrtE,mBAAS,MAAzC,mBAAO0lE,EAAP,KAAiB4H,EAAjB,KACA,EAA8BttE,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KA8CA,OACE,qCACE,sBAAKnkD,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,8BACA,cAAC,GAAD,4BACA,sBAAKzT,UAAWD,EAAQgC,KAAxB,UACGwM,EAAUlP,KADb,KAC6B,OAATkP,QAAS,IAATA,OAAA,EAAAA,EAAW2/D,iBAAkB,MAC/C,sBAAMjtE,QAnDU,WACtBkjD,GAAW,GACXopB,GAAUh/D,EAAUnP,IACjBoE,MAAK,SAAAgqE,GACJ,IAAMv+D,EAAMvS,OAAOgiE,IAAIyP,gBAAgBX,GACjCv4D,EAAIurB,SAAS+K,cAAc,KACjCt2B,EAAE1I,MAAM1O,QAAU,OAClBoX,EAAEjG,KAAOC,EACTgG,EAAEm5D,SAAF,UAAgB7/D,EAAUlP,KAA1B,aAA2C,OAATkP,QAAS,IAATA,OAAA,EAAAA,EAAW2/D,iBAAkB,MAA/D,QACA1tC,SAAS55B,KAAK4kC,YAAYv2B,GAC1BA,EAAEo5D,QACF3xE,OAAOgiE,IAAI4P,gBAAgBr/D,GAC3BtD,GAAa,0CACbw4C,GAAW,MAEZ//C,OAAM,WACL4H,GAAW,kEACXm4C,GAAW,OAkCT,SAAiCD,EAAU,cAAC,EAAD,CAAeh/C,WAAYg/C,IAAc,cAAC,GAAD,UAG5E,OAAT31C,QAAS,IAATA,OAAA,EAAAA,EAAWggE,YACV,qCACE,cAAC,GAAD,8BACA,qBAAKvuE,UAAWD,EAAQgC,KAAxB,SACGqa,KAAM,OAAC7N,QAAD,IAACA,OAAD,EAACA,EAAWggE,WAChB7F,UAA+B,GAArBn6D,EAAU0xD,SAAgB7jD,OAASssD,aAC7CptD,OAAO,kCAKN,OAAT/M,QAAS,IAATA,OAAA,EAAAA,EAAWigE,gBACV,qCACE,cAAC,GAAD,2BACA,sBAAKxuE,UAAWD,EAAQ+tE,kBAAxB,UACE,qBAAK9tE,UAAWD,EAAQ6tE,UAAWzoE,KAAc,OAAToJ,QAAS,IAATA,OAAA,EAAAA,EAAWkgE,oBA5E3C,yCA4E+ErpE,IAAI,eAC3F,qBAAKpF,UAAWD,EAAQgC,KAAxB,gBAA+BwM,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAWigE,sBAKhD,cAAC,GAAD,CAAc/uE,SAtDI,SAAA6J,GACtB,IAAMquC,EAAOruC,EAAM9G,OAAOi1C,MAAM,GAEhC,GAAkB,oBAAdE,EAAKx7C,MAA4C,iCAAdw7C,EAAKx7C,KAAyC,CACnF,IAAMkqE,EAAW,IAAIzuB,SACrByuB,EAAS1/D,OAAO,OAAQgxC,GACxBs2B,EAAY5H,GAER/8D,EAAM9G,OAAOi1C,MAAMx1C,QACrB+rE,GAAsB,QAGxBhiE,GAAW,kCA6CX,cAAC,GAAD,CAAgBH,KAAMkiE,EAAoB1H,SAAUA,EAAUrgD,QAAS,kBAzC9C,SAAA+nD,GAC3BC,EAAsBD,GACjBA,GACHE,EAAY,MAsCiES,EAAqB,aElEzFjxE,yBCpCO,iBAAO,CAC3BsrD,cAAe,CACblrD,QAAS,OACTyH,eAAgB,eAChBlH,QAAS,gBDgCEX,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGe8G,EAxBX,SAAC,GAA2C,IAAzCtV,EAAwC,EAAxCA,QAAS8L,EAA+B,EAA/BA,KAAMma,EAAyB,EAAzBA,QAASzX,EAAgB,EAAhBA,UAChD,OACE,eAAC,GAAD,CAAO1C,KAAMA,EAAMma,QAASA,EAASnkB,MAAM,qBAA3C,UACE,eAAC,GAAD,uDAEE,sBAAM0K,MAAO,CAAE3N,MAAO,WAAtB,SAAoC,IAAM2P,EAAUlP,OAFtD,8CAKA,sBAAKW,UAAWD,EAAQgpD,cAAxB,UACE,cAAC,GAAD,CAAc9nD,QAAS,kBtXoDLyM,EsXpDqBa,EAAUnP,QtXqDvD8D,MAAM/F,EAAW,QAAUuQ,EAAO,CAChCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WAEPK,MAAK,SAAAC,GAEJ,OADA/G,OAAOC,SAASqS,KAAO3R,EAChBoG,KAERW,OAAM,SAASrB,GACdiJ,GAAW,yBAXV,IAAmB0B,GsXpDoC7L,MAAM,WAC5D,cAAC,GAAD,CAAcZ,QAAS+kB,EAASuP,OAAK,EAAC1zB,MAAM,qBEsBrCpE,yBC5CO,iBAAO,CAC3BgW,UAAW,CACTooB,aAAc,oBACdogB,cAAe,GACfp2C,aAAc,IAEhB8oE,UAAW,CACT/oE,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oCACRG,UAAW,cACXF,aAAc,GACdM,MAAO,0BACPR,QAAS,WACTL,MAAO,cACPc,SAAU,GACVwC,WAAY,SACZ9C,WAAY,WD2BDd,EAlCQ,SAAC,GAAiB,IAAfsC,EAAc,EAAdA,QACxB,EAAoDY,oBAAS,GAA7D,mBAAOiuE,EAAP,KAA2BC,EAA3B,KAEMC,EAA2B,SAAAF,GAC/BC,EAAsBD,IAGxB,OACE,qCACE,sBAAK5uE,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,yBACA,cAAC,GAAD,sGAIA,qBACEzT,UAAWD,EAAQ4uE,UACnB1tE,QAAS,kBAAM6tE,GAAyB,IAF1C,uBAOF,cAAC,GAAD,CACEjjE,KAAM+iE,EACN5oD,QAAS,kBAAM8oD,GAAyB,YERjCrxE,yBC1BO,iBAAO,KD0BdA,EAfC,SAAC,GAAiB,IAAfsC,EAAc,EAAdA,QACjB,OACE,sBAAKC,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,U,0CEPAs7D,G,4JACJ,WAAU,IAAD,OACP,EAAiDpzE,KAAKyG,MAA9CrC,EAAR,EAAQA,QAASwX,EAAjB,EAAiBA,KAAMpb,EAAvB,EAAuBA,KAAM6C,EAA7B,EAA6BA,MAAOgwE,EAApC,EAAoCA,SACpC,OACE,sBAAKhvE,UAAWD,EAAQkvE,cAAxB,UACE,cAAC,KAAD,CACEjvE,UAAU,WACV2tB,QACE,cAAC,KAAD,CACEluB,SAAU,kBAAM,EAAK2C,MAAM8sE,UAAU/yE,IACrCT,MAAOC,KAAKyG,MAAM1G,MAClB4Y,QAAS3Y,KAAKyG,MAAM1G,MACpBkD,MAAM,YAGVI,MAAOA,EAAM2a,OAAO,GAAGC,cAAgB5a,EAAM6a,MAAM,KAErD,sBAAMtN,MAAO,CAAE3G,WAAY,IAA3B,kBACA,qBAAK2G,MAAO,CAAExO,MAAO,IAAKI,OAAQ,qBAAlC,SACE,cAAC,KAAD,CACEgxE,mBAAmB,EACnBC,qBAAqB,EACrB19C,QAASs9C,EACTxF,aAAW,EACX9tE,MAAOszE,EAAShhE,MACd,SAAAyJ,GAAI,OACFA,EAAK/b,SACJ6b,GAA0B,MAAlBA,EAAK83D,UAAoB93D,EAAK83D,UAAY,YAEvDhwE,KAAK,iBACLI,SAAU,SAAA6J,GAAK,OACb,EAAKlH,MAAM3C,SAAS6J,EAAM5N,MAAO,YAAasD,IAEhD0qE,YAAU,MAGd,sBAAMn9D,MAAO,CAAE3G,WAAY,IAA3B,gBACA,qBAAK2G,MAAO,CAAExO,MAAO,IAAKI,OAAQ,qBAAlC,SACE,cAAC,KAAD,CACEuzB,QAASs9C,EACTxF,aAAW,EACX9tE,MAAOszE,EAAShhE,MACd,SAAAyJ,GAAI,OACFA,EAAK/b,SACJ6b,GAAwB,MAAhBA,EAAK+3D,QAAkB/3D,EAAK+3D,QAAU,YAEnD7vE,SAAU,SAAA6J,GAAK,OACb,EAAKlH,MAAM3C,SAAS6J,EAAM5N,MAAO,UAAWsD,IAE9C0qE,YAAU,a,GAjDW5kE,IAAMC,WAiExBC,eAAWqQ,aAJF,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGO8G,CAAyB05D,KC3EtCQ,GAAe,CAC1B,CAAE7zE,OAAQ,GAAIsD,MAAO,4CACrB,CAAEtD,OAAQ,GAAIsD,MAAO,oCACrB,CAAEtD,OAAQ,GAAIsD,MAAO,iCACrB,CAAEtD,OAAQ,EAAGsD,MAAO,gCACpB,CAAEtD,OAAQ,EAAGsD,MAAO,+CACpB,CAAEtD,OAAQ,EAAGsD,MAAO,+CACpB,CAAEtD,OAAQ,EAAGsD,MAAO,8CACpB,CAAEtD,OAAQ,EAAGsD,MAAO,yCACpB,CAAEtD,OAAQ,EAAGsD,MAAO,gDACpB,CAAEtD,OAAQ,EAAGsD,MAAO,mDACpB,CAAEtD,OAAQ,EAAGsD,MAAO,sCACpB,CAAEtD,OAAQ,EAAGsD,MAAO,0CACpB,CAAEtD,MAAO,EAAGsD,MAAO,sCACnB,CAAEtD,MAAO,EAAGsD,MAAO,mCACnB,CAAEtD,MAAO,EAAGsD,MAAO,0CACnB,CAAEtD,MAAO,EAAGsD,MAAO,yCACnB,CAAEtD,MAAO,EAAGsD,MAAO,mCACnB,CAAEtD,MAAO,EAAGsD,MAAO,gDACnB,CAAEtD,MAAO,EAAGsD,MAAO,mCACnB,CAAEtD,MAAO,EAAGsD,MAAO,uCACnB,CAAEtD,MAAO,EAAGsD,MAAO,gDACnB,CAAEtD,MAAO,EAAGsD,MAAO,qCACnB,CAAEtD,MAAO,GAAIsD,MAAO,iDACpB,CAAEtD,MAAO,GAAIsD,MAAO,sBACpB,CAAEtD,MAAO,GAAIsD,MAAO,8BACpB,CAAEtD,MAAO,GAAIsD,MAAO,oBACpB,CAAEtD,MAAO,GAAIsD,MAAO,6BAETgwE,GAAW,CACtB,CAAEtzE,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,WACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,YACzB,CAAEtD,MAAO,QAASsD,MAAO,aCyCrBwwE,G,4MACJ1sE,MAAQ,CACN+I,MAAM,EACNgD,IAAK,EAAKzM,MAAMmM,UAChB7S,OAAO,EACP+zE,YAAa,EAAKrtE,MAAMmM,UAAU0xD,SAClCyP,gBAAiB,CACfC,SAAU,CACRN,UAAW,SAEbO,SAAU,GACVC,SAAS,GAEXC,eAAe,EACfC,eAAe,EACf7qE,YAAY,G,EAEdklB,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAExBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EA0GxBmkE,eAAiB,SAAAxvD,GACf,IAAIyvD,EAAWv7D,OAAOsC,OAAO,GAAIwJ,GAWjC,OAVY,MAARA,IACFyvD,EAAW,IAEa,MAAtBA,EAASZ,YACXY,EAASZ,UAAY,SAEC,MAApBY,EAASX,UACXW,EAASX,QAAU,SAGdW,G,kDAxFT,SAAav0E,EAAO2D,GAClB,IAAMwP,EAAMhI,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKmH,MAAM+L,MACjDA,EAAIxP,GAAQ3D,EACZC,KAAK2G,SAAS,CACZuM,U,uBAIJ,SAAUxP,IAEI,kBAATA,GAA4B1D,KAAKmH,MAAMitE,eAC9B,kBAAT1wE,GAA4B1D,KAAKmH,MAAMgtE,gBACtCn0E,KAAKmH,MAAMitE,gBAAkBp0E,KAAKmH,MAAMgtE,gBAE1Cn0E,KAAK2G,SAAL,gBACGjD,GAAQ1D,KAAKmH,MAAMzD,O,4BAK1B,SAAe3D,GACb,IAAMmT,EAAMhI,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAMmM,YACjDM,EAAIoxD,SAAWvkE,EACfkT,GAAUC,K,wBAGZ,SAAWnT,EAAOS,EAAMob,GACtB,IAAMm4D,EAAkB7oE,KAAK6B,MAC3B7B,KAAKC,UAAUnL,KAAKmH,MAAM4sE,kBAEC,MAAzBA,EAAgBn4D,KAClBm4D,EAAgBn4D,GAAQ,IAE1Bm4D,EAAgBn4D,GAAMpb,GAAQT,EAC9BC,KAAK2G,SAAS,CACZotE,sB,uBAIJ,WACE,I/RxM0BtwE,EAAI8wE,E+RwMxBR,EAAkB/zE,KAAKmH,MAAM4sE,gBACnC,GAAK/zE,KAAKmH,MAAMgtE,eAKd,GAFAJ,EAAgBC,SAAWh0E,KAAKq0E,eAAeN,EAAgBC,UAG7DD,EAAgBC,SAASN,UAAYK,EAAgBC,SAASL,QAK9D,YAHAtjE,GACE,2EARJ0jE,EAAgBC,SAAW,KAa7B,GAAKh0E,KAAKmH,MAAMitE,eAKd,GAFAL,EAAgBE,SAAWj0E,KAAKq0E,eAAeN,EAAgBE,UAG7DF,EAAgBE,SAASP,UAAYK,EAAgBE,SAASN,QAK9D,YAHAtjE,GACE,2EARJ0jE,EAAgBE,SAAW,KAa7BF,EAAgBG,QAAUl0E,KAAKmH,MAAMpH,M/RrOX0D,E+RsOZzD,KAAKyG,MAAMmM,UAAUnP,G/RtOL8wE,E+RsOSR,E/RrOzCxsE,MAAM/F,EAAW,QAAUiC,EAAK,gBAAiB,CAC/CgE,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUopE,KAEpB1sE,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,SAASrB,GACdiJ,GAAW,gD+R8Nb,IAAM6C,EAAMhI,KAAK6B,MAAM7B,KAAKC,UAAUnL,KAAKyG,MAAMmM,YACjDM,EAAI6gE,gBAAkBA,EACtB9gE,GAAUC,K,oBAkBZ,WAAU,IAAD,OACC9O,EAAYpE,KAAKyG,MAAjBrC,QACFowE,EACJ,cAAC,KAAD,CACEpwE,QAAS,CACPsmB,KAAMtmB,EAAQqwE,UACd97D,QAASvU,EAAQuU,WAIvB,OACE,8BACG3Y,KAAKmH,MAAMoC,WACV,qBACEqH,MAAO,CACLrO,OAAQ,QACRL,QAAS,OACTyH,eAAgB,SAChBC,WAAY,UALhB,SAOE,cAAC,EAAD,CAAaL,WAAYvJ,KAAKmH,MAAMoC,eAGtC,sBAAKlF,UAAWD,EAAQ0T,UAAxB,UACE,sBACElH,MAAO,CACLpD,UAAW,MACX5I,SAAU,KAHd,UAKE,sBAAKP,UAAWD,EAAQ2zC,MAAxB,UACE,cAAC,GAAD,yBACA,mBAAG1zC,UAAWD,EAAQitE,UAAtB,yEAGA,mBACEzgE,MAAO,CAAE3N,MAAO,UAAWgH,UAAW,IACtC5F,UAAWD,EAAQitE,UAFrB,0CAKA,qBAAKzgE,MAAO,CAAExO,MAAO,KAArB,SACE,cAAC,KAAD,CACEoxE,mBAAmB,EACnBC,qBAAqB,EACrB19C,QAAS69C,GACT/F,aAAW,EACX9tE,MAAO6zE,GAAavhE,MAClB,SAAAqiE,GAAG,OAAIA,EAAI30E,QAAU,EAAK0G,MAAMmM,UAAU0xD,YAE5C5gE,KAAK,iBACLI,SAAU,SAAA6J,GAAK,OAAI,EAAKgnE,eAAehnE,EAAM5N,QAC7CguE,YAAU,SAIhB,mBACEn9D,MAAO,CAAE3N,MAAO,UAAWgH,UAAW,GAAIC,aAAc,GACxD7F,UAAWD,EAAQitE,UAFrB,oCAKA,8BACE,cAAC,KAAD,CACEhtE,UAAS,UAAKD,EAAQsmB,KAAb,cACTsH,QACE,eAAC,KAAD,CACE3tB,UAAWD,EAAQ8rE,MACnBnwE,MAAOC,KAAKmH,MAAMpH,MAClB4Y,QAAS3Y,KAAKmH,MAAMpH,MACpB+D,SAAU,SAAAS,GACR,IAAMwS,EAA4B,SAAnBxS,EAAEsC,OAAO9G,MACxB,EAAK4G,SAAS,CACZ5G,MAAOgX,EACPo9D,eAAgB,EAAK1tE,MAAMmM,UAAUmhE,gBAClCG,WAEG,EAAKztE,MAAMmM,UAAUmhE,gBAAgBC,YAXjD,UAcE,cAAC,KAAD,CACEj0E,OAAO,EACPiyB,QAASwiD,EACTnxE,MAAM,oBAER,cAAC,KAAD,CACEtD,OAAK,EACLiyB,QAASwiD,EACTnxE,MAAM,yCAMfrD,KAAKmH,MAAMpH,OAASC,KAAKmH,MAAM4sE,iBAC9B,gCACE,cAAC,GAAD,CACEV,SAAUA,GACVjvE,QAASA,EACTwX,KAAM5b,KAAKmH,MAAM4sE,gBAAgBC,SACjCT,UAAW,SAAAxzE,GAAK,OAAI,EAAKwzE,UAAUxzE,IACnCA,MAAOC,KAAKmH,MAAMgtE,cAClB3zE,KAAK,gBACL6C,MAAM,WACNS,SAAU,SAAC/D,EAAOS,EAAMob,GAAd,OACR,EAAKg5D,WAAW70E,EAAOS,EAAMob,MAGjC,cAAC,GAAD,CACEy3D,SAAUA,GACVjvE,QAASA,EACTwX,KAAM5b,KAAKmH,MAAM4sE,gBAAgBE,SACjCV,UAAW,SAAAxzE,GAAK,OAAI,EAAKwzE,UAAUxzE,IACnCA,MAAOC,KAAKmH,MAAMitE,cAClB5zE,KAAK,gBACL6C,MAAM,WACNS,SAAU,SAAC/D,EAAOS,EAAMob,GAAd,OACR,EAAKg5D,WAAW70E,EAAOS,EAAMob,SAKrC,cAAC,GAAD,CACEtW,QAAS,kBAAM,EAAKuvE,aACpB3uE,MAAM,OACNwC,OAAQ,CAAEuB,UAAW,QAGzB,sBAAK2G,MAAO,CAAEhM,SAAU,OAAxB,UACE,mBAAGP,UAAWD,EAAQitE,UAAWzgE,MAAO,CAAE1G,aAAc,GAAxD,sDAGA,mBAAG7F,UAAWD,EAAQ0wE,cAAelkE,MAAO,CAAEhM,SAAU,OAAxD,2IAMA,qBACEgM,MAAO,CACLhM,SAAU,IACVC,UAAW,KAEb2E,IAAI,oCACJC,IAAI,6B,uCAnQlB,SAAgChD,EAAOU,GACrC,OAAIA,EAAMoC,YAAc9C,EAAMmM,UAAUmhE,gBAC/B,CACLA,gBAAiB7oE,KAAK6B,MACpB7B,KAAKC,UAAU1E,EAAMmM,UAAUmhE,kBAEjCI,gBAAiB1tE,EAAMmM,UAAUmhE,gBAAgBC,SACjDI,gBAAiB3tE,EAAMmM,UAAUmhE,gBAAgBE,SACjDl0E,MAAO0G,EAAMmM,UAAUmhE,gBAAgBG,QACvC9+C,eAAgB3uB,EAAMmM,UAAU0xD,SAChC/6D,YAAY,IAKdpC,EAAMoC,YACLsP,GAAcpS,EAAMmM,YACpBnM,EAAMmM,UAAUmhE,gBAOZ,KALE,CACLxqE,YAAY,EACZ6rB,eAAgB3uB,EAAMmM,UAAU0xD,c,GA7CpBn7D,IAAMC,WA6SXC,eACbvH,MA9Ya,SAAAC,GAAK,MAAK,CACvBsvE,UAAW,CACTzuE,WAAY,OACZM,SAAU,GACVD,MAAO,WAET6xE,cAAe,CACblyE,WAAY,OACZM,SAAU,GACVD,MAAO,WAET80C,MAAO,CACL7X,aAAc,oBACdogB,cAAe,IAEjBh+C,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBk2B,YAAa,CACX52B,OAAQ,oBACRC,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXzC,MAAO,SAETmmC,IAAK,CACHt+B,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oBACRG,UAAW,aACXF,aAAc,GACdM,MAAO,UACPR,QAAS,WACTL,MAAO,eAET4wE,UAAW,CACT/oE,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oCACRG,UAAW,aACXF,aAAc,GACdM,MAAO,0BACPR,QAAS,WACTL,MAAO,eAET2yE,MAAO,CACLtyE,QAAS,aACTD,OAAQ,WACRuD,UAAW,uCACXpD,aAAc,GACdsnB,UAAW,OACX7mB,gBAAiB,QACjBhB,MAAO,KAETkxE,cAAe,CACbpxE,QAAS,OACT0H,WAAY,UAEdkO,UAAW,CACT5V,QAAS,OACTyH,eAAgB,iBAElB8qE,UAAW,CACTryD,WAAY,GACZnf,MAAOlB,EAAM6D,QAAQC,QAAQmvE,UAC7B9xE,SAAU,GACVN,WAAY,OACZ,YAAa,CACXK,MAAOlB,EAAM6D,QAAQC,QAAQC,OAGjC6S,QAAS,GACT,UAAW,CACT,mBAAoB,CAClBnW,OAAQ,wBAEV,kCAAmC,CACjC4f,WAAY,GAEd,kBAAmB,CACjBlf,SAAU,GACVN,WAAY,YAmTG,CAAEY,WAAW,GAAhC1B,CAAwC4X,aALlB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIuB8G,CAAyBm6D,MCpV7DoB,G,kDACJ,WAAYxuE,GAAQ,IAAD,8BACjB,cAAMA,IAORyuE,iBAAmB,SAAAl2B,GACjB,IAEE,OADA,IAAI+jB,IAAI/jB,IACD,EACP,MAAO2P,GACP,OAAO,IAbQ,EAiBnBwmB,OAAS,SAAAp1E,GACP,EAAK4G,SAAS,CACZuJ,KAAMnQ,KAnBS,EAuBnBq1E,WAAa,WACX,IAAM/e,EAAW,EAAKlvD,MAAMkvD,SAE5B,GADAA,EAASxrB,OAAS,EAAKpkC,MAAM4vD,SAASxrB,OAChB,YAAlBwrB,EAAS71D,MAAuB,EAAK00E,iBAAiB7e,EAAS/iD,KAI5D,CAML,OALI,EAAKnM,MAAMkuE,YACb,EAAK1uE,SAAS,CACZ0uE,YAAY,IAGRhf,EAAS71D,MACjB,IAAK,iBACI61D,EAASzuC,eACTyuC,EAASif,cAChB,MAEF,IAAK,kBACIjf,EAAS/iD,WACT+iD,EAASif,cAIlB,EAAK7uE,MAAM4jB,UACX,EAAK5jB,MAAMgiC,SAAS4tB,QAtBpB,EAAK1vD,SAAS,CACZ0uE,YAAY,KA5BC,EA6DnB3nE,aAAe,SAAChK,EAAM3D,GACpB,IAAMorB,EAAOjgB,KAAK6B,MAAM7B,KAAKC,UAAU,EAAKhE,MAAMkvD,WAClDlrC,EAAKznB,GAAQ3D,EACb,EAAK4G,SAAS,CACZ0vD,SAAUlrC,KA/DZ,EAAKhkB,MAAQ,CACX+I,MAAM,EACNmmD,SAAU,MAJK,E,0CAqEnB,WAAU,IAAD,OACP,EAA+Br2D,KAAKyG,MAA5BrC,EAAR,EAAQA,QAAS8L,EAAjB,EAAiBA,KAAMmpB,EAAvB,EAAuBA,IACvB,EAAiCr5B,KAAKmH,MAA9BkvD,EAAR,EAAQA,SAAUgf,EAAlB,EAAkBA,WAClB,OACE,cAAC,KAAD,CACEnlE,KAAMA,EACNma,QAAS,WACP,EAAK5jB,MAAM4jB,WAEbkE,SAAUvuB,KAAKyG,MAAM8nB,SACrB+Z,gBAAgB,WAChBe,aAAc,CACZC,SAAU,MACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UAEd3X,WAAY,CACVhhB,MAAO,CACL7K,UAAW,2CACXpD,aAAc,GACd+vB,SAAU,YAnBhB,SAsBE,sBAAKruB,UAAWD,EAAQqlC,QAAxB,UACE,qBAAK74B,MAAO,CAAEnO,QAAS,kBAAvB,SACE,cAAC,GAAD,CACEy2B,YAAa,CAAE92B,MAAO,KACtB+2B,WAAY,CAAEl2B,MAAO,UACnB0mC,YAAatQ,GAAO,gBACpB9H,UAAW8H,GAAO,OAEpBr1B,aAAchE,KAAKyG,MAAM4vD,SAASnwD,MAClCtC,YAAY,wBACZE,SAAU,SAAA6J,GACR,EAAKD,aAAa,QAASC,EAAM9G,OAAO9G,QAE1Cw5B,eAAgB,SAAAh1B,GACK,KAAfA,EAAE69B,UACJ,EAAKgzC,cAGTh8C,UAAW,OAGf,8BACE,gCACE,sBAAK/0B,UAAWD,EAAQylC,KAAxB,UACE,qBACExlC,UACoB,aAAlBgyD,EAAS71D,KACL4D,EAAQ2iD,UACR3iD,EAAQ4lC,IAEd1kC,QAAS,kBAAM,EAAKoI,aAAa,OAAQ,aAN3C,sBASA,qBACErJ,UACoB,YAAlBgyD,EAAS71D,KACL4D,EAAQ2iD,UACR3iD,EAAQ4lC,IAEd1kC,QAAS,kBAAM,EAAKoI,aAAa,OAAQ,YAN3C,oBAUiB,aAAlB2oD,EAAS71D,MACR,qBAAK6D,UAAWD,EAAQmxE,aAAxB,SACE,cAAC,GAAD,CAAYx1E,MAAOs2D,EAASzuC,QAC1B9jB,SAAU,gBAAGT,EAAH,EAAGA,MAAH,OAAe,EAAKqK,aAAa,UAAWrK,QAGzC,YAAlBgzD,EAAS71D,MACR,sBAAK6D,UAAWD,EAAQmxE,aAAxB,UACE,cAAC,GAAD,CACEr8C,YACGm8C,EAEG,CACAjzE,MAAO,IACPM,OAAQ,qBAHR,CAAEN,MAAO,KAMf+2B,WACGk8C,EAAoC,CAAEpyE,MAAO,WAAhC,CAAEA,MAAO,WAEzBe,aAAcqyD,EAAS/iD,IACvB1P,YAAY,YACZE,SAAU,SAAA6J,GAAK,OACb,EAAKD,aAAa,MAAOC,EAAM9G,OAAO9G,QAExCw5B,eAAgB,SAAA5rB,GAAK,OACnB,EAAKD,aAAa,MAAOC,EAAM9G,OAAO9G,QAExCq5B,UAAW,KAEZi8C,GACC,mBAAGzkE,MAAO,CAAE3N,MAAO,UAAWC,SAAU,IAAxC,4BAIF,cAAC,KAAD,CACE8uB,QACE,cAAC,KAAD,CACErZ,QAAS09C,EAASmf,0BAClB1xE,SAAU,SAAA/D,GACR,EAAK2N,aACH,6BACC2oD,EAASmf,4BAGdz1E,MAAM,sBACNkD,MAAM,YAGVI,MAAM,yBAIZ,qBAAKuN,MAAO,CAAEnO,QAAS,IAAvB,SACE,cAAC,GAAD,CAAcm3B,OAAK,EAACt0B,QAAStF,KAAKo1E,WAAYlvE,MAAM,wB,uCA3IlE,SAAgCO,EAAOU,GACrC,GAAuB,OAAnBA,EAAMkvD,UAAwC,OAAnB5vD,EAAM4vD,SACnC,MAAO,CACLA,SAAU5vD,EAAM4vD,c,GAzDIltD,IAAMC,WAmNnBtH,yBAnRA,SAAAC,GAAK,MAAK,CACvB0zE,UAAW,CACThzE,QAAS,GACTP,QAAS,OACTyH,eAAgB,gBAChBy2B,UAAW,qBAEbl6B,MAAO,CACLtD,WAAY,OACZM,SAAU,GACVD,MAAO,WAETukB,YAAa,CACX5kB,WAAY,OACZM,SAAU,GACVD,MAAO,UACPiH,aAAc,EACdD,UAAW,GAEbyrE,QAAS,CACPxyE,SAAU,GACVN,WAAY,OACZK,MAAO,UACPiH,aAAc,EACdD,UAAW,GAEb+/B,IAAK,CACHx8B,UAAW,MACXtK,SAAU,GACVN,WAAY,OACZK,MAAO,UACPZ,UAAW,SACXI,QAAS,SACTkC,OAAQ,WAEVoiD,UAAW,CACTv5C,UAAW,MACXtK,SAAU,GACVN,WAAY,OACZK,MAAO,UACPZ,UAAW,SACXI,QAAS,SACTkC,OAAQ,WAEVklC,KAAM,CACJ3nC,QAAS,OACTyH,eAAgB,eAChBu2B,aAAc,qBAEhBuJ,QAAS,CACPrnC,MAAO,KAETmzE,aAAc,CACZ9yE,QAAS,OACTy9B,aAAc,sBAEhBmxC,UAAW,CACTzuE,WAAY,OACZM,SAAU,GACVD,MAAO,UACPE,WAAY,QAuNkB,CAAEK,WAAW,GAAhC1B,CACb4X,aALsB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIjB8G,CAAyBu7D,KCpMrBU,G,kDACJ,WAAYlvE,GAAQ,IAAD,8BACjB,cAAMA,IA0BR0uE,OAAS,SAAAp1E,GACP,EAAK4G,SAAS,CACZuJ,KAAMnQ,KA3BR,EAAKoH,MAAQ,CACXkyB,IAAK,KACLkD,gBAAiB,KACjBrsB,MAAM,EACNmmD,SAAU,MANK,E,qDAUnB,WAAqB,IAAD,OAClBj6B,GAAgBp8B,KAAKyG,MAAMmM,UAAUnP,IAAIoE,MAAK,YAAwB,IAAtB00B,EAAqB,EAArBA,gBAC9C,EAAK51B,SAAS,CAAC41B,yB,gCAInB,SAAmBsyB,GACjB,GAAIA,EAAUxxB,uBAAuBt9B,QAAUC,KAAKyG,MAAM42B,uBAAuBt9B,OAA2B,MAAlBC,KAAKmH,MAAMkyB,IAAa,CAChH,IAAMA,EAAMr5B,KAAKy9B,MAAMz9B,KAAKyG,MAAM42B,uBAAwBr9B,KAAKmH,MAAMo1B,iBACrEv8B,KAAK2G,SAAS,CAAC0yB,W,mBAInB,SAAMu8C,EAAkBv5C,GACtB,OAAuB,MAAhBA,GAAwBA,EAAahqB,MAAK,SAAAe,GAAQ,OAAIA,EAAS+gB,YAAcyhD,EAAiB71E,SAAO09B,Q,sBAyB9G,SAAS3kB,GACP,IACIhZ,EADA0vB,EAAO,EAEX,IAAK1vB,KAAOgZ,EACNA,EAAI+8D,eAAe/1E,IAAM0vB,IAE/B,OAAOA,I,oBAGT,WAAU,IAAD,OACP,EAAqCxvB,KAAKyG,MAAlCrC,EAAR,EAAQA,QAAS+U,EAAjB,EAAiBA,MAAOk9C,EAAxB,EAAwBA,SAChBnmD,EAASlQ,KAAKmH,MAAd+I,KACR,OACE,sBAAK7L,UAAU,OAAf,UACE,sBACEA,UAAWD,EAAQqxE,UACnBrvD,IAAK,SAAA6iB,GACH,EAAK6sC,QAAU7sC,GAEjB3jC,QAAS,WACP,EAAK6vE,QAAO,IANhB,UAQE,qBAAK9wE,UAAWrE,KAAKmH,MAAMkyB,IAAMj1B,EAAQ2xE,SAAW3xE,EAAQ8B,MAA5D,SAAoEmwD,EAASnwD,QAC1D,aAAlBmwD,EAAS71D,MACR,mBAAG6D,UAAWD,EAAQojB,YAAtB,SAAoC6uC,EAASzuC,UAE5B,YAAlByuC,EAAS71D,MACR,mBAAG6D,UAAWD,EAAQojB,YAAtB,SAAoC6uC,EAAS/iD,MAE/C,qBAAKjP,UAAU,aAAf,SACE,cAAC,KAAD,CACEA,UAAU,YACVuM,MAAO,CACLjL,WAAY,QACZjD,OAAQ,oBACRqD,UAAW,sBACX3D,MAAO,GACPG,OAAQ,IAEV,aAAW,SACX+C,QAAS,SAAAf,GACP,EAAKkC,MAAMuvE,WAAW78D,GACtB5U,EAAE0xE,mBAZN,SAcE,cAAC,GAAD,CAAW7zE,MAAM,OAAOG,OAAO,OAAOU,MAAM,mBAIlD,cAAC,GAAD,CACEiN,KAAMA,EACNma,QAAS,WACP,EAAK8qD,QAAO,IAEd9e,SAAUA,EACV9nC,SAAUvuB,KAAK81E,QACfpoE,aAAc,SAAChK,EAAM3D,GAAP,OAAiB,EAAK2N,aAAahK,EAAM3D,IACvD0oC,SAAU,SAAA4tB,GAAQ,OAAI,EAAK5vD,MAAMgiC,SAAS4tB,IAC1Ch9B,IAAOr5B,KAAKmH,MAAMkyB,Y,uCAzE1B,SAAgC5yB,EAAOU,GACrC,OAAuB,OAAnBA,EAAMkvD,UAAwC,OAAnB5vD,EAAM4vD,SAC5B,CACLA,SAAU5vD,EAAM4vD,SAChBnmD,KAAMzJ,EAAMyvE,cAAgBzvE,EAAM0S,OAGlC1S,EAAMyvE,cAAgBzvE,EAAM0S,OAAUhS,EAAM+I,KAMzC,MALLzJ,EAAM0vE,aACC,CACLjmE,KAAMzJ,EAAMyvE,cAAgBzvE,EAAM0S,Y,GA5CnBhQ,IAAMC,WA2HdtH,yBAhNA,SAAAC,GAAK,MAAK,CACvB0zE,UAAW,CACThzE,QAAS,GACTP,QAAS,OACTyH,eAAgB,gBAChBy2B,UAAW,oBACXz7B,OAAQ,UACR1C,SAAU,YAEZiE,MAAO,CACLtD,WAAY,OACZM,SAAU,GACVD,MAAO,UACP8Z,YAAa,GAEfg5D,SAAU,CACRnzE,WAAY,OACZM,SAAU,GACVD,MAAO,UACP8Z,YAAa,EACb4sB,YAAa,gBACbpY,UAAW,OAEbmkD,QAAS,CACPxyE,SAAU,GACVN,WAAY,OACZK,MAAO,UACPiH,aAAc,EACdD,UAAW,GAEb+/B,IAAK,CACH5nC,MAAO,IACPc,SAAU,GACVN,WAAY,OACZK,MAAO,UACPZ,UAAW,SACXI,QAAS,UAEXonC,KAAM,CACJ3nC,QAAS,QAEXunC,QAAS,CACPrnC,MAAO,KAETmzE,aAAc,CACZ9yE,QAAS,aAEX4uE,UAAW,CACTzuE,WAAY,OACZM,SAAU,GACVD,MAAO,UACPE,WAAY,KAEdqkB,YAAa,CACX5kB,WAAY,OACZM,SAAU,GACVD,MAAO,UACPT,OAAQ,UACRkwB,SAAU,UAEZ,UAAW,CACT,YAAa,CACXzvB,MAAO,WAET,qBAAsB,CACpBuR,OAAQ,WAEV,kBAAmB,CACjBvR,MAAO,WAET,2BAA4B,CAC1BuR,OAAQ,WAEV,oBAAqB,CACnBtS,QAAS,QAEX,0BAA2B,CACzBA,QAAS,QACTD,SAAU,WACVsB,OAAQ,GACRmB,IAAK,QAgIuB,CAAElB,WAAW,GAAhC1B,CACb4X,aALsB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIjB8G,CAAyBi8D,KCxKrBS,G,kDACJ,WAAY3vE,GAAQ,IAAD,8BACjB,cAAMA,IAMR4vE,WAAa,SAAClrD,EAAMhS,GAClB,EAAK1S,MAAM6vE,WAAWnrD,EAAMhS,IARX,EA6BnBg9D,WAAa,WACX,EAAKxvE,SAAS,CACZuJ,KAAM,QA7BR,EAAK/I,MAAQ,CACX+I,KAAM,MAHS,E,2CAWnB,WAAW,IAAD,OACRlQ,KAAKyG,MAAM8vE,YAAY,CACrBjB,cAAe,GACfE,2BAA2B,EAC3B5tD,QAAS,kBACT1hB,MAAO,YACP1F,KAAM,WACN8S,IAAK,KACLkjE,mBAAoB,OAGtBx2B,YAAW,WACT,EAAKr5C,SAAS,CACZuJ,KAAM,EAAKzJ,MAAM0kB,KAAKmqD,cAAchvE,OAAS,MAE9C,O,oBASL,WAAU,IAAD,OACP,EAA0BtG,KAAKyG,MAAvBrC,EAAR,EAAQA,QAAS+mB,EAAjB,EAAiBA,KACTjb,EAASlQ,KAAKmH,MAAd+I,KACR,OACE,qBAAK7L,UAAmB,MAAR8mB,EAAe/mB,EAAQqyE,UAAYryE,EAAQsyE,MAA3D,SACE,8BACW,MAARvrD,EACC,wBAEA,sBAAKva,MAAO,CAAE3O,SAAU,YAAxB,UACE,qBAAKoC,UAAWD,EAAQgwD,QAAxB,SAAkC,SACjCjpC,EAAKmqD,eACJnqD,EAAKmqD,cAAcp7D,KAAI,SAACy8D,EAAcx9D,GAAf,OACrB,cAAC,GAAD,CAEEk9C,SAAUsgB,EACVluC,SAAU,SAAAtd,GACR,EAAKkrD,WAAWlrD,EAAMhS,IAExBg9D,WAAY,EAAKA,WACjBh9D,MAAOA,EACP68D,WAAY,SAAA78D,GAAK,OAAI,EAAK1S,MAAMuvE,WAAW78D,IAC3C+8D,YAAahmE,EACbmtB,uBAA0B,EAAK52B,MAAM42B,wBAThClkB,WAYa0c,IAAvB1K,EAAKmqD,eACJ,qBACEjxE,UAAS,UAAKD,EAAQwyE,WAAb,YACTtxE,QAAS,kBAAM,EAAKk8C,WAFtB,wD,GA/DIr4C,IAAMC,WAqFXC,eACbvH,sBAhIa,SAAAC,GAAK,MAAK,CACvB20E,MAAO,CACL/wE,WAAY,UACZI,UAAW,4CACXpD,aAAc,GACdP,MAAO,IACPG,OAAQ,eAEVk0E,UAAW,CACTr0E,MAAO,KAETgyD,QAAS,CACPhyD,MAAO,OACPK,QAAS,SACTJ,UAAW,SACXc,WAAY,OACZuC,WAAY,SACZxC,SAAU,GACVD,MAAO,UACPL,WAAY,QAEdg0E,WAAY,CACVn0E,QAAS,GACTG,WAAY,OACZM,SAAU,GACVD,MAAO,UACP0B,OAAQ,UACRy7B,UAAW,sBAEb9Y,KAAM,CACJrlB,SAAU,WACVyC,IAAK,GACLoF,KAAM,GACNnF,OAAQ,WAEV,UAAW,CACT,iBAAkB,CAChB1B,MAAO,eA2FQ,CAAEO,WAAW,GAAhC1B,CAAwC4X,aALlB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIuB8G,CAAyB08D,MCjG7DS,G,kDACJ,WAAYpwE,GAAQ,IAAD,8BACjB,cAAMA,IAyBRqwE,qBAAuB,SAAAC,GACrB,IAAM7jE,EAAMhI,KAAK6B,MAAM7B,KAAKC,UAAU,EAAK1E,MAAMmM,YACjDM,EAAI6jE,eAAiBA,EACrB,EAAKpwE,SACH,CACEowE,eAAgBA,IAElB,WACEpkE,GAAaO,OAlCA,EAuCnB22C,mBAAqB,SAAA93C,GACnBqqB,GAAgB,EAAK31B,MAAMmM,UAAUnP,IAAIoE,MAAK,SAAAw0B,GAC5C,GAAIA,EAAaC,gBAAiB,CAChC,IAAQA,EAAqCD,EAArCC,gBAAiBC,EAAoBF,EAApBE,gBACnBnH,EAAiB,CACrB/xB,MAAOi5B,EAAgBiB,SACvBx9B,MAAOu8B,EAAgBnI,WAGnBuJ,EAAkBnB,EAAgBriB,KAAI,SAAA9G,GAC1C,MAAO,CACL/P,MAAO+P,EAASmqB,SAChBx9B,MAAOqT,EAAS+gB,cAIpB,EAAKxtB,SAAS,CACZ+2B,gBAAiBA,EACjBL,uBAAwBjI,SAzDb,EAiFnB4hD,2BAA6B,SAAAj3E,GAC3B,EAAK4G,SAAS,CACZowE,eAAgBh3E,KAnFD,EAuFnBu2E,WAAa,SAACnrD,EAAMhS,GAClB,IAAMsZ,EAAOvnB,KAAK6B,MAAM7B,KAAKC,UAAU,EAAKhE,MAAM4vE,iBAClDtkD,EAAK6iD,cAAcn8D,GAASgS,EAC5B,EAAK6rD,2BAA2BvkD,IA1Ff,EA6FnBujD,WAAa,SAAA78D,GACX,IAAMsZ,EAAOvnB,KAAK6B,MAAM7B,KAAKC,UAAU,EAAKhE,MAAM4vE,iBAClDtkD,EAAK6iD,cAAct6C,OAAO7hB,EAAO,GACjC,EAAK69D,2BAA2BvkD,IAhGf,EAmGnBwkD,YAAc,SAAA9rD,GACZ,IAAMsH,EAAOvnB,KAAK6B,MAAM7B,KAAKC,UAAU,EAAKhE,MAAM4vE,iBAClDtkD,EAAK6iD,cAAchrE,KAAK6gB,GACxB,EAAK6rD,2BAA2BvkD,IAtGf,EAyGnBykD,uBAAyB,WACvB,IAAQH,EAAmB,EAAK5vE,MAAxB4vE,eACRA,EAAeI,OAAS,UlYoCrB,SAAiCplE,EAAOqB,EAAU2jE,GACvDA,EAAeI,OAAS,UACxB5vE,MAAM/F,EAAW,QAAUuQ,EAAQ,4BAA8BqB,EAAU,CACzE3L,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAU4rE,KAEpBlvE,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJyH,GAAa,gCACb2C,GAAapK,MAEdE,OAAM,SAASrB,GACdiJ,GAAW,yBkYjDb+mE,CACE,EAAK3wE,MAAM0I,MAAMC,OAAO2C,MACxB,EAAK5K,MAAMk2B,uBAAuBt9B,MAClCg3E,IA/Ge,EAmHnBhsB,uBAAyB,SAAAC,GACvB,EAAKrkD,SACH,CACE02B,uBAAwB2tB,IAE1B,WACE73C,GACE,EAAK1M,MAAMmM,UAAUnP,GACrB,EAAK0D,MAAMk2B,uBAAuBt9B,MAClC,EAAK+2E,0BA1HX,EAAK3vE,MAAQ,CACX4vE,eAAgB,KAChB15C,uBAAwB,CACtBt9B,MAAO,KACPsD,MAAO,YANM,E,qDAWnB,WAAqB,IAAD,OAEc,IAA5BrD,KAAKyG,MAAM6mB,MAAMhnB,QACnB+mB,GAASrtB,KAAKyG,MAAM0I,MAAMC,OAAO2C,OAEnCoB,GACEnT,KAAKyG,MAAMmM,UAAUnP,GACrBzD,KAAKmH,MAAMk2B,uBAAuBt9B,OAClC,SAAAg3E,GACE,EAAKD,qBAAqBC,GAC1B,EAAKltB,mBAAmB,EAAKpjD,MAAM0I,MAAMC,OAAO2C,Y,oBA6GtD,WAAU,IAAD,OACC3N,EAAYpE,KAAKyG,MAAjBrC,QACA2yE,EAAmB/2E,KAAKmH,MAAxB4vE,eACR,OACE,8BACE,gCACE,sBAAKnmE,MAAO,CAAEhM,SAAU,KAAxB,UACE,cAAC,GAAD,wBACA,mBAAGP,UAAWD,EAAQitE,UAAtB,uIAKF,gCACqB,MAAlB0F,EACC,qBAAK1yE,UAAWD,EAAQizE,gBAAxB,SACE,cAAC,GAAD,CACElsD,KAAM4rD,EACNL,MAAO,EACPH,YAAa,SAAAprD,GAAI,OAAI,EAAK8rD,YAAY9rD,IACtCmrD,WAAY,SAACnrD,EAAMhS,GAAP,OAAiB,EAAKm9D,WAAWnrD,EAAMhS,IACnD68D,WAAY,SAAA78D,GAAK,OAAI,EAAK68D,WAAW78D,IACrCkkB,uBAA0Br9B,KAAKmH,MAAMk2B,2BAIzC,qBACEzsB,MAAO,CACLgoC,UAAW,IACX12C,QAAS,OACT0H,WAAY,SACZD,eAAgB,UALpB,SAOE,cAAC,EAAD,CAAaJ,YAAU,MAI3B,qBAAKqH,MAAO,CAAEpO,OAAQ,gBAAtB,SACE,sBAAK6B,UAAWD,EAAQgoD,wBAAxB,UACE,qBAAKx7C,MAAO,CAAExO,MAAO,QAAS2a,YAAa,QAA3C,SACE,cAAC,KAAD,CACEgZ,QAAS/1B,KAAKmH,MAAMu2B,gBACpB39B,MAAOC,KAAKmH,MAAMk2B,uBAClBv5B,SAAU9D,KAAK+qD,2BAGnB,cAAC,GAAD,CACEzlD,QAAStF,KAAKk3E,uBACdhxE,MAAM,yB,uCAnHtB,SAAgCO,EAAOU,GACrC,OAAIV,EAAMmM,UAAUmkE,gBAA2C,OAAzB5vE,EAAM4vE,eACnC,CACLA,eAAgB7rE,KAAK6B,MACnB7B,KAAKC,UAAU1E,EAAMmM,UAAUmkE,kBAIhCtwE,EAAMmM,UAAUmkE,gBAA2C,OAAzB5vE,EAAM4vE,eAOtC,KANE,CACLA,eAAgB,CACdzB,cAAe,S,GA3EInsE,IAAMC,WAuMpBC,eACbvH,sBA5Na,SAAAC,GAAK,MAAK,CACvBsvE,UAAW,CACTzuE,WAAY,OACZM,SAAU,GACVD,MAAO,WAETmpD,wBAAyB,CACvBlqD,QAAS,OACT0H,WAAY,SACZzH,cAAe,MACfm2B,SAAU,MACV/1B,OAAQ,QAEV80E,gBAAiB,CACfj1E,MAAO,OACPF,QAAS,OACTyH,eAAgB,oBA4MC,CAAEnG,WAAW,GAAhC1B,CACE4X,aAPoB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,UACjB0a,MAAOnmB,EAAMmmB,SAKX5T,CAAyBm9D,MC/OvBS,G,4JACJ,WACE,OACE,sBACEl1E,MAAM,KACNG,OAAO,KACPyR,QAAQ,YACRC,KAAK,OACLC,MAAM,6BALR,UAME,sBAAM9R,MAAM,KAAKG,OAAO,KAAK0R,KAAK,mBAClC,iCACE,yBACExQ,GAAG,WACH8zE,oBAAoB,oBACpBn1E,MAAM,IACNG,OAAO,IAJT,SAKE,qBAAK8Q,KAAK,UAAUrN,UAAU,mBAEhC,uBACEvC,GAAG,SACHrB,MAAM,OACNG,OAAO,OACP8Q,KAAK,q1rC,GAtBUlK,IAAMC,WA8BlBkuE,M,6FCtBTE,G,4MACJrwE,MAAQ,CACNonB,SAAU,M,EAGZkpD,YAAc,SAAA9pE,GACZ,EAAKhH,SAAS,CAAE4nB,SAAU5gB,EAAM+pE,iB,iDAGlC,SAAYllD,GACVxyB,KAAKyG,MAAM2lC,SAAc5Z,EAAS,MAClCxyB,KAAK2G,SAAS,CAAE4nB,SAAU,S,4BAG5B,WACE,OAAQ,IAAMvuB,KAAKyG,MAAMkxE,IAAIjzE,IAAM1E,KAAKyG,MAAMkxE,IAAIp1E,OAAS,EAAI,O,6BAGjE,WACE,OAAQ,GAAKvC,KAAKyG,MAAMkxE,IAAI7tE,KAAO9J,KAAKyG,MAAMkxE,IAAIv1E,MAAQ,EAAI,O,oBAGhE,WAAU,IAAD,OACCmsB,EAAavuB,KAAKmH,MAAlBonB,SAER,OACE,gCACE,cAAC,KAAD,CACE,aAAW,OACX,YAAWA,EAAW,YAAc,KACpC,gBAAc,OACdjpB,QAAStF,KAAKy3E,YAJhB,SAKE,cAAC,KAAD,MAEF,cAAC,KAAD,CACEh0E,GAAG,YACH8qB,SAAUA,EACVre,KAAMi9B,QAAQntC,KAAKyG,MAAM8jC,MACzBlgB,QAAS,kBAAM,EAAK5jB,MAAM4jB,WAC1BuH,WAAY,CACVhhB,MAAO,CACL/L,UAAW+yE,IACXx1E,MAAO,MAGXwO,MAAO,CAAElM,IAAK1E,KAAK63E,iBAAkB/tE,KAAM9J,KAAK83E,mBAXlD,SAYG93E,KAAKyG,MAAMsvB,QAAQ7b,KAAI,SAAAsY,GAAM,OAC5B,cAAC,KAAD,CAEE+lC,SAAqB,UAAX/lC,EACVltB,QAAS,kBAAM,EAAKopB,YAAY8D,EAAO9uB,OAHzC,SAIG8uB,EAAO9uB,MAHH8uB,EAAO/uB,gB,GAhDD0F,IAAMC,WA4DhBouE,MC9DTO,G,4MACJ5wE,MAAQ,CACNojC,MAAM,G,uDAGR,WACE,IAAMytC,EAAKj3E,OAAOsuC,UAAU4oC,UAAUn6D,cAChCo6D,IAASF,EAAG7oE,MAAM,wBAElBgpE,KAD8C,IAAjCH,EAAG/3E,QAAQ,qBACC+3E,EAAG7oE,MAAM,oBAExCnP,KAAK2G,SAAS,CAAEuxE,KAAMA,IAElBC,GACFn4E,KAAK68C,WAAWu7B,IAAI,CAClB,eAAgB,QAChB,gBAAiB,UAGrBp4E,KAAK68C,WAAW7M,UAAYhwC,KAAK29C,gBAAgB39C,KAAKg9C,SAASj9C,S,6BAGjE,SAAgBqG,GAOd,OANAA,EAAOA,EACJgH,QAAQ,OAAQ,QAChBA,QAAQ,cAAe,mBACtBpN,KAAKmH,MAAM+wE,OACb9xE,EAAOA,EAAKgH,QAAQ,KAAM,WAErBhH,I,0BAGT,SAAa2X,GACX/d,KAAK28C,SAAS+C,UAAY3hC,EAAK2hC,UAC/B1/C,KAAK28C,SAASgD,WAAa5hC,EAAK4hC,a,sBAGlC,SAAS04B,GACP,IAAMjyE,EAAO,GAAKpG,KAAKyG,MAAM1G,MAC7BC,KAAKyG,MAAM3C,SACTsC,EAAK8X,MAAM,EAAGle,KAAKmH,MAAMwwE,KAAOU,EAAQjyE,EAAK8X,MAAMle,KAAKmH,MAAMwwE,MAEhE33E,KAAK2G,SAAS,CAAE4jC,MAAM,M,gCAGxB,WACEvqC,KAAK68C,WAAW7M,UAAYhwC,KAAK29C,gBAAgB39C,KAAKg9C,SAASj9C,S,oBAGjE,WAAU,IAAD,OACP,OACE,qBAAK6Q,MAAO,CAAEvO,UAAW,WAAzB,SAEE,sBACEgC,UAAU,0BACVuM,MAAO,CACLrO,OAAQvC,KAAKyG,MAAMlE,OAASvC,KAAKyG,MAAMlE,OAAS,QAChDE,QAAS,GAJb,UAME,qBACE4B,UAAU,WAEV+hB,IAAK,SAAAkyD,GACH,EAAK37B,SAAW27B,GAJpB,SAME,qBACEj0E,UAAU,aACV+hB,IAAK,SAAAkyD,GACH,EAAKz7B,WAAay7B,OAIxB,0BACEj0E,UAAU,yBACVuM,MAAO,CAAExO,MAAO,KAChBrC,MAAOC,KAAKyG,MAAM1G,MAClBiE,aACEhE,KAAKyG,MAAM8xE,WAAav4E,KAAKyG,MAAMyM,IAAIM,aAAe,OAExD5P,YAAa5D,KAAKyG,MAAM7C,YACxBE,SAAU,SAAA6J,GAAK,OAAI,EAAKlH,MAAM3C,SAAS6J,EAAM9G,OAAO9G,QACpD0/C,SAAU,SAAA9xC,GAAK,OAAI,EAAK6qE,aAAa7qE,EAAM9G,SAC3Cuf,IAAK,SAAA42B,GACH,EAAKA,SAAWA,KAGE,MAArBh9C,KAAKyG,MAAM2I,QACV,cAAC,GAAD,CACE2mB,QAAS/1B,KAAKyG,MAAM2I,OACpBg9B,SAAU,SAAAisC,GAAK,OAAI,EAAKjsC,SAASisC,IACjC9tC,KAAMvqC,KAAKmH,MAAMojC,KACjBlgB,QAAS,kBAAM,EAAK1jB,SAAS,CAAE4jC,MAAM,KACrCotC,IAAK33E,KAAKg9C,SAAWh9C,KAAKg9C,SAAShb,wBAA0B,c,GA5FtD74B,IAAMC,WAuGZsQ,gBAFS,SAAAvS,GAAK,MAAK,KAEnBuS,CAAyBq+D,ICvFlC3oE,GAAS,CACb,CACE3L,IAAK,EACLC,KAAM,mBAER,CACED,IAAK,EACLC,KAAM,kBAER,CACED,IAAK,EACLC,KAAM,mBAgCK2F,eACbvH,sBA3Da,SAAAC,GAAK,MAAK,CACvB02E,UAAW,CACTv2E,QAAS,OACTM,OAAQ,cAEV61E,MAAO,CACL31E,OAAQ,oBACRG,UAAW,aACXF,aAAc,GACdF,QAAS,WACTsa,YAAa,EACb7Z,SAAU,OAgDO,CAAEM,WAAW,GAAhC1B,CACE4X,aANoB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAKf8G,EA9BiB,SAAC,GAAD,IAAGtV,EAAH,EAAGA,QAASN,EAAZ,EAAYA,SAAUsC,EAAtB,EAAsBA,KAAMwM,EAA5B,EAA4BA,UAA5B,OACnB,sBAAKvO,UAAWD,EAAQ0T,UAAxB,UACE,qBAAKzT,UAAWD,EAAQq0E,UAAxB,SACGrpE,GAAO8K,KAAI,SAAAm+D,GAAK,OACf,qBAAKh0E,UAAWD,EAAQi0E,MAAxB,SACG,KAAOA,EAAM30E,KAAO,MADa20E,EAAM50E,SAK9C,cAAC,GAAD,CACEK,SAAU,SAAA/D,GAAK,OAAI+D,EAAS/D,IAC5BA,MAAOqG,EACPxC,YAAY,4FACZ20E,YAAY,EACZrlE,IAAKN,EACLxD,OAAQA,aC+CRspE,G,4MACJvxE,MAAQ,CACNwxE,SAAS,G,EAEXlqD,WAAa,kBAAM,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EACzCwe,YAAc,kBAAM,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EAC1C0oE,yBAA2B,SAAA74E,GACzB,IAAMmT,EAAMhI,KAAK6B,MAAM7B,KAAKC,UAAU,EAAKhE,MAAM+L,MACjDA,EAAIM,aAAezT,EACnB,EAAK4G,SAAS,CAAEuM,MAAKylE,SAAS,K,EAEhCE,aAAe,WACb,IAAQ3lE,EAAQ,EAAK/L,MAAb+L,IACAN,EAAc,EAAKnM,MAAnBmM,UAERW,GAAmBL,EAAIzP,GAAIyP,EAAIM,cAAc,WAC3C,EAAK7M,SAAS,CAAEgyE,SAAS,IACzB/lE,EAAUY,aAAeN,EAAIM,aAC7Bb,GAAaO,O,4CAYjB,WAAU,IAAD,OACC9O,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,sBAAKC,UAAWD,EAAQ0T,UAAxB,UACE,gCACE,sBAAKlH,MAAO,CAAEhM,SAAU,KAAxB,UACE,mBAAGP,UAAWD,EAAQgwD,QAAtB,mCACA,cAAC,GAAD,mQAOF,cAAC,GAAD,CACEhuD,KAAMpG,KAAKmH,MAAM+L,IAAIM,aACrB1P,SAAU,SAAA/D,GACR,EAAK64E,yBAAyB74E,MAGlC,cAAC,GAAD,CACEmG,MAAM,OACNwC,OAAQ,CAAElG,OAAQ,YAClB8C,QAAStF,KAAK64E,kBAGlB,qBAAKx0E,UAAWD,EAAQ00E,UAAxB,SACE,qBACEtvE,IAAI,uCACJC,IAAI,GACJpF,UAAWD,EAAQ4rD,c,uCAtC7B,SAAgCn4B,EAAWC,GACzC,OAAKA,EAAU6gD,QAIR,KAHE,CACLzlE,IAAK2kB,EAAUjlB,e,GAzBAzJ,IAAMC,WA6EdtH,SAtKA,SAAAC,GAAK,MAAK,CACvB+V,UAAW,CACT5V,QAAS,OACTC,cAAe,MACfi+B,UAAW,oBACX4jB,WAAY,GACZr6C,eAAgB,iBAElB0wD,QAAS,GACTjG,QAAS,CACPlxD,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,OAC1BzY,aAAc,EACdtH,WAAY,mBACZ8C,WAAY,GAEd2rE,UAAW,CACTzuE,WAAY,mBACZM,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7BV,WAAY,QAEdqyC,MAAO,CACL7X,aAAc,oBACdogB,cAAe,IAEjBh+C,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAO,WAETq2B,YAAa,CACX52B,OAAQ,oBACRC,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXzC,MAAO,SAETmmC,IAAK,CACHt+B,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oBACRG,UAAW,aACXF,aAAc,GACdM,MAAO,UACPR,QAAS,WACTL,MAAO,eAET4wE,UAAW,CACT/oE,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oCACRG,UAAW,aACXF,aAAc,GACdM,MAAO,0BACPR,QAAS,WACTL,MAAO,eAET2yE,MAAO,CACLtyE,QAAS,aACTD,OAAQ,WACRuD,UAAW,uCACXpD,aAAc,GACdsnB,UAAW,OACX7mB,gBAAiB,QACjBhB,MAAO,KAET4tD,IAAK,CACH5tD,MAAO,OACPwC,SAAU,OACV3C,SAAU,WACVyC,IAAK,IAEPo0E,UAAW,CACTtrE,UAAW,MACXtL,QAAS,OACTyH,eAAgB,eAiFc,CAAEnG,WAAW,GAAhC1B,CACb4X,aALsB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIjB8G,CAAyBg/D,KClLdK,GAAsB,sBCM5B,SAASC,GAAiBjnE,EAAOk0B,EAAav1B,EAAUrQ,GAC7DkH,MAAK,0DAEgD0+B,EAFhD,8EAGH,CACEx+B,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAGTK,MAAK,SAAAC,GACJ,GAAIA,EAASC,GACX,OAAOD,EAAS+H,WACX9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCxL,EAASS,UAEhBV,MAAK,SAAAU,GDpBuB,IAAA0wE,ICqBT1wE,EAAK2wE,SAAS9+D,KDpBpC9Z,GAAMC,SAAS,CACbC,KAAMu4E,GACNE,qBCoBCpxE,MAAK,WACA6I,GAAUA,OAEfjI,OAAM,SAASrB,GACdiJ,GAAW,6BCdjB,IAiFM8oE,G,kDA8DJ,WAAY1yE,GAAQ,IAAD,8BACjB,cAAMA,IA9DR2yE,mBAAqB,SAAAvP,GACnB,IAAMwP,EAASnuE,KAAK6B,MAAM7B,KAAKC,UAAU,EAAK1E,MAAMmM,YAC/Ci3D,IACHwP,EAAOrzC,iBAAiBszC,OAAS,EAAK7yE,MAAMgqB,KAAKhtB,GACjD41E,EAAOrzC,iBAAiBC,YAAc,EAAKx/B,MAAMgqB,KAAK8oD,aACtD5mE,GAAa0mE,IAGbxP,GACA,EAAKpjE,MAAMmM,UAAUozB,iBAAiBszC,QAAU,EAAK7yE,MAAMgqB,KAAKhtB,KAEhE41E,EAAOrzC,iBAAiBszC,OAAS,KACjCD,EAAOrzC,iBAAiBC,YAAc,KACtCtzB,GAAa0mE,IAEfL,GAAiB,EAAKvyE,MAAMmM,UAAUnP,GAAI,EAAKgD,MAAMpG,OAAO,WAC1D,EAAKsG,SACH,CACE4C,YAAY,IAEd,WACEyG,GAAa,QAAD,OACF65D,EAAY,eAAiB,aAD3B,yBAwCD,EAhCnB2P,cAAgB,SAAC3P,EAAW93D,EAAOunE,EAAQG,EAAWC,GACpD,EAAK/yE,SACH,CACE4C,YAAY,IAEd,WACEsgE,EDnFD,SACL93D,EACAtO,EACAwiC,EACAyzC,EACAhpE,EACAipE,EACAt5E,GAEAkH,MAAM,GAAD,OAAI/F,EAAJ,qBAAyBuQ,EAAzB,kBAAgD,CACnDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU,CAAE1H,KAAIwiC,cAAayzC,eACvC7xE,MAAK,SAAAC,GAMN,OALIA,EAASC,GAAI2I,GAAS,GACG,MAApB5I,EAASQ,SAChBR,EAASS,OAAOV,MAAK,SAAAzB,GAAI,OAAIiK,GAAWjK,EAAKoC,YAC7CmxE,KAEK7xE,EAAS+H,WACX9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCxL,KC8DI8xE,CACA7nE,EACAunE,EACAG,EACAC,EACA,EAAKN,mBACL,EAAKS,cDhEV,SACL9nE,EACAtO,EACAwiC,EACAv1B,EACAipE,EACAt5E,GAEAkH,MAAM,GAAD,OAAI/F,EAAJ,qBAAyBuQ,EAAzB,oBAAkD,CACrDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU,CAAE1H,KAAIwiC,kBAC1Bp+B,MAAK,SAAAC,GAMN,OALIA,EAASC,GAAI2I,GAAS,GACG,MAApB5I,EAASQ,SAChBqxE,IACA7xE,EAASS,OAAOV,MAAK,SAAAzB,GAAI,OAAIiK,GAAWjK,EAAKoC,aAExCV,EAAS+H,WACX9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCxL,KC6CIgyE,CACA/nE,EACAunE,EACAG,EACA,EAAKL,mBACL,EAAKS,kBAYI,EANnBA,aAAe,WACb,EAAKlzE,SAAS,CACZ4C,YAAY,KAOd,EAAKpC,MAAQ,CACXoC,YAAY,GAJG,E,0CAQnB,WAAU,IAAD,OACP,EAA+CvJ,KAAKyG,MAA5CrC,EAAR,EAAQA,QAASqsB,EAAjB,EAAiBA,KAAM7d,EAAvB,EAAuBA,UAAW3O,EAAlC,EAAkCA,SAC1BsF,EAAevJ,KAAKmH,MAApBoC,WACR,OACE,sBAAKlF,UAAWD,EAAQ21E,SAAxB,UACE,sBAAK11E,UAAWD,EAAQ41E,SAAxB,UACGvpD,EAAKwpD,SACJ,qBAAK51E,UAAWD,EAAQ81E,QAAS1wE,IAAKinB,EAAKwpD,QAAQ7/D,KAAK9G,MAE1D,sBAAMjP,UAAWD,EAAQs1E,SAAzB,SAAoCjpD,EAAK/sB,UAE1C6F,EACC,cAAC,EAAD,CAAaA,YAAY,IAEzB,8BACGknB,EAAK0pD,uBACJ,gCACG1pD,EAAKhtB,IAAMmP,EAAUozB,iBAAiBszC,OACrC,sBAAMj1E,UAAWD,EAAQg2E,gBAAzB,+BAIA,sBAAM/1E,UAAWD,EAAQi2E,iBAAzB,sCAIF,cAAC,GAAD,CACEn0E,MAAM,aACN1F,KAAK,UACL8E,QAAS,kBACP,EAAKk0E,eACH,EACA5mE,EAAUnP,GACVgtB,EAAKhtB,GACLgtB,EAAK8oD,oBAMb,+BACIt1E,GACA,cAAC,GAAD,CACEiC,MAAM,kBACN1F,KAAK,UACL8E,QAAS,SAAAf,GACPA,EAAE0xE,kBACF,EAAKuD,eACH,EACA5mE,EAAUnP,GACVgtB,EAAKhtB,GACLgtB,EAAK8oD,aACL9oD,EAAK/sB,oB,GA1HFyF,IAAMC,WAmJlBC,eACbvH,sBArOa,SAAAC,GAAK,MAAK,CACvBmE,MAAO,CACLtD,WAAY,OACZM,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B1f,MAAO,CACLL,WAAY,OACZM,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B8xD,UAAW,CACTryD,WAAY,GACZnf,MAAOlB,EAAM6D,QAAQC,QAAQmvE,UAC7B9xE,SAAU,GACVN,WAAY,OACZ,YAAa,CACXK,MAAOlB,EAAM6D,QAAQC,QAAQC,OAGjCi0E,SAAU,CACR73E,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChBu2B,aAAc,oBACdz9B,QAAS,SAIT,iBAAkB,IAMpBu3E,SAAU,CACR93E,QAAS,OACT0H,WAAY,UAEdswE,QAAS,CACP93E,MAAO,OACPG,OAAQ,OACRwa,YAAa,OACbpa,aAAc,KAEhB+2E,SAAU,CACRz2E,MAAO,UACPC,SAAU,OACVwC,WAAY,OACZvC,WAAY,MACZP,WAAY,sBAEdw3E,gBAAiB,CACfl3E,SAAU,OACVN,WAAY,qBACZO,WAAY,MACZF,MAAO,UACP8Z,YAAa,QAEfs9D,iBAAkB,CAChBn3E,SAAU,OACVN,WAAY,qBACZO,WAAY,MACZF,MAAO,UACP8Z,YAAa,QAEfpE,QAAS,GACT,UAAW,CACT,mBAAoB,CAClBnW,OAAQ,wBAEV,kCAAmC,CACjC4f,WAAY,GAEd,kBAAmB,CACjBlf,SAAU,GACVN,WAAY,YAyJG,CAAEY,WAAW,GAAhC1B,CACE4X,aARoB,SAAAvS,GAAK,MAAK,CAChCmzE,cAAenzE,EAAMmzE,cACrB1nE,UAAWzL,EAAMyL,UACjBvS,MAAO8G,EAAM9G,SAKXqZ,CAAyBy/D,MCrPhBoB,GAAsB,sBC6G7BC,G,kDAyBJ,WAAY/zE,GAAQ,IAAD,8BACjB,cAAMA,IAzBR2xB,iBAAmB,SAACzqB,EAAO8iB,GACzB,EAAK9pB,SAAS,CAAE8pB,UAuBC,EApBnBgqD,8CAAgD,SAAAC,GDhHjB,IAAAr6E,EEJGs6E,EFIHt6E,ECiHXq6E,EDhHpBp6E,GAAMC,SAAS,CACbC,KAAM+5E,GACNl6E,UEPgCs6E,GDsHX,ECrHvBnhE,aAAanM,QAAQ,WAAYstE,GDsH/B3B,GAAiB,EAAKvyE,MAAM0I,MAAMC,OAAO2C,MAAO2oE,IAoBhD,EAAKvzE,MAAQ,CACXspB,KAAM,EACNmqD,cAAe,KACf1iD,YAAa,IANE,E,0DAdnB,SAAuB+N,GAAc,IAAD,OAC9BA,GHxFD,SAA8CA,GACnD,OAAO1+B,MAAM,GAAD,OACP/F,EADO,gDACyCykC,GACnD,CACEx+B,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEVK,MAAK,SAAAC,GACL,GAAIA,EAASC,GACX,OAAOD,EAAS+H,WACX9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCxL,EAASS,UG6EbsyE,CAAqC50C,GAClCp+B,MAAK,SAAAC,GACJ,EAAK2yE,8CACH3yE,EAASm+B,gBAGZx9B,OAAM,SAASrB,GACdiJ,GAAW,6D,+BAenB,WAAqB,IAAD,OACZyqE,EC9IDthE,aAAarM,QAAQ,YJkGrB5F,MAAM,GAAD,OAAI/F,EAAJ,qBAAiC,CAC3CiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QACPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MGyC7BD,MAAK,SAAAC,GACtB,EAAKnB,SAAS,CACZm0E,iBAAkBA,EAClBF,cAAe9yE,EAASizE,WAG5B/nE,GAAOhT,KAAKyG,MAAMmM,UAAUnP,M,oBAG9B,WAAU,IAAD,OACP,EAOIzD,KAAKyG,MANPrC,EADF,EACEA,QACA42E,EAFF,EAEEA,eACAV,EAHF,EAGEA,cACA1nE,EAJF,EAIEA,UACAy+C,EALF,EAKEA,SACA6B,EANF,EAMEA,sBAEF,EAA6ClzD,KAAKmH,MAA1CspB,EAAR,EAAQA,KAAMyH,EAAd,EAAcA,YAAa0iD,EAA3B,EAA2BA,cAC3B,OACE,8BACE,cAAC,GAAD,CACE5wC,IAAK,CACHtmC,KAAM,WACN4jB,KAAM,cAAC,GAAD,IACNE,YAAa,6CAEf/hB,OAAQ,CACNjF,KAAM,KACN0F,MAAO,2BACPZ,QAAS,SAAAf,GACPxD,OAAOmP,KAAK,0CAA2C,UACvD3L,EAAE0xE,oBAGN5kB,SAAUA,EACVvtD,SAAUovD,EAfZ,SAgBE,sBAAK7uD,UAAW22E,EAAeljE,UAA/B,UACIwiE,EAAcrB,cA6Bd,gCACGqB,EAAcrB,cACZ/6D,MAAMuS,EAAOyH,EAAazH,EAAOyH,EAAcA,GAC/Che,KAAI,SAAAuW,GAAI,OACP,8BACE,cAAC,GAAD,CACExsB,UACGwsB,EAAK0pD,wBACgC,OAAtCvnE,EAAUozB,iBAAiBszC,QAC3B1mE,EAAUozB,iBAAiBszC,QAAU7oD,EAAKhtB,GAE5CgtB,KAAMA,KAPAA,EAAKhtB,OAWlB62E,EAAcrB,eACbqB,EAAcrB,cAAc3yE,OAAS4xB,GACrC,qBAAK7zB,UAAWD,EAAQ62E,eAAxB,SACE,cAAC,GAAD,CACExqD,KAAMA,EACNyH,YAAaA,EACbhS,MAAOo0D,EAAcrB,cAAc3yE,OACnC6pD,aAAcnwD,KAAKo4B,wBAlD3B,8BACqB,OAAlBwiD,EAAyB,KACxB,sBAAKv2E,UAAW22E,EAAeE,SAA/B,UACE,mBAAG72E,UAAWD,EAAQ8B,MAAtB,oEAGA,qBAAK7B,UAAWD,EAAQ+mB,KAAMva,MAAO,CAAEmM,YAAa,MAApD,SACE,cAAC,KAAD,CACEg+D,MAAOH,EACPO,WAAYn7E,KAAKmH,MAAM2zE,iBACvBpqE,SAAU,gBAAGu1B,EAAH,EAAGA,YAAH,OACR,EAAKm1C,uBAAuBn1C,IAE9Bo1C,MAAM,+BACNlqE,OAAQ,SAAAmqE,GAAW,OACjB,cAAC,GAAD,CACEp1E,MAAM,UACN1F,KAAK,YACLgvB,KAAK,KACLlqB,QAASg2E,EAAYh2E,oBAqCpCg1E,EAAcrB,eAC6B,MAA1CrmE,EAAUozB,iBAAiBC,aAAuB,cAAC,GAAD,e,GArIzC98B,IAAMC,WA6I7BoxE,GAAS/sC,aAAe,CACtBrpC,QAAS,IAQX,IAKeiF,eACbvH,sBAlPa,SAAAC,GAAK,MAAK,CACvBmE,MAAO,CACLtD,WAAY,OACZM,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B1f,MAAO,CACLL,WAAY,OACZM,SAAU,GACVD,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B8xD,UAAW,CACTryD,WAAY,GACZnf,MAAOlB,EAAM6D,QAAQC,QAAQmvE,UAC7B9xE,SAAU,GACVN,WAAY,OACZ,YAAa,CACXK,MAAOlB,EAAM6D,QAAQC,QAAQC,OAGjCi0E,SAAU,CACR73E,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChBu2B,aAAc,oBACdz9B,QAAS,SACT,kBAAmB,CACjBuhD,WAAY,GAEd,iBAAkB,CAChB9jB,aAAc,OAEdogB,cAAe,IAGnB05B,SAAU,CACR93E,QAAS,OACT0H,WAAY,UAEdswE,QAAS,CACP93E,MAAO,OACPG,OAAQ,OACRwa,YAAa,OACbpa,aAAc,KAEhB+2E,SAAU,CACRz2E,MAAO,UACPC,SAAU,OACVwC,WAAY,OACZvC,WAAY,MACZP,WAAY,sBAEdw3E,gBAAiB,CACfl3E,SAAU,OACVN,WAAY,qBACZO,WAAY,MACZF,MAAO,UACP8Z,YAAa,QAEfs9D,iBAAkB,CAChBn3E,SAAU,OACVN,WAAY,qBACZO,WAAY,MACZF,MAAO,UACP8Z,YAAa,QAEfk+D,eAAgB,CACd/4E,QAAS,OACTyH,eAAgB,YAGlBgP,QAAS,GACT,UAAW,CACT,mBAAoB,CAClBnW,OAAQ,wBAEV,kCAAmC,CACjC4f,WAAY,GAEd,kBAAmB,CACjBlf,SAAU,GACVN,WAAY,YAiKG,CAAEY,WAAW,GAAhC1B,CAAwC4X,aANlB,SAAAvS,GAAK,MAAK,CAChCmzE,cAAenzE,EAAMmzE,cACrB1nE,UAAWzL,EAAMyL,aAIuB8G,CAAyB8gE,MElQnE,IAuBMe,G,kDACJ,WAAY90E,GAAQ,IAAD,8BACjB,cAAMA,IA4BR+0E,SAAW,WACT,IC5DkBzpE,EAAO0pE,ED4DnBvoE,EAAG,eAAQ,EAAKzM,MAAMmM,WC5DVb,ED6DZmB,EAAIzP,GC7Deg4E,ED6DX,EAAKt0E,MAAMu0E,kBAAkBD,UC5D7Cl0E,MAAM,GAAD,OAAI/F,EAAJ,uBAAmC,CACtCiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAC,GAAQ,OACZ/G,OAAOmP,KAAP,oEAEI5O,EAAc,mBAFlB,wLAKIwG,EAAS6zE,SALb,sCAMgC5pE,EAAQ,IAAM0pE,GAC5C,wBACA,2DDca,EAkCnBhoE,gBAAkB,WAChB,EAAK9M,SAAS,CACZi1E,SAAS,EACTryE,YAAY,KArCG,EAyCnBmK,cAAgB,SAAAxM,GACd,EAAKP,SAAS,CACZi1E,SAAS,EACT10E,aAAcA,KA5CC,EAgDnBwG,aAAe,SAAC3N,EAAO2D,GACrB,IAAMg4E,EAAiB,eAAQ,EAAKv0E,MAAMu0E,mBAC1CA,EAAkBh4E,GAAQ3D,EAAMsG,OAChC,EAAKM,SAAS,CACZ+0E,kBAAkB,eAAMA,GACxBE,SAAS,KAlDX,EAAKz0E,MAAQ,CACXs0E,UAAW,GACXI,UAAU,EACVtyE,YAAY,EACZqyE,SAAS,EACT10E,aAAc,GACdw0E,kBAAmB,GACnBI,YAAa,IAVE,E,0CAyDnB,WAAU,IAAD,OACP,EAAkD97E,KAAKyG,MAA/CrC,EAAR,EAAQA,QAAS42E,EAAjB,EAAiBA,eAAgBe,EAAjC,EAAiCA,aACjC,EAAqD/7E,KAAKmH,MAAlDy0E,EAAR,EAAQA,QAAS10E,EAAjB,EAAiBA,aAAcw0E,EAA/B,EAA+BA,kBAE/B,OACE,gCACE,sBAAKr3E,UAAWD,EAAQ43E,KAAxB,UACE,cAAC,GAAD,CACE91E,MAAM,aACNnG,MAAO27E,EAAkBD,UACzBriD,UAAW,IACXiU,WAAS,EACTE,iBAAkBvtC,KAAKi8E,SACvB3uC,iBAAkB,CAAErjC,UAAW,GAC/BrG,YAAY,0BACZE,SAAU,SAAA6J,GAAK,OACb,EAAKD,aAAaC,EAAM9G,OAAO9G,MAAO,gBAG1C,mBAAGsE,UAAWD,EAAQojB,YAAtB,gEAGCo0D,GAAW,mBAAGv3E,UAAWD,EAAQ83E,WAAtB,mBAAsCh1E,QAEpD,qBAAK7C,UAAS,UAAK22E,EAAemB,kBAApB,YAAyC/3E,EAAQg4E,MAA/D,SACE,qBAAK/3E,UAAW22E,EAAepwD,aAA/B,SACE,cAAC,GAAD,CACE1kB,MAAM,UACN1F,KAAMu7E,EAAav7E,MAAQ,YAC3BgvB,KAAK,KACLlqB,QAAStF,KAAKw7E,qB,uCAzE1B,SAAgC3jD,EAAWC,GACzC,IAAM2jD,EAAY3jD,EAAU2jD,UAE5B,IAAK3jD,EAAU+jD,UAAYhkD,EAAUjlB,UAAU8oE,kBAAmB,CAChE,IAAQA,EAAsB7jD,EAAUjlB,UAAhC8oE,kBAGR,GAAID,IAFiBC,EAAkBD,UAGrC,MAAO,CAAEC,oBAAmBG,UAAU,GAI1C,OAAO,S,GA3BiC1yE,IAAMC,WAiGlDmyE,GAA8B9tC,aAAe,CAC3CutC,eAAgB,GAChBc,YAAa,GACb13E,QAAS,GACTwO,UAAW,GACXmpE,aAAc,IAWhB,IAIe1yE,eACbvH,sBA7Ia,SAAAC,GAAK,MAAK,CACvBq6E,KAAM,CACJlyE,aAAc,IAEhB8xE,KAAM,CACJ9xE,aAAc,IAEhBsd,YAAa,CACXtkB,SAAU,GACVD,MAAO,UACPL,WAAY,mBACZJ,OAAQ,WAEVgrC,WAAY,CACVvjC,UAAW,GAEbiyE,WAAY,CACVj5E,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5B8C,aAAc,QACdhH,SAAU,OA0HO,CAAEM,WAAW,GAAhC1B,CACE4X,aANoB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAKf8G,CAAyB6hE,MEvJhBc,GAAwB,SAAAr9B,GAAG,MACtC,gDAAgDv0C,KAAKu0C,ICgDjDs9B,GAAqB,SAAAC,GACzB,OAAOA,EAAa,YAAc,iBAK9BpjD,GAAa,CACjBjvB,aAAc,OACd9H,MAAO,SAGHo6E,G,kDACJ,WAAY/1E,GAAQ,IAAD,8BACjB,cAAMA,IAgCRg2E,kBAAoB,SAAA9uE,GAClBA,EAAMpI,iBACN,IjLzEoCwM,EAAOtK,EiLyEnCmL,EAAc,EAAKnM,MAAnBmM,UACAsyB,EAAsB,EAAK/9B,MAA3B+9B,kBAEF99B,EAAQ,CACZs1E,gBAAkD,KAAjCx3C,EAAkBy3C,WACnCC,eAAgD,KAAhC13C,EAAkB23C,UAClCC,WAC8B,KAA5B53C,EAAkB63C,QACjBV,GAAsBn3C,EAAkB63C,QAGzC31E,EAAMs1E,iBACRrsE,GAAW,4BAETjJ,EAAMw1E,gBACRvsE,GAAW,qCAETjJ,EAAM01E,aAAeT,GAAsBn3C,EAAkB63C,QAC/D1sE,GAAW,mCAGRjJ,EAAMs1E,iBAAoBt1E,EAAMw1E,gBAAmBx1E,EAAM01E,ajL9F1B/qE,EiL+FVa,EAAUnP,GjL/FOgE,EiL+FHy9B,EjL9FnC39B,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,uBAAgD,CAC1DtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU1D,KACpBI,MAAK,SAAAC,GACkB,MAApBA,EAASQ,OAMkB,MAApBR,EAASQ,QAClB0H,GAAa,mCACb0sB,QAAQC,IAAI70B,IAEZuI,GAAWvI,EAASU,SATpBV,EAAS1B,OAAOyB,MAAK,SAAAzB,GAEnBiK,GADYnF,KAAK6B,MAAM3G,GACRoC,gBiLwFnB,EAAK7B,SAAS,CAAES,WA5DC,EA+DnBsG,aAAe,SAACC,EAAO7N,GACrB,IAAMolC,EAAoBnsB,OAAOsC,OAAO,EAAKlU,MAAM+9B,mBAEnDA,EAAkBplC,GAAO6N,EAAM9G,OAAO9G,MAEtC,EAAK4G,SAAS,CAAEu+B,uBAjEhB,EAAK/9B,MAAQ,CACX+9B,kBAAmB,CACjBy3C,WAAY,GACZE,UAAW,GACXE,MAAO,GACPz2C,WAAW,GAEbl/B,MAAO,CACLs1E,iBAAiB,EACjBE,gBAAgB,EAChBE,YAAY,IAbC,E,qDA4BnB,WAEE5uB,GADsBluD,KAAKyG,MAAnBmM,UACuBnP,M,oBAyCjC,WAAU,IAhFgB84E,EAgFjB,OACCn4E,EAAYpE,KAAKyG,MAAjBrC,QACR,EAAqCpE,KAAKmH,MAAlC+9B,EAAR,EAAQA,kBAAmB99B,EAA3B,EAA2BA,MAE3B,OACE,gCACE,qBAAK/C,UAAWD,EAAQ44E,YAAxB,SACE,iCACE,mBAAG34E,UAAWD,EAAQojB,YAAtB,qBACA,mBACEnjB,UAAWD,EAAQ64E,cACnBrsE,OA3Fc2rE,EA2Far3C,EAAkBoB,UA1FlD,CAAErjC,MAAOs5E,EAAa,UAAY,YAwF/B,SAGGD,GAAmBp3C,EAAkBoB,kBAI5C,uBAAMk1C,SAAUx7E,KAAKy8E,kBAArB,UACE,cAAC,GAAD,CACEv2E,MAAO,cACPkB,MAAOA,EAAMs1E,gBACb/5C,aAAcxJ,GACd34B,KAAM,OACNoD,YAAa,oBACb7D,MAAOmlC,EAAkBy3C,YAAc,GACvC74E,SAAU,SAAA/D,GAAK,OAAI,EAAK2N,aAAa3N,EAAO,iBAE9C,cAAC,GAAD,CACEmG,MAAO,uBACPy8B,aAAcxJ,GACd/xB,MAAOA,EAAMw1E,eACbh5E,YAAa,6BACb7D,MAAOmlC,EAAkB23C,WAAa,GACtC/4E,SAAU,SAAA/D,GAAK,OAAI,EAAK2N,aAAa3N,EAAO,gBAE9C,cAAC,GAAD,CACEmG,MAAO,0BACPkB,MAAOA,EAAM01E,WACbn6C,aAAcxJ,GACd34B,KAAM,OACNoD,YAAa,gCACb7D,MAAOmlC,EAAkB63C,OAAS,GAClCj5E,SAAU,SAAAS,GAAC,OAAI,EAAKmJ,aAAanJ,EAAG,YAEtC,qBAAKF,UAAWD,EAAQ84E,cAAxB,SACE,wBAAQ74E,UAAWD,EAAQ+4E,cAAe38E,KAAK,SAA/C,gC,uCAjGV,SAAgCq3B,EAAWC,GACzC,OAAID,EAAUqN,oBAAsBpN,EAAUoN,kBACrC,CACLA,kBAAmBrN,EAAUqN,mBAI1B,S,GA1BqB/7B,IAAMC,WAmIvBtH,yBApLA,SAAAC,GAAK,MAAK,CACvBylB,YAAa,CACXtkB,SAAU,OACVD,MAAO,UACPL,WAAY,mBACZJ,OAAQ,aAEV26E,cAAe,CACbl6E,MAAO,UACPP,OAAQ,oBACRU,gBAAiB,OACjBT,aAAc,OACdF,QAAS,WACTkC,OAAQ,WAEVs4E,cAAe,CACb/5E,SAAU,OACVwC,WAAY,QAEds3E,YAAa,CACX9yE,aAAc,OACd9H,MAAO,SAET86E,cAAe,CACbh7E,QAAS,OACT0H,WAAY,SACZK,UAAW,QAEbmzE,eAAgB,CACdn6E,MAAO,UACP0B,OAAQ,UACRnC,OAAQ,YACR,UAAW,CACT6e,eAAgB,iBAmJY,CAAE7d,WAAW,GAAhC1B,CACb4X,aANsB,SAAAvS,GAAK,MAAK,CAChC+9B,kBAAmB/9B,EAAM+9B,kBACzBtyB,UAAWzL,EAAMyL,aAIjB8G,CAAyB8iE,KC/JrBa,G,kDACJ,WAAY52E,GAAQ,IAAD,8BACjB,cAAMA,IA0BR+0E,SAAW,WACT,GAAI,EAAKr0E,MAAMm2E,YACbttE,GAAa,iCACR,CACL,EAAKrJ,SAAS,CACZ4C,YAAY,IAGd,IAAM2J,EAAG,eAAQ,EAAKzM,MAAMmM,WlZmKhCb,EkZjKMmB,EAAIzP,GlZkKVgQ,EkZjKM,EAAKA,gBlZkKXC,EkZjKM,EAAKA,clZmKXnM,MAAM/F,EAAW,QAAUuQ,EAAQ,gBAAiB,CAClDtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,SAEPK,MAAK,SAAAC,GACAA,EAASC,IACXD,EAAS+H,WACJ9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCtD,GAAa,gCACbyD,GAAiBA,KACZC,GACT5L,EAASS,OAAOV,MAAK,SAAA8L,GAAG,OAAID,EAAcC,EAAInL,eAGjDC,OAAM,SAASrB,GACdiJ,GAAW,yBArBV,IACL0B,EACA0B,EACAC,GkZxMmB,EA4CnBD,gBAAkB,WAChB,EAAK9M,SAAS,CACZi1E,SAAS,EACT0B,aAAa,EACb/zE,YAAY,KAhDG,EAoDnBmK,cAAgB,SAAAxM,GACd,EAAKP,SAAS,CACZi1E,SAAS,EACT0B,aAAa,EACb/zE,YAAY,EACZrC,aAAcA,KAzDC,EA6DnBwG,aAAe,SAAC3N,EAAO2D,GACrB,IAAM65E,EAAY,eAAQ,EAAKp2E,MAAMo2E,cACrCA,EAAa75E,GAAQ3D,EAAMsG,OAC3B,EAAKM,SAAS,CACZ42E,aAAa,eAAMA,GACnB3B,SAAS,KA/DX,EAAKz0E,MAAQ,CACXm2E,aAAa,EACb/zE,YAAY,EACZqyE,SAAS,EACT10E,aAAc,GACdq2E,aAAc,IARC,E,0CAsEnB,WACE,MAAkDv9E,KAAKyG,MAA/CrC,EAAR,EAAQA,QAAS42E,EAAjB,EAAiBA,eAAgBe,EAAjC,EAAiCA,aACjC,EAA2D/7E,KAAKmH,MAAxDy0E,EAAR,EAAQA,QAAS10E,EAAjB,EAAiBA,aAAcqC,EAA/B,EAA+BA,WAAY+zE,EAA3C,EAA2CA,YAE3C,OACE,8BACG/zE,EACC,cAAC,GAAD,IAEA,sBACElF,UAAS,UAAK22E,EAAemB,kBAApB,YAAyC/3E,EAAQg4E,MAD5D,UAEE,qBAAK/3E,UAAWD,EAAQ43E,KAAxB,SACGJ,GACC,mBAAGv3E,UAAWD,EAAQ83E,WAAtB,mBAAsCh1E,OAG1C,qBAAK7C,UAAW22E,EAAepwD,aAA/B,SACE,cAAC,GAAD,CACE1kB,MAAOo3E,EAAc,YAAc,UACnC98E,KAAM88E,EAAcvB,EAAav7E,KAAO,YACxCgvB,KAAK,KACLlqB,QAAStF,KAAKw7E,qB,uCA/E5B,SAAgC3jD,EAAWC,GACzC,IAAMwlD,EAAcxlD,EAAUwlD,YAE9B,IAAKxlD,EAAUwlD,aAAezlD,EAAUjlB,UAAU2qE,aAAc,CAC9D,IAAQA,EAAiB1lD,EAAUjlB,UAA3B2qE,aACFC,EAAiBD,EAAaD,YAEpC,GAAIA,IAAgBE,EAClB,MAAO,CAAED,eAAcD,YAAaE,GAIxC,OAAO,S,GAzB4Br0E,IAAMC,WAsG7Ci0E,GAAyB5vC,aAAe,CACtCutC,eAAgB,GAChB52E,QAAS,GACTwO,UAAW,GACXmpE,aAAc,IAUhB,IAIe1yE,eACbvH,sBAhJa,SAAAC,GAAK,MAAK,CACvBq6E,KAAM,CACJlyE,aAAc,IAEhB8xE,KAAM,CACJ9xE,aAAc,IAEhBsd,YAAa,CACXtkB,SAAU,GACVD,MAAO,UACPL,WAAY,mBACZJ,OAAQ,WAEVgrC,WAAY,CACVvjC,UAAW,GAEbiyE,WAAY,CACVj5E,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5B8C,aAAc,QACdhH,SAAU,OA6HO,CAAEM,WAAW,GAAhC1B,CACE4X,aANoB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAKf8G,CAAyB2jE,M,8BCxJdI,G,qFAAf,WAAyC1rE,EAAOqI,GAAhD,gBAAAd,EAAA,sEACyB/R,MAAM,GAAD,OAAI/F,EAAJ,qBAAyBuQ,EAAzB,kBAAgD,CAC1EtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAUiP,KALzB,cACQtS,EADR,gBAQe8H,GAA8B9H,GAR7C,oF,sBCYA,IAuEe4R,gBAJS,SAACvS,GAAD,MAAgC,CACtDyL,UAAWzL,EAAMyL,aAGJ8G,EAvEmB,SAAC,GAAmB,IAAD,EAAhB9G,EAAgB,EAAhBA,UACnC,EAAsC5N,mBAAS,IAA/C,mBAAOihC,EAAP,KAAoBy3C,EAApB,KACA,EAA8B14E,oBAAS,GAAvC,mBAAO42E,EAAP,KAAgB+B,EAAhB,KACA,EAA8B34E,oBAAS,GAAvC,mBAAOujD,EAAP,KAAgBC,EAAhB,KAEA5iC,qBAAU,WAAO,IAAD,EACd83D,EAAc,UAAC9qE,EAAUgrE,uBAAX,aAAC,EAA2B33C,eACzC,WAACrzB,EAAUgrE,uBAAX,aAAC,EAA2B33C,cAE/B,IAAM43C,EAAY,yCAAG,iCAAAvkE,EAAA,0DACfwkE,IADe,wBAEX1jE,EAAO,CAAE6rB,cAAaxiC,GAAImP,EAAUnP,IAC1C+kD,GAAW,GAHM,kBAKQi1B,GAA0B7qE,EAAUnP,GAAI2W,GALhD,OAKTtS,EALS,QAMf,UAAIA,EAASV,aAAb,aAAI,EAAgBoB,SAClB6H,GAAW,mDAEXL,GAAa,uCATA,kDAYf0tE,EAAe,IACfrtE,GAAW,wBAbI,QAejBm4C,GAAW,GAfM,0DAAH,qDAuBZs1B,EAAgB,WACpB,IAAM12E,EAAQjB,EAAc8/B,GAG5B,OAFA03C,EAAWx3E,EAAc8/B,KAEjB7+B,GAGV,OACE,qCACE,sBAAK/C,UAAWD,KAAQ25B,UAAxB,UACE,cAAC,GAAD,CACE32B,MAAOw0E,EACP11E,MAAM,eACNnG,MAAOkmC,EACP7M,UAAW,IACXmU,iBAAkBswC,EAClBj6E,YAAY,8BACZE,SArBa,SAAC6J,GACpB+vE,EAAe/vE,EAAM9G,OAAO9G,UAsBxB,oBAAGsE,UAAWD,KAAQojB,YAAtB,mEACyD,IACvD,mBAAGnU,KAAK,6CAA6CxM,OAAO,SAASq8D,IAAI,aAAzE,qBAID0Y,GAAW,mBAAGv3E,UAAWD,KAAQ83E,WAAtB,gEAEd,qBAAK73E,UAAWD,KAAQwmB,aAAxB,SACE,cAAC,GAAD,CAAc1kB,MAAM,UAAU1F,KAAM,YAAagvB,KAAK,KAAKlqB,QAASu4E,MAErEt1B,GAAW,cAAC,EAAD,U,8BC1EHw1B,G,qFAAf,WAA8ChsE,EAAOqI,GAArD,gBAAAd,EAAA,sEACyB/R,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,4BAAqD,CAC/EtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,MACRyD,KAAMC,KAAKC,UAAUiP,KALzB,cACQtS,EADR,gBAQe8H,GAA8B9H,GAR7C,oF,sBCWA,IAuGe4R,gBAJS,SAACvS,GAAD,MAAgC,CACtDyL,UAAWzL,EAAMyL,aAGJ8G,EAvG4B,SAAC,GAAmB,IAAD,IAAhB9G,EAAgB,EAAhBA,UAC5C,EAA4B5N,mBAAS,IAArC,mBAAOohC,EAAP,KAAe43C,EAAf,KACA,EAA0Bh5E,mBAAS,IAAnC,mBAAO+3E,EAAP,KAAckB,EAAd,KACA,EAA0Cj5E,oBAAS,GAAnD,mBAAOk5E,EAAP,KAAsBC,EAAtB,KACA,EAAwCn5E,oBAAS,GAAjD,mBAAOo5E,EAAP,KAAqBC,EAArB,KAEMC,EAAc,aAEpB14D,qBAAU,WAAO,IAAD,IACdo4D,EAAS,UAACprE,EAAUuzB,gCAAX,aAAC,EAAoCC,QAC9C63C,EAAQ,UAACrrE,EAAUuzB,gCAAX,aAAC,EAAoC42C,SAC5C,WAACnqE,EAAUuzB,gCAAX,aAAC,EAAoCC,OAArC,UAA6CxzB,EAAUuzB,gCAAvD,aAA6C,EAAoC42C,QAEpF,IAAMc,EAAY,yCAAG,iCAAAvkE,EAAA,0DACfwkE,IADe,wBAEX1jE,EAAO,CAAEgsB,OAAQA,EAAQ22C,MAAOA,GAFrB,kBAKQgB,GAA+BnrE,EAAUnP,GAAI2W,GALrD,QAMf,QADMtS,EALS,cAMf,IAAIA,OAAJ,EAAIA,EAAUV,OACZiJ,IAAmB,OAARvI,QAAQ,IAARA,GAAA,UAAAA,EAAUV,aAAV,eAAiBoB,UAAW,wBAEvCwH,GAAa,sDATA,gDAYfguE,EAAU,IACVC,EAAS,IACT5tE,GAAW,wBAdI,yDAAH,qDA6BZytE,EAAgB,WACpB,IAAMS,EAAcp4E,EAAcigC,GAClC+3C,EAAiBI,GACjB,IAAMzB,GAAcwB,EAAY7zE,KAAKsyE,GAGrC,OAFAsB,EAAgBvB,KAEPyB,GAAezB,IAG1B,OACE,qCACE,sBAAKz4E,UAAWD,KAAQ25B,UAAxB,UACE,cAAC,GAAD,CACE32B,MAAO82E,EACPh4E,MAAM,UACNnG,MAAOqmC,EACPhN,UAAW,IACXiU,WAAS,EACTzpC,YAAY,mCACZE,SA7BmB,SAAC6J,GAC1BqwE,EAAUrwE,EAAM9G,OAAO9G,UA8BnB,oBAAGsE,UAAWD,KAAQojB,YAAtB,4CACkC,IAChC,mBAAGnU,KAAK,qCAAqCxM,OAAO,SAASq8D,IAAI,aAAjE,wBAEK,IAJP,MAME,oBAAG7vD,KAAK,+DAA+DxM,OAAO,SAASq8D,IAAI,aAA3F,UACG,IADH,aAKDgb,GAAiB,mBAAG75E,UAAWD,KAAQ83E,WAAtB,8CAClB,cAAC,GAAD,CACE90E,MAAOg3E,EACPl4E,MAAM,eACNnG,MAAOg9E,EACP3jD,UAAW,GACXiU,WAAS,EACTzpC,YAAY,qDACZE,SA9CkB,SAAC6J,IACa,KAAlCA,EAAM9G,OAAO9G,MAAMub,YAAqBgjE,EAAY7zE,KAAKkD,EAAM9G,OAAO9G,MAAMub,cAC9E2iE,EAAStwE,EAAM9G,OAAO9G,UA8CpB,oBAAGsE,UAAWD,KAAQojB,YAAtB,iFACuE,IACrE,mBAAGnU,KAAK,+DAA+DxM,OAAO,SAASq8D,IAAI,aAA3F,qBAIDkb,GAAgB,mBAAG/5E,UAAWD,KAAQ83E,WAAtB,+CAEnB,qBAAK73E,UAAWD,KAAQwmB,aAAxB,SACE,cAAC,GAAD,CAAc1kB,MAAM,UAAU1F,KAAM,YAAagvB,KAAK,KAAKlqB,QAASu4E,YCwHtEW,G,kDAOJ,WAAY/3E,GAAQ,IAAD,8BACjB,cAAMA,IAPRysD,sBAAwB,SAAA7B,GACtB,EAAK1qD,SAAS,CACZ0qD,SAAUA,IAAa,EAAKlqD,MAAMkqD,SAAW,KAAOA,KAOtD,EAAKlqD,MAAQ,CACX+I,MAAM,EACNmhD,SAAU,MALK,E,0CASnB,WAAU,IAAD,OACCjtD,EAAYpE,KAAKyG,MAAjBrC,QACAitD,EAAarxD,KAAKmH,MAAlBkqD,SAER,OACE,gCACE,qBAAKhtD,UAAWD,EAAQ8a,aAAxB,SACE,oBAAI7a,UAAWD,EAAQgwD,QAAvB,4BAEF,mBAAG/vD,UAAWD,EAAQitE,UAAWzgE,MAAO,CAAE1G,aAAc,IAAxD,yEAIA,sBAAK7F,UAAS,WAAMD,EAAQq6E,cAAd,sBAAd,UACE,cAAC,GAAD,CACEzD,eAAgB52E,EAChBitD,SAAuB,OAAbA,EACV6B,sBAAuB,kBAAM,EAAKA,sBAAsB,SAE1D,cAAC,GAAD,CACElpB,IAAK,CACHtmC,KAAM,qBACN4jB,KAAM,qBAAK9d,IAAI,0CAA0CC,IAAI,GAAGpF,UAAWD,EAAQs6E,UACnFl3D,YAAa,2CAEf6pC,SAAuB,cAAbA,EACVvtD,SAAU,kBAAM,EAAKovD,sBAAsB,cAP7C,SAQE,cAAC,GAAD,MAEF,cAAC,GAAD,CACElpB,IAAK,CACHtmC,KAAM,aACN4jB,KAAM,qBAAK9d,IAAI,kCAAkCC,IAAI,GAAGpF,UAAWD,EAAQs6E,UAC3El3D,YAAa,uFAEf6pC,SAAuB,OAAbA,EACVvtD,SAAU,kBAAM,EAAKovD,sBAAsB,OAP7C,SAQE,cAAC,GAAD,CAA+B8nB,eAAgB52E,MAEjD,cAAC,GAAD,CACE4lC,IAAK,CACHtmC,KAAM,QACN4jB,KAAM,qBAAK9d,IAAI,8BAA8BC,IAAI,GAAGpF,UAAWD,EAAQs6E,UACvEl3D,YAAa,qBAEf6pC,SAAuB,UAAbA,EACVvtD,SAAU,kBAAM,EAAKovD,sBAAsB,UAP7C,SAQE,cAAC,GAAD,CAA0B8nB,eAAgB52E,MAG5C,cAAC,GAAD,CACE4lC,IAAK,CACHtmC,KAAM,SACN4jB,KAAM,qBAAK9d,IAAI,oCAAoCC,IAAI,GAAGpF,UAAWD,EAAQs6E,UAC7El3D,YAAa,6EAEf6pC,SAAuB,YAAbA,EACVvtD,SAAU,kBAAM,EAAKovD,sBAAsB,YAP7C,SAQE,cAAC,GAAD,MAEF,cAAC,GAAD,CACElpB,IAAK,CACHtmC,KAAM,WACN4jB,KAAM,qBAAK9d,IAAI,gCAAgCC,IAAI,GAAGpF,UAAWD,EAAQs6E,UACzEl3D,YAAa,6CAEf6pC,SAAuB,aAAbA,EACVvtD,SAAU,kBAAM,EAAKovD,sBAAsB,aAP7C,SAQE,cAAC,GAAD,gB,GApFkB/pD,IAAMC,WAgGrBtH,SAxTA,SAAAC,GAAK,MAAK,CACvBqyD,QAAS,CACPjxD,WAAY,OACZD,SAAU,OACVD,MAAO,UACPL,WAAY,qBACZJ,OAAQ,WAEV6uE,UAAW,CACTzuE,WAAY,OACZM,SAAU,GACVD,MAAO,WAET80C,MAAO,CACL7X,aAAc,oBACdogB,cAAe,IAEjBh+C,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAO,WAETq2B,YAAa,CACX52B,OAAQ,oBACRC,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXzC,MAAO,SAETmmC,IAAK,CACHt+B,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oBACRG,UAAW,aACXF,aAAc,GACdM,MAAO,UACPR,QAAS,WACTL,MAAO,eAET4wE,UAAW,CACT/oE,UAAW,GACXtF,OAAQ,UACRjC,OAAQ,oCACRG,UAAW,aACXF,aAAc,GACdM,MAAO,0BACPR,QAAS,WACTL,MAAO,eAET2yE,MAAO,CACLtyE,QAAS,aACTD,OAAQ,WACRuD,UAAW,uCACXpD,aAAc,GACdsnB,UAAW,OACX7mB,gBAAiB,QACjBhB,MAAO,KAETu8E,IAAK,CACHz8E,QAAS,OACTE,MAAO,IACP6H,UAAW,IAEb20E,OAAQ,CACNj5E,WAAY,0BACZpD,OAAQ,EACRH,MAAO,GACP6H,UAAW,EACXtH,aAAc,EACdoa,YAAa,IAEf8hE,SAAU,CACRl5E,WAAY,UACZzC,SAAU,OACVC,WAAY,MACZT,OAAQ,oBACRO,MAAO,UACPN,aAAc,OACdF,QAAS,WACTkC,OAAQ,UACR/B,WAAY,sBAEdk8E,UAAW,CACT77E,MAAO,UACPoe,eAAgB,YAChB3e,OAAQ,OACRiD,WAAY,cACZlD,QAAS,IACTkC,OAAQ,UACRzB,SAAU,OACVC,WAAY,OAEd2U,UAAW,CACT5N,aAAc,QAEhBu0E,cAAc,cACZv8E,QAAS,OACTC,cAAe,SACfwH,eAAgB,aAChBO,aAAc,IACd9H,MAAO,sBAEN,4BAA8B,CAC7BA,MAAO,sBAGX+oB,KAAM,CACJ/nB,gBAAiB,UACjB2C,UAAW,uCACXpD,aAAc,OACdF,QAAS,OACTP,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZzH,cAAe,SACfqL,UAAW,OAEbuxE,aAAc,CACZxiE,QAAS,KACT5X,OAAQ,eAEVq6E,QAAS,CACPp6E,SAAU,OACVrC,OAAQ,QAEVypE,UAAW,CACTvpE,QAAS,OACTy9B,aAAc,oBACd19B,OAAQ,WACRI,WAAY,mBACZM,SAAU,OACVC,WAAY,OAEd87E,QAAS,CACPh8E,MAAO,UACPP,OAAQ,oBACRC,aAAc,OACdF,QAAS,WACTS,SAAU,OACVN,WAAY,mBACZO,WAAY,MACZwB,OAAQ,WAEVu6E,gBAAiB,CACfv6E,OAAQ,cACR1B,MAAO,UACPD,YAAa,WAEfkc,aAAc,CACZhd,QAAS,OACTyH,eAAgB,iBAElBuxE,SAAU,CACRtiC,UAAW,IACX12C,QAAS,OACTC,cAAe,SACfyH,WAAY,SACZD,eAAgB,UAElBwyE,kBAAmB,CACjB/5E,MAAO,QAETs8E,QAAS,CACP95E,SAAU,IAEZ,UAAW,CACT,qBAAsB,CACpBF,IAAK,iBACLmF,OAAQ,kBAEV,uCAAwC,CACtC,qBAAsB,CACpBzH,MAAO,oBAGX,sBAAuB,CACrBsD,WAAY,QAEd,8BAA+B,CAC7BzC,MAAO,WAET,wBAAyB,CACvByC,WAAY,QAEd,gBAAiB,CACfs+C,WAAY,GAEd,kBAAmB,CACjBzhD,OAAQ,IAEV,8BAA+B,CAC7BsH,OAAQ,iBACRnF,IAAK,mBAEP,+BAAgC,CAC9BzB,MAAO,WAET,8BAA+B,CAC7BA,MAAO,sBAET,cAAe,CACboe,eAAgB,OAChBpe,MAAO,eAqGqB,CAAEO,WAAW,GAAhC1B,CAAwC08E,IC/SjDW,G,4JACJ,WACE,MAA2Bn/E,KAAKyG,MAAxBrC,EAAR,EAAQA,QAASwM,EAAjB,EAAiBA,MAEjB,OACE,qBACEA,OACG5Q,KAAKyG,MAAM0S,MAAQ,GAAK,IAAM,EAA/B,aACMxW,aAAc,IAAOiO,GAD3B,aAGIjL,WAAY,0BACZhD,aAAc,IACXiO,GAGTtL,QAAStF,KAAKyG,MAAMnB,QACpBjB,UAAWD,EAAQg7E,SAXrB,SAYGp/E,KAAKyG,MAAM+b,e,GAjBGrZ,IAAMC,WAuBdtH,SAxCA,SAAAC,GAAK,MAAK,CACvBq9E,SAAU,CAMR78E,OAAQ,GACRE,QAAS,GACTS,SAAU,GACVhB,QAAS,OACTU,WAAY,mBACZK,MAAO,UACP0G,eAAgB,oBA2Bc,CAAEnG,WAAW,GAAhC1B,CAAwCq9E,ICxBjDE,G,4JACJ,WACE,MAA4Br/E,KAAKyG,MAAzBrC,EAAR,EAAQA,QAASsE,EAAjB,EAAiBA,OACjB,OACE,qBAAKrE,UAAWD,EAAQk7E,UAAW1uE,MAAOlI,EAA1C,SACG1I,KAAKyG,MAAM+b,e,GALIrZ,IAAMC,WAWftH,SA3BA,iBAAO,CACpBw9E,UAAW,CACTC,SAAU,EACV/xE,UAAW,EACXtL,QAAS,OACTid,UAAW,YACXvV,WAAY,SACZ,eAAgB,CACdhF,SAAU,IAEZ,sBAAuB,CACrBA,SAAU,SAgBD9C,CAAmBu9E,IC4C5BG,G,4MACJr4E,MAAQ,CACNspB,KAAM,EACNvgB,MAAM,EACNgoB,YAAa,I,4CAGf,WACE,MAA8Bl4B,KAAKyG,MAA3BrC,EAAR,EAAQA,QAASoe,EAAjB,EAAiBA,SACTqoB,EAAW7qC,KAAKyG,MAAhBokC,OAER,OACE,qBAAKxmC,UAAWD,EAAQwwD,aAAxB,SACE,qBAAKvwD,UAAWD,EAAQs0B,MAAxB,SACE,gCACE,qBAAKr0B,UAAWD,EAAQgxD,YAAxB,SACGvqB,EAAO3wB,KAAI,SAAChU,EAAOiT,GAClB,OACE,sBAEE9U,UAAWD,EAAQq7E,eACnB7uE,MAAO,CAAEhM,SAAUsB,EAAMtB,UAH3B,UAIoB,kBAAVsB,GACN,qBAAiB7B,UAAWD,EAAQ8B,MAApC,SACGA,GADOiT,GAIM,kBAAVjT,IAAuBA,EAAMoc,aACnC,qBAAiBje,UAAWD,EAAQ8B,MAApC,SACGA,EAAMA,OADCiT,GAIM,kBAAVjT,GAAsBA,EAAMoc,aAClC,gCACE,qBAAKje,UAAWD,EAAQ8B,MAAxB,SACGA,EAAMA,OAD2B4Y,QAGpC,cAAC,KAAD,CACEza,UAAWD,EAAQqY,QACnBC,MAAM,SACNlc,KAAK,QACLmc,OAAO,QACPlZ,GAAI,gBALN,SAMGyC,EAAMoc,cAET,qBACE1R,MAAO,CAAEjM,OAAQ,UAAW+6E,YAAa,OACzC,cACA,WAAU,gBACVl2E,IAAI,0CACJC,IAAI,mBA/BL0P,QAuCZqJ,EACD,qBAAKne,UAAWD,EAAQ+7B,OAAxB,SACGngC,KAAKyG,MAAMk5E,iC,GA5DNx2E,IAAMC,WAqEXC,eAAWvH,MAzIX,SAAAC,GAAK,MAAK,CACvBqzD,YAAa,CACXl1B,aAAc,oBAEdE,UAAW,OACX39B,QAAS,YACTP,QAAS,OACTyH,eAAgB,iBAElB81E,eAAgB,CACdF,SAAU,EACV/xE,UAAW,EACXtL,QAAS,OACT0H,WAAY,SACZhF,SAAU,IACV,eAAgB,CACdA,SAAU,IAEZ,sBAAuB,IAIzBsB,MAAO,CACL80D,UAAW,SACX73D,WAAY,IACZuC,WAAY,SACZxC,SAAU,GACVD,MAAO,UACPf,QAAS,UAEXw2B,MAAO,CACLJ,SAAU,KAEZs8B,aAAc,CACZliC,SAAU,UACVtwB,MAAO,QAETw9E,cAAe,CACbp9E,OAAQ,EACRoC,SAAU,KAEZmmC,KAAM,CACJ7nC,SAAU,OACVme,eAAgB,YAChBpe,MAAO,UACP0B,OAAQ,UACRnC,OAAQ,GAEV8nB,MAAO,CACLloB,MAAO,IACPK,QAAS,kBAEX09B,OAAQ,CACNj+B,QAAS,OACTyH,eAAgB,YAElB8S,QAAS,CACP7X,SAAU,MACVxC,MAAO,QACPM,OAAQ,oBACRG,UAAW,aACXkD,UAAW,4CACXpD,aAAc,OACdoH,OAAQ,KACRwS,QAAS,MAyEgC,CAAE/Y,WAAW,GAAhC1B,CAAwC09E,KC5IrDK,GAAS,SAAAp5E,GACpB,OAAO,cAAC,KAAD,eAAeA,KCDXq5E,GAAc,SAAAr5E,GACzB,OAAO,cAAC,KAAD,eAAoBA,KCQhBs5E,GAAgBj+E,sBCZP,SAAAC,GAAK,MAAK,CAC9B2oB,KAAM,CACJjoB,QAAS,GACTD,OAAQ,MDSiBV,EANhB,SAAA2E,GACX,IAAQrC,EAAYqC,EAAZrC,QAER,OAAO,cAAC,KAAD,aAAkBC,UAAWD,EAAQsmB,MAAUjkB,OE6ClDu5E,G,4MACJ74E,MAAQ,CACN+I,MAAM,G,EAGRue,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,EAGxB+vE,OAAS,WACP,EAAKx5E,MAAMw5E,OAAO,EAAKx5E,MAAMhD,GAAI,EAAKgD,MAAM01B,gBAC5C,EAAKx1B,SAAS,CAAEuJ,MAAM,K,4CAGxB,WAAU,IAAD,OACC9L,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,sBAAKwM,MAAO,CAAEpO,OAAQ,UAAtB,UACE,qBAAK8C,QAAS,kBAAM,EAAKmpB,cAAzB,SACE,mBACEpb,MAAI,EACJzC,MAAO,CACL3N,MAAO,MACPoe,eAAgB,YAChB1c,OAAQ,WALZ,sBAUF,eAAC,GAAD,CACEitB,WAAY,GACZ1hB,KAAMlQ,KAAKmH,MAAM+I,KACjB2hB,aAAW,EACXxH,QAASrqB,KAAK0uB,YACd,kBAAgB,2BAChB,mBAAiB,iCANnB,UAOE,cAAC,GAAD,CAAawxD,mBAAiB,EAACz8E,GAAG,2BAAlC,SACE,cAAC,KAAD,CAAYsN,UAAU,KAAKwe,QAAQ,KAAnC,SACG,+CACCvvB,KAAKyG,MAAM+D,MACX,SAGN,eAAC,GAAD,WACE,cAAC,KAAD,CACEnG,UAAS,UAAKD,EAAQqB,OAAb,gBACTH,QAAStF,KAAKigF,OACdh9E,MAAM,UAHR,oBAMA,cAAC,KAAD,CACEoB,UAAS,UAAKD,EAAQqB,OAAb,iBACTH,QAAStF,KAAK0uB,YAFhB,iC,GAvDevlB,IAAMC,WAyElB+2E,GAFYr+E,sBAhHZ,SAAAC,GAAK,MAAK,CACvBuoB,MAAO,CACLloB,MAA4B,GAArBL,EAAM4tB,QAAQC,KACrBxsB,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CvkB,UAAWhE,EAAMyoB,QAAQ,GACzB/nB,QAA8B,EAArBV,EAAM4tB,QAAQC,MAEzBnC,KAAM,CACJ1nB,UAAW,uCACXpD,aAAc,IAEhB8C,OAAQ,CACNE,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdM,MAAO,QACPL,WAAY,qBACZ,aAAc,CACZJ,OAAQ,eAGZ,UAAW,CACT,oCAAqC,CACnCuD,UAAW,uCACXpD,aAAc,IAEhB,qBAAsB,CACpBgD,WAAY,QACZ1C,MAAO,WAET,sBAAuB,CACrBA,MAAO,QACP0C,WAAY,WAEd,gBAAiB,CACfA,WAAY,QACZ1C,MAAO,eA4EcnB,CAAmBk+E,ICvCxCI,G,4MACJj5E,MAAQ,CACNqD,MAAO,GACPpE,KAAM,GACNkM,KAAMf,GAAa,GAAGxR,O,gDAGxB,SAAWA,GACTC,KAAK2G,SAAS,CACZ2L,KAAMvS,M,wBAIV,WACE,IAAIsgF,GAAY,EAChB,GAGO,MAFLrgF,KAAKmH,MAAMqD,MAAM2E,MACf,6DAEF,CACA,IAAMmxE,EAAgBtgF,KAAKmH,MAAMqD,MAAMvK,QAAQ,KAAO,EAChDsgF,EAAUvgF,KAAKmH,MAAMqD,MAAM0T,MAC/BoiE,EACAtgF,KAAKmH,MAAMqD,MAAMlE,SAEbi6E,EAAQhuE,SAAS,OAAUguE,EAAQhuE,SAAS,OAAO8tE,GAAY,GAIvE,OADArgF,KAAK2G,SAAS,CAAEiE,YAAay1E,IACtBA,I,sBAGT,WAAY,IhaRWtuE,EAAOxJ,EAAMmI,EgaQzB,OACT,GAAI1Q,KAAKwgF,aAAc,CACrB,IAAM/uE,EAAS,CACbgvE,aAAczgF,KAAKmH,MAAMmL,KACzBouE,cAAe1gF,KAAKmH,MAAMqD,OhaZTuH,EgacV/R,KAAKyG,MAAMyM,IAAIzP,GhadE8E,EgacEkJ,EhadIf,EgacI,WAClC,EAAKjK,MAAMylE,aACXnwC,GAAiB,EAAKt1B,MAAMyM,IAAIzP,KhaftC8D,MAAM/F,EAAW,QAAUuQ,EAAQ,YAAa,CAC9CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU5C,KAEpBV,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,WACA6I,GAAUA,IACdV,GAAa,kCAEdvH,OAAM,SAASrB,GACdiJ,GAAW,4B,+BgaQf,SAAkB9L,GAChBvE,KAAK2G,SAAS,CACZ6D,MAAOjG,EAAEsC,OAAO9G,MAAMsG,W,oBAI1B,WAAU,IAAD,OACCjC,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,gCACE,mBAAGC,UAAWD,EAAQiwD,aAAtB,mBACA,qBACEhwD,UAAWD,EAAQk1B,YACnB1oB,MAAO,CAAE5N,YAAahD,KAAKmH,MAAMyD,WAAa,MAAQ,WAFxD,SAGE,uBACEwuB,UAAW,IACX/0B,UAAWD,EAAQ9B,MACnBvC,MAAOC,KAAKmH,MAAMqD,MAClB5G,YAAY,qBACZE,SAAU,SAAAS,GAAC,OAAI,EAAK4uD,kBAAkB5uD,QAGzCvE,KAAKmH,MAAMyD,YACV,mBACEgG,MAAO,CACL3N,MAAO,UACPiH,aAAc,QACdhH,SAAU,IAJd,gCASF,mBAAGmB,UAAWD,EAAQiwD,aAAtB,kBACA,cAAC,KAAD,CACEt+B,QAASxkB,GACTs8D,aAAW,EACX9tE,MAAOwR,GAAac,MAAK,SAAAqiE,GAAG,OAAIA,EAAI30E,QAAU,EAAKoH,MAAMmL,QACzDquE,WAAW,EACX78E,SAAU,SAAA6J,GAAK,OAAI,EAAKizE,WAAWjzE,EAAM5N,QACzCguE,YAAY,IAEd,wBAAQzoE,QAAStF,KAAKi8E,SAASpgC,KAAK77C,MAAOqE,UAAWD,EAAQ8D,KAA9D,0B,GAtFiBiB,IAAMC,WAkGhBC,eAAWvH,sBA/KX,SAAAC,GAAK,MAAK,CACvB8+E,eAAgB,CACd3+E,QAAS,OACTC,cAAe,eAEjBsyD,YAAa,CACXlyD,OAAQ,GACRE,QAAS,UAEXiyD,UAAW,CACTtyC,WAAYrgB,EAAM4tB,QAAQC,KAC1B7S,YAAahb,EAAM4tB,QAAQC,KAC3BxtB,MAAO,IACPoL,UAAW,OAEbmnD,SAAU,CACRnyD,OAA6B,EAArBT,EAAM4tB,QAAQC,MAExBlF,KAAM,CACJtoB,MAAO,OACP6H,UAAgC,EAArBlI,EAAM4tB,QAAQC,MAE3B8I,MAAO,CACLJ,SAAU,KAEZs8B,aAAc,CACZ9kC,UAAW,QAEbxtB,MAAO,CACLG,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTX,MAAO,MACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAO,WAETqxD,MAAO,CACLlyD,MAAO,MACPuC,OAAQ,WAEV20B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZpwB,KAAM,CACJzF,QAAS,YACTC,OAAQ,EACRiD,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdgC,OAAQ,UACR1B,MAAO,QACPT,OAAQ,cACRN,QAAS,SAEXmyD,aAAc,CACZnxD,SAAU,GACVD,MAAO,UACPE,WAAY,IACZ8G,UAAW,IAEbsoD,KAAM,CACJrwD,QAAS,WAsGaJ,CAAmBs+E,KCtFvCU,G,4MACJ35E,MAAQ,CACN+I,MAAM,EACN6wE,WAAY,I,EAEdC,aAAe,SAACv9E,EAAI04B,GAClBF,GAAkB,EAAKx1B,MAAM0I,MAAMC,OAAO2C,MAAOtO,EAAI04B,I,EAEvD8kD,gBAAkB,WAChB,EAAKt6E,SAAS,CAAEuJ,MAAM,K,uDAGxB,WACE6rB,GAAiB/7B,KAAKyG,MAAM0I,MAAMC,OAAO2C,S,8BAG3C,SAAiBhS,GACfC,KAAK2G,SAAS,CAAEo6E,WAAYhhF,M,wBAG9B,SAAW0D,EAAI04B,EAAgB+kD,IlUjF1B,SAA+BnvE,EAAOmqB,EAAYC,EAAgB7pB,GACvE,IAAMgB,EACW,OAAf4oB,EAAA,UACO16B,EADP,wBAC+BuQ,EAD/B,yBACqDoqB,EADrD,iBAC4E7pB,GAD5E,UAEO9Q,EAFP,wBAE+BuQ,EAF/B,YAEwCmqB,EAFxC,iBAE2D5pB,GAE7D/K,MAAM+L,EAAK,CACT7L,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,UAEPK,MAAK,SAAAC,GACJ,OAAOA,KAERD,MAAK,WACJk0B,GAAiBhqB,GACjB/B,GAAa,iDAAkD,QAEhEvH,OAAM,SAASrB,GACdiJ,GAAW,yBkU+Db8wE,CACEnhF,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxBtO,EACA04B,EACA+kD,K,oCAIJ,SAAuBz9E,EAAI29E,IlUnEtB,SACLrvE,EACAmqB,EACAklD,GAEA75E,MACE/F,EACE,gBACAuQ,EACA,IACAmqB,EACA,yBACAklD,EACF,CACE35E,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,UAGTK,MAAK,SAAAC,GACJ,OAAOA,KAERD,MAAK,WACJk0B,GAAiBhqB,GACjB/B,GAAa,iDAAkD,QAEhEvH,OAAM,SAASrB,GACdiJ,GAAW,yBkUyCbgxE,CACErhF,KAAKyG,MAAM0I,MAAMC,OAAO2C,MACxBtO,EACA29E,K,oBAIJ,WAAU,IAAD,OACDplD,EAAeh8B,KAAKyG,MAAMu1B,aACxB53B,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,gCACE,cAAC,GAAD,oBAEA,sBACEwM,MAAO,CACL1O,QAAS,OACTyH,eAAgB,gBAChBC,WAAY,SACZM,aAAc,IALlB,UAOE,qBAAK0G,MAAO,CAAE1O,QAAS,OAAQ0H,WAAY,UAA3C,SACE,sBAAKvF,UAAWD,EAAQk1B,YAAxB,UACE,uBACEj1B,UAAWD,EAAQ9B,MACnBsB,YAAY,mCACZE,SAAU,SAAA6J,GAAK,OAAI,EAAK2zE,iBAAiB3zE,EAAM9G,OAAO9G,UAExD,cAAC,GAAD,CAAYqC,MAAM,KAAKG,OAAO,KAAKU,MAAM,iBAG7C,cAAC,KAAD,CACEoB,UAAWD,EAAQmsE,aACnBjrE,QAAS,kBAAM,EAAKqB,SAAS,CAAEuJ,MAAM,KAFvC,SAGE,mBAAG7L,UAAWD,EAAQm9E,iBAAtB,kCAGJ,cAAC,GAAD,CACE12C,OAAQ,CACN,CAAE3kC,MAAO,YAAatB,SAAU,KAChC,CAAEsB,MAAO,QAAStB,SAAU,KAC5B,CAAEsB,MAAO,OAAQtB,SAAU,KAC3B,CACEsB,MAAO,qBACPoc,YAlJZ,gEAmJY1d,SAAU,KAEZ,UAVJ,SAYKo3B,GAAgBA,EAAa11B,OAG9B01B,EACG3iB,MAAK,SAAAlH,GAAE,OAAMA,EAAGqvE,UAAiB,GAAJ,KAC7BtvE,QACC,SAAAC,GAAE,eAGsD,KAFpD,OAAFA,QAAE,IAAFA,GAAA,UAAAA,EAAIzO,YAAJ,mBACIua,qBADJ,eAEIhe,QAAQ,EAAKkH,MAAM45E,WAAW9iE,mBAErC/D,KAAI,SAACunE,EAAUtoE,GAAX,OACH,eAAC,GAAD,CAAuBA,MAAOA,EAA9B,UACGujB,QAAQC,IAAI8kD,GACb,eAAC,GAAD,CACE/4E,OAAQ,CACN9D,SAAU,IACV1C,QAAS,OACT0H,WAAY,UAJhB,UAME,sBAAKvF,UAAWD,EAAQs9E,mBAAxB,UACE,qBACEr9E,UAAWD,EAAQ6tE,UACnBzoE,KAAa,OAARi4E,QAAQ,IAARA,OAAA,EAAAA,EAAUrjB,WAhLjB,yCAiLE30D,IAAI,eAEN,sBACEpF,UAAWD,EAAQu9E,WACnB/wE,MAAO,CACLjL,WAAY87E,EAASG,OAAS,UAAY,gBAI/CH,EAASD,UACR,mBAAGn9E,UAAWD,EAAQy9E,cAAtB,SACE,4BAAIJ,EAAS/9E,SAGf,mBAAGW,UAAWD,EAAQy9E,cAAtB,SAAsCJ,EAAS/9E,UAGnD,cAAC,GAAD,CAAWgF,OAAQ,CAAE9D,SAAU,KAA/B,SACE,mBACEP,UAAWD,EAAQy9E,cACnBjxE,MAAO,CACLstB,aAAc,WACdxL,SAAU,SACVtwB,MAAO,OACP+7B,WAAY,UAEdj4B,MAAOu7E,EAASj3E,MARlB,SASGi3E,EAASj3E,UAGd,cAAC,GAAD,CAAW9B,OAAQ,CAAE9D,SAAU,KAA/B,SACE,qBACEP,UAAWD,EAAQy9E,cACnBjxE,MAAO,CAAExO,MAAO,QAFlB,SAGGq/E,EAAS1jB,UAAY,EAAKt3D,MAAMoL,UAAUpO,GACzC,cAAC,KAAD,CACEsyB,QAASxkB,GACTxR,MAAOwR,GAAac,MAClB,SAAAZ,GAAM,OAAIA,EAAO1R,QAAU0hF,EAASnvE,QAEtC5O,KAAK,iBACLi9E,WAAW,EACX78E,SAAU,SAAAg+E,GAAC,OACT,EAAKlB,WACHa,EAASh+E,GACTg+E,EAAStlD,eACT2lD,EAAE/hF,QAGNguE,YAAY,IAGd,mBAAG1pE,UAAWD,EAAQy9E,cAAtB,SAEItwE,GAAac,MACX,SAAAZ,GAAM,OAAIA,EAAO1R,QAAU0hF,EAASnvE,QACpCjP,YAMZ,cAAC,GAAD,CACEqF,OAAQ,CACN9D,SAAU,IACV1C,QAAS,OACTyH,eAAgB,UAJpB,SAME,8BACyB,GAAtB83E,EAASD,UACR,qBAAKn9E,UAAWD,EAAQy9E,cAAxB,SACE,cAAC,KAAD,CACEx9E,UAAU,WACV2tB,QACE,cAAC,KAAD,CACEluB,SAAU,SAAC6J,EAAOgL,GAAR,OACR,EAAKopE,uBACHN,EAASh+E,GACTkV,IAGJA,QAAS8oE,EAASL,qBAClBn+E,MAAM,gBAKZ,SAGR,cAAC,GAAD,UACGw+E,EAAS1jB,UAAY,EAAKt3D,MAAMoL,UAAUpO,GACzC,qBAAKY,UAAWD,EAAQy9E,cAAxB,SACE,cAAC,GAAD,CACEr3E,MAAOi3E,EAASj3E,MAChB/G,GAAIg+E,EAASh+E,GACb04B,eAAgBslD,EAAStlD,eACzB8jD,OAAQ,EAAKe,iBAGf,SAhHOliE,WAXnB,0BAiIJ,cAAC,GAAD,CACE1a,QAAS,CAAEkmB,MAAOlmB,EAAQkmB,OAC1Bpa,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAKihF,gBACd/6E,MAAM,kBAJR,SAKE,cAAC,GAAD,CACEgN,IAAK,CAAEzP,GAAIzD,KAAKyG,MAAM0I,MAAMC,OAAO2C,OACnCm6D,WAAYlsE,KAAKihF,2B,GAxNT93E,IAAMC,WAqOXC,eACbvH,MA7Sa,SAAAC,GAAK,MAAK,CACvBu3B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,KAEZh2B,MAAO,CACLF,MAAO,OACPK,QAAS,OACTC,OAAQ,OACRK,QAAS,OACTJ,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,SAEnBmtE,aAAc,CACZ5qE,WAAY,4DACZI,UAAW,0CACXpD,aAAc,GACdJ,OAAQ,GACRQ,QAAS,QAEXw+E,iBAAkB,CAChBt+E,MAAO,QACPT,OAAQ,EACRW,WAAY,IACZD,SAAU,GACVu1B,cAAe,OACf71B,WAAY,oBAEd0nB,MAAO,CACL7nB,QAAS,kBAEXo/E,cAAe,CACbr/E,OAAQ,UAEVk/E,mBAAoB,CAClBn/E,OAAQ,GACR6O,KAAM,WACNnP,SAAU,WACV8a,YAAa,GAEfk1D,UAAW,CACT/vE,QAAS,QACTE,MAAO,OACPG,OAAQ,OACRsiE,UAAW,QACXqN,eAAgB,MAChBvvE,aAAc,MACd+vB,SAAU,UAEZivD,WAAY,CACV1/E,SAAU,WACVY,UAAW,aACXT,MAAO,GACPG,OAAQ,GACRG,OAAQ,oBACRC,aAAc,MACdkH,OAAQ,EACRtG,MAAO,MA0OU,CAAEC,WAAW,GAAhC1B,CAAwC4X,aANlB,SAAAvS,GAAK,MAAK,CAChC60B,aAAc70B,EAAM60B,aACpBnqB,UAAW1K,EAAM0K,aAIuB6H,CAAyBonE,MCxUtDp4E,GAAS,SAAA3G,GAAK,MAAK,CAC9B6vC,QAAS,GACTglB,cAAe,CACb10D,QAAS,OACTC,cAAe,MACfyH,WAAY,SACZ,OAAQ,CACNpH,OAAQ,IACRU,SAAU,OACVN,WAAY,OACZK,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,aAGjCu3D,kBAAmB,CACjB5+E,gBAAiB,QACjBH,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BpD,OAAQ,aAAeX,EAAM6D,QAAQ4oE,eAAeC,QACpD9rE,aAAc,GACdF,QAAS,GACTP,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChB9E,UAAW,GACXud,WAAY,OACZzd,OAAQ,WAEVs9E,QAAS,CACPh/E,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B3D,QAAS,OACTP,QAAS,OACTyH,eAAgB,gBAChBzG,SAAU,OACVN,WAAY,QAEds/E,WAAY,CACVj/E,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B3D,QAAS,OACTP,QAAS,OACTyH,eAAgB,gBAChBzG,SAAU,OACVN,WAAY,OACZ+C,WAAY,0BACZhD,aAAc,QAEhBw/E,kBAAmB,CACjBl/E,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5BzC,OAAQ,UACRzB,SAAU,OACVN,WAAY,QAEdw/E,uBAAwB,CACtBl/E,SAAU,OACVC,WAAY,IACZP,WAAY,OACZK,MAAOlB,EAAM6D,QAAQQ,KAAKuc,OAC1BtgB,UAAW,UAEbggF,sBAAuB,CACrBp4E,UAAW,OACX/G,SAAU,OACVN,WAAY,OACZK,MAAOlB,EAAM6D,QAAQQ,KAAKuc,QAE5B2/D,cAAe,CACbr/E,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5B8C,aAAc,QACdhH,SAAU,IAEZy1D,aAAc,CACZl2D,QAAS,YACTC,OAAQ,EACRiD,WAAY5D,EAAM6D,QAAQ4oE,eAAeC,QACzC1oE,UAAW,0CACXpD,aAAc,GACdgC,OAAQ,UACR1B,MAAO,QACPT,OAAQ,cACRN,QAAS,SAEXooB,MAAO,CACL7nB,QAAS,kBAEX2qD,cAAe,CACblrD,QAAS,OACTyH,eAAgB,eAChBlH,QAAS,kBAEX8/E,kBAAmB,CACjBlgF,UAAW,SACXG,OAAQ,gBACRU,SAAU,OACVN,WAAY,OACZK,MAAOlB,EAAM6D,QAAQQ,KAAKuc,UCzEf7gB,wBAAW4G,GAAQ,CAAElF,WAAW,GAAhC1B,EAdI,SAAA2E,GACjB,IAAQrC,EAAqDqC,EAArDrC,QAASo+E,EAA4C/7E,EAA5C+7E,cAAeC,EAA6Bh8E,EAA7Bg8E,yBAChC,OACE,sBAAKp+E,UAAWD,EAAQwyD,cAAxB,UACE,2CACC6rB,EAA2B,GAC1B,qBAAKp+E,UAAWD,EAAQ49E,kBAAmB18E,QAASk9E,EAApD,kCCMO1gF,wBAAW4G,GAAQ,CAAElF,WAAW,GAAhC1B,EAZiB,SAAA2E,GAC9B,IAAQ+b,EAAoB/b,EAApB+b,SAAUtc,EAAUO,EAAVP,MAElB,OACE,gCACE,4BAAIA,IACJ,uBACCsc,QC2CQ1gB,wBAAW4G,GAAQ,CAAElF,WAAW,GAAhC1B,EAhDC,SAAA2E,GACd,IACErC,EAMEqC,EANFrC,QACAgP,EAKE3M,EALF2M,SACA+F,EAIE1S,EAJF0S,MACAupE,EAGEj8E,EAHFi8E,iBACAC,EAEEl8E,EAFFk8E,YACAC,EACEn8E,EADFm8E,eAEIC,EAAS1pE,EAAQ,IAAM,EAE7B,OACE,sBAAK9U,UAAWw+E,EAASz+E,EAAQ69E,QAAU79E,EAAQ89E,WAAnD,UACE,4BAAI9uE,EAASmqB,YACXnqB,EAASopB,WACT,gCACE,mBACEl3B,QAAS,kBAAMs9E,EAAexvE,EAAS+gB,YACvC9vB,UAAWD,EAAQ+9E,kBAFrB,oBAKA,eAAC,GAAD,CACEjyE,KAAMyyE,IAAgBvvE,EAAS+gB,UAC/B9J,QAAS,kBAAMu4D,EAAe,OAFhC,UAGE,oBAAGv+E,UAAWD,EAAQm+E,kBAAtB,6CACmCnvE,EAASmqB,SAD5C,gBAGA,sBAAKl5B,UAAWD,EAAQgpD,cAAxB,UACE,cAAC,GAAD,CACE9nD,QAAS,WACPo9E,EAAiBtvE,GACjBwvE,GAAe,IAEjBhpD,OAAK,EACL1zB,MAAM,WAER,cAAC,GAAD,CACEZ,QAAS,kBAAMs9E,EAAe,OAC9B18E,MAAM,0BCpChB48E,G,kDACJ,WAAYr8E,GAAQ,IAAD,8BACjB,cAAMA,IAQRskD,uBAAyB,SAAA33C,GACvB,EAAKzM,SAAS,CACZivE,iBAAkBxiE,EAClB2vE,oBAAoB,EACpBT,eAAe,KAXjB,EAAKn7E,MAAQ,CACXyuE,iBAAkB,KAClBmN,oBAAoB,EACpBT,eAAe,GALA,E,wDAiBnB,WAAwB,IvU8GEvwE,EAAOwhD,EwU9HMngD,EDgBhB,OAErB,GADApT,KAAKgjF,+BACDhjF,KAAKmH,MAAM47E,mBAAoB,CACjC,IAAMxqB,EClBH,CACL90D,IAFqC2P,EDmBQpT,KAAKmH,MAAMyuE,kBCjB3CnyE,GACb0wB,UAAW/gB,EAAS+gB,UACpBoJ,SAAUnqB,EAASmqB,UDgBjBv9B,KAAKyG,MAAMw8E,iBAAgB,IvU0GLlxE,EuUzGV/R,KAAKyG,MAAMmM,UAAUnP,GvUyGJ8vD,EuUzGQgF,EAASpkC,UvU0G3C5sB,MAAM,GAAD,OACP/F,EADO,gBACSuQ,EADT,kCACwCwhD,GAClD,CACE9rD,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,SAGTK,MAAK,SAAAC,GAiBJ,OAhBIA,EAASC,GACXiI,GAAa,8BAA+B,KAE5ClI,EACGS,OACAV,MAAK,SAAAX,GACAA,EAAasB,SACf6H,GAAWnJ,EAAasB,YAG3BC,OAAM,WACL4H,GACE,8EAIDvI,KAERW,OAAM,SAAArB,GAAK,OAAIs1B,QAAQC,IAAIv1B,OuUrI+BS,MACvD,SAAAC,GACE,EAAKrB,MAAMw8E,iBAAgB,GACvBn7E,EAASC,IACX,EAAKtB,MAAMy8E,uBAAuB3qB,MAIxCv4D,KAAKyG,MAAM08E,2B,0CAIf,WACsC,OAAhCnjF,KAAKmH,MAAMyuE,iBACb51E,KAAK2G,SAAS,CACZo8E,oBAAoB,EACpBT,eAAe,IAGjBtiF,KAAK2G,SAAS,CACZo8E,oBAAoB,EACpBT,eAAe,M,oBAKrB,WACE,IC3DsBvvB,ED2Dd6iB,EAAqB51E,KAAKmH,MAA1ByuE,iBACR,EAAwC51E,KAAKyG,MAArCrC,EAAR,EAAQA,QAASg/E,EAAjB,EAAiBA,mBAEjB,OACE,gCACE,oBAAI/+E,UAAWD,EAAQg+E,uBAAvB,8BACA,mBAAG/9E,UAAWD,EAAQi+E,sBAAtB,sBACA,cAAC,KAAD,CACEtiF,MAAO61E,EACPhyE,YAAa,sBACbE,SAAU9D,KAAK+qD,uBACfh1B,SCtEgBg9B,EDsEIqwB,ECrEJ,aAAOrwB,GACL74C,KAAI,SAAA9G,GAAQ,MAAK,CACzCrT,MAAOqT,EAAS+gB,UAChB9wB,MAAO+P,EAASmqB,SAChB95B,GAAI2P,EAAS3P,GACb0wB,UAAW/gB,EAAS+gB,UACpBoJ,SAAUnqB,EAASmqB,gBDiEdv9B,KAAKmH,MAAMm7E,eACV,mBAAGj+E,UAAWD,EAAQk+E,cAAtB,sCAEF,wBACEh9E,QAAStF,KAAKqjF,qBAAqBxnC,KAAK77C,MACxCqE,UAAWD,EAAQu0D,aAFrB,wB,GAlEuBxvD,IAAMC,WA+EtBtH,wBAAW4G,GAAQ,CAAElF,WAAW,GAAhC1B,CACb4X,aAJsB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAGjB8G,CAAyBopE,KE5ErBQ,G,kDACJ,WAAY78E,GAAQ,IAAD,8BACjB,cAAMA,IAsCRw8E,gBAAkB,SAAArB,GAChB,EAAKj7E,SAAS,CACZ48E,aAAc3B,KAzCC,EA6CnB4B,oBAAsB,SAAAzjF,GACpB,EAAK4G,SAAS,CACZ88E,iBAAkB1jF,KA/CH,EAmDnB2jF,uBAAyB,SAAA3jF,GACvB,EAAK4G,SAAS,CACZg9E,oBAAqB5jF,KArDN,EAyDnB6jF,eAAiB,SAAAxwE,GACf,IzUgG2BrB,EAAOwhD,EyUhGlC,EAA8D,EAAKpsD,MAA3D+sD,EAAR,EAAQA,uBAAwB2vB,EAAhC,EAAgCA,0BAC1BC,EAA4B5vB,EAAuBhiD,QACvD,SAAA6xE,GAAG,OAAIA,EAAI5vD,YAAc/gB,EAAS+gB,aAEpC0vD,EAA0Bv5E,KAAK8I,GAC/B,EAAK6vE,iBAAgB,IzU2FMlxE,EyUzFZ,EAAKtL,MAAMmM,UAAUnP,GzUyFF8vD,EyUzFMngD,EAAS+gB,UzU0F5C5sB,MAAM,GAAD,OACP/F,EADO,gBACSuQ,EADT,kCACwCwhD,GAClD,CACE9rD,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,WAGTK,MAAK,SAAAC,GAQJ,OAPIA,EAASC,GACXiI,GAAa,mBAAoB,KAEjCK,GACE,2EAGGvI,KAERD,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,SAAArB,GAAK,OAAIs1B,QAAQC,IAAIv1B,OyU7GgCS,MAAK,SAAAqQ,GAC/D,EAAKvR,SAAS,CACZutD,uBAAwB4vB,EACxBD,0BAA2BA,EAC3BN,cAAc,QArED,EA0EnBS,iBAAmB,SAAA5wE,GACjB,MAA8D,EAAKjM,MAA3D+sD,EAAR,EAAQA,uBAAwB2vB,EAAhC,EAAgCA,0BAKhC,IAJgB3vB,EAAuB9nC,MACrC,SAAA23D,GAAG,OAAIA,EAAI5vD,YAAc/gB,EAAS+gB,aAGtB,CACZ+/B,EAAuB5pD,KAAK8I,GAC5B,IAAM6wE,EAA+BJ,EAA0B3xE,QAC7D,SAAA6xE,GAAG,OAAIA,EAAI5vD,YAAc/gB,EAAS+gB,aAEpC,EAAKxtB,SAAS,CACZutD,uBAAwBA,EACxB2vB,0BAA2BI,MArF/B,EAAK98E,MAAQ,CACXo8E,cAAc,EACdE,kBAAkB,EAClBE,oBAAqB,KACrBO,mBAAoB,GACpBhwB,uBAAwB,GACxB2vB,0BAA2B,IARZ,E,qDAwBnB,WAAqB,IAAD,OAClBznD,GAAgBp8B,KAAKyG,MAAMmM,UAAUnP,IAAIoE,MAAK,SAAAw0B,GAC5C,GAAIA,EAAc,CAChB,IAAQC,EACND,EADMC,gBAAiBC,EACvBF,EADuBE,gBAAiB6mD,EACxC/mD,EADwC+mD,mBAG1C,EAAKz8E,SAAS,CACZu9E,mBAAoB5nD,EACpB43B,uBAAwB33B,EACxBsnD,0BAA2BT,U,oBA2DnC,WAAU,IAAD,OACP,EAKIpjF,KAAKmH,MAJP+sD,EADF,EACEA,uBACA2vB,EAFF,EAEEA,0BACAJ,EAHF,EAGEA,iBACAE,EAJF,EAIEA,oBAEMv/E,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,cAAC,IAAM+/E,SAAP,UACGnkF,KAAKmH,MAAMo8E,aACV,cAAC,GAAD,IAEA,eAAC,IAAMY,SAAP,WACE,cAAC,GAAD,CACE3B,cAAe,kBAAM,EAAKgB,qBAAoB,IAC9Cf,yBACEziF,KAAKmH,MAAM08E,0BAA0Bv9E,SAGzC,eAAC,GAAD,WACG4tD,EACEhiD,QAAO,SAAAkB,GAAQ,OAAiB,OAAbA,KACnB8G,KAAI,SAAC9G,EAAU+F,GAAX,OACH,cAAC,GAAD,CAEE/F,SAAUA,EACV+F,MAAOA,EACPupE,iBAAkB,EAAKkB,eACvBjB,YAAagB,EACbf,eAAgB,EAAKc,wBALhBtwE,EAAS3P,OAQpB,cAAC,GAAD,CACEW,QAAS,CAAEkmB,MAAOlmB,EAAQkmB,OAC1Bpa,KAAMuzE,EACNp5D,QAAS,kBAAM,EAAKm5D,qBAAoB,IACxC5yE,MAAO,CAAEqZ,UAAW,WAJtB,SAKE,cAAC,GAAD,CACEm5D,mBAAoBS,EACpBV,sBAAuB,kBAAM,EAAKK,qBAAoB,IACtDN,uBAAwBljF,KAAKgkF,iBAC7Bf,gBAAiBjjF,KAAKijF,+B,uCA3HtC,SAAgCprD,EAAWC,GACzC,OACED,EAAUq8B,wBACVr8B,EAAUq8B,yBAA2Bp8B,EAAUo8B,uBAExC,CACLA,uBAAwBr8B,EAAUq8B,wBAG/B,S,GAtBa/qD,IAAMC,WCNjBg7E,GAAiB,CAC5B,CACEvjF,KAAM,UACN6C,KAAM,UACNqN,UAAWszE,IAEb,CACExjF,KAAM,YACN6C,KAAM,YACNqN,UDoJWjP,KAAW4G,GAAQ,CAAElF,WAAW,GAAhC1B,CACb4X,aALsB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIjB8G,CAAyB4pE,MCnJzB,CACEziF,KAAM,QACN6C,KAAM,aACNqN,UAAW8iE,IAEb,CACEhzE,KAAM,QACN6C,KAAM,QACNqN,UAAW+vE,IAEb,CACEjgF,KAAM,eACN6C,KAAM,eACNqN,UAAWuzE,IAEb,CACEzjF,KAAM,aACN6C,KAAM,YACNqN,UAAWwzE,KCnBTC,G,uKACJ,WACExxE,GAAOhT,KAAKyG,MAAM0I,MAAMC,OAAO2C,S,oBAGjC,WACE,IAAMonD,EAAQ,UAAMz3D,EAAN,gBAAuB1B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAA/C,aACRqnD,EAAS,UAAM13D,EAAN,yBACf,OACE,8BACG1B,KAAKyG,MAAMmM,UACV,gCACE,cAAC,GAAD,CAAU1M,MAAM,aAChB,cAAC,GAAD,CACEizD,SAAUA,EACVC,UAAWA,EACXL,OAAQqrB,QAIZ,cAAC,GAAD,U,GApBaj7E,IAAMC,WAoCdC,eACbvH,sBAvCa,SAAAC,GAAK,MAAK,KAuCJ,CAAEyB,WAAW,GAAhC1B,CAAwC4X,aALlB,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,aAIuB8G,CAAyB8qE,M,qBC7CpDC,GAND,SAAC,GAAgB,IAAfjiE,EAAc,EAAdA,SACd,OACE,mBAAGne,UAAWD,KAAQf,MAAtB,SAA8Bmf,KCHrBkiE,GAAiB,iBACjBC,GAAwB,wBAExBC,GAAe,SAAAC,GAC1BvkF,GAAMC,SAAS,CACbC,KAAMkkF,GACNG,oBCNSC,GAA8B,8BCmBpC,SAASC,GAAahzE,EAAOizE,GAClCz9E,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,WAAoC,CACvCtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QACRyD,KAAMC,KAAKC,UAAU65E,KAEpBn9E,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJq8E,GAAar8E,EAAK6R,MAClBpK,GAAa,0BAA2B,QAEzCvH,OAAM,SAASrB,GACdiJ,GAAW,mFAIV,SAAS40E,GAAyBlzE,GACvCxK,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,gCAAyD,CAC5DtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GDzC8B,IAAAs8E,IC0CTt8E,EAAK6R,KDzClC9Z,GAAMC,SAAS,CACbC,KAAMskF,GACND,sBCyCCp8E,OAAM,SAASrB,GACdiJ,GAAW,mFAoBV,I,oBCXQ60E,GA1CuB,SAAC,GAAyB,IAAvBnlF,EAAsB,EAAtBA,MAAO+D,EAAe,EAAfA,SAC9C,EAA4BkB,mBAAmB,IAA/C,mBAAOmgF,EAAP,KAAeC,EAAf,KAeA,OACE,sBAAK/gF,UAAWD,KAAQ2rD,KAAxB,UACE,cAAC,GAAD,iCACA,cAAC,KAAD,CACE1rD,UAAWD,KAAQ0T,UACnBskC,OAlBS,SAACN,GAEd,GADAspC,EAAU,IACNtpC,EAAM,GAAGtsB,KCrBK,QDqBU,CAC1B,IAAM21D,EAAS,GACfA,EAAO76E,KAAK,yDACZ86E,EAAUD,OACL,CACL,IAAMnpC,EAAO,IAAIC,SACjBD,EAAKhxC,OAAO,OAAQ8wC,EAAM,ID0BzB,SAAoBE,EAAMtrC,GAC/BnJ,MAAM,GAAD,OAAI/F,EAAJ,oBAAgC,CACnCiG,YAAa,cACbD,OAAQ,OACRQ,QAAS,CAAEk0C,cAAe,UAAYt7C,OAAY,iBAClDqK,KAAM+wC,IAELn0C,MAAK,SAAAC,GAAQ,OAAKA,EAAS+H,WAAc9O,OAAOC,SAASqS,KAAOvL,EAASwL,IAAOxL,EAAS1B,UACzFyB,MAAK,SAAAC,GACJ4I,EAAS5I,MAEVW,OAAM,SAAArB,GACLiJ,GAAW,yBCrCXurC,CAAWI,EAAMl4C,KAUf8M,MAAO,CAAE5N,cAAemiF,EAAO7+E,Qxa9BT,Wwa2BxB,SAIGvG,EACC,qBAAKyJ,IAAKzJ,EAAO0J,IAAI,OAAOpF,UAAWD,KAAQi4C,QAE/C,sBAAKh4C,UAAWD,KAAQihF,gBAAxB,UACE,qBAAKhhF,UAAWD,KAAQg6B,SAAxB,SACE,cAAC,GAAD,CAAW77B,OAAO,OAAOH,MAAM,WAEjC,oBAAGiC,UAAWD,KAAQf,MAAtB,8BACmB,6CAEnB,mBAAGgB,UAAWD,KAAQojB,YAAtB,2CAIH29D,EAAO7+E,QAAU,mBAAGjC,UAAWD,KAAQ8C,aAAtB,SAAqCi+E,EAAO,S,UENhEG,G,4JACJ,WACE,MAAwCtlF,KAAKyG,MAArCrC,EAAR,EAAQA,QAAS80B,EAAjB,EAAiBA,YAAahzB,EAA9B,EAA8BA,MAC9B,OACE,qCACGA,GACC,mBAAG7B,UAAWD,EAAQopC,WAAtB,SACGtnC,IAGL,qBACE0K,MAAOsoB,EACP5zB,QAAStF,KAAKyG,MAAMnB,QACpBjB,UAAWD,EAAQk1B,YAHrB,SAIGt5B,KAAKyG,MAAM+b,kB,GAdKrZ,IAAMC,WAyBlBC,eAAWvH,sBAnEX,SAAAC,GAAK,MAAK,CACvBO,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAOlB,EAAM6D,QAAQC,QAAQC,MAE/B2zB,IAAK,CACH/2B,OAAQ,oBACRO,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5BhF,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,IAEby0B,YAAa,CACX52B,OAAQ,oBACRC,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,YACToC,UAAW,GACXzC,MAAO,KAETorC,WAAY,CACVtqC,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BtnB,WAAY,IACZX,OAAQ,iBA6BcV,CAAmBwjF,K,qBCZ9BC,GA/CwB,SAAC,GAAyB,IAAvBxlF,EAAsB,EAAtBA,MAAO+D,EAAe,EAAfA,SAC/C,EAA0BkB,mBAAiB,IAA3C,mBAAO/B,EAAP,KAAcuiF,EAAd,KACA,EAAgCxgF,mBAAS,MAAzC,mBAAOupB,EAAP,KAAiBk3D,EAAjB,KACMv1E,EAAOi9B,QAAQ5e,GACf9qB,EAAKyM,EAAO,qBAAkB2lB,EAEpCjQ,qBAAU,WACR4/D,EAASzlF,KACR,CAACA,IAWJ,OACE,qCACE,cAAC,GAAD,CAAcmG,MAAM,sBAAsBZ,QAN1B,SAACqI,GACnB83E,EAAY93E,EAAM+pE,gBAKhB,SACE,sBAAKrzE,UAAWD,KAAQ9B,MAAO,mBAAkBmB,EAAjD,UACE,mBAAGY,UAAWD,KAAQrE,MAAtB,SAA8BA,IAC9B,qBAAK6Q,MAAO,CAAEjL,WAAY5F,GAASsE,UAAWD,KAAQnB,aAI1D,cAAC,KAAD,CACEiN,KAAMA,EACNma,QApBc,WAClBo7D,EAAY,MACR1lF,IAAUkD,GAAOa,EAASb,IAmB1BQ,GAAIA,EACJ8qB,SAAUA,EACV8a,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,SAXhB,SAaE,cAAC,KAAD,CAActmC,MAAOA,EAAOa,SAAU,SAACb,GAAD,OAAgBuiF,EAASviF,EAAMyiF,cC/ChEC,GAAuB,SAAC,GAAqB,IAAnB1iF,EAAkB,EAAlBA,MAAOusB,EAAW,EAAXA,KAC5C,OACE,sBAAKptB,MAAOotB,GAAQ,KAAMjtB,OAAQitB,GAAQ,KAAMxb,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAtF,UACE,sBAAMG,EAAE,aAAaG,OAAQvR,GAAS,QAASwR,YAAY,IAAIC,cAAc,QAAQC,eAAe,UACpG,sBAAMN,EAAE,aAAaG,OAAQvR,GAAS,QAASwR,YAAY,IAAIC,cAAc,QAAQC,eAAe,c,oBCgE3FixE,GA9D2B,SAAC,GAAyB,IAAvBC,EAAsB,EAAtBA,gBACnCznB,EAAkDynB,EAAlDznB,SAAUn7D,EAAwC4iF,EAAxC5iF,MAAO6iF,EAAiCD,EAAjCC,WAAYC,EAAqBF,EAArBE,iBAErC,OACE,sBAAK1hF,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAQ/R,MAAO,CAAExN,gBAAiBH,GAA1D,UACE,sBAAKoB,UAAWD,KAAQ4hF,SAAxB,UACE,qBAAKx8E,IAAK40D,EAAU30D,IAAI,OAAOpF,UAAWD,KAAQ6hF,OAClD,mBAAG5hF,UAAWD,KAAQV,KAAtB,SAA6BoiF,OAE/B,cAAC,GAAD,CAAW7iF,MAAOsV,QAEpB,sBAAKlU,UAAWD,KAAQ6G,KAAxB,UACE,qBAAK5G,UAAWD,KAAQiiB,IAAxB,SACE,mBAAGhiB,UAAWD,KAAQ8hF,SAAtB,6FAIF,sBAAK7hF,UAAWD,KAAQiiB,IAAxB,UACE,qBAAK7c,IAAK40D,EAAU30D,IAAI,OAAOpF,UAAWD,KAAQ+hF,cAClD,mBAAG9hF,UAAWD,KAAQgiF,SAAtB,+FAEF,qBAAK/hF,UAAWD,KAAQiiB,IAAxB,SACE,mBAAGhiB,UAAWD,KAAQiiF,WAAYz1E,MAAO,CAAE3N,QAAOD,YAAaC,GAA/D,iCAIF,sBAAKoB,UAAWD,KAAQiiB,IAAxB,UACE,qBAAK7c,IAAK40D,EAAU30D,IAAI,OAAOpF,UAAWD,KAAQ+hF,cAClD,mBAAG9hF,UAAWD,KAAQgiF,SAAtB,sFAEF,sBAAK/hF,UAAWD,KAAQiiB,IAAxB,UACE,mBAAGhiB,UAAWD,KAAQiiF,WAAYz1E,MAAO,CAAE3N,QAAOD,YAAaC,GAA/D,uBAGA,mBAAGoB,UAAWD,KAAQiiF,WAAYz1E,MAAO,CAAE3N,QAAOD,YAAaC,GAA/D,qBAGA,mBAAGoB,UAAWD,KAAQiiF,WAAYz1E,MAAO,CAAE3N,QAAOD,YAAaC,GAA/D,uBAGA,mBAAGoB,UAAWD,KAAQiiF,WAAYz1E,MAAO,CAAE3N,QAAOD,YAAaC,GAA/D,uBAGA,qBAAKoB,UAAWD,KAAQ44B,MAAxB,SACE,cAAC,GAAD,SAGJ,qBAAK34B,UAAWD,KAAQiiB,IAAxB,SACE,mBAAGhiB,UAAWD,KAAQkmC,MAAO15B,MAAO,CAAExN,gBAAiBH,GAAvD,0BAKJ,sBAAKoB,UAAWD,KAAQ+7B,OAAxB,UACE,mBAAG97B,UAAWD,KAAQ2hF,iBAAtB,SAAyCA,IACzC,cAAC,GAAD,CAAU9iF,MAAOA,WClEZmiF,GAAY,SACvBrlF,EACAq5B,EACAuzB,GAEA,IAAMw4B,EAAS,GACTmB,EAAcvmF,EAAMub,WAgB1B,OAdImQ,MAAMC,QAAQ3rB,GACXA,EAAMuG,QAAQ6+E,EAAO76E,KAAK,mCAE3BnE,EAAcmgF,IAChBnB,EAAO76E,KAAK,uCAEIurB,IAAduD,GAA2BktD,EAAYhgF,OAAS8yB,GAClD+rD,EAAO76E,KAAP,gBAAqB8uB,EAArB,yBAEW,OAATuzB,QAAS,IAATA,OAAA,EAAAA,EAAWrmD,SAAUqmD,EAAUp6C,SAAiBxS,IAClDolF,EAAO76E,KAAK,qCAIT66E,GCzBF,SAASoB,GAAYjtE,EAAGlB,GAC7B,GAAgB,iBAALkB,GAAsB,MAALA,GAAyB,iBAALlB,GAAsB,MAALA,EAAW,CAC1E,IAAI8N,EAAQ,CAAC,EAAG,GAChB,IAAK,IAAIpmB,KAAOwZ,EAAG4M,EAAM,KAEzB,IAAK,IAAIpmB,KAAOsY,EAAG8N,EAAM,KACzB,GAAIA,EAAM,GAAKA,EAAM,IAAM,EACzB,OAAO,EAGT,IAAK,IAAIpmB,KAAOwZ,EACd,KAAMxZ,KAAOsY,KAAOmuE,GAAYjtE,EAAExZ,GAAMsY,EAAEtY,IACxC,OAAO,EAIX,IAAK,IAAIA,KAAOsY,EACd,KAAMtY,KAAOwZ,KAAOitE,GAAYnuE,EAAEtY,GAAMwZ,EAAExZ,IACxC,OAAO,EAGX,OAAO,EAEP,OAAOwZ,IAAMlB,E,8CCJFouE,GATiB,SAAC,GAAkC,IAAhCnjF,EAA+B,EAA/BA,MAAOsV,EAAwB,EAAxBA,QAAS7U,EAAe,EAAfA,SACjD,OACE,sBAAKO,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,KAAD,CAASa,QAASA,EAAS1V,MAAM,UAAUa,SAAUA,IACpDT,GAAS,mBAAGgB,UAAWD,KAAQopC,WAAtB,SAAmCnqC,QCiJpCgG,eAAWqQ,aAJF,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGEnrE,EArIa,SAAC,GAA+B,IAAD,cAA5BvK,EAA4B,EAA5BA,MAAO01E,EAAqB,EAArBA,eAC/C,EAAiD7/E,mBAAS,CAAE3B,MAAO,UAAWtD,MAAO,OAArF,mBAAO61E,EAAP,KAAyB6Q,EAAzB,KACA,EAA4BzhF,oBAAuB,OAAd6/E,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyD+lF,aAAc,IAA5G,mBAAOnjE,EAAP,KAAe+jE,EAAf,KACA,EAA2C1hF,oBAC3B,OAAd6/E,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyDgmF,mBAAoB,IAD/E,mBAAOA,EAAP,KAAyBY,EAAzB,KAGA,EAAoC3hF,mBAAmB,IAAvD,mBAAO4hF,EAAP,KAAmBC,EAAnB,KACA,EAAkD7hF,mBAAmB,IAArE,mBAAO8hF,EAAP,KAA0BC,EAA1B,KAEMC,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAE9DoC,EAA6B,SAAClnF,EAAyB6iD,GAC3DokC,EAAWnB,gBAAgBjQ,EAAiB71E,OAAO6iD,GAAS7iD,EAEvDwmF,GAAYS,EAAYnC,IAC3BE,GAAa51E,EAAMC,OAAO2C,MAAOi1E,IAI/BE,EAAmB,SAACnnF,GACRonF,EAAcpnF,EAAO8mF,IAGnCI,EAA2BlnF,EAAO,eAIhCqnF,EAA0B,SAACrnF,GACfonF,EAAcpnF,EAAOgnF,IAGnCE,EAA2BlnF,EAAO,qBAoBhConF,EAAgB,SAACpnF,EAAe2Q,GACpC,IAAMy0E,EAASC,GAAUrlF,EAAO,IAGhC,OAFA2Q,EAASy0E,IAEDA,EAAO7+E,QAGjB,OACE,sBAAKjC,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAxB,UACE,cAAC,GAAD,yBACA,cAAC,GAAD,CAAiB7e,SAjBM,SAAAsP,GAAa,IAAD,IACvCqzE,EAAqBrzE,GACrBszE,EAAS,OAAC7B,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBzyE,EAASrT,cAA1C,aAAC,EAAiD+lF,YAC3Da,EAAc,OAAC9B,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBzyE,EAASrT,cAA1C,aAAC,EAAiDgmF,mBAcXhmF,MAAO61E,OAG1D,cAAC,GAAD,CAAWhlE,MAAO,CAAE3N,MAAOqV,IAA3B,8FAIA,sBAAKjU,UAAWD,KAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,KAAQijF,KAAxB,UACE,cAAC,GAAD,CACEtnF,OAAqB,OAAd8kF,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyDq+D,WAAY,GAC5Et6D,SAAU,SAAC/D,GAAD,OAAmBknF,EAA2BlnF,EAAO,eAGjE,cAAC,GAAD,CACEA,OAAqB,OAAd8kF,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyDkD,QAAS,GACzEa,SAAU,SAAC/D,GAAD,OAAmBknF,EAA2BlnF,EAAO,YAGjE,cAAC,GAAD,CACEmG,MAAM,cACNtC,YAAY,UACZ7D,MAAO4iB,GAAU,GACjB7e,SAlDe,SAAA6J,GACvBw5E,EAAcx5E,EAAM9G,OAAO9G,MAAO8mF,GAClCH,EAAU/4E,EAAM9G,OAAO9G,QAiDfwtC,iBAAkB,kBAAM25C,EAAiBvkE,IACzC5e,OAAQ,kBAAMmjF,EAAiBvkE,IAC/Bvb,QAASw/E,EAAWtgF,OACpBY,aAAc0/E,EAAW,KAG3B,cAAC,GAAD,CACE1gF,MAAM,oBACNtC,YAAY,mBACZ7D,MAAOgmF,GAAoB,GAC3BjiF,SAxDgB,SAAA6J,GACxBw5E,EAAcx5E,EAAM9G,OAAO9G,MAAOgnF,GAClCJ,EAAeh5E,EAAM9G,OAAO9G,QAuDpBwtC,iBAAkB,kBAAM65C,EAAwBrB,IAChDhiF,OAAQ,kBAAMqjF,EAAwBrB,IACtC3+E,QAAS0/E,EAAkBxgF,OAC3BY,aAAc4/E,EAAkB,KAGlC,sBAAKziF,UAAWD,KAAQkjF,mBAAxB,UACE,cAAC,GAAD,CACEjkF,MAAM,6BACNsV,QAAO,OAAEksE,QAAF,IAAEA,GAAF,UAAEA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAnD,aAAE,EAAyDwnF,2BAClEzjF,SAAU,SAAAS,GAAC,OAAI0iF,EAA2B1iF,EAAEsC,OAAO8R,QAAS,iCAE9D,cAAC,GAAD,CACEtV,MAAM,8BACNsV,QAAO,OAAEksE,QAAF,IAAEA,GAAF,UAAEA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAnD,aAAE,EAAyDynF,0BAClE1jF,SAAU,SAAAS,GAAC,OAAI0iF,EAA2B1iF,EAAEsC,OAAO8R,QAAS,gCAE9D,cAAC,GAAD,CACEtV,MAAM,yCACNsV,QAAO,OAAEksE,QAAF,IAAEA,GAAF,UAAEA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAnD,aAAE,EAAyD0nF,eAClE3jF,SAAU,SAAAS,GAAC,OAAI0iF,EAA2B1iF,EAAEsC,OAAO8R,QAAS,2BAIjEksE,GACC,cAAC,GAAD,CAAkBgB,gBAAiBhB,EAAegB,gBAAgBjQ,EAAiB71E,mB,oBChF9E2nF,GAzD4B,SAAC,GAA0C,IAAxC7B,EAAuC,EAAvCA,gBAAiB8B,EAAsB,EAAtBA,gBAE3DvpB,EAOEynB,EAPFznB,SACAn7D,EAME4iF,EANF5iF,MACA2kF,EAKE/B,EALF+B,aACAC,EAIEhC,EAJFgC,gBACAC,EAGEjC,EAHFiC,WACAC,EAEElC,EAFFkC,wBACAC,EACEnC,EADFmC,yBAGF,OACE,sBAAK3jF,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAQ/R,MAAO,CAAExN,gBAAiBH,GAA1D,UACE,sBAAKoB,UAAWD,KAAQ4hF,SAAxB,UACE,qBAAKx8E,IAAK40D,EAAU30D,IAAI,OAAOpF,UAAWD,KAAQ6hF,OAClD,sBAAK5hF,UAAWD,KAAQunB,UAAxB,UACE,mBAAGtnB,UAAWD,KAAQ8B,MAAtB,SAA8B0hF,IAC9B,mBAAGvjF,UAAWD,KAAQoP,aAAtB,SAAqCq0E,UAGzC,qBAAKxjF,UAAWD,KAAQg6B,SAAxB,SACE,cAAC,GAAD,CAAWn7B,MAAOsV,UAGtB,sBAAKlU,UAAWD,KAAQ6G,KAAxB,UACE,qBAAK5G,UAAWD,KAAQf,MAAxB,SAAgCykF,IAC/BC,GACC,sBAAK1jF,UAAWD,KAAQ25B,UAAxB,UACE,qBAAK15B,UAAWD,KAAQ9B,MAAxB,SAAgCqlF,EAAgBM,uBAC/CF,IAA4BC,GAC3B,qBAAK3jF,UAAWD,KAAQ8jF,YAAat3E,MAAO,CAAExN,gBAAiBH,GAA/D,SACG0kF,EAAgBQ,iBAKxBH,GACC,sBAAK3jF,UAAWD,KAAQ25B,UAAxB,UACE,qBAAK15B,UAAWD,KAAQ9B,MAAxB,SAAgCqlF,EAAgBS,yBAC9CL,GAA2BC,GAC3B,qBAAK3jF,UAAWD,KAAQ8jF,YAAat3E,MAAO,CAAExN,gBAAiBH,GAA/D,SACG0kF,EAAgBQ,iBAKxBJ,GAA2BC,GAC1B,qBAAK3jF,UAAWD,KAAQqB,OAAQmL,MAAO,CAAExN,gBAAiBH,GAA1D,SACG0kF,EAAgBQ,qB,qBCuHd9+E,eAAWqQ,aARF,SAACvS,GAAD,MAGjB,CACL09E,eAAgB19E,EAAM09E,eACtBwD,sBAAuBlhF,EAAMkhF,yBAGL3uE,EA1JgB,SAAC,GAAsD,IAAD,cAAnDvK,EAAmD,EAAnDA,MAAO01E,EAA4C,EAA5CA,eAAgBwD,EAA4B,EAA5BA,sBAClE,EAAiDrjF,mBAAS,CAAE3B,MAAO,UAAWtD,MAAO,OAArF,mBAAO61E,EAAP,KAAyB6Q,EAAzB,KACA,EAA0BzhF,oBAAuB,OAAd6/E,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyD6nF,eAAgB,IAA5G,mBAAO1hF,EAAP,KAAcoiF,EAAd,KACA,EAAwCtjF,oBACxB,OAAd6/E,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyD8nF,kBAAmB,IAD9E,mBAAOr0E,EAAP,KAAqB+0E,EAArB,KAGA,EAAoCvjF,oBACpB,OAAd6/E,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyD+nF,aAAc,IADzE,mBAAOA,EAAP,KAAmBU,EAAnB,KAGA,EAAsCxjF,mBAAmB,IAAzD,mBAAOyjF,EAAP,KAAoBC,EAApB,KACA,EAAoD1jF,mBAAmB,IAAvE,mBAAO2jF,EAAP,KAA2BC,EAA3B,KACA,EAAgD5jF,mBAAmB,IAAnE,mBAAO6jF,EAAP,KAAyBC,EAAzB,KAEM9B,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAC9DkE,GACU,OAAdlE,QAAc,IAAdA,GAAA,UAAAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAjD,eAAyDgoF,2BAAzD,OACAlD,QADA,IACAA,GADA,UACAA,EAAgBgB,gBAAgBjQ,EAAiB71E,cADjD,aACA,EAAyDioF,0BAErDf,EAA6B,SAAClnF,EAAyB6iD,GAC3DokC,EAAWnB,gBAAgBjQ,EAAiB71E,OAAO6iD,GAAS7iD,EACvDwmF,GAAYS,EAAYnC,IAC3BE,GAAa51E,EAAMC,OAAO2C,MAAOi1E,IAI/BgC,EAAoB,SAACjpF,GACTonF,EAAcpnF,EAAO2oF,EAAgB,KAGnDzB,EAA2BlnF,EAAO,iBAIhCkpF,EAA2B,SAAClpF,GAChBonF,EAAcpnF,EAAO6oF,EAAuB,MAG1D3B,EAA2BlnF,EAAO,oBAIhCmpF,EAAyB,SAACnpF,GACdonF,EAAcpnF,EAAO+oF,EAAqB,KAGxD7B,EAA2BlnF,EAAO,eA0BhConF,EAAgB,SAACpnF,EAAe2Q,EAA4B0oB,GAChE,IAAM+rD,EAASC,GAAUrlF,EAAOq5B,GAGhC,OAFA1oB,EAASy0E,IAEDA,EAAO7+E,QAGjB,OACE,gCACE,sBAAKjC,UAAWD,KAAQue,OAAxB,UACE,cAAC,GAAD,6BACA,cAAC,GAAD,CAAiB7e,SAjCM,SAACsP,GAAc,IAAD,MACzCqzE,EAAqBrzE,GACrBo1E,EAAa,OAAC3D,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBzyE,EAASrT,cAA1C,aAAC,EAAiD+nF,YAC/DQ,EAAQ,OAACzD,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBzyE,EAASrT,cAA1C,aAAC,EAAiD6nF,cAC1DW,EAAe,OAAC1D,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBzyE,EAASrT,cAA1C,aAAC,EAAiD8nF,kBA6BZ9nF,MAAO61E,OAG1D,cAAC,GAAD,CAAWhlE,MAAO,CAAE3N,MAAOqV,IAA3B,0FAIA,sBAAKjU,UAAWD,KAAQ6G,KAAxB,UACE,sBAAK5G,UAAWD,KAAQijF,KAAxB,UACE,cAAC,GAAD,CAAWz2E,MAAO,CAAE3G,UAAW,GAA/B,qDACA,cAAC,GAAD,CACE5G,MAAM,aACNsV,WAAU,OAACksE,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAlD,aAAC,EAAyDgoF,yBACpEjkF,SAAU,SAAC/D,GAAD,OAAoBknF,EAA2BlnF,EAAO,8BAElE,cAAC,GAAD,CACEsD,MAAM,cACNsV,WAAU,OAACksE,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAlD,aAAC,EAAyDioF,0BACpElkF,SAAU,SAAC/D,GAAD,OAAoBknF,EAA2BlnF,EAAO,+BAEjEgpF,GACC,qCACE,cAAC,GAAD,CACE7iF,MAAM,gBACNtC,YAAY,QACZ7D,MAAOmG,GAAS,GAChBpC,SApDY,SAAC6J,GACzBw5E,EAAcx5E,EAAM9G,OAAO9G,MAAO2oF,EAAgB,IAClDJ,EAAS36E,EAAM9G,OAAO9G,QAmDVwtC,iBAAkB,kBAAMy7C,EAAkB9iF,IAC1CnC,OAAQ,kBAAMilF,EAAkB9iF,IAChCkB,QAASqhF,EAAYniF,OACrBY,aAAcuhF,EAAY,KAE5B,cAAC,GAAD,CACEviF,MAAM,mBACNtC,YAAY,WACZ7D,MAAOyT,GAAgB,GACvB1P,SAzDe,SAAC6J,GAC5Bw5E,EAAcx5E,EAAM9G,OAAO9G,MAAO6oF,EAAuB,KACzDL,EAAgB56E,EAAM9G,OAAO9G,QAwDjBwtC,iBAAkB,kBAAM07C,EAAyBz1E,IACjDzP,OAAQ,kBAAMklF,EAAyBz1E,IACvCpM,QAASuhF,EAAmBriF,OAC5BY,aAAcyhF,EAAmB,KAEnC,cAAC,GAAD,CACEziF,MAAM,cACNtC,YAAY,cACZ7D,MAAO+nF,GAAc,GACrBhkF,SA9DiB,SAAC6J,GAC9Bw5E,EAAcx5E,EAAM9G,OAAO9G,MAAO+oF,EAAqB,IACvDN,EAAc76E,EAAM9G,OAAO9G,QA6DfwtC,iBAAkB,kBAAM27C,EAAuBpB,IAC/C/jF,OAAQ,kBAAMmlF,EAAuBpB,IACrC1gF,QAASyhF,EAAiBviF,OAC1BY,aAAc2hF,EAAiB,WAKtCE,GAAmBV,GAClB,cAAC,GAAD,CAAmBxC,gBAAiBhB,EAAegB,gBAAgBjQ,EAAiB71E,OAClF4nF,gBAAiBU,EAAsBzS,EAAiB71E,mBC7IrDopF,GApBC,SAAC,GAA+C,IAA7C3mE,EAA4C,EAA5CA,SAAU/e,EAAkC,EAAlCA,GAAIyM,EAA8B,EAA9BA,KAAMqe,EAAwB,EAAxBA,SAAUlE,EAAc,EAAdA,QAC/C,OACE,cAAC,KAAD,CACE5mB,GAAIA,EACJyM,KAAMA,EACNqe,SAAUA,EACVlE,QAASA,EACTgf,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,SAXhB,SAaG/mB,KCfM7K,GAAb,4JACE,WACE,OACE,sBAAKvV,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,mMACFJ,KAAK,UACLmC,YAAY,QAEd,sBACEjC,SAAS,UACTC,SAAS,UACTC,EAAE,4LACFJ,KAAK,UACLmC,YAAY,QAEd,sBACEjC,SAAS,UACTC,SAAS,UACTC,EAAE,qLACFJ,KAAK,UACLmC,YAAY,eAvBtB,GAA+BjN,IAAMC,WCDxBggF,GAAa,WACxB,OACE,sBAAKhnF,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UAEE,sBAAMG,EAAE,gNAAgNJ,KAAK,YAE7N,sBAAMI,EAAE,mNAAmNJ,KAAK,YAEhO,sBAAME,SAAS,UAAUC,SAAS,UAAUC,EAAE,4mCAA4mCJ,KAAK,gBCRxpC6B,GAAW,WACtB,OACE,qBAAK1T,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,SAEE,sBAAMC,SAAS,UAAUC,SAAS,UAAUC,EAAE,4lCAA4lCJ,KAAK,UAAUmC,YAAY,W,qBCarqCy0B,GAAS,CACb,CAAE3kC,MAAO,gBAAiBtB,SAAU,KACpC,CAAEsB,MAAO,OAAQtB,SAAU,KAC3B,CAAEsB,MAAO,SAAUtB,SAAU,KAC7B,CAAEsB,MAAO,iBAAkBtB,SAAU,KACrC,CAAEsB,MAAO,GAAItB,SAAU,MAyGVyE,eAAWqQ,aAJF,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGEnrE,EA5Fc,SAAC,GAQlC,IAPL2vE,EAOI,EAPJA,UACAxE,EAMI,EANJA,eACAjP,EAKI,EALJA,iBACA0T,EAII,EAJJA,kBACAC,EAGI,EAHJA,oBACAC,EAEI,EAFJA,yBACAr6E,EACI,EADJA,MAEA,EAAgCnK,mBAAS,MAAzC,mBAAOupB,EAAP,KAAiBk3D,EAAjB,KACA,EAA8CzgF,mBAAwB,MAAtE,mBAAOykF,EAAP,KAAwBC,EAAxB,KACM1C,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAE9DphF,EADO0pC,QAAQ5e,GACH,sBAAmBsH,EAa/B8zD,EAAqB,WACzBlE,EAAY,MACZiE,EAAmB,OAqBrB,OACE,cAAC,GAAD,CAAO7+C,OAAQA,GAAf,gBACGw+C,QADH,IACGA,OADH,EACGA,EAAWnvE,KAAI,SAAC0vE,EAAwBzwE,GAAzB,OACd,eAAC,GAAD,CAA8BA,MAAOA,EAArC,UACE,cAAC,GAAD,CAAWzQ,OAAQ,CAAE9D,SAAU,KAA/B,SAAuCglF,EAASlmF,OAChD,cAAC,GAAD,CAAWgF,OAAQ,CAAE9D,SAAU,KAA/B,UAAwCglF,EAASptD,WAAaotD,EAASC,OACvE,cAAC,GAAD,CAAWnhF,OAAQ,CAAE9D,SAAU,KAA/B,UAAwCglF,EAASptD,WAAaotD,EAASE,SACvE,cAAC,GAAD,CAAWphF,OAAQ,CAAE9D,SAAU,KAA/B,UACIglF,EAASptD,WACT,cAAC,KAAD,CAAQv5B,MAAM,UAAU0V,QAASixE,EAAS1V,QAASpwE,SAAU,kBA3CpD,SAACqV,GACpB6tE,EAAWnB,gBAAgBjQ,EAAiB71E,OAAOspF,UAAUlwE,GAAO+6D,SACjE8S,EAAWnB,gBAAgBjQ,EAAiB71E,OAAOspF,UAAUlwE,GAAO+6D,QACvE6Q,GAAa51E,EAAMC,OAAO2C,MAAOi1E,GAwC4C+C,CAAa5wE,QAGpF,cAAC,GAAD,CAAWzQ,OAAQ,CAAE9D,SAAU,IAAKzC,cAAe,eAAnD,SACIynF,EAASptD,UAKT,qBAAKn4B,UAAWD,KAAQqB,OAAQH,QAAS,kBApCnB,SAACskF,EAAwBzwE,GACzDywE,EAASzwE,MAAQA,EACjBqwE,GAAyB,EAAMI,GAC/BD,IAiCyDK,CAA0BJ,EAAUzwE,IAAnF,kBAJA,qBAAK9U,UAAWD,KAAQqB,OAAQH,QAAS,SAAAqI,GAAK,OA1ChC,SAACA,EAAYwL,GACrCuwE,EAAmBvwE,GACnBssE,EAAY93E,EAAM+pE,eAwC0CuS,CAAkBt8E,EAAOwL,IAA3E,SACE,cAAC,GAAD,CAAW,mBAAkB1V,EAAI8rB,QAAQ,YAAYtsB,MAAM,gBAQjE,cAAC,GAAD,CAASQ,GAAIA,EAAIyM,KAAMu5E,IAAoBtwE,EAAOoV,SAAUA,EAAUlE,QAASs/D,EAA/E,SACE,gCACE,sBAAKtlF,UAAWD,KAAQ8lF,WAAY5kF,QAAS,kBArC9B,SAACskF,EAAwBzwE,GAClDywE,EAASzwE,MAAQA,EACjBmwE,GAAkB,EAAMM,GACxBD,IAkC6DQ,CAAmBP,EAAUzwE,IAAhF,UACE,cAAC,GAAD,IADF,WAGA,sBAAK9U,UAAWD,KAAQq3C,aAAcn2C,QAAS,kBAlC9B,SAACskF,EAAwBzwE,GACpDywE,EAASzwE,MAAQA,EACjBowE,GAAoB,EAAMK,GAC1BD,IA+B+DS,CAAqBR,EAAUzwE,IAApF,UACE,cAAC,GAAD,IADF,oBAzBSywE,EAASpjB,e,qBC3BjBn9D,eAAWqQ,aAJF,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGEnrE,EAtCmB,SAAC,GAOvC,IANLvK,EAMI,EANJA,MACAe,EAKI,EALJA,KACAm6E,EAII,EAJJA,iBACAxF,EAGI,EAHJA,eACAjP,EAEI,EAFJA,iBACAvrD,EACI,EADJA,QAEM28D,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAQpE,OACE,cAAC,KAAD,CAAO30E,KAAMA,EAAMma,QAASA,EAA5B,SACE,sBAAKhmB,UAAWD,KAAQ0T,UAAxB,UACE,oBAAGzT,UAAWD,KAAQ8B,MAAtB,6CAA8DmkF,EAAiB3mF,KAA/E,gBACA,qBAAKW,UAAWD,KAAQm9D,YAAaj8D,QAAS+kB,EAA9C,SACE,cAAC,GAAD,CAAWpnB,MAAOqV,OAEpB,sBAAKjU,UAAWD,KAAQi8B,YAAxB,UACE,qBAAKh8B,UAAWD,KAAQq3C,aAAcn2C,QAdzB,SAACqI,GACpBq5E,EAAWnB,gBAAgBjQ,EAAiB71E,OAAOspF,UAAUruD,OAAOqvD,EAAiBlxE,MAAO,GAC5F4rE,GAAa51E,EAAMC,OAAO2C,MAAOi1E,GACjC38D,EAAQ1c,IAWF,oBAGA,cAAC,GAAD,CAAcrI,QAAS+kB,EAASnkB,MAAM,uB,qBCXjCokF,GAvBwB,SAAC,GAA8D,IAA5Dp6E,EAA2D,EAA3DA,KAAMma,EAAqD,EAArDA,QAASkgE,EAA4C,EAA5CA,OAAQrkF,EAAoC,EAApCA,MAAOsc,EAA6B,EAA7BA,SAAUgoE,EAAmB,EAAnBA,aAChF,OACE,cAAC,KAAD,CAAOt6E,KAAMA,EAAMma,QAASA,EAA5B,SACE,sBAAKhmB,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAxB,UACE,mBAAGte,UAAWD,KAAQ8B,MAAtB,SAA8BA,IAC9B,qBAAK7B,UAAWD,KAAQm9D,YAAaj8D,QAAS+kB,EAA9C,SACE,cAAC,GAAD,CAAWpnB,MAAOqV,UAGrBkK,EACD,sBAAKne,UAAWD,KAAQ+7B,OAAxB,UACE,sBAAK97B,UAAWD,KAAQ4jB,QAAxB,UACE,cAAC,GAAD,CAAc9hB,MAAM,SAAS1F,KAAK,YAAYkI,OAAQ,CAAE/F,aAAc,GAAK2C,QAAS+kB,IACpF,cAAC,GAAD,CAAcnkB,MAAM,OAAOwC,OAAQ,CAAE/F,aAAc,GAAK2C,QAASilF,IAFnE,OAICC,W,qBC3BLz0D,GAAU,CACd,CACE1yB,MAAO,KACPtD,MAAO,GAET,CACEsD,MAAO,MACPtD,MAAO,IAET,CACEsD,MAAO,MACPtD,MAAO,KA+DI0qF,GA3DU,SAAC,GAAgD,IAA9CvkF,EAA6C,EAA7CA,MAAOnG,EAAsC,EAAtCA,MAAOolF,EAA+B,EAA/BA,OAAQrhF,EAAuB,EAAvBA,SAAUC,EAAa,EAAbA,OAC1D,EAAwCiB,oBAAS,GAAjD,mBAAO0lF,EAAP,KAAqBC,EAArB,KAEA/kE,qBAAU,WACH,CAAC,EAAG,GAAI,IAAIrT,SAASxS,IAAQ4qF,GAAgB,KACjD,CAAC5qF,IAuBJ,OACE,qCACGmG,GAAS,mBAAG7B,UAAWD,KAAQopC,WAAtB,SAAmCtnC,IAC7C,sBAAK7B,UAAWD,KAAQ0T,UAAxB,UACGie,GAAQ7b,KAAI,SAAAsY,GAAM,OACjB,qBAEEnuB,UAAWmuB,EAAOzyB,QAAUA,EAAQqE,KAAQwmF,aAAexmF,KAAQouB,OACnEltB,QAAS,kBA7BE,SAACvF,GACpB4qF,GAAgB,GAChB7mF,EAAS/D,GA2Bc2N,CAAa8kB,EAAOzyB,QAHrC,SAIGyyB,EAAOnvB,OAHHmvB,EAAOzyB,UAMhB,qBAAKsE,UAAWqmF,EAAetmF,KAAQwmF,aAAexmF,KAAQouB,OAAQltB,QA5BjD,WACzBqlF,GAAgB,GAChB7mF,EAAS,KA0BL,uBAKD4mF,GACC,cAAC,GAAD,CACE9mF,YAAY,IACZ7D,MAAOA,EACPqH,QAAS+9E,EAAO7+E,OAChBY,aAAci+E,EAAO,GACrBrhF,SAAU,SAAC6J,GAAD,OAAgB7J,EAAS6J,EAAM9G,OAAO9G,QAChD68B,UAnCc,SAACjvB,GACrB,GACGA,EAAMw0B,S7UhCW,I6UgCYx0B,EAAMw0B,S7U/BlB,I6UgClB,CAACf,GAAeD,IAAY5uB,SAAS5E,EAAMw0B,SAE3C,OAAOx0B,EAEPA,EAAMpI,kBA6BFxB,OAAQA,Q,qBCgCHsF,eAAWqQ,aAJF,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGEnrE,EAlFgB,SAAC,GAOpC,IANLxJ,EAMI,EANJA,KACAm6E,EAKI,EALJA,iBACAxF,EAII,EAJJA,eACAjP,EAGI,EAHJA,iBACAzmE,EAEI,EAFJA,MACAkb,EACI,EADJA,QAEA,EAAwCrlB,mBAAS,IAAjD,mBAAOwO,EAAP,KAAqB+0E,EAArB,KACA,EAAwCvjF,mBAA0B,IAAlE,mBAAO6lF,EAAP,KAAqBC,EAArB,KACA,EAAoD9lF,mBAAmB,IAAvE,mBAAO2jF,EAAP,KAA2BC,EAA3B,KACA,EAAoD5jF,mBAAmB,IAAvE,mBAAO+lF,EAAP,KAA2BC,EAA3B,KAEMhE,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAC9DoG,EAAe7lF,mBAAQ,kBAAMkmB,GAAiB++D,KAAmB,CAACA,IAExEzkE,qBAAU,WACR2iE,EAAe,OAAC8B,QAAD,IAACA,OAAD,EAACA,EAAkB72E,cAClCo1E,EAAsB,MACrB,QAACyB,QAAD,IAACA,OAAD,EAACA,EAAkB72E,eAEtBoS,qBAAU,WACRklE,EAAe,OAACT,QAAD,IAACA,OAAD,EAACA,EAAkBQ,cAClCG,EAAsB,MACrB,QAACX,QAAD,IAACA,OAAD,EAACA,EAAkBQ,eAEtB,IAAMK,EAAuB,SAACnrF,GAC5B,IAAMolF,EAASC,GAAUrlF,GAGzB,OAFA6oF,EAAsBzD,IAEdA,EAAO7+E,QAGX6kF,EAAoB,SAACprF,GACzB,IAAMolF,EAASC,GAAUrlF,GAGzB,OAFAirF,EAAsB7F,IAEdA,EAAO7+E,QAiBjB,OACE,cAAC,GAAD,CAAe4J,KAAMA,EAAMhK,MAAM,wBAAwBmkB,QAASA,EAASkgE,OAfxD,SAAC58E,GACpB,IAAMy9E,EAAsBF,EAAqB13E,GAC3C63E,EAAmBF,EAAkBN,GAEvCO,GAAuBC,IACzBJ,EAAaJ,aAAez4E,OAAOy4E,GACnCI,EAAaz3E,aAAeA,EAE5BwzE,EAAWnB,gBAAgBjQ,EAAiB71E,OAAOspF,UAAU4B,EAAa9xE,OAAS8xE,EACnFlG,GAAa51E,EAAMC,OAAO2C,MAAOi1E,GACjC38D,EAAQ1c,KAKV,SACE,sBAAKtJ,UAAWD,KAAQ6G,KAAxB,UACE,cAAC,GAAD,CACE/E,MAAM,gBACNtC,YAAY,sBACZ7D,MAAOyT,GAAgB,GACvBpM,QAASuhF,EAAmBriF,OAC5BY,aAAcyhF,EAAmB,GACjC7kF,SAAU,SAAC6J,GAAD,OAAgB46E,EAAgB56E,EAAM9G,OAAO9G,QACvDgE,OAAQ,kBAAMmnF,EAAqB13E,MAErC,cAAC,GAAD,CACEtN,MAAM,aACNnG,MAAO8qF,EACP/mF,SAAUgnF,EACV/mF,OAAQ,kBAAMonF,EAAkBN,IAChC1F,OAAQ4F,aCMHO,GAnFqB,SAAC,GAAsC,IAAD,IAAnC1B,EAAmC,EAAnCA,SAAU9lF,EAAyB,EAAzBA,SAAU6hC,EAAe,EAAfA,SACzD,EAAoC3gC,mBAAmB,IAAvD,mBAAO4hF,EAAP,KAAmBC,EAAnB,KACMoE,EAAe7lF,mBAAQ,kBAAMkmB,GAAiBs+D,KAAW,CAACA,IAC1D9jD,EAAe7C,GAAY0C,GAGjC/f,qBAAU,WACJ+f,GAAYG,GAAgBH,IAAaG,GAC3CylD,EAAa3B,EAASlmF,QAEvB,CAACiiC,IAEJ,IAAMuhD,EAAmB,SAACnnF,GACxBwrF,EAAaxrF,GACbkrF,EAAavnF,KAAO3D,EACpB+D,EAASmnF,IAGLtnC,EAA0B,SAACp/C,GAC/B0mF,EAAaxnC,UAAU75B,YAAcrlB,EAAExE,MACvC+D,EAASmnF,IAaLpnC,EAAsB,WAC1BonC,EAAaxnC,UAAUh6B,YAAYnf,KAAK,CACtCof,UAAW,KACXC,SAAU,KACV5pB,MAAO,GACP0D,GAAI8/C,OAGNz/C,EAASmnF,IAGLM,EAAe,SAACxrF,GACpB,IAAMolF,EAASC,GAAUrlF,EAAO,IAGhC,OAFA8mF,EAAc1B,IAENA,EAAO7+E,QAGjB,OACE,qCACE,cAAC,GAAD,CACEJ,MAAM,gBACNtC,YAAY,sBACZ7D,MAAO6pF,EAASlmF,MAAQ,GACxBI,SAAU,SAAC6J,GAAD,OAAgBu5E,EAAiBv5E,EAAM9G,OAAO9G,QACxDgE,OAAQ,kBAAMwnF,EAAa3B,EAASlmF,OACpC0D,QAASw/E,EAAWtgF,OACpBY,aAAc0/E,EAAW,KAG3B,cAAC,GAAD,CAAWh2E,MAAO,CAAE3N,MAAO,UAAWT,OAAQ,cAA9C,uBAXF,OAaGonF,QAbH,IAaGA,GAbH,UAaGA,EAAUnmC,iBAbb,iBAaG,EAAqBh6B,mBAbxB,aAaG,EAAkCvP,KAAI,SAAC+oC,EAAY9pC,GAAb,qBACrC,cAAC,GAAD,CAEE8pC,WAAYA,EACZE,QAAgB,OAARymC,QAAQ,IAARA,GAAA,UAAAA,EAAUnmC,iBAAV,mBAAqBh6B,mBAArB,eAAkCnjB,UAAW6S,EAAQ,EAC7DkqC,MAAoD,KAArC,OAARumC,QAAQ,IAARA,GAAA,UAAAA,EAAUnmC,iBAAV,mBAAqBh6B,mBAArB,eAAkCnjB,QACzCsjB,YAAW,OAAEggE,QAAF,IAAEA,GAAF,UAAEA,EAAUnmC,iBAAZ,aAAE,EAAqB75B,YAClCs5B,oBAAqBS,EACrB9nB,SAAU,kBAlDa,SAAC1iB,GAC9B8xE,EAAaxnC,UAAUh6B,YAAYuR,OAAO7hB,EAAO,GACjDrV,EAASmnF,GAgDannC,CAAuB3qC,IACvCsvB,SAAU,SAACwa,GAAD,OA9Ca,SAACA,EAA4B9pC,GAC1D8xE,EAAaxnC,UAAUh6B,YAAYtQ,GAAS8pC,EAC5Cn/C,EAASmnF,GA4CuClnC,CAAuBd,EAAY9pC,IAC7EiqC,MAAOS,EACPle,SAAUA,GATLsd,EAAWx/C,WCGX+nF,GAtE2B,SAAC,GAAsC,IAApC5B,EAAmC,EAAnCA,SAAU9lF,EAAyB,EAAzBA,SAAU6hC,EAAe,EAAfA,SAC/D,EAAoD3gC,mBAAmB,IAAvE,mBAAO2jF,EAAP,KAA2BC,EAA3B,KACA,EAAoD5jF,mBAAmB,IAAvE,mBAAO+lF,EAAP,KAA2BC,EAA3B,KACA,EAAkDhmF,oBAAS,GAA3D,mBAAOymF,EAAP,KAA0BC,EAA1B,KAEMT,EAAe7lF,mBAAQ,kBAAMkmB,GAAiBs+D,KAAW,CAACA,IAC1D9jD,EAAe7C,GAAY0C,GAGjC/f,qBAAU,WACJ+f,GAAYG,GAAgBH,IAAaG,IAC3ColD,EAAqBtB,EAASp2E,cAC9B23E,EAAkBvB,EAASiB,cAC3Ba,GAAqB,MAEtB,CAAC/lD,IAEJ,IAAMsjD,EAA2B,SAAClpF,GAChCkrF,EAAaz3E,aAAezT,EAC5B+D,EAASmnF,IAaLC,EAAuB,SAACnrF,GAC5B,IAAMolF,EAASC,GAAUrlF,GAGzB,OAFA6oF,EAAsBzD,IAEdA,EAAO7+E,QAGX6kF,EAAoB,SAACprF,GACzB,IAAMolF,EAASC,GAAUrlF,GAGzB,OAFAirF,EAAsB7F,IAEdA,EAAO7+E,QAGjB,OACE,qCACE,cAAC,GAAD,CACEJ,MAAM,gBACNtC,YAAY,sBACZ7D,MAAO6pF,EAASp2E,cAAgB,GAChC1P,SAAU,SAAC6J,GAAD,OAAgBs7E,EAAyBt7E,EAAM9G,OAAO9G,QAChEgE,OAAQ,kBAAMmnF,EAAqBtB,EAASp2E,eAC5CpM,QAASuhF,EAAmBriF,OAC5BY,aAAcyhF,EAAmB,KAEnC,cAAC,GAAD,CACEziF,MAAM,aACNnG,MAAO6pF,EAASiB,aAChB/mF,SAtC2B,SAAC/D,GAChCkrF,EAAaJ,aAAe9qF,EAC5B+D,EAASmnF,IAqCLlnF,OAAQ,kBAAMonF,EAAkBvB,EAASiB,eACzC1F,OAAQ4F,IAEV,cAAC,GAAD,CAAWn6E,MAAO,CAAE3N,MAAO,UAAWT,OAAQ,cAA9C,wBACA,cAAC,GAAD,CAAYzC,MAAO6pF,EAAS+B,YAAa7nF,SAtCf,SAAC,GAA+B,IAA7B/D,EAA4B,EAA5BA,MAC/BkrF,EAAaU,YAAc5rF,EAC3B+D,EAASmnF,IAoCmE54D,QAASo5D,QCjF5EG,GAAuB,SAACrvC,EAAQj2C,GAC3C,OAAQH,EAAco2C,IAAWA,EAAOj2C,QAAUA,G,qBCkB9CujC,GAAkB,CAAC,UAAW,iBAE9BgiD,GAA6B,CACjCnoF,KAAM,GACN8P,aAAc,GACdq3E,aAAc,EACdc,YAAa,KACb7B,OAAQ,EACRD,KAAM,EACN3V,SAAS,EACTzwB,UAAW,CACT75B,YAAa,MACbH,YAAa,CACX,CACEE,SAAU,KACV5pB,MAAO,GACP2pB,UAAW,SA2FJrgB,eAAWqQ,aAJF,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGEnrE,EA7EgB,SAAC,GAAgE,IAA9DxJ,EAA6D,EAA7DA,KAAM0lE,EAAuD,EAAvDA,iBAAkBzmE,EAAqC,EAArCA,MAAO01E,EAA8B,EAA9BA,eAAgBx6D,EAAc,EAAdA,QAC1F,EAAsCrlB,mBAAS6kC,GAAK,IAApD,mBAAO4c,EAAP,KAAoBC,EAApB,KACA,EAAgC1hD,mBAAS6mF,IAAzC,mBAAOjC,EAAP,KAAiBkC,EAAjB,KACA,EAAgC9mF,mBAAS,IAAIs1C,MAA7C,mBAAO3U,EAAP,KAAiBomD,EAAjB,KAEM/E,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAEpEj/D,qBAAU,WACRia,GAAc1wB,EAAMC,OAAO2C,MAAd,OAAqB6jE,QAArB,IAAqBA,OAArB,EAAqBA,EAAkB71E,OACpDstB,GAASle,EAAMC,OAAO2C,SACrB,IAEH6T,qBAAU,WACRkmE,EAAYD,IACZnlC,EAAe7c,GAAK,MACnB,CAAC35B,IAEJ,IAAM87E,EAAuB,SAACC,GAC5BH,EAAYG,IAeRC,EAAmB,WACvB,IAAQxoF,EAA6DkmF,EAA7DlmF,KAAM8P,EAAuDo2E,EAAvDp2E,aAAcm4E,EAAyC/B,EAAzC+B,YAAad,EAA4BjB,EAA5BiB,aAAcpnC,EAAcmmC,EAAdnmC,UACjD0oC,GAAkBP,GAAqBloF,EAAM,KAAO+/C,EAAUh6B,YAAY2C,KAAKg9B,IAC/EgjC,EAAuBjmF,EAAcqN,KAAkBm4E,IAAgBd,EAQ7E,OANIsB,IAAmBC,EACrB1lC,EAAe7c,GAAK,KACVsiD,GAAkBC,GAC5B1lC,EAAe7c,GAAK,IAGfsiD,GAAkBC,GAG3B,OACE,cAAC,GAAD,CAAel8E,KAAMA,EAAMhK,MAAM,mBAAmBmkB,QAASA,EAASkgE,OA3BrD,SAAC58E,GAClB,IAAMvG,EAAQ8kF,IACdH,EAAY,IAAIzxC,MAEXlzC,IACHwiF,EAASiB,aAAez4E,OAAOw3E,EAASiB,cACxC7D,EAAWnB,gBAAgBjQ,EAAiB71E,OAAOspF,UAAU/+E,KAAKs/E,GAClE7E,GAAa51E,EAAMC,OAAO2C,MAAOi1E,GACjC38D,EAAQ1c,KAmBV,SACE,gCACE,qBAAKtJ,UAAWD,KAAQylC,KAAxB,SACGA,GAAK3vB,KAAI,SAAC8vB,EAAK7wB,GAAN,OACR,qBAEE9U,UAAWoiD,IAAgBzc,EAAM5lC,KAAQ2iD,UAAY3iD,KAAQ4lC,IAC7D1kC,QAAS,kBAAMohD,EAAe1c,IAHhC,SAIGA,GAHI7wB,QAOX,sBAAK9U,UAAWD,KAAQ6G,KAAMxH,GAAG,aAAjC,UACGgjD,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CAAY+/C,SAAUA,EAAU9lF,SAAUkoF,EAAsBrmD,SAAUA,IAE3E8gB,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CAAkB+/C,SAAUA,EAAU9lF,SAAUkoF,EAAsBrmD,SAAUA,gB,qBChGtFkE,GAAkB,CAAC,UAAW,iBA8FrBxgC,eAAWqQ,aAJF,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGEnrE,EAnFiB,SAAC,GAOrC,IANLxJ,EAMI,EANJA,KACAm6E,EAKI,EALJA,iBACAzU,EAII,EAJJA,iBACAvrD,EAGI,EAHJA,QACAlb,EAEI,EAFJA,MACA01E,EACI,EADJA,eAEA,EAAsC7/E,mBAAS6kC,GAAK,IAApD,mBAAO4c,EAAP,KAAoBC,EAApB,KACA,EAAgC1hD,mBAASqlF,GAAzC,mBAAOT,EAAP,KAAiBkC,EAAjB,KACA,EAAgC9mF,mBAAS,IAAIs1C,MAA7C,mBAAO3U,EAAP,KAAiBomD,EAAjB,KAEM/E,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAEpEj/D,qBAAU,WACRia,GAAc1wB,EAAMC,OAAO2C,MAAd,OAAqB6jE,QAArB,IAAqBA,OAArB,EAAqBA,EAAkB71E,OACpDstB,GAASle,EAAMC,OAAO2C,SACrB,IAEH6T,qBAAU,WACRkmE,EAAYzB,GACZ3jC,EAAe7c,GAAK,MACnB,CAAC35B,IAEJ,IAAM87E,EAAuB,SAACC,GAC5BH,EAAYG,IAcRC,EAAmB,WACvB,IAAQxoF,EAA6DkmF,EAA7DlmF,KAAM8P,EAAuDo2E,EAAvDp2E,aAAcm4E,EAAyC/B,EAAzC+B,YAAad,EAA4BjB,EAA5BiB,aAAcpnC,EAAcmmC,EAAdnmC,UACjD0oC,GAAkBP,GAAqBloF,EAAM,KAAO+/C,EAAUh6B,YAAY2C,KAAKg9B,IAC/EgjC,EAAuBjmF,EAAcqN,KAAkBm4E,GAAexlF,EAAc,GAAK0kF,GAQ/F,OANIsB,IAAmBC,EACrB1lC,EAAe7c,GAAK,KACVsiD,GAAkBC,GAC5B1lC,EAAe7c,GAAK,IAGfsiD,GAAkBC,GAG3B,OACE,cAAC,GAAD,CAAel8E,KAAMA,EAAMhK,MAAK,eAAUmkF,EAAiB3mF,MAAQ2mB,QAASA,EAASkgE,OA1BpE,SAAC58E,GAClB,IAAMvG,EAAQ8kF,IACdH,EAAY,IAAIzxC,MACXlzC,IACHwiF,EAASiB,aAAez4E,OAAOw3E,EAASiB,cACxC7D,EAAWnB,gBAAgBjQ,EAAiB71E,OAAOspF,UAAUgB,EAAiBlxE,OAASywE,EACvF7E,GAAa51E,EAAMC,OAAO2C,MAAOi1E,GACjC38D,EAAQ1c,KAmBV,SACE,gCACE,qBAAKtJ,UAAWD,KAAQylC,KAAxB,SACGA,GAAK3vB,KAAI,SAAC8vB,EAAK7wB,GAAN,OACR,qBAEE9U,UAAWoiD,IAAgBzc,EAAM5lC,KAAQ2iD,UAAY3iD,KAAQ4lC,IAC7D1kC,QAAS,kBAAMohD,EAAe1c,IAHhC,SAIGA,GAHI7wB,QAOX,sBAAK9U,UAAWD,KAAQ6G,KAAMxH,GAAG,aAAjC,UACGgjD,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CAAY+/C,SAAUA,EAAU9lF,SAAUkoF,EAAsBrmD,SAAUA,IAE3E8gB,IAAgB5c,GAAK,IACpB,cAAC,GAAD,CAAkB+/C,SAAUA,EAAU9lF,SAAUkoF,EAAsBrmD,SAAUA,gB,qBCkB7EjsB,gBAJS,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGTnrE,EAlGsB,SAAC,GAAwB,IAAD,EAArBmrE,EAAqB,EAArBA,eACtC,EAAiD7/E,mBAAS,CAAE3B,MAAO,UAAWtD,MAAO,OAArF,mBAAO61E,EAAP,KAAyB6Q,EAAzB,KACA,EAAgDzhF,mBAA8B,MAA9E,mBAAOqlF,EAAP,KAAyBgC,EAAzB,KAEA,EAA8CrnF,oBAAS,GAAvD,mBAAOsnF,EAAP,KAAwBC,EAAxB,KACA,EAAwCvnF,oBAAS,GAAjD,mBAAOwnF,EAAP,KAAqBC,EAArB,KACA,EAA4CznF,oBAAS,GAArD,mBAAO0nF,EAAP,KAAsBC,EAAtB,KACA,EAA0D3nF,oBAAS,GAAnE,mBAAO4nF,EAAP,KAA6BC,EAA7B,KAEMxD,EAAYjkF,mBAChB,+BAAMy/E,QAAN,IAAMA,GAAN,UAAMA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAvD,aAAM,EAAyDspF,YAC/D,QAACxE,QAAD,IAACA,GAAD,UAACA,EAAgBgB,gBAAgBjQ,EAAiB71E,cAAlD,aAAC,EAAyDspF,YAGtDyD,EAA+B,SAAC58E,GACpCu8E,EAAgBv8E,IAGZ68E,EAAgC,SAAC78E,EAAem6E,GACpDgC,EAAoBhC,GACpBsC,EAAmBz8E,IAGf88E,EAAuC,SAAC98E,EAAem6E,GAC3DgC,EAAoBhC,GACpBwC,EAA0B38E,IAGtB+8E,EAAkC,SAAC/8E,EAAem6E,GACtDgC,EAAoBhC,GACpBkC,EAAmBr8E,IAGrB,OACE,sBAAK7L,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWD,KAAQue,OAAxB,UACE,cAAC,GAAD,uBACA,cAAC,GAAD,CAAiB7e,SAAU2iF,EAAsB1mF,MAAO61E,OAG1D,cAAC,GAAD,CAAWhlE,MAAO,CAAE3N,MAAOqV,IAA3B,yGAIA,sBAAKjU,UAAWD,KAAQ6G,KAAxB,UACE,cAAC,GAAD,CAAiB/E,MAAM,eAAeZ,QAAS,kBAAMwnF,GAA6B,MAElF,cAAC,GAAD,CACEzD,UAAWA,EACXzT,iBAAkBA,EAClB0T,kBAAmByD,EACnBxD,oBAAqB0D,EACrBzD,yBAA0BwD,IAG3BV,GACC,cAAC,GAAD,CACEp8E,KAAMo8E,EACNjC,iBAAkBA,EAClBzU,iBAAkBA,EAClBvrD,QAAS,kBAAM4iE,GAAgC,EAAO,SAIzDL,GACC,cAAC,GAAD,CACE18E,KAAM08E,EACNvC,iBAAkBA,EAClBzU,iBAAkBA,EAClBvrD,QAAS,kBAAM2iE,GAAqC,EAAO,SAI9DN,GACC,cAAC,GAAD,CACEx8E,KAAMw8E,EACNrC,iBAAkBA,EAClBzU,iBAAkBA,EAClBvrD,QAAS,kBAAM0iE,GAA8B,EAAO,SAIvDP,GACC,cAAC,GAAD,CACEt8E,KAAMs8E,EACN5W,iBAAkBA,EAClBvrD,QAAS,kBAAMyiE,GAA6B,eCflDI,G,kDACJ,WAAYzmF,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,CACXf,KAAM,MAHS,E,gDAOnB,SAAa+S,EAAO5U,GAClB,IAAMd,EAAKzD,KAAKyG,MAAM0S,MACtBnZ,KAAKyG,MAAM0mF,aAAa1pF,EAAIc,K,wBAG9B,SAAWxE,GACTC,KAAK2G,SAAS,CACZP,KAAMrG,M,+BAIV,WACEC,KAAK2G,SAAS,CACZP,KAAMpG,KAAKyG,MAAM6M,Q,oBAIrB,WAAU,IAAD,OACP,EAAuCtT,KAAKyG,MAApCrC,EAAR,EAAQA,QAASkP,EAAjB,EAAiBA,IAAK6F,EAAtB,EAAsBA,MAAOulB,EAA7B,EAA6BA,MACrBt4B,EAASpG,KAAKmH,MAAdf,KACR,OACE,sBAAK/B,UAAS,UAAKD,EAAQgpF,QAAb,WAAd,UACE,sBACEx8E,MACE8tB,EACI,GACA,CACA/5B,OAAQ,WAGdN,UAAWD,EAAQwtC,QARrB,UASE,qBAAKhhC,MAAO,CAAExO,MAAO,QAArB,SACE,uBACEg3B,UAAW,IACX8F,UAAWR,EACX36B,OAAQ,kBAAM,EAAK0C,MAAM4mF,WAAWl0E,EAAO,EAAKhS,MAAMf,OACtDgwB,QAAS,WACFsI,IACH,EAAKj4B,MAAMqrD,YAAY,EAAKrrD,MAAM0S,OAC7B/S,GAAM,EAAKknF,WAAWh6E,KAG/BxP,SAAU,SAAA6J,GAAK,OAAI,EAAK2/E,WAAW3/E,EAAM9G,OAAO9G,QAChDuE,WAAY,SAAAC,GACS,KAAfA,EAAE69B,UACJ,EAAK37B,MAAM4mF,WAAWl0E,EAAO,EAAKhS,MAAMf,OAE5CrG,MAAOqG,EACP/B,UAAWD,EAAQ9B,MACnB0B,aAAcsP,MAIlB,sBAAKjP,UAAWq6B,EAAQt6B,EAAQmuD,KAAO,cAAvC,UACE,qBACEluD,UAAWD,EAAQkjB,KACnBhiB,QAAS,WACP,EAAKmB,MAAMqrD,YAAY,EAAKrrD,MAAM0S,QAHtC,SAKE,cAAC,GAAD,MAEF,qBACE9U,UAAWD,EAAQkjB,KACnBhiB,QAAS,SAACf,EAAG4U,GACX,EAAKg0E,aAAa5oF,EAAG4U,IAHzB,SAKE,cAAC,GAAD,CAAW/W,MAAM,OAAOG,OAAO,OAAOU,MAAM,oBAIjDjD,KAAKyG,MAAMW,OACV,mBAAG/C,UAAWD,EAAQmwD,MAAtB,wBACWv0D,KAAKyG,MAAM8mF,aADtB,yB,GA/EQpkF,IAAMC,WA4FTC,eAAWvH,sBAnLX,SAAAC,GAAK,MAAK,CACvBO,MAAO,CACLS,QAAS,OACTX,MAAO,OACPK,QAAS,YACTE,aAAc,GACdO,SAAU,OACVwC,WAAY,OACZzC,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B1D,OAAQ,wBACRU,gBAAiB,cACjByB,UAAW,GACX,UAAW,CACT5B,MAAOlB,EAAM6D,QAAQC,QAAQ2nF,MAE/B,UAAW,CACTvqF,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BpD,OAAQ,oBACRU,gBAAiB,YAGrBmxD,MAAO,CACLtxD,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5B8C,aAAc,MACdhH,SAAU,IAEZkE,MAAO,CACL1E,OAAO,aAAD,OAAeX,EAAM6D,QAAQ8nC,OAAOtmC,OAC1CnE,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5BrE,QAAS,OACTX,MAAO,OACPK,QAAS,YACTE,aAAc,GACdO,SAAU,OACVwC,WAAY,OACZb,UAAW,IAEby0B,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZr0B,SAAU,CACRvB,OAAQ,kBACRqa,YAAa,GACblY,UAAW,IAEb4oF,YAAa,CACXvrF,QAAS,QAEXqwD,KAAM,CACJrwD,QAAS,QAEXwrF,QAAS,CACPxrF,QAAS,QAEXolB,KAAM,CACJplB,QAAS,OACT0H,WAAY,SACZpH,OAAQ,SAEVovC,QAAS,CACP1vC,QAAS,OACTiwD,UAAW,UAEbi7B,QAAS,CACPlqF,SAAU,GACVD,MAAOlB,EAAM6D,QAAQC,QAAQC,KAC7BnB,OAAQ,UACR,uBAAwB,CACtBzC,QAAS,SAGb,UAAW,CACT,eAAgB,CACdA,QAAS,YAiGWJ,CAAmBorF,KCzLhCj/C,GAAgB,SAAA+Q,GAAG,MAC9B,kFAAkFv0C,KAChFu0C,ICmEE2uC,G,kDACJ,WAAYlnF,GAAQ,IAAD,8BACjB,cAAMA,IAURmnF,WAAa,SAACtvE,EAAGve,GAAJ,OACXue,EAAEjY,OAAO4X,gBAAkBle,EAAMsG,OAAO4X,eAZvB,EAcnB4vE,iBAAmB,SAAC1iE,EAAM/kB,EAAMyf,GAC9B,IAAM9lB,EAAQqG,EAAKC,OAAO4X,cAC1B,OACEkN,EAAK9kB,OAAO4X,gBAAkBle,GAC9BA,IAAU8lB,EAAQxf,OAAO4X,eAlBV,EAsEnB6vE,OAAS,WACP,IAAQ1nF,EAAS,EAAKe,MAAdf,KACJD,EAAcC,KACb6nC,GAAc7nC,GAQd,EAAK2nF,YAAY3nF,GAGpB,EAAKO,SAAS,CACZ4mF,aAAcnnF,EACd4nF,aAAa,EACbr6B,kBAAkB,IALpB,EAAKs6B,QAAQ7nF,GARb,EAAKO,SAAS,CACZ4mF,aAAcnnF,EACd4nF,aAAa,EACbr6B,kBAAkB,MA3EtB,EAAKxsD,MAAQ,CACX+mF,WAAY,KACZ57B,UAAW,KACXqB,kBAAkB,EAClB45B,aAAc,KACdhgF,OAAO,GAPQ,E,8CAsBnB,SAAW9J,EAAI1D,GAAQ,IAAD,OACdqtF,EAAO,aAAOptF,KAAKyG,MAAM0nF,aAE5BlgD,GAAcluC,IACfqtF,EAAQhhE,MAAK,SAAA9N,GAAC,OAAI,EAAKuvE,iBAAiBvvE,EAAGve,EAAOqtF,EAAQ3pF,OAE1DzD,KAAK2G,SAAS,CACZ4mF,aAAcxtF,EACdmuF,WAAYzqF,KAGgB,OAA1BzD,KAAKmH,MAAM+mF,YACbluF,KAAK2G,SAAS,CACZunF,WAAY,OAGhBd,EAAQ3pF,GAAM1D,EACdC,KAAK8xD,YAAY,KAAM9xD,KAAKyG,MAAMiH,aAAa0/E,O,0BAInD,SAAaj0E,GACX,IAAMi1E,EAAa,aAAOpuF,KAAKyG,MAAM0nF,YACrCC,EAAcpzD,OAAO7hB,EAAO,GAC5BnZ,KAAK8xD,YAAY,KAAM9xD,KAAKyG,MAAMiH,aAAa0gF,M,+BAGjD,SAAkB7pF,GAChBvE,KAAK2G,SAAS,CACZ4G,OAAQpH,EAAc5B,EAAEsC,OAAO9G,OAC/BqG,KAAM7B,EAAEsC,OAAO9G,U,qBAInB,SAAQouF,GACN,IAAME,EAAI,aAAOruF,KAAKyG,MAAM0nF,YAC5BE,EAAK/jF,KAAK6jF,GACVnuF,KAAK2G,SACH,CACEP,KAAM,GACN4nF,aAAa,EACbr6B,kBAAkB,EAClBpmD,OAAO,GAETvN,KAAKyG,MAAMiH,aAAa2gF,M,yBA0B5B,SAAYtuF,GAAQ,IAAD,OACjB,OAAqC,IAAjCC,KAAKyG,MAAM0nF,WAAW7nF,QACnBtG,KAAKyG,MAAM0nF,WAAW/hE,MAAK,SAAA9N,GAAC,OAAI,EAAKsvE,WAAWtvE,EAAGve,Q,yBAG5D,SAAY0D,EAAIiN,GACd1Q,KAAK2G,SACH,CACE2rD,UAAW7uD,EACXyqF,WAAY,OAEd,WACEx9E,GAAYA,S,oBAKlB,WAAU,IAAD,OACP,EAAgC1Q,KAAKyG,MAA7BrC,EAAR,EAAQA,QAAS+pF,EAAjB,EAAiBA,WACjB,EAAgCnuF,KAAKmH,MAA7BoG,EAAR,EAAQA,MAAOggF,EAAf,EAAeA,aACf,OACE,sBAAK38E,MAAO,CAAExO,MAAO,KAArB,UACE,sBAAKiC,UAAWD,EAAQk1B,YAAxB,UACE,uBACEF,UAAW,IACX/0B,UAAS,UAAKD,EAAQ9B,MAAb,WACTvC,MAAOC,KAAKmH,MAAMf,KAClBxC,YAAY,0CACZU,WAAY,SAAAqJ,IAEQ,aAAfA,EAAMnN,MAA0C,KAAnBmN,EAAMy0B,UACrB,UAAfz0B,EAAMnN,OAEN,EAAKstF,UAGThqF,SAAU,SAAA6J,GAAK,OAAI,EAAKwlD,kBAAkBxlD,MAE5C,qBACErI,QAAS,SAAAf,GACP,EAAKupF,OAAOvpF,IAEdF,UAAS,UAAKD,EAAQkwD,MAAb,UAJX,SAKE,cAAC,GAAD,CACElyD,MAAO,GACPG,OAAQ,GACRU,MAAOsK,EAAQ,UAAY,iBAIhCvN,KAAKmH,MAAMwsD,kBACV,mBAAGtvD,UAAWD,EAAQmwD,MAAtB,qCACwBg5B,EADxB,qBAIDvtF,KAAKmH,MAAM6mF,aACV,mBAAG3pF,UAAWD,EAAQmwD,MAAtB,wBAAsCg5B,EAAtC,kBAEF,qBACE38E,MAAO,CACLqZ,UAAW,SACXplB,UAAW,IACXm/C,WAAY,EACZxhD,OAAQ,YALZ,SAOG2rF,GACCA,EAAWj0E,KAAI,SAAC5G,EAAK7P,GAAN,OACb,cAAC,GAAD,CAEE6P,IAAKA,EACLorB,MAAO,EAAKv3B,MAAMmrD,YAAc7uD,EAChCquD,YAAa,SAAAruD,GAAE,OAAI,EAAKquD,YAAYruD,IACpC4pF,WAAY,SAAC5pF,EAAI1D,GAAL,OAAe,EAAKstF,WAAW5pF,EAAI1D,IAC/CotF,aAAc,SAAC1pF,EAAIc,GAAL,OAAW,EAAK4oF,aAAa1pF,EAAIc,IAC/C4U,MAAO1V,EACP8pF,aAAcA,EACdnmF,MAAO3D,IAAO,EAAK0D,MAAM+mF,YARpBhiE,oB,GAjKF/iB,IAAMC,WAsLVC,eAAWvH,sBAjPX,SAAAC,GAAK,MAAK,CACvBO,MAAO,CACLI,OAAQ,OACRK,QAAS,OACTX,MAAO,OACPO,aAAc,MACdO,SAAU,OACVwC,WAAY,OACZtC,gBAAiB,QACjBH,MAAOlB,EAAM6D,QAAQC,QAAQO,KAC7B,iBAAkB,CAChBnD,MAAOlB,EAAM6D,QAAQC,QAAQyoF,YAGjC70D,IAAK,CACH/2B,OAAQ,oBACRO,MAAO,UACPb,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,GACToC,UAAW,GACXyzB,SAAU,QAEZgB,YAAa,CACX52B,OAAQ,oBACRN,MAAO,cACPO,aAAc,OACdT,QAAS,OACTyH,eAAgB,gBAChBvG,gBAAiB,QACjB2Z,YAAa,GACbta,QAAS,YACToC,UAAW,GACXyzB,SAAU,QAEZr0B,SAAU,CACRvB,OAAQ,kBACRqa,YAAa,GACblY,UAAW,IAEbqtD,SAAU,CACRhvD,SAAU,GACVD,MAAO,UACPT,OAAQ,UAEV+vD,KAAM,CACJrwD,QAAS,QAEXqyD,MAAO,CACLtxD,MAAO,UACPiH,aAAc,QACdhH,SAAU,OA0LYpB,CAAmB6rF,K,qBC5M9BtkF,eAAWqQ,aALF,SAACvS,GAAD,MAAoE,CAC1FyL,UAAWzL,EAAMyL,UACjBiyE,eAAgB19E,EAAM09E,kBAGEnrE,EA9BW,SAAC,GAAmC,IAAjCmrE,EAAgC,EAAhCA,eAAgBjyE,EAAgB,EAAhBA,UAEhD27E,EAAa,2EAAuErtF,EAAvE,kDAA2HI,EAA3H,4BAAmJsR,QAAnJ,IAAmJA,OAAnJ,EAAmJA,EAAWnP,GAA9J,gBAOnB,OACE,gCACE,cAAC,GAAD,CAAWmN,MAAO,CAAEpO,OAAQ,eAA5B,mDACA,qBAAK6B,UAAWD,KAAQoqF,QAAxB,+GAGS3J,QAHT,IAGSA,OAHT,EAGSA,EAAgB4J,iBAHzB,mCAIgBntF,EAJhB,sCAKYsR,QALZ,IAKYA,OALZ,EAKYA,EAAWnP,GALvB,oBAQA,cAAC,GAAD,CAAcyC,MAAM,oBAAoBZ,QAhBd,WAC5B+pC,UAAUC,UAAUC,UAAUg/C,GAC9Bv+E,GAAa,qB,qBClBJ0+E,GAAe,CAC1B,CACE7tF,KAAM,aACN6C,KAAM,aACNqN,UAAW49E,IAEb,CACE9tF,KAAM,gBACN6C,KAAM,iBACNqN,UAAW69E,IAEb,CACE/tF,KAAM,WACN6C,KAAM,WACNqN,UAAW2nE,IAEb,CACE73E,KAAM,cACN6C,KAAM,cACNqN,UC2BW2I,aAJS,SAACvS,GAAD,MAAoD,CAC1E09E,eAAgB19E,EAAM09E,kBAGTnrE,EAhCyB,SAAC,GAA+B,IAA7BvK,EAA4B,EAA5BA,MAAO01E,EAAqB,EAArBA,eAC1CmC,EAAa5hF,mBAAQ,kBAAMkmB,GAAiBu5D,KAAiB,CAACA,IAOpE,OACE,sBAAKxgF,UAAWD,KAAQ0T,UAAxB,UACE,qBAAKzT,UAAWD,KAAQue,OAAxB,SACE,cAAC,GAAD,4BAGF,cAAC,GAAD,CAAW/R,MAAO,CAAE3N,MAAOqV,IAA3B,yDAEA,sBAAKjU,UAAWD,KAAQ6G,KAAxB,UACE,cAAC,GAAD,CAAW2F,MAAO,CAAEpO,OAAQ,aAA5B,sCACA,cAAC,GAAD,CACEkL,aAAc,SAAC3N,GAAD,OAhBa,SAACA,EAAc6iD,GAChDokC,EAAWpkC,GAAS7iD,EACpBglF,GAAa51E,EAAMC,OAAO2C,MAAOi1E,GAcKC,CAA2BlnF,EAAO,gBAClEouF,WAAU,OAAEtJ,QAAF,IAAEA,OAAF,EAAEA,EAAgBgK,cAE9B,cAAC,GAAD,eCGOxlF,eAAWqQ,aAJF,SAACvS,GAAD,MAAgC,CACtDyL,UAAWzL,EAAMyL,aAGO8G,EA5Be,SAAC,GAA0B,IAAxB9G,EAAuB,EAAvBA,UAAWzD,EAAY,EAAZA,MACrD,EAA4BnK,oBAAS,GAArC,mBAAOwgB,EAAP,KAAeC,EAAf,KACM0zC,EAAQ,UAAMz3D,EAAN,uBAAuBkR,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAWnP,GAAlC,WACR21D,EAAS,UAAM13D,EAAN,uBAOf,OALAkkB,qBAAU,WlCfL,IAAmB7T,EkCgBtBkzE,GAAyB91E,EAAMC,OAAO2C,QlChBhBA,EkCiBZ5C,EAAMC,OAAO2C,MlChBlBxK,MAAM,GAAD,OAAI/F,EAAJ,gBAAoBuQ,EAApB,WAAoC,CAC9CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAU,GACJq8E,GAAar8E,EAAK6R,SAEnB3R,OAAM,SAASrB,GACdiJ,GAAW,oFkCMiBxI,MAAK,kBAAM4d,GAAU,QAClD,IAGD,mCACGD,EACC,cAAC,GAAD,IAEA,qCACE,cAAC,GAAD,CAAUtf,MAAM,mBAChB,cAAC,GAAD,CAASizD,SAAUA,EAAUC,UAAWA,EAAWL,OAAQ21B,cCjCxDI,GAAgB,CAC3B,UACA,UACA,UACA,UACA,WAGWC,GAAiB,CAC5BtqE,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UACrDJ,SAAU,CACR,CACEjhB,gBAAiB0rF,GACjB9rF,YAAa,UACbgsF,YAAa,EACbC,qBAAsBH,GACtBI,iBAAkB,UAClB90E,KAAM,QAKC+0E,GAAe,CAC1BC,qBAAqB,EACrBC,UAAW,CAAEp/E,SAAU,GACvBq/E,MAAO,CAAEjhB,kBAAmB,GAC5BkhB,4BAA6B,EAC7Br0E,OAAQ,CAAEhZ,SAAS,GACnBstF,OAAQ,CACNC,MAAO,CACL,CACEC,UAAW,CACTxtF,SAAS,GAEXytF,MAAO,CACLC,aAAa,EACb30E,IAAK,MAKb3V,QAAS,M,qBCaIuqF,GAxCU,SAAC,GAA8C,IAA5Cz1E,EAA2C,EAA3CA,KAAM01E,EAAqC,EAArCA,kBAAmBC,EAAkB,EAAlBA,YACnD,EAA8B/qF,mBAAS+T,OAAOsC,OAAO,GAAI0zE,KAAzD,mBAAOiB,EAAP,KAAgBC,EAAhB,KACMl6D,EAAU3wB,mBAAQ,kBAAM2T,OAAOsC,OAAO,GAAI8zE,MAAe,IA+B/D,OA7BAvpE,qBAAU,WACR,IAAMsqE,EAAcn3E,OAAOsC,OAAO,GAAI20E,GACtCE,EAAY7rE,SAAS,GAAGjK,KAAOrB,OAAOhC,OAAOqD,GAAM40C,UAEnDihC,EAAWC,KACV,CAAC91E,IAEJ2b,EAAQzwB,QAAU,SAAS6qF,EAAUx/E,GACnC,GAAIA,EAAQrK,OAAS,EAAG,CACtB,IAAM8pF,EAAcr3E,OAAOsC,OAAO,GAAI20E,GAChCK,EAAcjtE,KAAKktE,IAAI,EAAI3/E,EAAQ,GAAG4/E,QAE5CH,EAAY/rE,SAAS,GAAGjhB,gBAAxB,aAA8C0rF,IAC9CsB,EAAY/rE,SAAS,GAAG4qE,qBAAxB,aAAmDH,IAE/CiB,IAAgBM,GAClBD,EAAY/rE,SAAS,GAAGjhB,gBAAgBuN,EAAQ,GAAG4/E,QAAU/3E,GAC7D43E,EAAY/rE,SAAS,GAAG4qE,qBAAqBt+E,EAAQ,GAAG4/E,QAAU/3E,GAClEs3E,EAAkB,QAElBM,EAAY/rE,SAAS,GAAGjhB,gBAAgBuN,EAAQ,GAAG4/E,QAAU93E,GAC7D23E,EAAY/rE,SAAS,GAAG4qE,qBAAqBt+E,EAAQ,GAAG4/E,QAAU93E,GAClEq3E,EAAkBO,IAGpBJ,EAAWG,KAKb,qBAAK/rF,UAAWD,KAAQ0T,UAAxB,SACE,cAAC,iBAAD,CAAesC,KAAM41E,EAASj6D,QAASA,OC/ChCy6D,GAAgB,gBAChBC,GAAe,eACfC,GAAoB,oBCA1B,SAASC,GAAT,GAAmD,IAAnB5+E,EAAkB,EAAlBA,MAAO5J,EAAW,EAAXA,KAAMc,EAAK,EAALA,GAC5C85D,EAAG,UAAMzhE,EAAN,gBAAyByQ,EAAzB,uDAA6E5J,EAA7E,eAAwFc,GAEjG,OAAO1B,MAAMw7D,EAAK,CAChBt7D,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAgmB,GAAG,ODPe+iE,ECOE/iE,EDN5BvtB,GAAMC,SAAS,CACbC,KAAMgwF,GACN5oE,QAASgpE,IAHe,IAAAA,KCQvBnoF,OAAM,kBAAM4H,GAAW,yBAGrB,SAASwgF,GAAT,GAAmF,IAA7D9+E,EAA4D,EAA5DA,MAAO5J,EAAqD,EAArDA,KAAMc,EAA+C,EAA/CA,GAAIwnB,EAA2C,EAA3CA,KAAMjB,EAAqC,EAArCA,KAAMshE,EAA+B,EAA/BA,OAAQC,EAAuB,EAAvBA,cAAeC,EAAQ,EAARA,MACzE5hF,EAAS,IAAIiyD,gBAAgB,CACjCl5D,OACAc,KACAwnB,KAAMA,GAAQ,EACdjB,KAAMA,GAAQ,GACdshE,OAAQA,GAAU,OAClBC,cAAeA,GAAiB,SAG9BhuB,EAAG,UAAMzhE,EAAN,gBAAyByQ,EAAzB,wCAA8D3C,GAIrE,OAFI4hF,IAAOjuB,EAAMA,EAAIljE,wBAAwB,QAASmxF,IAE/CzpF,MAAMw7D,EAAK,CAChBt7D,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAgmB,GAAG,ODzBcojE,ECyBEpjE,EDxB3BvtB,GAAMC,SAAS,CACbC,KAAMiwF,GACN7oE,QAASqpE,IAHc,IAAAA,KC0BtBxoF,OAAM,kBAAM4H,GAAW,yBAGrB,SAAS6gF,GAAT,GAAuF,IAA7Dn/E,EAA4D,EAA5DA,MAAO5J,EAAqD,EAArDA,KAAMc,EAA+C,EAA/CA,GAAIwnB,EAA2C,EAA3CA,KAAMjB,EAAqC,EAArCA,KAAMshE,EAA+B,EAA/BA,OAAQC,EAAuB,EAAvBA,cAAeC,EAAQ,EAARA,MAC7E5hF,EAAS,IAAIiyD,gBAAgB,CACjCl5D,OACAc,KACAwnB,OACAjB,OACAshE,SACAC,kBAGEhuB,EAAG,UAAMzhE,EAAN,gBAAyByQ,EAAzB,wCAA8D3C,GAIrE,OAFI4hF,IAAOjuB,EAAMA,EAAIljE,wBAAwB,QAASmxF,IAE/CzpF,MAAMw7D,EAAK,CAChBt7D,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,QAEPK,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAgmB,GAAG,OD3CkBojE,EC2CEpjE,ED1C/BvtB,GAAMC,SAAS,CACbC,KAAMkwF,GACN9oE,QAASqpE,IAHkB,IAAAA,KC4C1BxoF,OAAM,kBAAM4H,GAAW,yBC9DrB,ICGD8gF,G,4JACJ,WACE,OACE,qBAAK/uF,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,SACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,iVACFJ,KAAK,UACLmC,YAAY,c,GATEjN,IAAMC,WAgBf+nF,M,qBCDAC,GANgB,SAAC,GAAD,IAAG/tF,EAAH,EAAGA,MAAOguF,EAAV,EAAUA,UAAW/rF,EAArB,EAAqBA,QAArB,OAC7B,sBAAKjB,UAAWD,KAAQktF,WAAYhsF,QAASA,EAA7C,UACE,+BAAO+rF,GAAa,cAAC,GAAD,MADtB,IAC6ChuF,MCJlCkuF,GACJ,OADIA,GAEJ,OAGIC,GACJ,OADIA,GAEJ,QAGIC,GACJ,YADIA,GAEJ,MAGIC,GACJ,aADIA,GAEJ,O,qBCqCMC,GAhDmB,SAAC,GAA4D,IAA1DZ,EAAyD,EAAzDA,cAAea,EAA0C,EAA1CA,iBAAkBd,EAAwB,EAAxBA,OAAQe,EAAgB,EAAhBA,UAC5E,EAA4B7sF,mBAAgC,MAA5D,mBAAO6B,EAAP,KAAei7D,EAAf,KACA,EAAwC98D,oBAAS,GAAjD,mBAAO48D,EAAP,KAAsBC,EAAtB,KACMiwB,EAAuB,UAAXhB,EAAqB,OAAS,OAEhD,OACE,eAAC,WAAD,WACE,sBAAKzsF,UAAWD,KAAQ2tF,aAAczsF,QAAS,kBAAMu8D,GAAe,IAAOz7C,IAAK,SAAA6iB,GAAI,OAAI64B,EAAU74B,IAAlG,UACE,+BACE,cAAC,GAAD,CAAc7mC,MAAO,OACf,IAHV,YAIY0vF,KAEZ,eAAC,KAAD,CACE1tF,QAAS,CAAEkmB,MAAOlmB,KAAQqlC,SAC1Bv5B,KAAM0xD,EACNrzC,SAAU1nB,EACVwjB,QAAS,kBAAMw3C,GAAgBD,IAC/Bv4B,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SANlD,UAOE,cAAC,GAAD,CACElmC,MAAOkuF,GACPF,UAAWP,IAAWS,GACtBjsF,QAAS,kBAAMusF,EAAUN,OAE3B,cAAC,GAAD,CACEluF,MAAOmuF,GACPH,UAAWP,IAAWU,GACtBlsF,QAAS,kBAAMusF,EAAUL,OAG3B,qBAAKntF,UAAWD,KAAQ4tF,UAExB,cAAC,GAAD,CACE3uF,MAAOouF,GACPJ,UAAWN,IAAkBU,GAC7BnsF,QAAS,kBAAMssF,EAAiBH,OAElC,cAAC,GAAD,CACEpuF,MAAOquF,GACPL,UAAWN,IAAkBW,GAC7BpsF,QAAS,kBAAMssF,EAAiBF,cCtD7B/5E,GAAb,4JACE,WACE,OACE,sBAAKvV,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAArD,UACE,sBACEE,SAAS,UACTC,SAAS,UACTC,EAAE,mMACFJ,KAAK,UACLmC,YAAY,QAEd,sBACEjC,SAAS,UACTC,SAAS,UACTC,EAAE,4LACFJ,KAAK,UACLmC,YAAY,QAEd,sBACEjC,SAAS,UACTC,SAAS,UACTC,EAAE,qLACFJ,KAAK,UACLmC,YAAY,eAvBtB,GAA+BjN,IAAMC,W,qBCoDtBsQ,gBAJS,SAACvS,GAAD,YAAwC,CAC9D4K,MAAK,UAAE5K,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGXiW,EAxCmB,SAAC,GAAkC,IAAhC3H,EAA+B,EAA/BA,MAAOsc,EAAwB,EAAxBA,OAAQk4C,EAAgB,EAAhBA,UAClD,EAA4BvhE,mBAAS,MAArC,mBAAO6B,EAAP,KAAei7D,EAAf,KACA,EAAwC98D,oBAAS,GAAjD,mBAAO48D,EAAP,KAAsBC,EAAtB,KAQA,OACE,eAAC,WAAD,WACE,qBAAKv8D,QAAS,kBAAMu8D,GAAe,IAAOjxD,MAAO,CAAEjM,OAAQ,WAAayhB,IAAK,SAAA6iB,GAAI,OAAI64B,EAAU74B,IAA/F,SACE,cAAC,GAAD,MAEF,cAAC,KAAD,CACE7kC,QAAS,CAAEkmB,MAAOlmB,KAAQqlC,SAC1Bv5B,KAAM0xD,EACNrzC,SAAU1nB,EACVwjB,QAAS,kBAAMw3C,GAAgBD,IAC/Bv4B,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,SAXhB,SAaE,qBAAKllC,UAAWD,KAAQktF,WAAYhsF,QAxBnB,WACrB,IAAMsoC,EAAI,UAAMlsC,EAAN,gBAAuBqQ,EAAvB,oBAAwCsc,EAAxC,YAAkDk4C,GAC5DxlE,OAAOmP,KAAK09B,EAAM,UAClBi0B,GAAe,IAqBX,gC,qBCZOowB,GAnBY,SAAC,GAAY,IAAX73E,EAAU,EAAVA,KACrByK,EAAOzf,mBAAQ,kBAAMqb,KAAOrG,EAAKyK,MAAMlF,OAAO,kBAAiB,CAACvF,IAEtE,OACE,qBAAK/V,UAAWD,KAAQ0T,UAAxB,SACE,gCACE,sBAAKzT,UAAWD,KAAQ8tF,cAAxB,UACE,oBAAG7tF,UAAWD,KAAQ4hF,SAAtB,UACG5rE,EAAKqiD,UADR,IACoBriD,EAAKsiD,SADzB,IACmC,+BAAO73C,OAE1C,cAAC,GAAD,CAAgBwJ,OAAQjU,EAAKiU,OAAQk4C,UAAWnsD,EAAKmsD,eAEvD,qBAAKliE,UAAWD,KAAQ4sF,MAAxB,SAAgC,SAAImB,OAAO/3E,EAAK42E,SAChD,qBAAK3sF,UAAWD,KAAQguF,QAAxB,SAAkCh4E,EAAKg4E,gB,qBCwEhC14E,gBALS,SAACvS,GAAD,YAAwE,CAC9F8pF,SAAU9pF,EAAMypF,UAAUK,SAC1Bl/E,MAAK,UAAE5K,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGXiW,EA5EiB,SAAC,GAAwD,IAAD,EAArDu3E,EAAqD,EAArDA,SAAUl/E,EAA2C,EAA3CA,MAAOsgF,EAAoC,EAApCA,SAAUC,EAA0B,EAA1BA,OAAQvC,EAAkB,EAAlBA,YACpE,ERXO,CACLwC,mBAAoB/4E,aAAarM,QAAQ,iBACzCqlF,YAAah5E,aAAarM,QAAQ,WQS5BolF,EAAR,EAAQA,mBAAoBC,EAA5B,EAA4BA,YAC5B,EAA0CxtF,mBAASutF,GAAsB,QAAzE,mBAAOxB,EAAP,KAAsBa,EAAtB,KACA,EAA4B5sF,mBAASwtF,GAAe,QAApD,mBAAO1B,EAAP,KAAee,EAAf,KACA,EAAwB7sF,mBAAS,GAAjC,mBAAOyrB,EAAP,KAAay2C,EAAb,KACA,EAA6BliE,oBAAS,GAAtC,mBAAOujD,EAAP,KAAgB9iC,EAAhB,KAEAG,qBAAU,WACR6sE,IACIJ,GAAYC,GAAUvgF,GACxB8+E,GAAY,CAAE9+E,QAAO5J,KAAMkqF,EAAUppF,GAAIqpF,EAAQ7hE,OAAMjB,KR/BzC,GQ+BqDshE,SAAQC,gBAAeC,MAAOjB,MAElG,CAACe,EAAQC,EAAesB,EAAUC,EAAQvC,EAAah+E,IAE1D,IA4BM0gF,EAAa,WACjBvrB,EAAQ,IAGV,OACE,sBAAK7iE,UAAWD,KAAQ0T,UAAxB,UACE,qBAAKzT,UAAWD,KAAQue,OAAxB,SACE,cAAC,GAAD,CACEouE,cAAeA,EACfa,iBAdoB,SAACb,IRxDE,SAAAA,GAC/Bv3E,aAAanM,QAAQ,gBAAiB0jF,GQwDpC2B,CAAkB3B,GAClBa,EAAiBb,IAaXD,OAAQA,EACRe,UArBa,SAACf,IR/CE,SAAAA,GACxBt3E,aAAanM,QAAQ,SAAUyjF,GQ+C7B6B,CAAW7B,GACXe,EAAUf,QAsBPvoC,EACC,qBAAKlkD,UAAWD,KAAQ4tE,gBAAxB,SACE,cAAC,EAAD,CAAazoE,YAAY,MAG3B,qBAAKlF,UAAWD,KAAQwuF,kBAAmBnzC,SA/C5B,SAAC,GAAqB,IAAnB54C,EAAkB,EAAlBA,OAClBm5D,GAAgBn5D,IAAWoqF,EAAS9pB,UAClC5e,GAAS9iC,GAAU,GACvByrE,GAAgB,CACdn/E,QACA0e,OACAqgE,SACA3oF,KAAMkqF,EACNppF,GAAIqpF,EACJ9iE,KR5CY,GQ6CZuhE,gBACAC,MAAOjB,IAENloF,MAAK,kBAAMq/D,EAAQz2C,EAAO,MAC1B5oB,MAAK,kBAAM4d,GAAU,QAiCtB,gBACGwrE,QADH,IACGA,GADH,UACGA,EAAU4B,iBADb,aACG,EAAqB34E,KAAI,SAAAk4E,GAAO,OAC/B,cAAC,GAAD,CAAiCh4E,KAAMg4E,GAAzBA,EAAQ7rB,sB,qBC/CnB7sD,gBAJS,SAACvS,GAAD,MAA6C,CACnEypF,UAAWzpF,EAAMypF,UAAUA,aAGdl3E,EA3BoB,SAAC,GAAmB,IAAjBk3E,EAAgB,EAAhBA,UAC9BI,EAAQ5rF,mBAAQ,kBAAMge,KAAK0vE,MAAgC,IAAjB,OAATlC,QAAS,IAATA,OAAA,EAAAA,EAAWmC,eAAqB,KAAI,QAACnC,QAAD,IAACA,OAAD,EAACA,EAAWmC,eAEvF,OACE,sBAAK1uF,UAAWD,KAAQue,OAAxB,UACE,mBAAGte,UAAWD,KAAQ8B,MAAtB,iCAEA,gCACE,oBAAG7B,UAAWD,KAAQ4uF,SAAtB,2BAEE,iCACGhC,EADH,MACY,kDAGd,oBAAG3sF,UAAWD,KAAQ4uF,SAAtB,oBAEE,4CAAQpC,QAAR,IAAQA,OAAR,EAAQA,EAAWqC,8B,qBCkBdv5E,gBAJS,SAACvS,GAAD,MAA6C,CACnEypF,UAAWzpF,EAAMypF,UAAUA,aAGdl3E,EA3BmB,SAAC,GAAqC,IAAnCk3E,EAAkC,EAAlCA,UAAWyB,EAAuB,EAAvBA,SAAUC,EAAa,EAAbA,OACxD,EAAsCttF,mBAAS,MAA/C,mBAAO+qF,EAAP,KAAoBmD,EAApB,KAEA,OACE,sBAAK7uF,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,IAEA,qBAAKzT,UAAWD,KAAQ+uF,UAAxB,UACY,OAATvC,QAAS,IAATA,OAAA,EAAAA,EAAWqC,gBACV,sCACY,OAATrC,QAAS,IAATA,OAAA,EAAAA,EAAWwC,eACV,cAAC,GAAD,CAAOh5E,KAAMw2E,EAAUwC,aAAcrD,YAAaA,EAAaD,kBAAmBoD,IAEpF,cAAC,GAAD,CAAcnD,YAAaA,EAAasC,SAAUA,EAAUC,OAAQA,OAGtE,cAAC,GAAD,CAAalsF,KAAK,+C,qBCNbitF,GAZkB,SAAC,GAAgB,IAAdC,EAAa,EAAbA,OAClC,OACE,sBAAKjvF,UAAWD,KAAQue,OAAxB,UACE,oBAAGte,UAAWD,KAAQ8B,MAAtB,oBAEE,cAAC,GAAD,CAASmc,UAAW,wBAAyBC,YAPnD,0KASI,cAAC,GAAD,CAAiBpc,MAAM,gBAAgBZ,QAASguF,QCtBzCzoD,GAAS,CACpB,CAAE3kC,MAAO,cAAetB,SAAU,KAClC,CAAEsB,MAAO,kBAAmBtB,SAAU,KACtC,CAAEsB,MAAO,sBAAuBtB,SAAU,KAC1C,CAAEsB,MAAO,kBAAmBtB,SAAU,KACtC,CAAEsB,MAAO,GAAItB,SAAU,KACvB,CAAEsB,MAAO,GAAItB,SAAU,K,qBCsGV8U,gBAJS,SAACvS,GAAD,MAAuC,CAC7DosF,QAASpsF,EAAMosF,WAGF75E,CAAyBrQ,aAjFR,SAAC,GAA8D,IAA5DkqF,EAA2D,EAA3DA,QAAS7wD,EAAkD,EAAlDA,SAAU8wD,EAAwC,EAAxCA,kBAAmBnpF,EAAqB,EAArBA,QAAS8E,EAAY,EAAZA,MAChF,EAAgCnK,mBAAS,MAAzC,mBAAOupB,EAAP,KAAiBk3D,EAAjB,KACA,EAA8CzgF,mBAAwB,MAAtE,mBAAOykF,EAAP,KAAwBC,EAAxB,KAEMjmF,EADO0pC,QAAQ5e,GACH,sBAAmBsH,EAO/B8zD,EAAqB,WACzBlE,EAAY,MACZiE,EAAmB,OA0BrB,OACE,cAAC,GAAD,CAAO7+C,OAAQA,GAAf,gBACG0oD,QADH,IACGA,OADH,EACGA,EAASr5E,KAAI,SAACu5E,EAAoBt6E,GAArB,aACZ,eAAC,GAAD,CAA0BA,MAAO,EAAGvI,MAAO,CAAErO,OAAQ,IAArD,UACE,cAAC,GAAD,CAAWmG,OAAQ,CAAE9D,SAAU,KAA/B,SAAuC6uF,EAAO/vF,OAC9C,cAAC,GAAD,CAAWgF,OAAQ,CAAE9D,SAAU,KAA/B,mBAAuC6uF,EAAOC,aAA9C,aAAuC,EAAcptF,SACrD,cAAC,GAAD,CAAWoC,OAAQ,CAAE9D,SAAU,KAA/B,SAAuC6uF,EAAOE,qBAC9C,eAAC,GAAD,CAAWjrF,OAAQ,CAAE9D,SAAU,KAA/B,UAAuC6uF,EAAOG,qBAA9C,QACA,cAAC,GAAD,CAAWlrF,OAAQ,CAAE9D,SAAU,KAA/B,SACE,qBAAKP,UAAWD,KAAQwpC,KAAMtoC,QAAS,kBAb3B,SAACmuF,GACrBppF,EAAQC,KAAR,UAAgB5I,EAAhB,gBAAiCyN,EAAMC,OAAO2C,MAA9C,sBAAiE0hF,EAAOhwF,KAYnBowF,CAAcJ,IAA3D,yBAIF,cAAC,GAAD,CAAW/qF,OAAQ,CAAE9D,SAAU,IAA/B,SACE,qBAAKP,UAAWD,KAAQqB,OAAQH,QAAS,SAAAqI,GAAK,OA/C9B,SAACA,EAAYwL,GACrCuwE,EAAmBvwE,GACnBssE,EAAY93E,EAAM+pE,eA6CwCuS,CAAkBt8E,EAAOwL,IAA3E,SACE,cAAC,GAAD,CAAWoW,QAAQ,YAAYtsB,MAAM,gBAIzC,cAAC,GAAD,CAASQ,GAAIA,EAAIyM,KAAMu5E,IAAoBtwE,EAAOoV,SAAUA,EAAUlE,QAASs/D,EAA/E,SACE,gCACE,sBAAKtlF,UAAWD,KAAQ8lF,WAAY5kF,QAAS,kBA5CtC,SAACmuF,GAClB/wD,GAAS,EAAM+wD,GACf9J,IA0C6DmK,CAAWL,IAA9D,UACE,cAAC,GAAD,IADF,WAGA,sBAAKpvF,UAAWD,KAAQ8lF,WAAY5kF,QAAS,kBA1CtC,SAACmuF,GAClB,IAAMM,EAAazoE,GAAiBmoE,GACpCM,EAAWC,QAAS,EACpBD,EAAWrwF,KAAX,kBAA6BqwF,EAAWrwF,MACxCqwF,EAAWtwF,GAAK,KAChBi/B,GAAS,EAAMqxD,GACfpK,IAoC6DsK,CAAWR,IAA9D,UACE,cAAC,GAAD,CAAUxwF,MAAO,UAAWb,MAAO,KADrC,WAGA,sBAAKiC,UAAWD,KAAQq3C,aAAcn2C,QAAS,kBApCtC,SAACmuF,GACpBD,GAAkB,EAAMC,GACxB9J,IAkC+D9uD,CAAa44D,IAAlE,UACE,cAAC,GAAD,IADF,oBAxBSA,EAAOhwF,a,qBC1DfywF,GAJY,SAAC,GAAgB,IAAd1xF,EAAa,EAAbA,OAC5B,OAAO,qBAAK6B,UAAWD,KAAQ4tF,QAASphF,MAAO,CAAEpO,OAAO,GAAD,OAAKA,EAAL,YCR5CuvB,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAClB,IAAMC,EAAQD,EAAMirB,YAAYhrB,MAEhC,OAAO,2BACF6qB,GADL,IAEEvvB,OAAQ0E,EAAQ,gBAAkB,oBAClCrE,QAAS,OACTgD,UAAW,OACXpD,aAAc,GACdF,QAAS,UACT,UAAW,CACTC,OAAQ0E,EAAQ,gBAAkB,kCAClCrB,UAAW,WAIjBusB,mBAAoB,SAAAL,GAAQ,kCACvBA,GADuB,IAE1B/vB,QAAS,UAEXqwB,YAAa,SAAAN,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,UACPC,SAAU,MAEZsvB,OAAQ,SAACP,EAAU9qB,GACjB,OAAO,2BACF8qB,GADL,IAEE/uB,SAAU,GACVyB,OAAQ,UACRvB,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,UACP,UAAW,CACTC,SAAU,GACVE,gBAAiB+D,EAAMgrB,UAAY,UAAY,UAC/ClvB,MAAO,cAIbwvB,KAAM,SAAAR,GAAQ,kCACTA,GADS,IAEZxvB,QAAS,EACTiwB,SAAU,YAEZ9uB,YAAa,SAAAquB,GAAQ,kCAChBA,GADgB,IAEnBhvB,MAAO,wBACPC,SAAU,GACVd,MAAO,iBAET+xF,WAAY,SAAAliE,GAAQ,kCACfA,GADe,IAElBtvB,aAAc,EACdS,gBAAiB,UACjB,UAAW,CACTH,MAAO,WAET,iBAAkB,CAChBG,gBAAiB,UACjBH,MAAO,e,qBCmBEyW,gBAJS,SAACvS,GAAD,MAA4B,CAClDmmB,MAAOnmB,EAAMmmB,SAGA5T,EA7D0B,SAAC,GAQnC,IAPLtS,EAOI,EAPJA,MACAF,EAMI,EANJA,aACAhB,EAKI,EALJA,MACAonB,EAII,EAJJA,MACAvW,EAGI,EAHJA,OACAqf,EAEI,EAFJA,QACAtyB,EACI,EADJA,SAEA,EAAuDkB,mBAAS,IAAhE,mBAAO+wB,EAAP,KAAgBM,EAAhB,KAEM+9D,EAAahvF,mBAAQ,WACzB,OAAO2R,EAAOmD,KAAI,SAAAna,GAAK,OAAIg2B,EAAQ1jB,MAAK,gBAAUokB,EAAV,EAAG12B,MAAYsD,EAAf,EAAeA,MAAf,OAA2BozB,GAAO12B,GAASsD,GAAStD,UAC3F,CAACgX,EAAQgf,IAEZnQ,qBAAU,WACR,GAAI0H,EAAO,CACT,IAAMyI,EAA4B,GAElCzI,EAAMjT,SAAQ,YAAqB,IAAlBqc,EAAiB,EAAjBA,MACXA,GACFA,EAAMrc,SAAQ,YAAwB,IAArB3W,EAAoB,EAApBA,KAAMD,EAAc,EAAdA,GACrBsyB,EAAQzrB,KAAK,CAAEjH,MAAOK,EAAM3D,MAAO0D,UAKzC4yB,EAAWN,MAEZ,CAACzI,IAMJ,OACE,qCACGpnB,GAAS,mBAAG7B,UAAWD,KAAQ8B,MAAtB,SAA8BA,IACxC,cAAC,KAAD,CACEk1B,SAAO,EACP+J,aAAa,EACbz8B,OAAQqpB,GACRgE,QAASA,EACTh2B,MAAOq0F,EACPx9D,cAAe,IACfC,cAAe,IACfC,cAAe,OACf1vB,MAAOA,EACPtD,SAjBe,SAAA/D,GACnB+D,EAAS/D,IAiBLq2B,QAASA,EACTxyB,YAAa,gBAEdsD,GAAgB,mBAAG7C,UAAWD,KAAQ8C,aAAtB,SAAqCA,U,qBCjD7CmtF,GATsB,SAAC,GAA6B,IAA3B/uF,EAA0B,EAA1BA,QAASgvF,EAAiB,EAAjBA,WAC/C,OACE,sBAAKjwF,UAAWD,KAAQ0T,UAAxB,UACGw8E,GAAc,cAAC,GAAD,CAAiBpuF,MAAM,eAAeZ,QAASA,IAC9D,cAAC,GAAD,uCChBOivF,GAAa,CACxB7wF,KAAM,GACNgwF,MAAO,CACL,CACEc,QAAS,GACTC,WAAY,GAEd,CACED,QAAS,GACTC,WAAY,KAKLC,GAAU,CACrBF,QAAS,I,SCbIG,G,uFAAf,WAA0BntF,EAAgB8L,EAAarI,GAAvD,gBAAAqO,EAAA,6DACQyc,EAAuB,CAC3BtuB,YAAa,cACbO,QAAS0H,KACTlI,OAAQA,GAGNyD,IACF8qB,EAAQ9qB,KAAOC,KAAKC,UAAUF,IARlC,kBAWS1D,MAAM+L,EAAKyiB,GACfluB,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAC,GACJ,UAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAUsS,KACZ,OAAOtS,EAASsS,KAGlB,UAAItS,QAAJ,IAAIA,OAAJ,EAAIA,EAAUV,MACZ,aAAMU,QAAN,IAAMA,OAAN,EAAMA,EAAUV,UAnBxB,4C,0BAwBMwtF,G,4HACJ,WAAUthF,GAAV,UAAAgG,EAAA,+EACSq7E,GAAW,MAAOrhF,IAD3B,2C,kHAIA,WAAWA,EAAarI,GAAxB,UAAAqO,EAAA,+EACSq7E,GAAW,OAAQrhF,EAAKrI,IADjC,2C,mHAIA,WAAUqI,EAAarI,GAAvB,UAAAqO,EAAA,+EACSq7E,GAAW,MAAOrhF,EAAKrI,IADhC,2C,qHAIA,WAAYqI,EAAarI,GAAzB,UAAAqO,EAAA,+EACSq7E,GAAW,QAASrhF,EAAKrI,IADlC,2C,sHAIA,WAAaqI,EAAarI,GAA1B,UAAAqO,EAAA,+EACSq7E,GAAW,SAAUrhF,EAAKrI,IADnC,2C,gEAKa,OAAI2pF,GC9CNC,GAAc,cACdC,GAAa,aACbC,GAAgB,gBAChBC,GAAgB,gBAChBC,GAAsB,sBAEtBC,GAAa,SAAA3B,GACxBjzF,GAAMC,SAAS,CACbC,KAAMq0F,GACNjtE,QAAS,CACP2rE,cAKO4B,GAAa,SAAA1B,GACxBnzF,GAAMC,SAAS,CACbC,KAAMs0F,GACNltE,QAAS,CACP6rE,aAKO2B,GAAqB,SAAA3B,GAChCnzF,GAAMC,SAAS,CACbC,KAAMu0F,GACNntE,QAAS,CACP6rE,aAKO4B,GAAqB,SAAAC,GAChCh1F,GAAMC,SAAS,CACbC,KAAMw0F,GACNptE,QAAS,CACP0tE,eAKOC,GAAoB,WAC/Bj1F,GAAMC,SAAS,CACbC,KAAMy0F,MC5CGO,GAAa,aACbhjF,GAAc,cAEdijF,GAAY,SAAAhC,GACvBnzF,GAAMC,SAAS,CACbC,KAAMg1F,GACN5tE,QAAS,CACP6rE,aAKOiC,GAAmB,WAC9Bp1F,GAAMC,SAAS,CACbC,KAAMgS,M,SCVKmjF,G,mFAAf,oCAAAr8E,EAAA,6DAA4BvH,EAA5B,EAA4BA,MAAO5J,EAAnC,EAAmCA,KAAMc,EAAzC,EAAyCA,GAAzC,kBAEuB2sF,GAAI3tF,IAAJ,UAAWzG,EAAX,gBAA2BuQ,EAA3B,mCAA2D5J,EAA3D,eAAsEc,IAF7F,QAEUmR,EAFV,SAKM86E,GAAW96E,GALjB,gDAQI/J,GAAW,KAAM7H,SARrB,0D,sEAYA,wCAAA8Q,EAAA,6DAA2BvH,EAA3B,EAA2BA,MAAO0hF,EAAlC,EAAkCA,OAAQtrF,EAA1C,EAA0CA,KAAMc,EAAhD,EAAgDA,GAAhD,kBAE4B2sF,GAAIC,KAAJ,UAAYr0F,EAAZ,gBAA4BuQ,EAA5B,sBAAuD0hF,GAFnF,cAEUqC,EAFV,gBAGuBF,GAAI3tF,IAAJ,UAAWzG,EAAX,gBAA2BuQ,EAA3B,8BAAsD+jF,EAAUryF,GAAhE,iBAA2E0E,EAA3E,eAAsFc,IAH7G,QAGUmR,EAHV,UAMM+6E,GAAW/6E,GACXpK,GAAa,mCAPnB,kDAUIK,GAAW,KAAM7H,SAVrB,2D,sEAcA,wCAAA8Q,EAAA,6DAA8BvH,EAA9B,EAA8BA,MAAO0hF,EAArC,EAAqCA,OAAQtrF,EAA7C,EAA6CA,KAAMc,EAAnD,EAAmDA,GAAnD,kBAE4B2sF,GAAIG,MAAJ,UAAav0F,EAAb,gBAA6BuQ,EAA7B,sBAAwD0hF,GAFpF,cAEUqC,EAFV,gBAGuBF,GAAI3tF,IAAJ,UAAWzG,EAAX,gBAA2BuQ,EAA3B,8BAAsD+jF,EAAUryF,GAAhE,iBAA2E0E,EAA3E,eAAsFc,IAH7G,QAGUmR,EAHV,UAMMg7E,GAAmBh7E,GACnBpK,GAAa,mCAPnB,kDAUIK,GAAW,KAAM7H,SAVrB,2D,sEAcA,gCAAA8Q,EAAA,6DAA8BvH,EAA9B,EAA8BA,MAAOujF,EAArC,EAAqCA,SAArC,kBAEUM,GAAII,OAAJ,UAAcx0F,EAAd,gBAA8BuQ,EAA9B,8BAAyDujF,IAFnE,OAGID,GAAmBC,GACnBtlF,GAAa,kCAJjB,gDAMIK,GAAW,KAAM7H,SANrB,0D,+BAUeytF,G,mFAAf,sCAAA38E,EAAA,6DAA2BvH,EAA3B,EAA2BA,MAAO5J,EAAlC,EAAkCA,KAAMc,EAAxC,EAAwCA,GAAIqsF,EAA5C,EAA4CA,SAA5C,kBAEuBM,GAAI3tF,IAAJ,UAAWzG,EAAX,gBAA2BuQ,EAA3B,8BAAsDujF,EAAtD,iBAAuEntF,EAAvE,eAAkFc,IAFzG,cAEUmR,EAFV,OAGIq7E,GAAUr7E,GAHd,kBAIWA,GAJX,gCAMI/J,GAAW,KAAM7H,SANrB,0D,+BAUe0tF,G,mFAAf,4CAAA58E,EAAA,6DAAkCvH,EAAlC,EAAkCA,MAAOujF,EAAzC,EAAyCA,SAAUb,EAAnD,EAAmDA,WAAYtsF,EAA/D,EAA+DA,KAAMc,EAArE,EAAqEA,GAAIwnB,EAAzE,EAAyEA,KAAMve,EAA/E,EAA+EA,OAA/E,SAEU9C,EAAS,IAAIiyD,gBAAgB,CACjCl5D,OACAc,KACAwrF,aACAviF,SACAsd,KAAM,IACNiB,KAAMA,GAAQ,IACdpX,KAAM,SATZ,SAWiBu8E,GAAI3tF,IAAJ,UAAWzG,EAAX,gBAA2BuQ,EAA3B,8BAAsDujF,EAAtD,0BAAgFlmF,IAXjG,wEAaIiB,GAAW,KAAM7H,SAbrB,0D,sEAiBA,oCAAA8Q,EAAA,6DAAiCvH,EAAjC,EAAiCA,MAAOokF,EAAxC,EAAwCA,eAAgB1lE,EAAxD,EAAwDA,KAAxD,SAEUrhB,EAAS,IAAIiyD,gBAAgB,CACjC5wC,OACAjB,KAAM,KACNnW,KAAM,YALZ,SAOiBu8E,GAAI3tF,IAAJ,UAAWzG,EAAX,gBAA2BuQ,EAA3B,0BAAkDokF,EAAlD,YAAoE/mF,IAPrF,wEASIiB,GAAW,KAAM7H,SATrB,0D,+CCrDA,I,GAyIekR,gBALS,SAACvS,GAAD,YAA+D,CACrF4K,MAAK,UAAE5K,EAAMyL,iBAAR,aAAE,EAAiBnP,GACxB8vF,QAASpsF,EAAMosF,WAGF75E,EAzIgB,SAAC,GASzB,IARLxJ,EAQI,EARJA,KACAma,EAOI,EAPJA,QACAtY,EAMI,EANJA,MACAqkF,EAKI,EALJA,eACA7C,EAII,EAJJA,QACAlB,EAGI,EAHJA,SACAC,EAEI,EAFJA,OACA9qB,EACI,EADJA,eAEA,EAAoCxiE,mBAAmB,IAAvD,mBAAO4hF,EAAP,KAAmBC,EAAnB,KACA,EAAsC7hF,mBAAS,IAA/C,mBAAOqxF,EAAP,KAAoBC,EAApB,KACA,ECxCK,SAA0BC,GAC/B,MAA0BvxF,mBAASuxF,GAAnC,mBAAOpvF,EAAP,KAAcR,EAAd,KACM6vF,EAAQ7wE,iBAAO,MAEf8wE,EAAmBC,uBAAY,SAACvvF,EAAOwvF,GAC3CH,EAAM3wE,QAAU8wE,EAChBhwF,EAASQ,KACR,IASH,OAPAye,qBAAU,WACJ4wE,EAAM3wE,UACR2wE,EAAM3wE,QAAQ1e,GACdqvF,EAAM3wE,QAAU,QAEjB,CAAC1e,IAEG,CAACA,EAAOsvF,GDwBaG,CAAiBR,GAAkB7B,IAA/D,mBAAOd,EAAP,KAAegC,EAAf,KACMoB,EAAkBlxE,iBAAO,MAEzBmxE,EAAa1xF,mBAAQ,kBAAMkmB,GAAiBmoE,KAAS,CAACA,IACtDsD,EAAkB3xF,mBAAQ,kBAAMkmB,GAAiB+qE,KAAc,CAACA,IAmBhEW,EAAuB,WACvBH,EAAgBhxE,SAClBgxE,EAAgBhxE,QAAQgyB,kBA8BtB0zC,EAAe,SAACxrF,GAAmB,IAAD,EAEhC4sD,EAAS,OAAG4mC,QAAH,IAAGA,GAAH,UAAGA,EAASrhF,QAAO,qBAAGzO,MAAW,OAAKgwF,QAAL,IAAKA,OAAL,EAAKA,EAAQhwF,cAA9C,aAAG,EAAgDyW,KAAI,qBAAGxW,QACnEyhF,EAASC,GAAUrlF,EAAO,GAAI4sD,GAGpC,OAFAk6B,EAAc1B,IAENA,EAAO7+E,QAGX2wF,EAAgB,SAACl3F,EAAoCoZ,GAAmB,IAAD,EAI3E,OAHA49E,EAAgB59E,GAASisE,GAAUrlF,GACnCu2F,EAAeS,KAER,UAACA,EAAgB7kF,QAAO,SAACgH,GAAD,cAAmBA,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAK5S,iBAAhD,aAAC,EAAwDA,SAG5D4wF,EAAiB,WACrB,IAAMC,EAAY5L,EAAakI,EAAO/vF,MAChC0zF,EAAa3D,EAAOC,MAAM3vE,QAAO,SAACZ,EAAD,EAAqBhK,GAArB,IAAUq7E,EAAV,EAAUA,QAAV,OAA+ByC,EAAczC,EAASr7E,MAAQ,GAErG,OAAQg+E,IAAcC,GAGxB,OACE,cAAC,GAAD,CACElnF,KAAMA,EACNma,QAASA,EACTkgE,OA7Ce,WACH2M,MAGZJ,EAAWpD,MAAQD,EAAOC,MAAMx5E,KAAI,SAACkE,EAAMjF,GAEzC,OADAiF,EAAKq2E,WAAat7E,EAAQ,EACnBiF,KAET04E,EAAW/kF,MAAQA,EACfqkF,IAAmBA,EAAepC,O,qCACpCqD,CAAa,CAAEtlF,QAAO0hF,OAAQqD,EAAY3uF,KAAMkqF,EAAUppF,GAAIqpF,I,4CAE9DgF,CAAU,CAAEvlF,QAAO0hF,OAAQqD,EAAY3uF,KAAMkqF,EAAUppF,GAAIqpF,IAAUzqF,MAAK,kBAAM2/D,OAElFn9C,MAgCAnkB,OAAqB,OAAdkwF,QAAc,IAAdA,OAAA,EAAAA,EAAgB1yF,SAAQ,OAAC0yF,QAAD,IAACA,OAAD,EAACA,EAAgBpC,QAAzC,eAA0DoC,EAAe1yF,MAAS,gBACzF8mF,aAAc,cAAC,GAAD,CAAmBllF,QAlEf,WACpBwxF,EAAWpD,MAAMppF,KAAKghB,GAAiBopE,KACvCe,EAAUqB,EAAYE,IAgEqC1C,WAAYb,EAAOC,MAAMptF,OAAS,KAL7F,SAME,sBAAKjC,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CACE5R,MAAM,cACNtC,YAAY,oBACZ7D,MAAO0zF,EAAO/vF,MAAQ,GACtBI,SAAU,SAAC6J,GAAD,OApFQ5N,EAoFyB4N,EAAM9G,OAAO9G,MAnF9DwrF,EAAaxrF,GACb+2F,EAAWpzF,KAAO3D,OAClB01F,EAAUqB,GAHa,IAAC/2F,GAqFlBqH,QAASw/E,EAAWtgF,OACpBgnC,iBAAkB,CAAE9qC,OAAQ,eAC5B0E,aAAc0/E,EAAW,KAG3B,cAAC,GAAD,CAASpkF,OAAQ,KAEhBixF,EAAOC,MAAMx5E,KAAI,SAACkE,EAAMjF,GAAP,eAChB,sBAAK9U,UAAWD,KAAQmzF,SAAxB,UACE,cAAC,GAAD,CACEzzF,SAAU,SAAC/D,GAAD,OAzFG,SAACA,EAAyBoZ,GACjD89E,EAAcl3F,EAAOoZ,GACrB29E,EAAWpD,MAAMv6E,GAAOq7E,QAAUz0F,EAAMma,KAAI,qBAAGna,SAC/C01F,EAAUqB,GAsFuCU,CAAiBz3F,EAAOoZ,IAC/DpC,OAAQqH,EAAKo2E,QACbtuF,MAAK,eAAUiT,EAAQ,GACvB/R,SAAQ,UAACivF,EAAYl9E,UAAb,aAAC,EAAoB7S,QAC7BY,gBAAe,UAACmvF,EAAYl9E,UAAb,aAAC,EAAoB7S,SAAU+vF,EAAYl9E,GAAO,KAElEA,EAAQ,GACP,qBAAK9U,UAAWD,KAAQg6B,SAAU94B,QAAS,kBA/E9B,SAAC6T,GACxB29E,EAAWpD,MAAM14D,OAAO7hB,EAAO,GAC/B49E,EAAgB/7D,OAAO7hB,EAAO,GAE9Bm9E,EAAeS,GACftB,EAAUqB,GA0EiDW,CAAiBt+E,IAAlE,SACE,cAAC,GAAD,QAViCiF,EAAKq2E,eAe9C,qBAAKruE,IAAKywE,Y,qBE7GHn9E,gBAJS,SAACvS,GAAD,YAAwC,CAC9D4K,MAAK,UAAE5K,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGXiW,EA5BgB,SAAC,GAA8C,IAA5C3H,EAA2C,EAA3CA,MAAO7B,EAAoC,EAApCA,KAAMkmF,EAA8B,EAA9BA,eAAgB/rE,EAAc,EAAdA,QAM7D,OACE,cAAC,KAAD,CAAOna,KAAMA,EAAMma,QAASA,EAA5B,SACE,sBAAKhmB,UAAWD,KAAQ0T,UAAxB,UACE,oBAAGzT,UAAWD,KAAQ8B,MAAtB,6CAA8DkwF,EAAe1yF,KAA7E,cACA,qBAAKW,UAAWD,KAAQm9D,YAAaj8D,QAAS+kB,EAA9C,SACE,cAAC,GAAD,CAAWpnB,MAAOqV,OAEpB,sBAAKjU,UAAWD,KAAQi8B,YAAxB,UACE,qBAAKh8B,UAAWD,KAAQq3C,aAAcn2C,QAbzB,SAACqI,I,qCACpB+pF,CAAa,CAAC3lF,QAAOujF,SAAUc,EAAe3yF,KAC9C4mB,EAAQ1c,IAWF,oBAGA,cAAC,GAAD,CAAcrI,QAAS+kB,EAASnkB,MAAM,sB,qBCmCjCwT,gBAJS,SAACvS,GAAD,MAAuC,CAC7DosF,QAASpsF,EAAMosF,WAGF75E,EApDgB,SAAC,GAAmD,IAAjD65E,EAAgD,EAAhDA,QAASlB,EAAuC,EAAvCA,SAAUC,EAA6B,EAA7BA,OAAQ9qB,EAAqB,EAArBA,eAC3D,EAAwCxiE,oBAAS,GAAjD,mBAAOwnF,EAAP,KAAqBC,EAArB,KACA,EAA8CznF,oBAAS,GAAvD,mBAAOsnF,EAAP,KAAwBC,EAAxB,KACA,EAAoCvnF,mBAA4B,MAAhE,mBAAOoxF,EAAP,KAAuBX,EAAvB,KAEMkC,EAA0B,SAACznF,EAAekmF,GAC9CX,EAAUW,GACV7J,EAAmBr8E,IAGf0nF,EAA0B,SAAC1nF,EAAekmF,GAC9CX,EAAUW,GACV3J,EAAgBv8E,IAGlB,OACE,sBAAK7L,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAew7E,OAAQ,kBAAM7G,GAAgB,MAC7C,qBAAKpoF,UAAWD,KAAQyzF,UAAxB,UACU,OAAPtE,QAAO,IAAPA,OAAA,EAAAA,EAASjtF,QACR,cAAC,GAAD,CAAco8B,SAAUk1D,EAAyBpE,kBAAmBmE,IAEpE,cAAC,GAAD,CAAavxF,KAAK,2CAIrBomF,GACC,cAAC,GAAD,CACEt8E,KAAMs8E,EACNniE,QAAS,kBAAMutE,GAAwB,EAAO,OAC9CxB,eAAgBA,EAChB/D,SAAUA,EACVC,OAAQA,EACR9qB,eAAgBA,IAInB8kB,GACC,cAAC,GAAD,CACEp8E,KAAMo8E,EACN8J,eAAgBA,EAChB/rE,QAAS,kBAAMstE,GAAwB,EAAO,e,qBCsBzCtuF,eAAWqQ,aALF,SAACvS,GAAD,MAAoE,CAC1FypF,UAAWzpF,EAAMypF,UACjB2C,QAASpsF,EAAMosF,WAGS75E,EAzDG,SAAC,GAAmC,IAAjCvK,EAAgC,EAAhCA,MAAOyhF,EAAyB,EAAzBA,UAAW2C,EAAc,EAAdA,QAChD,EAAgCvuF,mBAAS,MAAzC,mBAAOqtF,EAAP,KAAiByF,EAAjB,KACA,EAA4B9yF,mBAAS,MAArC,mBAAOstF,EAAP,KAAeyF,EAAf,KACA,EAA4B/yF,oBAAS,GAArC,mBAAOwgB,EAAP,KAAeC,EAAf,KACMoxE,EAAkBlxE,iBAAO,MACzBD,EAAeC,iBAAO,MAE5BC,qBAAU,WACRF,EAAaG,QAAQC,SAAS,EAAG,KAChC,IAEHF,qBAAU,WACqB,QAAhB,OAATgrE,QAAS,IAATA,OAAA,EAAAA,EAAWA,YACbnrE,GAAU,KAEX,CAACmrE,EAAW2C,IAEf3tE,qBAAU,WAGR,OAFA5S,GAAO7D,EAAMC,OAAO2C,OACpBsb,GAASle,EAAMC,OAAO2C,OACfwjF,KACN,IAQH,OACE,sBAAKlxF,UAAWmhB,EAASphB,KAAQ+hB,gBAAkB/hB,KAAQ0T,UAAWsO,IAAKV,EAA3E,UACE,cAAC,GAAD,CACExf,MAAM,YACN6L,MAAO5C,EAAMC,OAAO2C,MACpBmO,SAAU,CAACywE,GAAuBE,GAAa8E,IAC/Cx1E,oBAAqB23E,EACrB13E,kBAAmB23E,IAEpBvyE,EACC,cAAC,GAAD,IAEA,qCACE,cAAC,GAAD,CAAe6sE,SAAUA,EAAUC,OAAQA,IAE3C,cAAC,GAAD,CAAaD,SAAUA,EAAUC,OAAQA,EAAQ9qB,eArB5B,WACvBqvB,EAAgBhxE,SAClBgxE,EAAgBhxE,QAAQgyB,uBAsBxB,qBAAKzxB,IAAKywE,W,8BCvDDmB,GARY,SAAC,GAA6B,IAA3Bx1E,EAA0B,EAA1BA,SAAU/e,EAAgB,EAAhBA,GAAIiZ,EAAY,EAAZA,MAC1C,OACE,cAAC,KAAD,CAAcC,OAAO,QAAQlZ,GAAIA,EAAIY,UAAWD,KAAQqY,QAASC,MAAOA,EAAxE,SACG8F,K,qBC0GQ9I,gBALS,SAACvS,GAAD,MAAkD,CACxEssF,OAAQtsF,EAAMssF,OACd/8D,MAAOvvB,EAAMuvB,SAGAhd,CAAyBrQ,aApGD,SAAC,GAAiC,IAAD,IAA9BoqF,EAA8B,EAA9BA,OAAQ/8D,EAAsB,EAAtBA,MAAOgM,EAAe,EAAfA,SACjDtoB,EAAOhV,mBAOb,WAAoB,IAAD,EACjB,cAAOquF,QAAP,IAAOA,GAAP,UAAOA,EAAQC,aAAf,aAAO,EAAex5E,KAAI,kBAA4C,CAA5C,EAAGu6E,WAAH,EAAewD,6BARb,CAACxE,IACzBzvE,EAAiB5e,mBAUvB,WAA8B,IAAD,EAC3B,MAAO,CACL8yF,OAAQ,CACNz1F,QAAS,CACPiC,IAAK,KAGTkM,MAAO,CACL5N,YAAa,UACbI,gBAAiB,WAEnB6gB,SAAU,CACRC,UAAW,CACT7gB,MAAO,SAAC8gB,GAAoC,IAAD,IACnC7J,EAAS,OAAGm5E,QAAH,IAAGA,GAAH,UAAGA,EAAQC,aAAX,iBAAG,EAAerhF,MAC/B,qBAAGoiF,YAA+CtwE,EAAY9gB,gBADjD,aAAG,EAEf80F,kBACH,MAAM,GAAN,OAAU79E,EAAV,mBAEFpU,MAAO,iBAAM,MAGjBspF,OAAQ,CACNC,MAAO,CACL,CACE2I,cAAuC,IAAlB,OAAN3E,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeptF,QAC9BpE,SAAS,IAGbm2F,MAAO,CACL,CACE1I,MAAO,CACLj/E,SAAU,SAAC3Q,GAAD,gBAAsBA,EAAtB,WAKlBu4F,QAAS,CACP7zE,OAAQ,CACNtT,OAAQ,gBAAGpR,EAAH,EAAGA,MAAH,gBAAuBA,EAAvB,YAjDkC,CAAC0zF,EAAQ/8D,IACrD1b,EAAS5V,mBACb,yBAAMgV,QAAN,IAAMA,OAAN,EAAMA,EAAM2J,QAAO,SAACw0E,EAAD,UAAqCA,EAArC,sBAAmE,KACtF,CAACn+E,IAoDH,IAAMgxC,EAAe,SAACopC,GAAuB,IAAD,EAC1C,cAAOA,QAAP,IAAOA,GAAP,UAAOA,EAASt6E,KAAI,SAAA+T,GAAM,aAAS,OAALyI,QAAK,IAALA,GAAA,UAAAA,EAAOrkB,MAAK,qBAAG5O,KAAgBwqB,YAA/B,eAAwCvqB,OAAQ,aAA9E,aAAO,EAA4EihB,KAAK,QAG1F,OACE,qBAAKtgB,WAAY2W,GAAU5W,KAAQ0T,UAAnC,SACGkD,EACC,qCACE,cAAC,KAAD,CAAaZ,KAAMA,EAAMwK,QAASZ,EAAgBzhB,OAAO,wBAEzD,qBAAK8B,UAAWD,KAAQiiB,IAAxB,gBACGotE,QADH,IACGA,GADH,UACGA,EAAQC,aADX,aACG,EAAex5E,KAAI,kBAAGs6E,EAAH,EAAGA,QAASC,EAAZ,EAAYA,WAAZ,OAClB,qCACE,qBAAKpwF,UAAWD,KAAQqkB,SAAU,WAAUgsE,EAAWn5E,WAAY,cAAnE,mBACGob,EAAMrkB,MAAK,qBAAG5O,KAAgB+wF,EAAQ,aADzC,aACG,EAA2C9wF,OAE9C,eAAC,GAAD,CAASD,GAAIgxF,EAAWn5E,WAAxB,kBACQm5E,EADR,KACsBrpC,EAAaopC,cAMzC,qBAAKnwF,UAAWD,KAAQiiB,IAAxB,gBACGotE,QADH,IACGA,GADH,UACGA,EAAQC,aADX,aACG,EAAex5E,KAAI,gBAAGu6E,EAAH,EAAGA,WAAY0D,EAAf,EAAeA,kBAAf,OAClB,qBAAsB9zF,UAAWD,KAAQwpC,KAAMtoC,QAAS,kBAAMo9B,EAAS+xD,IAAvE,SACG0D,EAAoB,mBAAqB,IADlC1D,WAOhB,cAAC,GAAD,CAAaruF,KAAM,6CCnGd2rB,GAAe,CAC1BC,QAAS,SAACC,EAAU9qB,GAAX,mBAAC,eACL8qB,GADI,IAEP7vB,MAAO,IACPM,OAAQ,OACRK,QAAS,OACTgD,UAAW,OACX3C,gBAAiB,cACjBuB,OAAQ,UACR,UAAW,CACTgF,eAAgB,UAElB,UAAW,CACTjH,OAAQ,OACRqD,UAAW,WAGfusB,mBAAoB,SAACL,EAAU9qB,GAAX,mBAAC,eAChB8qB,GADe,IAElB7uB,gBAAiB,iBAEnBmvB,YAAa,SAACN,EAAU9qB,GAAX,mBAAC,eACT8qB,GADQ,IAEXhvB,MAAO,aAET45B,kBAAmB,SAAC5K,EAAU9qB,GAAX,mBAAC,eACf8qB,GADc,IAEjBhvB,MAAO,UACPf,QAAS,OACTyC,OAAQ,UACR,UAAW,CACT1B,MAAO,cAGXwvB,KAAM,SAACR,EAAU9qB,GAAX,mBAAC,eACF8qB,GADC,IAEJvtB,IAAK,OCaM5C,yBDzDO,iBAAO,CAC3Bk7B,MAAO,CACL5a,WAAY,GACZhgB,MAAO,GACPF,QAAS,mBCqDEJ,EAhDD,SAAA2E,GACZ,IAAQ3C,EAA6B2C,EAA7B3C,SAAU/D,EAAmB0G,EAAnB1G,MAAOqE,EAAYqC,EAAZrC,QACzB,EAA4BY,oBAAS,GAArC,mBAAOm4B,EAAP,KAAeC,EAAf,KACMrH,EAAU3wB,mBACd,iBAAM,CACJ,CACErF,MAAO,MACPsD,MAAO,qBAET,CACEtD,MAAO,sBACPsD,MAAO,uBAET,CACEtD,MAAO,WACPsD,MAAO,4BAGX,IAYF,OACE,cAAC,KAAD,CACE0yB,QAASA,EACTh2B,MAAOA,EACP2I,OAAQqpB,GACRkE,cAAc,EACdnyB,SAAUA,EACVizB,WAAY,CAAEC,YAhBE,SAAAvwB,GAClB,OACE,eAAC,KAAWuwB,YAAZ,2BAA4BvwB,GAA5B,cACGA,EAAM+b,SACP,sBAAMne,UAAWD,EAAQ44B,MAAzB,SAAiCG,EAAS,cAAC,GAAD,IAAsB,cAAC,GAAD,YAalEQ,WAAY,kBAAMP,GAAU,IAC5BQ,YAAa,kBAAMR,GAAU,S,qBCmBpBqzB,GA9DI,SAAC,GAA+B,IAA7BhgC,EAA4B,EAA5BA,KAAMvK,EAAsB,EAAtBA,MAAOpiB,EAAe,EAAfA,SACjC,EAA0BkB,mBAAS,MAAnC,mBAAOjF,EAAP,KAAcuxC,EAAd,KACMF,EAAWzrB,iBAAO,MAExBC,qBAAU,kBAAM0rB,EAAS7gB,KAAO,CAACA,IAmCjC,OACE,sBAAKpsB,UAAWD,KAAQ0T,UAAxB,UACE,qBAAKxS,QAnCgB,WACV,IAATmrB,GACF3sB,EAAS2sB,EAAO,IAiCgBpsB,UAAWD,KAAQqB,OAAnD,SACE,cAAC,GAAD,MAEF,sBAAKpB,UAAWD,KAAQk1B,YAAxB,UACE,uBACEj1B,UAAWD,KAAQ9B,MACnBvC,MAAOA,EACPqmB,IAAKgrB,EACLttC,SA/Ba,SAAA6J,GACnB,IAAM5N,EAAQqS,OAAOzE,EAAM9G,OAAO9G,QAAU,IACxCA,GAAmB,KAAVA,KACXuxC,EAASvxC,GACTqxC,EAASvrB,QAAQjV,MAAMxO,MAAQrC,EAAMub,WAAWhV,OAAS,EAAI,KACzDvG,GACF+D,EAAS/D,KA0BPgE,OArBW,WACjButC,EAAS7gB,IAqBHupB,QAlBY,SAAArsC,GACdyE,OAAOzE,EAAM9G,OAAO9G,OAASmmB,IAC/BvY,EAAM9G,OAAO9G,MAAQA,MAkBnB,sBAAKsE,UAAWD,KAAQo0F,UAAxB,iBAAwCtyE,QAE1C,qBAAK5gB,QA3CiB,WACpBmrB,EAAOvK,GACTpiB,EAAS2sB,EAAO,IAyCiBpsB,UAAWD,KAAQqB,OAApD,SACE,cAAC,GAAD,UC3DKgzF,GAAmB,WAC9B,OACE,sBAAKr2F,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UAEE,sBAAMG,EAAE,iPAAiPG,OAAO,UAAUC,YAAY,IAAIC,cAAc,QAAQC,eAAe,UAC/T,sBAAMN,EAAE,aAAaG,OAAO,UAAUC,YAAY,IAAIC,cAAc,QAAQC,eAAe,UAC3F,sBAAMN,EAAE,cAAcG,OAAO,UAAUC,YAAY,IAAIC,cAAc,QAAQC,eAAe,c,qBC8BnF+E,gBAJS,SAACvS,GAAD,YAAwC,CAC9D4K,MAAK,UAAE5K,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGXiW,EAvBa,SAAC,GAA6B,IAA3Bg/E,EAA0B,EAA1BA,aAAc3mF,EAAY,EAAZA,MAM3C,OACE,sBAAK1N,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAUukC,MAAK,OAAEq8C,QAAF,IAAEA,OAAF,EAAEA,EAAcC,eAAgBx+E,SAAQ,OAAEu+E,QAAF,IAAEA,OAAF,EAAEA,EAAcv+E,SAAUqV,KAAM,KACvF,sBAAKnrB,UAAWD,KAAQ8B,MAAxB,iBACGwyF,QADH,IACGA,OADH,EACGA,EAAcj8B,UADjB,WAC6Bi8B,QAD7B,IAC6BA,OAD7B,EAC6BA,EAAch8B,YAE3C,qBAAKr4D,UAAWD,KAAQqB,OAAQH,QAXb,WACrB,IAAMsoC,EAAI,UAAMlsC,EAAN,gBAAuBqQ,EAAvB,oBAAwC2mF,EAAarqE,OAArD,YAA+DqqE,EAAanyB,WACtFxlE,OAAOmP,KAAK09B,EAAM,WAShB,SACE,cAAC,GAAD,Y,qBClBFvrB,GAAY,wBA8CH3I,gBANS,SAACvS,GAAD,MAAwE,CAC9FssF,OAAQtsF,EAAMssF,OACd/8D,MAAOvvB,EAAMuvB,MACb3kB,MAAO5K,EAAMyL,UAAUnP,MAGViW,EArCsB,SAAC,GAAoD,IAAlD2Q,EAAiD,EAAjDA,QAASqM,EAAwC,EAAxCA,MAAOkiE,EAAiC,EAAjCA,mBAAoBnF,EAAa,EAAbA,OACpEr1E,EAAOhZ,mBAAQ,WAAO,IAAD,EACzB,cAAOquF,QAAP,IAAOA,GAAP,UAAOA,EAAQC,aAAf,aAAO,EAAerhF,MAAK,qBAAGoiF,aAAgCmE,OAC7D,CAACnF,EAAQmF,IAENC,EAAYzzF,mBAAQ,WAAO,IAAD,EAC9B,OACM,OAAJgZ,QAAI,IAAJA,GAAA,UAAAA,EAAMo2E,eAAN,eAAet6E,KAAI,SAAA+T,GAAW,IAAD,EAC3B,OAAY,OAALyI,QAAK,IAALA,GAAA,UAAAA,EAAOrkB,MAAK,qBAAG5O,KAAgBwqB,YAA/B,eAAwCvqB,OAAQ,QACnD,KAEP,CAAC+vF,EAAQ/8D,EAAOkiE,IAEnB,OACE,sBAAKv0F,UAAWD,KAAQue,OAAxB,UACE,sBAAKte,UAAWD,KAAQunB,UAAxB,UACE,sBAAMtnB,UAAWD,KAAQqB,OAAQH,QAAS+kB,EAA1C,SACE,cAAC,GAAD,CAAWpnB,MAAOqV,GAAiBkX,KAAK,SAE1C,sBAAMnrB,UAAWD,KAAQ8B,MAAzB,4BAEF,sBAAK7B,UAAWD,KAAQ00F,SAAU,WAAUz2E,GAAW,cAAvD,yBACQjE,QADR,IACQA,OADR,EACQA,EAAMq2E,WADd,KAC4BoE,EAAU,MAEtC,eAAC,GAAD,CAASp1F,GAAI4e,GAAW3F,MAAM,SAA9B,yBACQ0B,QADR,IACQA,OADR,EACQA,EAAMq2E,WADd,KAC4BoE,EAAUl0E,KAAK,gB,qBCkElCjL,gBAJS,SAACvS,GAAD,YAAwC,CAC9D4K,MAAK,UAAE5K,EAAMyL,iBAAR,aAAE,EAAiBnP,MAGXiW,CAAyBrQ,aA5FZ,SAAC,GAA6B,IAA3B0I,EAA0B,EAA1BA,MAAO2mF,EAAmB,EAAnBA,aACpC,EAAgC1zF,mBAAwB,IAAxD,mBAAOinB,EAAP,KAAiB8sE,EAAjB,KACA,EAA0B/zF,mBAAc,IAAxC,mBAAOgiE,EAAP,KAAcC,EAAd,KACA,EAAwBjiE,mBAAS,GAAjC,mBAAOyrB,EAAP,KAAay2C,EAAb,KACA,EAA8BliE,oBAAS,GAAvC,mBAAOmiE,EAAP,KAAgBC,EAAhB,KACA,EAA4CpiE,mBAAwB,MAApE,mBAAO4hE,EAAP,KAAuBC,EAAvB,KACA,EAAsC7hE,oBAAS,GAA/C,mBAAO8hE,EAAP,KAAoBC,EAApB,KACA,EAA4B/hE,oBAAS,GAArC,mBAAOwgB,EAAP,KAAeC,EAAf,KACM4hD,EAAkB1hD,iBAAY,MAC9B2gD,EAAkB3gD,iBAAY,MAEpCC,qBAAU,WACR,IAAQ2gD,EAAcmyB,EAAdnyB,UAEJO,GAAeF,IACjBS,EAAgBxhD,QAAQ65B,UAAY2nB,EAAgBxhD,QAAQo6C,aAAe2G,IAG7E,OAAI36C,QAAJ,IAAIA,OAAJ,EAAIA,EAAU3lB,SACZmhE,KAGGx7C,EAAS5Z,MAAK,qBAAG5O,KAAgB8iE,MAAcY,EAClD/F,IAAcv5D,MAAK,WACjBm4C,YAAW,WAAO,IAAD,EACA,OAAfsmB,QAAe,IAAfA,GAAA,UAAAA,EAAiBzgD,eAAjB,SAA0BgyB,eAAe,CAAEC,SAAU,SAAUC,MAAO,UACrE,OAGU,IAAXvyB,GAAiBC,GAAU,KAEhC,CAACwG,IAEJ,IAAMw7C,EAAqB,WACzB,IAAMT,EAAQ/6C,EAAS/R,KAAI,SAAAiR,GAAI,OAAIA,EAAK06C,UAAUpsD,MAAM,KAAK,MAC7DwtD,EAAS,aAAI,IAAIU,IAAIX,MAWjB5F,EAAc,WAClB,IAAQ+0B,EAAmBuC,EAAnBvC,eAER,O,4CAAO6C,CAAgB,CAAEjnF,QAAOokF,iBAAgB1lE,SAAQ5oB,MAAK,SAAAuS,GAC3D8sD,EAAQz2C,EAAO,GACfsoE,EAAY,GAAD,oBAAK9sE,GAAL,aAAkB7R,EAAKigD,WAClCyN,EAAc1tD,EAAKigD,QAAQ/zD,YAIzBwhE,EAAgB,SAAAC,GAChBA,EAAiB,IACnBX,GAAW,IAIf,OACE,qBAAK/iE,UAAWD,KAAQ0T,UAAWsO,IAAKihD,EAAiB5nB,SAzBtC,SAAC,GAAqB,IAAnB54C,EAAkB,EAAlBA,OAClB6/D,GAAa7/D,IAAWsgE,IAC1BN,EAAkBQ,EAAgBxhD,QAAQo6C,cAC1C8G,GAAe,GACf3F,MAqBF,SACG57C,EACC,qBAAKnhB,UAAWD,KAAQ4tE,gBAAxB,SACE,cAAC,EAAD,CAAazoE,WAAYic,MAG3BwhD,EACG9oD,QACA8wC,UACA90C,KAAI,SAAC2K,GAAD,OACH,gCACE,mBAAGxgB,UAAWD,KAAQygB,KAAtB,SAA6B4hD,GAAW5hD,KACxC,cAAC,GAAD,CACEA,KAAMA,EACNoH,SAAUA,EACVq6C,gBAAiBA,EACjBC,UAAWmyB,EAAanyB,cANlB1hD,Y,qBCAPnL,gBALS,SAACvS,GAAD,MAA4D,CAClFssF,OAAQtsF,EAAMssF,OACd1hF,MAAO5K,EAAMyL,UAAUnP,MAGViW,EApEgB,SAAC,GAAsE,IAApEk/E,EAAmE,EAAnEA,mBAAoBnF,EAA+C,EAA/CA,OAAQppE,EAAuC,EAAvCA,QAAStY,EAA8B,EAA9BA,MAAOsgF,EAAuB,EAAvBA,SAAUC,EAAa,EAAbA,OACtF,EAA4BttF,mBAAS,CAAEjF,MAAO,MAAOsD,MAAO,sBAA5D,mBAAO6O,EAAP,KAAe+mF,EAAf,KACA,EAAwBj0F,mBAAS,GAAjC,mBAAOyrB,EAAP,KAAay2C,EAAb,KACA,EAA0BliE,mBAAS,GAAnC,mBAAOkhB,EAAP,KAAcm1C,EAAd,KACA,EAAwCr2D,mBAAc,MAAtD,mBAAO0zF,EAAP,KAAqBQ,EAArB,KACA,EAAgDl0F,oBAAS,GAAzD,mBAAOm0F,EAAP,KAAyBC,EAAzB,KACMj2C,EAAS/9C,mBAAQ,kBAAMquF,EAAOC,MAAMptF,SAAWsyF,IAAoB,CAACnF,EAAQmF,IAElFhzE,qBAAU,WACRszE,EAAgB,MAChBE,GAAoB,GACpBH,EAAU,CAAEl5F,MAAO,MAAOsD,MAAO,wBAChC,CAACu1F,IAEJhzE,qBAAU,WACRwS,EAAiB,KAChB,CAAClmB,IAEJ,IAAMkmB,EAAmB,SAAC3H,GACxBy2C,EAAQz2C,GACR4oE,EAAmB5oE,IAGf4oE,EAAkB,yCAAG,WAAM5oE,GAAN,gBAAAnX,EAAA,6DACzB8/E,GAAoB,GADK,SAGElD,GAAiB,CAC1CZ,SAAU7B,EAAOhwF,GACjBgxF,WAAYmE,EACZzwF,KAAMkqF,EACNppF,GAAIqpF,EACJvgF,QACA0e,KAAMA,EAAO,EACbve,OAAQA,EAAOnS,QAVQ,QAazB,QAVM24F,EAHmB,cAazB,IAAIA,OAAJ,EAAIA,EAAc/E,sBAChBuF,EAAgBR,EAAaY,cAAc,IAC3CF,GAAoB,IAEtB/9B,EAASq9B,EAAa/E,oBAjBG,2CAAH,sDAoBxB,OACE,sBAAKtvF,UAAWD,KAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAmBuS,QAASA,EAASuuE,mBAAoBA,IACzD,sBAAKv0F,UAAWD,KAAQm1F,oBAAxB,WACc,IAAXp2C,GAAoB,cAACq2C,GAAD,CAAuBz5F,MAAOmS,EAAQpO,SAAUm1F,IACrE,cAAC,GAAD,CAAYxoE,KAAMA,EAAMvK,MAAOA,EAAOpiB,SAAUs0B,OAEjD+gE,GACC,qCACE,cAAC,GAAD,CAAUT,aAAcA,IACvBA,GAAgB,cAAC,GAAD,CAAUA,aAAcA,OAGlC,IAAVxyE,GACC,cAAC,GAAD,CAAa9f,KAAM,2B,qBCIZiD,eAAWqQ,aAJF,SAACvS,GAAD,MAAoC,CAC1DssF,OAAQtsF,EAAMssF,UAGU/5E,EA5DA,SAAC,GAAuB,IAArBvK,EAAoB,EAApBA,MAAOskF,EAAa,EAAbA,OAClC,EAA8CzuF,oBAAS,GAAvD,mBAAO4zF,EAAP,KAA2Ba,EAA3B,KACA,EAAgCz0F,mBAAS,MAAzC,mBAAOqtF,EAAP,KAAiByF,EAAjB,KACA,EAA4B9yF,mBAAS,MAArC,mBAAOstF,EAAP,KAAeyF,EAAf,KACA,EAA4B/yF,oBAAS,GAArC,mBAAOwgB,EAAP,KAAeC,EAAf,KAEMvF,EAAW,CACf,CACEG,QAAS41E,GACT7mF,OAAQ,CAAEkmF,SAAUnmF,EAAMC,OAAOkmF,YAgBrC,OAZA1vE,qBAAU,WACO,OAAX6tE,GACFhuE,GAAU,KAEX,CAACguE,IAEJ7tE,qBAAU,WAGR,OAFA5S,GAAO7D,EAAMC,OAAO2C,OACpBsb,GAASle,EAAMC,OAAO2C,OACf2jF,KACN,IAGD,sBAAKrxF,UAAWD,KAAQ0T,UAAxB,UACE,sBAAKzT,UAAWu0F,EAAqBx0F,KAAQs1F,uBAAyBt1F,KAAQu1F,eAA9E,UACE,cAAC,GAAD,CACEzzF,MAAK,OAAEutF,QAAF,IAAEA,OAAF,EAAEA,EAAQ/vF,KACfqO,MAAO5C,EAAMC,OAAO2C,MACpBmO,SAAUA,EACVC,oBAAqB23E,EACrB13E,kBAAmB23E,IAEpBvyE,EACC,cAAC,GAAD,IAEA,cAACc,GAAD,CAAgBpgB,MAAO,kBAAmBoc,YAxChC,qGAwCV,SACE,cAAC,GAAD,CAAqBogB,SAAU+2D,EAAiBG,eAAgBhB,SAKrEA,GACC,cAAC,GAAD,CACEA,mBAAoBA,EACpBvuE,QAAS,kBAAMovE,GAAgB,IAC/BpH,SAAUA,EACVC,OAAQA,WCnDHuH,GAfY,WACzB,IAAMzgC,EAAS,UAAM13D,EAAN,yBAEf,OACE,eAAC,IAAD,WACE,cAACoP,EAAA,EAAD,CAAOE,OAAK,EAACnQ,KAAMu4D,EAAnB,SACE,cAAC,GAAD,MAEF,cAACtoD,EAAA,EAAD,CAAOE,OAAK,EAACnQ,KAAI,UAAKu4D,EAAL,cAAjB,SACE,cAAC,GAAD,UChBK0gC,GAAiB/gF,OAAOi1C,OAAO,CAC1C+rC,UAAW,YACXC,MAAO,QACPC,UAAW,YACX1gC,IAAK,MACL2gC,QAAS,UACTvpB,WAAY,aACZwpB,OAAQ,SACRC,YAAa,iBCgBFC,GAAa,CACxB,CACEx5F,KAAM,YACNymB,KAAM,cAAC,GAAD,CAAellB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAClDS,KAAMo2F,GAAeG,UACrBlpF,UAAWkpF,IAEb,CACEp5F,KAAM,YACNymB,KAAM,cAAC,GAAD,CAAellB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAClDS,KAAM,YACNqN,UAAW8oF,IAEb,CACEh5F,KAAM,QACNymB,KAAM,cAAC,GAAD,CAAWllB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAC9CS,KAAMo2F,GAAeE,MACrBjpF,UAAWo9C,IAEb,CACEttD,KAAM,MACNymB,KAAM,cAAC,GAAD,CAASllB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAC5CS,KAAMo2F,GAAevgC,IACrBxoD,UAAWwoD,IAEb,CACE14D,KAAM,UACNymB,KAAM,cAAC,GAAD,CAAallB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAChDS,KAAMo2F,GAAeI,QACrBnpF,UAAWupF,IAEb,CACEz5F,KAAM,YACNymB,KAAM,cAAC,GAAD,CAAellB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAClDS,KAAMo2F,GAAenpB,WACrB5/D,UAAW4/D,IAEb,CACE9vE,KAAM,SACNymB,KAAM,cAAC,GAAD,CAAYllB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YAC/CS,KAAMo2F,GAAeK,OACrBppF,UAAWwpF,IAEb,CACE15F,KAAM,WACNymB,KAAM,cAAC,GAAD,CAAcllB,MAAO,GAAIG,OAAQ,GAAIU,MAAM,YACjDS,KAAMo2F,GAAeM,YACrBrpF,UAAWyzE,KChETgW,G,4MACJrzF,MAAQ,CACNknD,UAAU,G,4CAGZ,WAAU,IAAD,OACP,GAAIruD,KAAKmH,MAAMknD,SACb,OACE,cAAC/+C,EAAA,EAAD,CACErG,GACEvH,EAAY,QAAU1B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAAQ,eAM9D,IAAQ3N,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,8BACE,sBAAKC,UAAWD,EAAQ0B,KAAxB,UACE,8BACE,cAAC,GAAD,MAEF,sBAAK8K,MAAO,CAAEhM,SAAU,IAAKpC,OAAQ,UAArC,UACE,oBAAI6B,UAAWD,EAAQgwD,QAAvB,+BACA,mBAAG/vD,UAAWD,EAAQitE,UAAtB,iGAKF,wBACEhtE,UAAWD,EAAQsuD,KACnBptD,QAAS,kBAAM,EAAKqB,SAAS,CAAE0nD,UAAU,KAF3C,wC,GA9BqBllD,IAAMC,WAyCtBC,eAAWvH,sBChDJ,iBAAO,CAC3BsyD,QAAS,CACPlxD,SAAU,GACVD,MAAO,UACPgH,UAAW,IAEbonE,UAAW,CACTnuE,SAAU,GACVb,UAAW,SACXY,MAAO,UACPT,OAAQ,kBAEVsD,KAAM,CACJ5D,QAAS,OACTyH,eAAgB,SAChBpH,OAAQ,QACRJ,cAAe,SACfC,MAAO,OACPwH,WAAY,UAEd8oD,KAAM,CACJjwD,QAAS,YACTC,OAAQ,EACRiD,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdgC,OAAQ,UACR1B,MAAO,QACPT,OAAQ,cACRN,QAAS,YDmBaJ,CAAmB04F,K,SE7ChCC,GAAY,WACvB,OACE,sBAAKr4F,MAAM,MAAMG,OAAO,MAAMyR,QAAQ,cAAcC,KAAK,OAAzD,UACE,sBACEI,EAAE,mLACFJ,KAAK,YAEP,sBACEI,EAAE,gLACFJ,KAAK,YAEP,sBACEI,EAAE,iNACFJ,KAAK,YAEP,sBACEI,EAAE,oNACFJ,KAAK,YAEP,sBACEsI,QAAQ,OACRlI,EAAE,iTACFJ,KAAK,YAEP,sBACEsI,QAAQ,OACRlI,EAAE,kNACFJ,KAAK,YAEP,sBACEI,EAAE,kNACFJ,KAAK,YAEP,sBACEI,EAAE,iNACFJ,KAAK,YAEP,sBACEsI,QAAQ,OACRlI,EAAE,iTACFJ,KAAK,YAEP,sBACEsI,QAAQ,OACRlI,EAAE,8MACFJ,KAAK,YAEP,sBACEI,EAAE,gLACFJ,KAAK,YAEP,sBACEI,EAAE,iTACFJ,KAAK,YAEP,sBACEsI,QAAQ,OACRlI,EAAE,+YACFJ,KAAK,YAEP,sBACEI,EAAE,8MACFJ,KAAK,YAEP,sBACEI,EAAE,+YACFJ,KAAK,YAEP,sBACEI,EAAE,oIACFJ,KAAK,UAEP,sBACEI,EAAE,8IACFJ,KAAK,UAEP,sBACEI,EAAE,sRACFJ,KAAK,UAEP,mBAAGsI,QAAQ,OAAX,SACE,sBACElI,EAAE,kNACFJ,KAAK,gBC9CA5K,eACbvH,sBCzCoB,iBAAO,CAC3BgW,UAAW,CACT5V,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChBxH,cAAe,SACfI,OAAQ,OACRwa,YAAa,IAEf7W,MAAO,CACLhD,SAAU,GACVD,MAAO,UACPE,WAAY,IACZX,OAAQ,gBAEVwH,SAAU,CACR9G,SAAU,GACVD,MAAO,UACPE,WAAY,IACZX,OAAQ,gBAEV4D,KAAM,CACJnD,MAAO,oBACPC,SAAU,GACVV,OAAQ,gBAEViD,OAAQ,CACNhD,QAAS,YACTC,OAAQ,EACRiD,WAAY,UACZI,UAAW,0CACXpD,aAAc,GACdgC,OAAQ,UACR1B,MAAO,QACPT,OAAQ,cACRN,QAAS,YDMXJ,CAAmB4X,aAHG,SAAAvS,GAAK,MAAK,CAAEyL,UAAWzL,EAAMyL,aAGhC8G,EA7BD,SAAAjT,GAClB,IAAQrC,EAAuBqC,EAAvBrC,QAASwO,EAAcnM,EAAdmM,UAMjB,OACE,sBAAKvO,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,IACA,oBAAIzT,UAAWD,EAAQ8B,MAAvB,qBACA,mBAAG7B,UAAWD,EAAQ4F,SAAtB,kCACA,mBAAG3F,UAAWD,EAAQgC,KAAtB,wEAGA,wBAAQ/B,UAAWD,EAAQqB,OAAQH,QAZnB,WAClBvE,OAAOC,SAASqS,KAAhB,UAA0B3R,EAA1B,gBAA2CkR,EAAUnP,GAArD,eAWE,uCErBAi3F,G,kDACJ,WAAYj0F,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,CACXtD,UAAU,GAHK,E,sDAWnB,SAAmBgrD,EAAW/2B,GACxB93B,KAAKyG,MAAMzF,SAASoH,WAAaymD,EAAU7tD,SAASoH,UACtDpI,KAAK2G,SAAS,CAAE9C,UAAU,M,+BAI9B,SAAkBuD,EAAOuzF,GACvBC,KAAwBxzF,K,oBAG1B,WACE,OAAIpH,KAAKmH,MAAMtD,SACN,cAAC,GAAD,IAGF7D,KAAKyG,MAAM+b,Y,uCAnBpB,WACE,MAAO,CAAE3e,UAAU,O,GATKsF,IAAMC,WA+BnBC,eAAWqxF,I,0CCnCbG,GAAwB,wBAExBC,GAAsB,SAAAC,GAAe,OAChDz6F,GAAMC,SAAS,CACbC,KAAMq6F,GACNE,qBCISC,GAAqB,SAAAj9B,GAChC,OAAOx2D,MAAM,GAAD,OAAI/F,EAAJ,2BAA+Bu8D,GAAW,CACpDv2D,OAAQ,MACRC,YAAa,cACbO,QAAS0H,OAER7H,MAAK,SAAAC,GACJ,GAAKA,EAASC,GAOd,OAAOD,EAASS,OANd8H,GACE,8EAOLxI,MAAK,SAAAC,GAAQ,OAAIgzF,GAAoBhzF,MACrCW,OAAM,SAASrB,GACdiJ,GACE,+EAKK4qF,GAAwB,SAACl9B,EAAS9yD,GAC7C,OAAO1D,MAAM,GAAD,OAAI/F,EAAJ,2BAA+Bu8D,GAAW,CACpDv2D,OAAQ,MACRC,YAAa,cACbO,QAAS0H,KACTzE,KAAMC,KAAKC,UAAUF,KAEpBpD,MAAK,SAAAC,GACJ,GAAKA,EAASC,GAQd,OAFAiI,GAAa,iDAAkD,KAExDlI,EAASS,OAPd8H,GACE,8EAQLxI,MAAK,SAAAC,GAAQ,OAAIgzF,GAAoBhzF,MACrCW,OAAM,SAASrB,GACdiJ,GACE,+EAKK6qF,GAAY,SAAAp/C,GACvB,IAAME,EAAO,IAAIC,SAEjB,OADAD,EAAKhxC,OAAO,OAAQ8wC,EAAM,IACnBv0C,MAAM/F,EAAW,QAAS,CAC/BiG,YAAa,cACbD,OAAQ,OACRQ,QAAS,CAAEk0C,cAAe,UAAYt7C,OAAY,iBAClDqK,KAAM+wC,IAELn0C,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CW,OAAM,SAASrB,GACdiJ,GAAW,0BCnDX8qF,GAAqB,CACzBl5F,SAAU,YAGNm5F,GAAe,CACnBn5F,SAAU,WACVY,UAAW,aACXT,MAAO,GACPG,OAAQ,GACRG,OAAQ,oBACRC,aAAc,MACdkH,OAAQ,GCpBGwxF,GAAWhyF,YACtBvH,sBCboB,SAAAC,GAAK,MAAK,CAC9B2oB,KAAM,CACJxoB,QAAS,OACTD,SAAU,YAEZwD,OAAQ,CACNlD,OAAQ,OACRE,QAAS,SACTS,SAAU,GACVD,MAAO,UACPE,WAAY,OACZs1B,cAAe,OACf71B,WAAY,qBAEZ,MAAO,CACLJ,OAAQ,IAGZ8nB,MAAO,CACLvN,YAAa,GAEfu+E,OAAQ,CACN/3F,MAAO,eACPuG,KAAM,kBACNpF,IAAK,mBAEP62F,QAAS,CACPr5F,QAAS,QACTE,MAAO,GACPG,OAAQ,GACRI,aAAc,MACdoa,YAAa,GAEfy+E,KAAM,CACJ/4F,QAAS,GAEX6pB,SAAU,CACR7pB,QAAS,WACTQ,MAAO,UACPC,SAAU,GACVwC,WAAY,GAEZ,MAAO,CACLzC,MAAO,UACPoe,eAAgB,OAEhB,UAAW,CACTA,eAAgB,aDlCtBvf,CAAmB4X,aANG,SAAAvS,GAAK,MAAK,CAChC0K,UAAW1K,EAAM0K,UACjBkpF,gBAAiB5zF,EAAMs0F,WAIJ/hF,EDwBG,SAAAjT,GAAU,IAAD,IAC/B,EAAwBzB,oBAAS,GAAjC,mBAAOkL,EAAP,KAAayc,EAAb,KACA,EAA8B3nB,mBAASyB,EAAMoL,WAAapL,EAAMoL,UAAUpO,IAA1E,mBAAOs6D,EAAP,KAAgB29B,EAAhB,KACMC,EAAYh2E,iBAAO,MACnBi2E,GAAgB,OAALn1F,QAAK,IAALA,GAAA,UAAAA,EAAOs0F,uBAAP,eAAwB38B,WANzB,yCAOVy9B,GAAmB,OAALp1F,QAAK,IAALA,GAAA,UAAAA,EAAOs0F,uBAAP,eAAwBnZ,QAAS,UAAY,UAC3Dka,EAAQ,OAAGr1F,QAAH,IAAGA,OAAH,EAAGA,EAAOs0F,gBAExBn1E,qBAAU,WACHnf,EAAMoL,UAKNpL,EAAMs0F,iBAAoD,IAAjCt0F,EAAMs0F,gBAAgBz0F,QAClD00F,GAAmBv0F,EAAMoL,UAAUpO,IALnCgO,GAAOG,aAOR,IAEHgU,qBAAU,WACJm4C,KAAat3D,EAAMoL,WAAapL,EAAMoL,UAAUpO,KAIhDgD,EAAMoL,WAAapL,EAAMoL,UAAUpO,KACrCu3F,GAAmBv0F,EAAMoL,UAAUpO,IACnCi4F,EAAWj1F,EAAMoL,UAAUpO,OAE5B,CAACyH,KAAKC,UAAU1E,EAAMoL,aAEzB,IAIM6c,EAAc,SAAA/gB,GAKlBgf,GAAQ,IAGJovE,EAAe,WACnBp7F,IACA+tB,KAGIstE,EAAqB,WACzBf,GAAsBx0F,EAAMoL,UAAUpO,GAAjB,YAAC,eACjBgD,EAAMs0F,iBADU,IAEnBnZ,QAASn7E,EAAMs0F,gBAAgBnZ,UAC9B/5E,MAAK,WACFpB,EAAMsL,OACRgqB,GAAiBt1B,EAAMsL,WAK7B,SAASkqF,EAAkBtuF,GACP,QAAdA,EAAM7N,MACR6N,EAAMpI,iBACNonB,GAAQ,IAKZ,IAAMuvE,EAAWv2E,iBAAOzV,GAUxB,OARA0V,qBAAU,WACJs2E,EAASr2E,QAIbq2E,EAASr2E,QAAU3V,IAClB,CAACA,IAGF,mCACG4rF,GACC,qBAAKz3F,UAAWoC,EAAMrC,QAAQsmB,KAA9B,SACE,eAAC,KAAD,CAAmB4X,YAAa5T,EAAhC,UACE,eAAC,KAAD,CACEtI,IAAKu1E,EACL,gBAAezrF,EAAO,sBAAmB2lB,EACzC,gBAAc,OACdvwB,QAvDS,WACnBqnB,GAASzc,IAuDC7L,UAAWoC,EAAMrC,QAAQqB,OAL3B,UAME,sBAAKmL,MAAOuqF,GAAZ,UACE,qBACE92F,UAAWoC,EAAMrC,QAAQm3F,QACzB/xF,IAAKoyF,EACLnyF,IAAI,eAEN,sBAAMmH,MAAK,2BAAOwqF,IAAP,IAAqBz1F,WAAYk2F,SAE7Cp1F,EAAMs0F,iBAAmB,4BAAIt0F,EAAMs0F,gBAAgBr3F,OACpD,sBACEkN,MAAO,CACL5K,UAAWkK,GAAQ,iBACnBkS,WAAY,OAHhB,SAKE,cAAC,GAAD,SAGJ,cAAC,KAAD,CACEnc,YAAU,EACVk2F,eAAa,EACbjsF,KAAMA,EACNqe,SAAUotE,EAAU91E,QACpBvT,UAAMujB,EACNwlB,UAAU,YACVh3C,UAAWoC,EAAMrC,QAAQk3F,OAP3B,SAQG,gBAAGc,EAAH,EAAGA,gBAAiB/gD,EAApB,EAAoBA,UAApB,OACC,cAAC,KAAD,2BACM+gD,GADN,IAEExrF,MAAO,CACL44B,gBACgB,WAAd6R,EAAyB,aAAe,iBAJ9C,SAME,cAAC,KAAD,UACE,eAAC,KAAD,CACEghD,cAAensF,EACfzM,GAAG,iBACHm5B,UAAWq/D,EACX53F,UAAWoC,EAAMrC,QAAQo3F,KAJ3B,UAKE,eAAC,KAAD,CACEl2F,QAAS02F,EACT33F,UAAWoC,EAAMrC,QAAQkoB,SAF3B,UAGE,kDACA,cAAC,KAAD,CACE3T,QAASlS,EAAMs0F,gBAAgBnZ,OAC/B3+E,MAAM,UACNS,KAAK,WACL44F,WAAY,CAAE,aAAc,yBAGH,sBAA5B71F,EAAMzF,SAASoH,UACd3B,EAAM81F,2BACN,cAAC,KAAD,CACEj3F,QAASmB,EAAM81F,0BACfl4F,UAAWoC,EAAMrC,QAAQkoB,SAF3B,8BAO2B,sBAA5B7lB,EAAMzF,SAASoH,WACb3B,EAAM81F,2BACP,cAAC,KAAD,CAAUl4F,UAAWoC,EAAMrC,QAAQkoB,SAAnC,SACE,cAACgjC,GAAA,EAAD,CACErmD,GAAI,CACFb,SAAU,oBACVjB,MAAO,CAAEgB,KAAM1B,EAAMzF,SAASoH,WAHlC,gCASJ,cAAC,KAAD,CACE9C,QAASy2F,EACT13F,UAAWoC,EAAMrC,QAAQkoB,SAF3B,4CG/LTkwE,GAAY,WACrB,OACI,sBAAKp6F,MAAM,KAAKG,OAAO,KAAKyR,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAAlE,UACI,sBAAMG,EAAE,UAAUG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,UAC3F,sBAAMH,EAAE,gBAAgBG,OAAO,UAAU,eAAa,IAAI,iBAAe,QAAQ,kBAAgB,cCsBvGioF,G,kDACJ,WAAYh2F,GAAQ,IAAD,8BACjB,cAAMA,IA0BR81F,0BAA4B,WAC1B,EAAK51F,SAAS,CAAE41F,2BAA2B,KAzB3C,EAAKp1F,MAAQ,CACX+I,MAAM,EACNwsF,gBAAgB,EAChB9pF,UAAW,KACX+pF,gBAAgB,EAChBJ,2BAA2B,GARZ,E,qDAYnB,WACEvpF,GAAOhT,KAAKyG,MAAM0I,MAAMC,OAAO2C,OAC/B8B,GAAmB7T,KAAKyG,MAAM0I,MAAMC,OAAO2C,S,kCAG7C,W3ZvB6B,IAAA2X,ElHjB7BppB,GAAMC,SAAS,CACbC,KAAMgS,KkHiBRlS,GAAMC,SAAS,CACbC,KAAMo/B,GACNhY,QAAS,CACP8B,e4TfJppB,GAAMC,SAAS,CACbC,KAAMmkF,O,4B+FuCR,WACE3kF,KAAK2G,SAAS,CAAE+1F,gBAAgB,M,oBAOlC,WAAU,IAAD,OACP,GAAI18F,KAAKmH,MAAMu1F,eACb,OAAO,cAACptF,EAAA,EAAD,CAAUrG,GAAIvH,IAGvB,GAAI1B,KAAKmH,MAAMo1F,0BACb,OACE,cAACjtF,EAAA,EAAD,CACErG,GAAI,CACFb,SAAU,oBACVjB,MAAO,CAAEgB,KAAMnI,KAAKyG,MAAMzF,SAASoH,aAM3C,MAAgDpI,KAAKyG,MAA7CrC,EAAR,EAAQA,QAASwO,EAAjB,EAAiBA,UAAWgqF,EAA5B,EAA4BA,gBACtBzjC,EAAQ,UAAMz3D,EAAN,gBAAuB1B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAA/C,KACRqnD,EAAS,UAAM13D,EAAN,gBACTm7F,EAAW97F,OAAOC,SAASqS,KAAKlE,MAAM,kBAE5C,OACE,qBAAK9K,UAAWD,EAAQsmB,KAAxB,SACG1qB,KAAKyG,MAAMoL,UACV,cAACirF,EAAA,EAAD,UACE,cAAC,GAAD,CAAYjrF,UAAW7R,KAAKyG,MAAMoL,UAAWE,MAAO/R,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAA5E,SACE,sBAAK1N,UAAWD,EAAQ24F,SAAxB,UACE,cAAC,KAAD,CAAQ96F,SAAS,WAAWoC,UAAWD,EAAQ44F,OAA/C,SACE,eAAC,KAAD,CAAS34F,UAAWD,EAAQ64F,QAASC,gBAAiBl9F,KAAKmH,MAAM+I,KAAjE,UACG2sF,EACC,cAACvtC,GAAA,EAAD,CAASrmD,GAAE,UAAKvH,EAAL,gBAAsB1B,KAAKyG,MAAM0I,MAAMC,OAAO2C,MAA9C,cAAX,SACE,oBAAG1N,UAAWD,EAAQ+4F,gBAAtB,UACE,cAAC,GAAD,IADF,0BAKF,mBAAG73F,QAAS,kBAAM,EAAKo3F,kBAAkBr4F,UAAWD,EAAQg5F,WAA5D,kBAIDp9F,KAAKyG,MAAMmM,WACV,cAAC,KAAD,CAAYpS,KAAK,QAAQoQ,MAAO,CAAEhO,WAAY,oBAAsByB,UAAWD,EAAQ8B,MAAvF,SACGlG,KAAKyG,MAAMmM,UAAUlP,OAG1B,sBAAKkN,MAAO,CAAE1O,QAAS,OAAQ0H,WAAY,UAA3C,UACGgJ,GAAaA,EAAUozB,kBAAoBpzB,EAAUozB,iBAAiBszC,QACrE,mBACE1oE,MAAO,CAAEyQ,eAAgB,QACzBhO,KAAI,sCAAiCrT,KAAKyG,MAAMmM,UAAUozB,iBAAiBszC,QAC3EzyE,OAAO,SACPq8D,IAAI,aAJN,SAKE,cAAC,KAAD,CACEtyD,MAAO,CACLjL,WAAY,4DACZI,UAAW,0CACXpD,aAAc,GACdJ,OAAQ,IALZ,SAOE,mBAAG8B,UAAWD,EAAQi5F,WAAtB,mCAILzqF,GACC,mBACEhC,MAAO,CAAEyQ,eAAgB,QACzBhO,KAAI,UAAK/R,EAAL,wBAAgCtB,KAAKyG,MAAM0I,MAAMC,OAAO2C,OAC5DlL,OAAO,SACPq8D,IAAI,aAJN,SAKE,cAAC,KAAD,CACEtyD,MAAO,CACLjL,WAAY,4DACZI,UAAW,0CACXpD,aAAc,GACdJ,OAAQ,GACRC,OAAQ,UANZ,SAQE,mBAAG6B,UAAWD,EAAQi5F,WAAtB,6BAKN,cAAC,GAAD,CACEd,0BAA2Bv8F,KAAKu8F,0BAChCxqF,MAAO/R,KAAKyG,MAAM0I,MAAMC,OAAO2C,gBAKvC,qBAAK1N,UAAWD,EAAQk5F,SAAxB,SACE,cAAC,KAAD,CAAMj5F,UAAWD,EAAQo3F,KAAzB,SACGnB,GAAWngF,KACV,SAAA8+C,GAAK,OACHlnD,GAAoB,EAAKrL,MAAM0I,MAAMC,OAAO2C,MAAOinD,EAAMn4D,OACvD,eAACyuD,GAAA,EAAD,CAEEjrD,UAAWD,EAAQwpC,KACnBqrB,gBAAiB70D,EAAQ80D,WACzBjwD,GAAE,UAAKkwD,GAAL,OAAgBH,EAAMn4D,MAJ1B,UAKkB,YAAfm4D,EAAMn4D,MAAsB+7F,EAC3B,qBAAKv4F,UAAWD,EAAQm5F,cAAxB,SAAwCX,IACtC,KACH5jC,EAAM1xC,KACP,mBAAGjjB,UAAWD,EAAQkoB,SAAtB,SAAiC0sC,EAAMt1D,SARlCs1D,EAAMn4D,aAcvB,cAAC,KAAD,IACA,sBAAMwD,UAAWD,EAAQi2D,QAAzB,SACE,cAAC,GAAD,UACE,eAAC,IAAD,WACGggC,GAAWngF,KACV,SAAA8+C,GAAK,OACHlnD,GAAoB,EAAKrL,MAAM0I,MAAMC,OAAO2C,MAAOinD,EAAMn4D,OACvD,cAACiQ,EAAA,EAAD,CAAOjQ,KAAI,UAAKu4D,GAAL,OAAiBJ,EAAMn4D,MAAyBkQ,UAAWioD,EAAMjoD,WAA7BioD,EAAMn4D,SAG3D,cAACiQ,EAAA,EAAD,CAAOC,UAAW,kBAAM,cAAC,GAAD,CAAkBgB,MAAO,EAAKtL,MAAM0I,MAAMC,OAAO2C,yBAQrF,cAAC,GAAD,U,GA/Ja5I,IAAMC,WAiLdC,eAAWvH,sBC9MJ,SAAAC,GAAK,MAAK,CAC9B2oB,KAAM,CACJ60D,SAAU,EACVx1E,OAAQ,EACR2oB,SAAU,SACVzwB,SAAU,WACVC,QAAS,OACT+H,UAAW,IACX1H,OAAQ,QACRoD,WAAY5D,EAAM6D,QAAQC,QAAQF,YAEpCo3F,SAAU,CACR96F,SAAU,WACVC,QAAS,OACTE,MAAO,OACPG,OAAQ,QAEV6O,KAAM,CACJA,KAAM,GAER4rF,OAAQ,CACN/2F,WAAYlE,EAAMy7F,YAAYC,OAAO,CAAC,QAAS,UAAW,CACxDC,OAAQ37F,EAAMy7F,YAAYE,OAAOC,MACjC1tF,SAAUlO,EAAMy7F,YAAYvtF,SAAS2tF,gBAEvCj4F,WAAY,OACZI,UAAW,QAEb83F,YAAa,CACX53F,WAAYlE,EAAMy7F,YAAYC,OAAO,CAAC,QAAS,UAAW,CACxDC,OAAQ37F,EAAMy7F,YAAYE,OAAOC,MACjC1tF,SAAUlO,EAAMy7F,YAAYvtF,SAAS6tF,kBAGzCnzE,WAAY,CACVvI,WAAY,GACZrF,YAAa,IAEfghF,KAAM,CACJ77F,QAAS,QAEX+6F,QAAQ,aACN/6F,QAAS,OACT0H,WAAY,SACZD,eAAgB,gBAChBlH,QAAS,iBACTsH,OAAQ,EACRpE,WAAY,UACZI,UAAW,4CACXnD,WAAY,oBACTb,EAAMi8F,OAAOC,SAElB5jC,QAAS,CACPj4D,MAAO,IACPm9E,SAAU,EACVn8E,gBAAiBrB,EAAM6D,QAAQC,QAAQF,WACvC+5E,YAAa,GAEbz1E,UAAW,GACXggB,UAAW,QAEb3C,KAAM,CACJrkB,MAAO,QAETu4F,KAAM,CACJp5F,MAAO,IACP6nB,UAAW,OACX1nB,OAAQ,OACRyhD,WAAY,IAEd74B,KAAM,CACJu0D,YAAa,IAEf6d,cAAe,CACb74F,IAAK,EACLnB,MAAO,GACPZ,aAAc,IACdS,gBAAiBrB,EAAM6D,QAAQ8nC,OAAOtmC,MACtClE,SAAU,OACVX,OAAQ,GACRH,MAAO,GACPa,MAAO,UACPf,QAAS,OACT0H,WAAY,SACZD,eAAgB,SAChB1H,SAAU,YAEZq7F,SAAU,CACR33F,WAAY,8DACZI,UAAW,wCACXgE,OAAQ,MAEVuiB,SAAU,CACRrpB,MAAO,QACPgH,UAAW,EACXC,aAAc,EACdhH,SAAU,IAEZgD,MAAO,CACL/C,WAAY,OACZuC,WAAY,SACZxC,SAAU,GACVD,MAAO,WAET2qC,KAAM,CACJ1rC,QAAS,OACTC,cAAe,SACfyH,WAAY,SACZD,eAAgB,SAChBpH,OAAQ,GACRyhD,WAAY,GACZ/hD,SAAU,WACV,UAAW,CACT0D,WAAY,sBACZM,WAAY,mBACZ,aAAc,CACZuO,OAAQ,UACR7O,WAAY,sBACZM,WAAY,sBAIlBizD,WAAY,CACVvzD,WAAY,sBACZ,aAAc,CACZ6O,OAAQ,YAGZ2oF,gBAAiB,CACfv6F,WAAY,mBACZH,QAAS,IACTD,OAAQ,aACRmC,OAAQ,UACRxB,WAAY,IACZF,MAAO,UACPf,QAAS,OACT0H,WAAY,SACZgiB,IAAK,QAEPwxE,WAAY,CACVx6F,WAAY,mBACZH,QAAS,IACTD,OAAQ,aACRmC,OAAQ,UACRxB,WAAY,IACZF,MAAO,WAETo6F,WAAY,CACVp6F,MAAO,QACPT,OAAQ,EACRW,WAAY,IACZD,SAAU,GACVu1B,cAAe,OACf71B,WAAY,uBDqD6B,CAAEY,WAAW,GAAhC1B,CAAwC4X,aAN1C,SAAAvS,GAAK,MAAK,CAChCyL,UAAWzL,EAAMyL,UACjBgqF,gBAAiBz1F,EAAMy1F,gBACvB/qF,UAAW1K,EAAM0K,aAG+C6H,CAAyB+iF,MExIrFyB,G,kDAiDJ,WAAYz3F,GAAQ,IAAD,8BACjB,cAAMA,IAjDR03F,iBAAmB,WACjB,IAAIC,GAAW,EACXC,EAAe,EACfC,EAAe,GACnB,EAA8C,EAAKn3F,MAA3CzD,EAAR,EAAQA,KAAM66F,EAAd,EAAcA,YAAaC,EAA3B,EAA2BA,eAwB3B,OAtBIr4F,EAAczC,IAChB06F,GAAW,EACXE,EAAe,8BACN,EAAKG,gBACdL,GAAW,EACXE,EAAe,0CACwB,SAA9B,EAAKn3F,MAAMu3F,iBAChBv4F,EAAco4F,IAChBH,GAAW,EACXC,EAAe,EACfC,EAAe,qDACNn4F,EAAcq4F,KACvBJ,GAAW,EACXC,EAAe,EACfC,EAAe,yDAGnB,EAAK33F,SAAS,CACZy3F,WACAC,eACAC,kBAEMF,GAoBS,EAjBnBO,aAAe,WACb,EAAKh4F,SAAS,CAAE4C,YAAa,EAAKpC,MAAMoC,cAgBvB,EAdnBq1F,aAAe,SAAAx4F,GACb,EAAKO,SAAS,CACZy3F,UAAU,EACVE,aAAcl4F,EACdmD,YAAY,KAUG,EAPnBk1F,aAAe,WACb,OAAO,EAAKh4F,MAAMsM,KAAKV,MACrB,SAAAa,GAAG,OACDA,EAAIxP,KAAK2C,OAAO4X,gBAAkB,EAAK9W,MAAMzD,KAAK2C,OAAO4X,kBAM7D,EAAK9W,MAAQ,CACXzD,KAAM+C,EAAMyqE,QACZktB,UAAU,EACVE,aAAc,GACdI,eAAgB,QAChBH,YAAa,GACbC,eAAgB,GAChBj1F,YAAY,EACZk+B,WAAYhhC,EAAMghC,YAVH,E,4CAcnB,WAAY,I7gBNW11B,EAAOxJ,EAAMmI,E6gBMzB,OACT,GAAI1Q,KAAKm+F,mBAAoB,CAC3B,IAAMjrF,EAAM,CACVxP,KAAM1D,KAAKmH,MAAMzD,KACjBm7F,mBAAoB7+F,KAAKmH,MAAMq3F,eAC/BM,sBAAuB9+F,KAAKmH,MAAMo3F,aAEpCv+F,KAAK2+F,eACD3+F,KAAKyG,MAAMs4F,I7gBrDd,SAAyB7rF,EAAKxC,EAAUsuF,GAC7Cz3F,MAAM/F,EAAW,OAAQ,CACvBiG,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU+H,KACpBrL,MAAK,SAAAC,GAUN,OATA8H,GAA8B9H,GAC1BA,EAASC,IACXiI,GAAa,gCACb8C,KACArB,GAAOG,WACHlB,GAAUA,KACe,MAApB5I,EAASQ,QAAsC,MAApBR,EAASQ,QAC7CR,EAASS,OAAOV,MAAK,SAAAzB,GAAI,OAAI44F,EAAc54F,EAAKoC,YAE3CV,EAAS+H,WACX9O,OAAOC,SAASqS,KAAOvL,EAASwL,IACjCxL,K6gBoCAm3F,CACE/rF,GACA,kBAAM,EAAKzM,MAAM4jB,aACjB,SAAAjkB,GAAI,OAAI,EAAKw4F,aAAax4F,O7gBlBX2L,E6gBsBf/R,KAAKyG,MAAMsL,M7gBtBWxJ,E6gBuBtB2K,E7gBvB4BxC,E6gBwB5B,kBAAM,EAAKjK,MAAM4jB,W7gBvBzB9iB,MAAM/F,EAAW,QAAUuQ,EAAQ,SAAU,CAC3CtK,YAAa,cACbO,QAAS0H,KACTlI,OAAQ,OACRyD,KAAMC,KAAKC,UAAU5C,KAEpBV,MAAK,SAAAC,GAAQ,OAAI8H,GAA8B9H,MAC/CD,MAAK,SAAAsd,GACJnV,GAAa,+BACbyB,GAAOG,WACPkB,KACIpC,GACFA,OAGHjI,OAAM,SAASrB,GACdiJ,GAAW,6B,8B6gBcf,SAAiBquF,GACf,IAAMQ,EAAW,CAAER,kBACI,UAAnBA,IACFQ,EAASX,YAAc,GACvBW,EAASV,eAAiB,GAC1BU,EAASd,UAAW,GAEtBp+F,KAAK2G,SAAL,eAAmBu4F,M,oBAGrB,WAAU,IAAD,OACC96F,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,gCACE,cAAC,GAAD,CACE8B,MAAM,yBACNnG,MAAOC,KAAKmH,MAAMzD,KAClB01B,UAAW,IACXhyB,MAAOpH,KAAKmH,MAAMi3F,UAAYj4F,EAAcnG,KAAKmH,MAAMzD,MACvDE,YAAY,sBACZE,SAAU,SAAA6J,GAAK,OACb,EAAKhH,SAAS,CACZjD,KAAMiK,EAAM9G,OAAO9G,MACnBq+F,SAAUj4F,EAAcwH,EAAM9G,OAAO9G,YAK1CC,KAAKmH,MAAMi3F,UACV,mBAAG/5F,UAAWD,EAAQgD,MAAtB,SAA8BpH,KAAKmH,MAAMm3F,eAE3C,qBAAKj6F,UAAWD,EAAQwmB,aAAxB,SACE,cAAC,GAAD,CACE1kB,MAAOlG,KAAKmH,MAAMsgC,WAClBniC,QAAS,kBAAM,EAAKk2E,gBAGxB,cAAC,EAAD,CAAajyE,WAAYvJ,KAAKmH,MAAMoC,oB,GA7HlBJ,IAAMC,WA2IjBtH,yBAtMA,SAAAC,GAAK,MAAK,CACvBmuE,MAAO,CACL9tD,WAAY,IAEdoF,YAAa,CACXtkB,SAAU,GACVD,MAAO,UACPL,WAAY,OACZsH,aAAc,GAEhBwgB,KAAM,CACJtoB,MAAO,OACP6H,UAAW,GACX,SAAU,CACR/G,SAAU,GACVD,MAAO,UACPL,WAAY,QAEd,UAAW,CACTJ,OAAQ,wBAEV,yBAA0B,CACxB4f,WAAY,GAEd,8CAA+C,CAC7Cnf,MAAO,WAET,aAAc,CACZA,MAAO,WAET,kBAAmB,CACjBuR,OAAQ,sBAGZ2qF,WAAY,CACVj/D,aAAc,oBACdx6B,WAAY,EACZlD,OAAQ,YAEV6xD,aAAc,CACZnxD,SAAU,OACVwC,WAAY,OACZ9C,WAAY,qBACZK,MAAO,UACPT,OAAQ,cAEV4E,MAAO,CACLnE,MAAOlB,EAAM6D,QAAQ8nC,OAAOtmC,MAC5B8C,aAAc,QACdhH,SAAU,IAEZ0nB,aAAc,CACZ1oB,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZK,UAAW,OA+ImB,CAAEzG,WAAW,GAAhC1B,CACb4X,aALsB,SAAAvS,GAAK,MAAK,CAChC4L,KAAM5L,EAAM4L,QAIZ2G,CAAyBwkF,KC5IrBkB,G,kDAcJ,WAAY34F,GAAQ,IAAD,8BACjB,cAAMA,IAdRylE,WAAa,WACX,EAAKvlE,SAAS,CACZ04F,WAAW,EACXC,gBAAgB,KAUD,EANnBnqB,OAAS,SAAAp1E,GACP,EAAK4G,SAAS,CACZuJ,KAAMnQ,KAMR,EAAKoH,MAAQ,CACXub,WAAY,EACZ68E,aAAc,EACdrvF,MAAM,EACNmvF,WAAW,EACXC,gBAAgB,GAPD,E,0CAWnB,WAAU,IAAD,OACP,EAAyBt/F,KAAKyG,MAAtBrC,EAAR,EAAQA,QAAS8O,EAAjB,EAAiBA,IACjB,OACE,sBAAK7O,UAAWD,EAAQ8O,IAAxB,UACE,cAACo8C,GAAA,EAAD,CACErmD,GAAIvH,EAAY,QAAUwR,EAAIzP,GAAK,aACnC6B,QAAS,kBAAM,EAAKmB,MAAM+4F,UAAUtsF,IAFtC,SAGE,8BACE,qBAAKtC,MAAO,CAAE1O,QAAS,QAAvB,SACE,qBAAK0O,MAAO,CAAExO,MAAO,KAArB,SACE,mBACEwO,MAAO,CACL1N,SAAU,GACVD,MAAO,WAHX,SAKGiQ,EAAIxP,eAMdoO,GAAoBoB,EAAIzP,GAAI,aAC3B,qBACEY,UAAU,OACVuM,MAAO,CAAEjM,OAAQ,UAAWpC,OAAQ,IACpC6jB,IAAK,SAAA6iB,GACH,EAAK1a,SAAW0a,GAElB3jC,QAAS,WACP,EAAK6vE,QAAO,IAPhB,SASE,cAAC,GAAD,MAGJ,cAAC,KAAD,CACEjlE,KAAMlQ,KAAKmH,MAAM+I,KACjBqe,SAAUvuB,KAAKuuB,SACflqB,UAAU,cACVglC,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,SAEdlf,QAAS,WACP,EAAK8qD,QAAO,IAbhB,SAeE,sBAAK9wE,UAAWD,EAAQqlC,QAAxB,UACE,qBACEnkC,QAAS,WACP,EAAKqB,SAAS,CACZ04F,WAAW,EACXnvF,MAAM,KAGV7L,UAAWD,EAAQqB,OAPrB,mBAUA,qBACEH,QAAS,WACP,EAAKqB,SAAS,CACZ24F,gBAAgB,EAChBpvF,MAAM,KAGV7L,UAAWD,EAAQqB,OAPrB,wBAaJ,cAAC,GAAD,CACEyK,KAAMlQ,KAAKmH,MAAMk4F,UACjB75F,SAAS,KACT6kB,QAASrqB,KAAKksE,WACdhmE,MAAO,gBAJT,SAKE,cAAC,GAAD,CAAYgN,IAAKA,EAAKg5D,WAAYlsE,KAAKksE,eAGzC,cAAC,GAAD,CACEh8D,KAAMlQ,KAAKmH,MAAMm4F,eACjB95F,SAAS,KACT6kB,QAASrqB,KAAKksE,WACdhmE,MAAO,gBAJT,SAKE,cAAC,GAAD,CACEuhC,WAAW,QACX11B,MAAOmB,EAAIzP,GACXytE,QAAO,kBAAah+D,EAAIxP,MACxB2mB,QAASrqB,KAAKksE,sB,GAnHH/iE,IAAMC,WA8HdC,eACbvH,sBA1La,SAAAC,GAAK,MAAK,CACvB,UAAW,CACT,qCAAsC,CACpC4D,WAAY,QAEd,oBAAqB,CACnBjD,OAAQ,oBACRqD,UAAW,0CACXpD,aAAc,IAEhB,mBAAoB,CAClB6R,OAAQ,oBAGZi1B,QAAS,CACPrnC,MAAO,IACPG,OAAQ,IAEVkD,OAAQ,CACNvC,SAAU,GACVD,MAAO,UACPf,QAAS,OACT0H,WAAY,SACZnH,QAAS,YACTF,OAAQ,MACR,UAAW,CACToD,WAAY,4BAGhBmS,UAAW,CACT1U,gBAAiBrB,EAAM6D,QAAQD,WAAW2kB,MAC1CpoB,QAAS,OACTwgD,SAAU,OACVjgD,QAAS,QAEXyQ,IAAK,CACH9Q,MAAO,QACPwC,SAAU,QACV/B,UAAW,aACXN,OAAQ,QACR6O,KAAM,OACN5O,OAAQ,OACRuD,UAAW,4CACX9C,MAAO,oBACPG,gBAAiB,UACjBT,aAAc,GACdO,SAAU,OACVN,WAAY,mBACZO,WAAY,OACZjB,QAAS,kBACTyH,eAAgB,aAChBlH,QAAS,mBAEXkoB,WAAY,CACVvI,YAAa,GACbrF,YAAa,OAmII,CAAEvZ,WAAW,GAAhC1B,CAAwC4X,aAJlB,SAAAvS,GAAK,MAAK,CAChCiI,OAAQjI,EAAM0hB,cAG0BnP,CAAyB0lF,MCnK7DK,G,4MACJt4F,MAAQ,CACN+I,MAAM,G,EAGRue,WAAa,WACX,EAAK9nB,SAAS,CAAEuJ,MAAM,K,EAGxBwe,YAAc,WACZ,EAAK/nB,SAAS,CAAEuJ,MAAM,K,4CAGxB,WACE,IAAQ9L,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,gCACE,sBAAKC,UAAWD,EAAQ+mB,KAAM7lB,QAAStF,KAAKyuB,WAA5C,UACE,8BACE,cAAC,GAAD,CAAUrsB,MAAM,KAAKG,OAAO,KAAKU,MAAM,YAEzC,mBAAGoB,UAAWD,EAAQs7F,SAAtB,iCAGF,cAAC,GAAD,CACExvF,KAAMlQ,KAAKmH,MAAM+I,KACjBma,QAASrqB,KAAK0uB,YACdtqB,QAAS,CAAEkmB,MAAOlmB,EAAQkmB,OAC1BpkB,MAAO,qBAJT,SAKE,cAAC,GAAD,CACE64F,KAAK,EACLt3D,WAAW,SACXypC,QAAQ,GACR7mD,QAASrqB,KAAK0uB,uB,GAjCCvlB,IAAMC,WA6ClBC,eACbvH,sBArEa,SAAAC,GAAK,MAAK,CACvBopB,KAAM,CACJ/oB,MAAO,QACPG,OAAQ,QACRoD,WAAY,uDACZnD,OAAQ,OACRuD,UAAW,4CACXpD,aAAc,GACdC,WAAY,mBACZO,WAAY,OACZjB,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZiT,SAAU,gBACVlY,OAAQ,WAEV+6F,SAAU,CACRl9F,OAAQ,EACRoC,SAAU,OACV3B,MAAOlB,EAAM6D,QAAQC,QAAQiX,iBAkD/Bhb,CAAmB4X,aALG,SAAAvS,GAAK,MAAK,CAChC4L,KAAM5L,EAAM4L,QAIO2G,CAAyB+lF,MCtEjCE,GAAa79F,sBCVJ,SAAAC,GAAK,MAAK,CAC9B4gB,OAAQ,CACNpgB,OAAQ,GACRH,MAAO,OACPuD,WAAY5D,EAAM6D,QAAQC,QAAQiX,aAClC/S,OAAQ,EACR9H,SAAU,QACVyC,IAAK,EACLoF,KAAM,EACN/D,UAAW,4CACXnD,WAAY,sBAEdg9F,YAAa,CACX39F,SAAU,WACVG,MAAO,OACPG,OAAQ,OACRL,QAAS,OACT0H,WAAY,SACZnH,QAAS,SACTkH,eAAgB,iBAElBzD,MAAO,CACLjD,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BvnB,SAAU,OACVC,WAAY,OACZuC,WAAY,OACZlD,OAAQ,GAEVq9F,YAAa,CACX59F,SAAU,WACV6H,KAAM,MACNpF,IAAK,MACLsB,UAAW,wBACX/C,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BvnB,SAAU,OACVC,WAAY,OACZuC,WAAY,QAEdD,OAAQ,CACNlD,OAAQ,OACRE,QAAS,SACTS,SAAU,GACVD,MAAO,UACPE,WAAY,OACZs1B,cAAe,OACf71B,WAAY,qBACZye,eAAgB,OAEhB,QAAS,CACPtE,YAAa,ODvCOjb,CAAmB4X,aAJrB,SAAAvS,GAAK,MAAK,CAChC4zF,gBAAiB5zF,EAAMs0F,WAGoB/hF,EEHnB,SAAAjT,GACxB,IAAMq1F,EAAWr1F,EAAMs0F,gBAEvB,OACE,qBAAK12F,UAAWoC,EAAMrC,QAAQue,OAA9B,SACE,sBACEte,UAAWoC,EAAMrC,QAAQw7F,YACzBhvF,MAAQnK,EAAMq5F,WAA8C,KAAjC,CAAEn2F,eAAgB,YAF/C,UAGGlD,EAAMq5F,YACL,cAACxwC,GAAA,EAAD,CACErmD,GAAIxC,EAAMs5F,QAAUt5F,EAAMs5F,QAAU,SACpCnvF,MAAO,CAAEyQ,eAAgB,QAF3B,SAGE,eAAC,KAAD,CAAQhd,UAAWoC,EAAMrC,QAAQqB,OAAjC,UACE,cAAC,GAAD,CAAexC,MAAM,YACpBwD,EAAMs5F,SAAW,yCAChBt5F,EAAMs5F,SAAW,qDAIxBjE,GACC,oBACEz3F,UACEoC,EAAMq5F,WAAar5F,EAAMrC,QAAQ8B,MAAQO,EAAMrC,QAAQy7F,YAF3D,SAIGp5F,EAAMP,QAGX,cAAC,GAAD,aCwCF85F,G,4MACJ74F,MAAQ,G,4CAER,WACE,IAAQ/C,EAAYpE,KAAKyG,MAAjBrC,QAER,OACE,gCACE,cAAC,GAAD,CAAY8B,MAAM,gBAClB,sBAAK7B,UAAWD,EAAQ0T,UAAxB,UACE,cAAC,GAAD,CAAU5R,MAAM,cAChB,qBAAK7B,UAAWD,EAAQi2D,QAAxB,SAAkCr6D,KAAKyG,MAAM+b,qB,GAXpCrZ,IAAMC,WAkBVtH,yBAvFA,SAAAC,GAAK,MAAK,CACvBqP,KAAM,CACJgR,WAAY,OACZhR,KAAM,GAERuR,OAAQ,CACNpgB,OAAQ,GACRH,MAAO,OACPuD,WAAY5D,EAAM6D,QAAQC,QAAQiX,aAClC/S,OAAQ,EACR9H,SAAU,QACVyC,IAAK,EACLoF,KAAM,EACN/D,UAAW,4CACXnD,WAAY,sBAEdg9F,YAAa,CACX39F,SAAU,WACVG,MAAO,OACPG,OAAQ,OACRL,QAAS,OACT0H,WAAY,SACZnH,QAAS,SACTkH,eAAgB,YAElBzD,MAAO,CACLjE,SAAU,WACV6H,KAAM,MACNpF,IAAK,MACLsB,UAAW,wBACX/C,MAAOlB,EAAM6D,QAAQC,QAAQ4kB,WAC7BvnB,SAAU,OACVC,WAAY,OACZuC,WAAY,QAEdoS,UAAW,CACT1U,gBAAiBrB,EAAM6D,QAAQC,QAAQF,WACvCzD,QAAS,OACTC,cAAe,SACfM,QAAS,iBACTm2C,UAAW,SAEbyhB,QAAS,CACPn4D,QAAS,OACTwgD,SAAU,OACVngD,OAAQ,QAEV,4BAA6B,CAC3BuV,UAAW,CACTrV,QAAS,8BAGb,UAAW,CACT,sBAAuB,CACrBL,MAAO,IAGT,4BAA6B,CAC3BO,aAAc,GAGhB,4BAA6B,CAC3BA,aAAc,GACd0pE,gBAAiB,sCACjBjpE,gBAAiB,6BAuBW,CAAEI,WAAW,GAAhC1B,CAAwCk+F,IC7EjDC,G,4MACJ94F,MAAQ,CACN+I,MAAM,G,wDAGR,WACE4C,O,0BAGF,SAAanF,EAAOjK,GAClB1D,KAAK2G,SAAL,gBACGjD,EAAOiK,EAAM9G,OAAO9G,U,uBAIzB,SAAUmT,GpdzBa,IAAA4Y,Eod0BrBnZ,GAAaO,Gpd1BQ4Y,Eod2BX,Epd1BZxrB,GAAMC,SAAS,CACbC,KAAMusB,GACNjB,W,oBod2BF,WAAU,IAAD,OACC/Y,EAAS/S,KAAKyG,MAAdsM,KACR,OACE,eAAC,GAAD,WACE,cAAC,GAAD,IACCA,EAAKmH,KAAI,SAAAhH,GAAG,OACX,cAAC,GAAD,CAAUA,IAAKA,EAAkBssF,UAAW,EAAKA,WAAxBtsF,EAAIzP,c,GA1BpB0F,IAAMC,WAqCVtH,yBAvCA,SAAAC,GAAK,MAAK,KAuCS,CAAEyB,WAAW,GAAhC1B,CACb4X,aALsB,SAAAvS,GAAK,MAAK,CAChC4L,KAAM5L,EAAM4L,QAIZ2G,CAAyBumF,K,sBCxBrBz3B,G,4MACJ95C,YAAc,SAAC/gB,EAAOuyF,IAEP,YAAXA,GACY,cAAXA,IAA2B,EAAKz5F,MAAMgJ,SAASQ,WAEhDT,GAAa,CACXU,MAAM,K,4CAKZ,WACE,MAA8BlQ,KAAKyG,MAA3BgJ,EAAR,EAAQA,SAAUrL,EAAlB,EAAkBA,QAClB,OACE,8BACGqL,EAASS,MACR,cAAC,KAAD,CACE7L,UAAS,UAAKD,EAAQ+7F,UAAb,YACP1wF,EAASU,QAAU/L,EAAQ+L,QAAU/L,EAAQgD,OAE/CiiC,aAAc,CAAEC,SAAU,MAAOC,WAAY,UAC7Cr5B,MAAM,EACNkwF,iBAAkB3wF,EAASQ,SAC3Boa,QAASrqB,KAAK0uB,YACd2xE,aAAc,CACZ,mBAAoB,aACpBh8F,UAAU,GAAD,OAAKD,EAAQqL,SAAb,YACPA,EAASU,QAAU/L,EAAQ+L,QAAU/L,EAAQgD,QAGjDoB,QACE,sBAAM/E,GAAG,aAAaY,UAAWD,EAAQoE,QAAzC,SACGiH,EAASrJ,e,GAjCCgD,aA+CZtH,yBAvEA,SAAAC,GAAK,MAAK,CACvBo+F,UAAW,CACT/9F,MAAO,OACPG,OAAQ,GACRmwB,SAAU,UAEZjjB,SAAU,CACRhN,QAAS,EACTP,QAAS,OACTyH,eAAgB,SAChB5D,UAAW,QAEbyC,QAAS,CACPtF,SAAU,GACVN,WAAY,QAEduN,QAAS,CACPxK,WAAY5D,EAAM6D,QAAQ8nC,OAAOv9B,SAEnC/I,MAAO,CACLzB,WAAY5D,EAAM6D,QAAQ8nC,OAAOtmC,UAmDtBtF,CAAmB4X,aAJV,SAAAvS,GAAK,MAAK,CAChCsI,SAAUtI,EAAMsI,YAGgBiK,CAAyB8uD,KCpBrD83B,G,kDACJ,WAAY75F,GAAQ,IAAD,8BACjB,cAAMA,IAMR85F,kBAAoB,WAClB,EAAK55F,SAAS,CAAE65F,iBAAiB,KANjC,EAAKr5F,MAAQ,CACXq5F,iBAAiB,GAHF,E,0CAWnB,WACE,IAAQp8F,EAAYpE,KAAKyG,MAAjBrC,QACR,OAAIpE,KAAKmH,MAAMq5F,gBACN,cAAClxF,EAAA,EAAD,CAAUrG,GAAG,WAGpB,uBAAM5E,UAAWD,EAAQ0B,KAAzB,UACE,qBACEzB,UAAWD,EAAQqH,cACnBjC,IAAK,8BAGP,oBAAInF,UAAWD,EAAQsH,WAAvB,wDAI4B,IAA3B1L,KAAKyG,MAAMoG,aACV,mBAAGxI,UAAWD,EAAQuH,eAAtB,qFAMF,wBACEtH,UAAWD,EAAQq8F,sBACnBjgG,KAAK,SACL8E,QAAStF,KAAKugG,kBAHhB,sC,GAnCkBn3F,aA8CXtH,yBAlGA,iBAAO,CACpBgE,KAAM,CACJ1D,MAAO,OACPw2C,UAAW,QACX12C,QAAS,OACTC,cAAe,SACfwH,eAAgB,SAChBC,WAAY,SACZnH,QAAS,OACTW,gBAAiB,UACjBf,UAAW,UAEboJ,cAAe,CACbrJ,MAAO,QACPG,OAAQ,SAEVmJ,WAAY,CACVxI,SAAU,OACVwC,WAAY,EACZzC,MAAO,UACPT,OAAQ,cACRW,WAAY,QAEdwI,eAAgB,CACdzI,SAAU,OACVwC,WAAY,OACZvC,WAAY,SACZX,OAAQ,EACRS,MAAO,WAGTw9F,sBAAuB,CACrBl+F,OAAQ,OACRI,aAAc,OACdD,OAAQ,OACRS,WAAY,IACZuC,WAAY,SACZxC,SAAU,OACVb,UAAW,SACXI,QAAS,SACTQ,MAAO,OACP0B,OAAQ,UACRgB,WAAY,UACZI,UAAW,wCACXvD,OAAQ,WACR,UAAW,CACTwD,UAAW,cACXC,WAAY,uBAmDgB,CAAEzC,WAAW,GAAhC1B,CAAwCw+F,IClGjDI,G,gNACJ,6BAAApnF,EAAA,sEACqB/R,MAAM,GAAD,OACnBrG,GADmB,OACNlB,KAAKyG,MAAM0I,MAAMmE,KADX,OACiBtT,KAAKyG,MAAMzF,SAASgM,SAC3DnF,MAAK,SAAAC,GACL,OAAOA,EAAS1B,UAJpB,OACQopC,EADR,OAMEzuC,OAAO8jC,SAAS87D,MAAMnxD,GANxB,gD,0EASA,WACE,OAAO,S,GAXiBrmC,IAAMC,WAenBC,eAAWq3F,ICEpBE,G,kDACJ,WAAYn6F,GAAQ,IAAD,8BACjB,cAAMA,IACDU,MAAQ,CACX05F,WAAW,EACXC,aAAa,GAJE,E,qDAQnB,WACE9gG,KAAK+gG,0B,mCAGP,WAAyB,IAAD,OAChB1gG,EAAQL,KAAKghG,iBAAiBhhG,KAAKyG,MAAMzF,SAASgM,QAAQ/E,IAAI,KACpEV,MAAM,GAAD,OAAIjG,EAAJ,gCAAuCjB,GAAS,CACnDmH,OAAQ,SACPK,MAAK,SAAAC,GACFA,EAASC,IACXD,EAASS,OAAOV,MAAK,SAAAoD,GACfA,EAAKkF,SAEPvP,IAAOsH,KAAK,eAAgB7H,EAAO,CAAEQ,KAAM,MAC3CT,EAAaC,GACb,EAAKsG,SAAS,CACZk6F,WAAW,KAIb,EAAKl6F,SAAS,CACZm6F,aAAa,Y,8BAQzB,SAAiB9/F,GACf,OAAO,IAAIgX,IACThX,EACGkd,MAAM,GACNzE,MAAM,KACNS,KAAI,SAAAm+D,GAAK,OAAIA,EAAM5+D,MAAM,W,oBAIhC,WACE,IAAQrV,EAAYpE,KAAKyG,MAAjBrC,QACR,EAAmCpE,KAAKmH,MAAhC05F,EAAR,EAAQA,UAAWC,EAAnB,EAAmBA,YACnB,OAAID,EAEK,cAACvxF,EAAA,EAAD,CAAUrG,GAAG,MACX63F,EAEF,cAAC,GAAD,CAAaj0F,aAAW,IAI7B,qBAAKxI,UAAWD,EAAQohB,OAAxB,SACE,cAAC,EAAD,CAAajc,YAAU,U,GA5DDJ,IAAMC,WAuEvBC,eACbvH,sBAlFa,SAAAC,GAAK,MAAK,CACvByjB,OAAQ,CACNtjB,QAAS,OACTE,MAAO,OACPw2C,UAAW,QACXjvC,eAAgB,SAChBC,WAAY,aA4EK,CAAEpG,WAAW,GAAhC1B,CAAwC8+F,KC3CpCK,G,kDACJ,WAAYx6F,GAAQ,uCACZA,G,0CAGR,WACE,IAAI+D,EACAxK,KAAKyG,MAAMzF,SAASmG,QACtBqD,EAAQxK,KAAKyG,MAAMzF,SAASmG,MAAMqD,OAEpC,IAAQpG,EAAYpE,KAAKyG,MAAjBrC,QACR,OACE,qBAAKC,UAAWD,EAAQ0B,KAAxB,SACE,qBAAKzB,UAAWD,EAAQ0T,UAAxB,SACE,sBAAKzT,UAAWD,EAAQ88F,eAAxB,UACE,oBAAI78F,UAAS,UAAKD,EAAQ8B,MAAb,YAAsB9B,EAAQ+8F,MAA3C,iCAGA,oBAAG98F,UAAS,UAAKD,EAAQgC,KAAb,YAAqBhC,EAAQ+8F,MAAzC,4CAEG32F,GACC,iCACG,IADH,KAGE,uBAAMnG,UAAS,UAAKD,EAAQg9F,UAAb,YAA0Bh9F,EAAQ+8F,MAAjD,UACG,IACA32F,QAIP,uBAZF,qE,GAlBcrB,IAAMC,WA4CjBC,eAAWvH,sBAzFX,iBAAO,CACpBgE,KAAM,CACJrD,QAAS,YACTkD,WAAY,UACZvD,MAAO,OACPG,OAAQ,SAEVuV,UAAW,CACTnS,WAAY,UACZhD,aAAc,OACdoD,UAAW,4CACX3D,MAAO,QACPG,OAAQ,QACRC,OAAQ,SACRN,QAAS,OACTO,QAAS,QAEXy+F,eAAgB,CACd1+F,OAAQ,OACRH,UAAW,UAEb8+F,KAAM,CACJv+F,WAAY,OACZo4D,UAAW,UAEb90D,MAAO,CACL/C,WAAY,OACZuC,WAAY,SACZxC,SAAU,OACVD,MAAO,WAETmD,KAAM,CACJjD,WAAY,SACZuC,WAAY,OACZxC,SAAU,OACVD,MAAO,WAETm+F,UAAW,CACTj+F,WAAY,OACZuC,WAAY,OACZxC,SAAU,OACVD,MAAO,cAgDkC,CAAEO,WAAW,GAAhC1B,CAAwCm/F,K,oBC1FrDI,I,OAAuBC,aAAOC,MAAgBC,MAAM,CAC/Dv/F,SAAU,YACVgE,WAAYw7F,KACZC,WAAW,EACXC,aAAa,EACbC,iBAAiB,GALiBN,CAAH,uP,UCEpBO,GAAoB//F,sBCNX,iBAAO,CAC3Bu6C,MAAO,CACLn6C,QAAS,QACTE,MAAO,OACPG,OAAQ,OACRC,OAAQ,OACRqiE,UAAW,QACXqN,eAAgB,OAElB4vB,SAAU,CACR5/F,QAAS,OACTD,SAAU,WACVG,MAAO,IACPG,OAAQ,IACRI,aAAc,MACd+vB,SAAU,SACV/tB,OAAQ,WAEVo9F,WAAY,CACV7/F,QAAS,OACTyH,eAAgB,SAChBC,WAAY,SACZzH,cAAe,SACfF,SAAU,WACVG,MAAO,OACPG,OAAQ,OACRoD,WACE,2EACF1C,MAAO,UACPZ,UAAW,SACXka,QAAS,EACTtW,WAAY,uBAEZ,MAAO,CACLzD,OAAQ,UACRU,SAAU,GACVwC,WAAY,QAGd,UAAW,CACT6W,QAAS,ODlCkBza,EEIA,SAAA2E,GAC/B,IAAQrC,EAAYqC,EAAZrC,QACR,EAA8CY,mBAASyB,EAAM23D,UAA7D,mBAAO4jC,EAAP,KAAwBC,EAAxB,KACA,EAAkCj9F,oBAAS,GAA3C,mBAAOk9F,EAAP,KAAkBC,EAAlB,KAEMC,EAASJ,GCde,0CDgB9Bp8E,qBAAU,WACHo8E,GAILv7F,EAAM47F,aAAaL,KAClB,CAACA,IAEJp8E,qBAAU,WACRq8E,EAAmBx7F,EAAM23D,YACxB,CAAC33D,EAAM23D,WAEV,IAAMkkC,EAAe,yCAAG,WAAMxmD,GAAN,UAAAxiC,EAAA,6DACtB6oF,GAAa,GACb17F,EAAM87F,kBAAiB,GAFD,SAIhBrH,GAAUp/C,GAAOj0C,MAAK,SAAAC,GAAQ,OAAIm6F,EAAkB,OAACn6F,QAAD,IAACA,OAAD,EAACA,EAAUwL,QAJ/C,OAMtB7M,EAAM87F,kBAAiB,GACvBJ,GAAa,GAPS,2CAAH,sDAUrB,OACE,eAAC,KAAD,CACExwB,OCzCwB,wBD0CxBv1B,OAAQkmD,EACRj+F,UAAWD,EAAQ09F,SAHrB,UAIGI,GAAa,cAAC,EAAD,KACZA,GAAa,qBAAK14F,IAAK44F,EAAQ34F,IAAI,OAAOpF,UAAWD,EAAQi4C,QAC/D,sBAAKh4C,UAAWD,EAAQ29F,WAAxB,UACE,cAAC,GAAD,IACA,sEErCKS,GAAsB1gG,sBCTb,SAAAC,GAAK,MAAK,CAC9B+V,UAAW,CACT1U,gBAAiBrB,EAAM6D,QAAQC,QAAQF,WACvCzD,QAAS,OACTC,cAAe,SACfM,QAAS,iBACTm2C,UAAW,QACX32C,SAAU,YAEZiE,MAAO,CACLjD,MAAO,UACPT,OAAQ,SACRU,SAAU,GACVC,WAAY,IACZuC,WAAY,QAEdsqD,IAAK,CACH9tD,QAAS,QACTE,MAAO,IACPG,OAAQ,IACRI,aAAc,MACdgC,OAAQ,WAEV0iF,KAAM,CACJ,UAAW,CACT7kF,OAAQ,IAGZ0E,aAAc,CACZjE,MAAO,WAETw/F,YAAa,CACXxgG,SAAU,WAEV,UAAW,CACTo4D,QAASvkD,GACT5T,QAAS,QACTE,MAAO,OACPG,OAAQ,SAGZmgG,SAAU,CACRz4F,UAAW,GAEX,UAAW,CACT7H,MAAO,OACPI,OAAQ,WAEV,UAAW,CACTJ,MAAO,KAET,uBAAwB,CACtBuD,WAAY,UACZjD,OAAQ,kCACRG,UAAW,aACXF,aAAc,MACdF,QAAS,YAEX,wBAAyB,CACvBC,OAAQ,EACRiD,WAAY,OACZlD,QAAS,EACTM,QAAS,OACT4B,OAAQ,YAGZg+F,UAAW,CACT14F,UAAW,IAEbwvD,WAAY,CACVl3D,OAAQ,yBD7DuBT,CACjC4X,aANsB,SAAAvS,GAAK,MAAK,CAChC0K,UAAW1K,EAAM0K,UACjBkpF,gBAAiB5zF,EAAMs0F,WAIvB/hF,EEFiC,SAAAjT,GAAU,IAAD,EAC1C,EAAoDm8F,qBAA5CC,EAAR,EAAQA,SAAUhlB,EAAlB,EAAkBA,aAAcsH,EAAhC,EAAgCA,OAAQnzD,EAAxC,EAAwCA,QACxC,EAA0ChtB,oBAAS,GAAnD,mBAAO89F,EAAP,KAAsBC,EAAtB,KACQ3+F,EAAYqC,EAAZrC,QACFmkD,GAAW9hD,EAAMs0F,gBAWjBwH,EAAmB,SAAAxiG,GAAK,OAAIgjG,EAAiBhjG,IAEnD,OACE,mCACGwoD,EACC,qBAAKlkD,UAAWD,EAAQq1D,WAAxB,SACE,cAAC,GAAD,MAGF,sBAAKp1D,UAAWD,EAAQ0T,UAAxB,UACE,oBAAIzT,UAAWD,EAAQ8B,MAAvB,8BACA,uBAAMs1E,SAAUqC,GApBP,SAAAzjE,GACf,IAAM4oF,EAAWv8F,EAAMs0F,gBAEvBE,GAAsBx0F,EAAMoL,UAAUpO,GAAjB,YAAC,eACjBu/F,GACA5oF,OAeyC/V,UAAWD,EAAQijF,KAA3D,UACE,qBAAKhjF,UAAWD,EAAQq+F,YAAxB,SACE,cAAC,cAAD,CACE/+F,KAAK,WACLsuB,QAASA,EACT7gB,OAAQ,gBAAGrN,EAAH,EAAGA,SAAH,OACN,cAAC,GAAD,CACEu+F,aAAcv+F,EACdy+F,iBAAkBA,EAClBnkC,SACE33D,EAAMs0F,iBAAmBt0F,EAAMs0F,gBAAgB38B,gBAMzD,sBAAK/5D,UAAWD,EAAQs+F,SAAxB,UACE,uBAAO/0C,QAAQ,WAAf,SACE,0CAEF,uBACEntD,KAAK,OACLkD,KAAK,OACLD,GAAG,WACH2iB,IAAKy8E,EAAS,CAAEl/F,UAAU,IAC1BK,aACEyC,EAAMs0F,iBAAmBt0F,EAAMs0F,gBAAgBr3F,OAGlDyhF,EAAOzhF,MACN,qBAAKW,UAAWD,EAAQ8C,aAAxB,SACE,4DAIN,sBAAK7C,UAAWD,EAAQs+F,SAAxB,UACE,uBAAO/0C,QAAQ,YAAf,SACE,2CAEF,uBACEjqD,KAAK,QACLlD,KAAK,QACLiD,GAAG,YACHulC,UAAQ,EACRjpC,MAAK,UAAE0G,EAAMoL,iBAAR,aAAE,EAAiBrH,MACxB4b,IAAKy8E,OAGT,qBAAKx+F,UAAWD,EAAQu+F,UAAxB,SACE,cAAC,GAAD,CAAcz8F,MAAM,OAAOjC,SAAU6+F,kBChFtCG,GAAmB,SAAAx8F,GAC9B,IAAMs5F,EACJt5F,EAAMzF,UAAYyF,EAAMzF,SAASmG,OAASV,EAAMzF,SAASmG,MAAMgB,KAEjE,OACE,eAAC,IAAMg8E,SAAP,WACE,cAAC,GAAD,CACEj+E,MAAM,mBACN65F,QAASA,EACTD,YAAY,IAEd,cAAC,GAAD,Q,mCCWAoD,G,wKACJ,WAC8B,qBAAjB16B,cjN7BqB,YiN6BWA,aAAaC,YACtDyB,O,oBAIJ,WACElqE,KAAKmjG,qBACL,MAA8BnjG,KAAKyG,MAA3BrC,EAAR,EAAQA,QAAS3D,EAAjB,EAAiBA,SAEjB,OACE,sBAAK4D,UAAWD,EAAQg/F,IAAxB,UACE,cAACtG,EAAA,EAAD,UACE,eAAC,IAAD,WACE,cAAC,GAAD,CAAcuG,gBAAiB5iG,EAASC,cAAesQ,OAAK,EAACnQ,KAAMa,EAAY,IAAKqP,UAAWivF,KAC/F,cAAClvF,EAAA,EAAD,CAAOjQ,KAAM,SAAUkQ,UAAWT,KAClC,cAACQ,EAAA,EAAD,CAAOE,OAAK,EAACnQ,KAAM,WAAYkQ,UAAWT,KAC1C,cAACQ,EAAA,EAAD,CAAOE,OAAK,EAACnQ,KAAM,mBAAoBkQ,UAAWT,KAClD,cAACQ,EAAA,EAAD,CAAOE,OAAK,EAACnQ,KAAM,kBAAmBkQ,UAAWT,KACjD,cAACQ,EAAA,EAAD,CAAOE,OAAK,EAACnQ,KAAM,mBAAoBkQ,UAAWkwF,KAClD,cAACnwF,EAAA,EAAD,CAAOjQ,KAAM,iBAAkBkQ,UAAWT,KAC1C,cAACQ,EAAA,EAAD,CAAOjQ,KAAM,eAAgBkQ,UAAWuvF,KACxC,cAACxvF,EAAA,EAAD,CAAOjQ,KAAM,gBAAiBkQ,UAAW,kBAAM,cAAC,GAAD,CAAalE,aAAa,OACzE,cAACiE,EAAA,EAAD,CAAOjQ,KAAM,iBAAkBkQ,UAAW2vF,KAC1C,cAAC5vF,EAAA,EAAD,CAAOjQ,KAAM,gBAAiBkQ,UAAW6vF,KAEzC,cAAC,GAAD,CACEyC,gBAAiB5iG,EAASC,cAC1BsQ,OAAK,EACLnQ,KAAM,oBACNkQ,UAAWkyF,KAEb,cAAC,GAAD,CAAcI,gBAAiB5iG,EAASC,cAAeG,KAAMa,EAAY,eAAgBqP,UAAW61B,KACpG,cAACt3B,EAAA,EAAD,CAAUnH,KAAK,IAAIc,GAAG,gBAG1B,cAAC,GAAD,IACA,cAACo4F,GAAD,W,GAtCUj4F,aA4CZ6H,GAAe,SAAC,GAAD,IAAc7H,EAAd,EAAG2H,UAAsBsyF,EAAzB,EAAyBA,gBAAoBnyF,EAA7C,yBACnB,cAACJ,EAAA,EAAD,2BACMI,GADN,IAEEC,OAAQ,SAAA1K,GAAK,OACV48F,EACC,cAACj6F,EAAD,eAAe3C,IAEf,cAAC6I,EAAA,EAAD,CACErG,GAAI,CACFb,SAAU,SACVjB,MAAO,CAAEgB,KAAM1B,EAAMzF,kBAclBqI,eAAWvH,sBA1EX,iBAAO,CACpBshG,IAAK,CACHhhG,MAAO,WAwEeN,CAAmB4X,aANrB,SAAAvS,GAAK,MAAK,CAChC1G,SAAU0G,EAAM1G,SAChBoR,UAAW1K,EAAM0K,UACjBe,UAAWzL,EAAMyL,aAG0B8G,CAAyBwpF,MC7FhE3M,GAAe,CACnB3F,UAAW,KACXK,SAAU,MAmCGL,GAhCG,WAA8C,IAA7CzpF,EAA4C,uDAApCovF,GAAoC,yCAApB/1F,EAAoB,EAApBA,KAAMonB,EAAc,EAAdA,QAC/C,OAAQpnB,GACR,KAAKgwF,GACH,OAAO,2BACFrpF,GADL,IAEEypF,UAAU,eACLhpE,KAIT,KAAK6oE,GACH,OAAO,2BACFtpF,GADL,IAEE8pF,SAAS,eACJrpE,KAIT,KAAK8oE,GACH,OAAO,2BACFvpF,GADL,IAEE8pF,SAAS,2BACJrpE,GADG,IAENirE,UAAU,GAAD,oBAAM1rF,EAAM8pF,SAAS4B,WAArB,aAAmCjrE,EAAQirE,gBAI1D,QACE,OAAO1rF,ICbIosF,GApBC,WAAkC,IAAjCpsF,EAAgC,uDAAxB,GAAwB,yCAAnB3G,EAAmB,EAAnBA,KAAMonB,EAAa,EAAbA,QAClC,OAAQpnB,GACR,KAAKq0F,GACH,OAAOjtE,EAAQ2rE,SAAW,GAC5B,KAAKuB,GACH,MAAM,GAAN,oBAAW3tF,GAAX,CAAkBygB,EAAQ6rE,SAC5B,KAAKsB,GACH,OAAO,aAAI5tF,GAAO+S,KAAI,SAAAu5E,GAEpB,OADIA,EAAOhwF,KAAOmkB,EAAQ6rE,OAAOhwF,KAAIgwF,EAAS7rE,EAAQ6rE,QAC/CA,KAEX,KAAKuB,GACH,OAAO,aAAI7tF,GAAO+K,QAAO,qBAAEzO,KAAemkB,EAAQ0tE,YACpD,KAAKL,GACH,MAAO,GACT,QACE,OAAO9tF,ICLIosF,GAXC,WAAsC,IAArCpsF,EAAoC,uDAA5B,KAA4B,yCAApBygB,EAAoB,EAApBA,QAASpnB,EAAW,EAAXA,KACxC,OAAQA,GACR,KAAKg1F,GACH,OAAO5tE,EAAQ6rE,OACjB,KAAKjhF,GACH,OAAO,KACT,QACE,OAAOrL,ICMI1G,GAZE,WAA4D,IAA3D0G,EAA0D,uDAAlD,CAAE9G,MAAO,KAAMK,eAAe,GAASy1B,EAAW,uCAC1E,OAAQA,EAAO31B,MACf,KAAKN,EAEH,OADAuR,GAAOG,WACAukB,EAAO11B,SAChB,KAAKN,EACH,OAAOg2B,EAAO11B,SAChB,QACE,OAAO0G,ICDI0K,GARG,WAA2B,IAA1B1K,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAC1C,OAAIA,EAAO31B,OAAS6Q,GACX8kB,EAAOtkB,UAEP1K,GCIIukE,GARI,WAAyB,IAAxBvkE,EAAuB,uDAAf,GAAIgvB,EAAW,uCACzC,OAAIA,EAAO31B,OAASgrE,GACXr1C,EAAOu1C,WAEPvkE,GCIIqU,GARW,WAA2B,IAA1BrU,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAClD,OAAIA,EAAO31B,OAASukB,GACXoR,EAAO/Q,MAEPje,GCIIwS,GARS,WAA2B,IAA1BxS,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAChD,OAAIA,EAAO31B,OAASwkB,GACXmR,EAAO/Q,MAEPje,GCII4X,GARgB,WAA2B,IAA1B5X,EAAyB,uDAAjB,KAAMgvB,EAAW,uCACvD,OAAIA,EAAO31B,OAASskB,GACXqR,EAAO/Q,MAEPje,GCUImmB,GAdD,WAAyB,IACjCA,EADSnmB,EAAuB,uDAAf,GAAIgvB,EAAW,uCAEpC,OAAQA,EAAO31B,MACf,KAAK0sB,GACH,OAAOiJ,EAAO7I,MAChB,KAAKH,GAGH,OAFAG,EAAK,aAAOnmB,GACZmmB,EAAMhjB,KAAK6rB,EAAO1I,MACXH,EACT,QACE,OAAOnmB,ICCI2kB,GAXF,WAAyB,IAAxB3kB,EAAuB,uDAAf,GAAIgvB,EAAW,uCACnC,OAAQA,EAAO31B,MACf,KAAKwsB,GACH,OAAOmJ,EAAOrK,KAChB,KAAKiB,GACH,OAAO,KACT,QACE,OAAO5lB,ICPLm8F,GAAY,SAAAh2E,GAChB,OAAOA,EAAMvJ,QAAO,SAACw0E,EAAK9qE,GAAN,6BAAmB8qE,GAAnB,aAA2B9qE,EAAKiJ,UAAQ,KAW/CA,GARD,WAAoC,IAAnCvvB,EAAkC,uDAA1B,GAA0B,yCAApB3G,EAAoB,EAApBA,KAAMonB,EAAc,EAAdA,QACjC,OAAIpnB,IAAS4sB,GACJk2E,GAAU17E,EAAQ0F,OAElBnmB,GCMIklB,GAdF,WAAyB,IAChCA,EADQllB,EAAuB,uDAAf,GAAIgvB,EAAW,uCAEnC,OAAQA,EAAO31B,MACf,KAAKo4B,GACH,OAAOzC,EAAO9J,KAChB,KAAKsM,GAGH,OAFAtM,EAAI,aAAOllB,GACXklB,EAAK/hB,KAAK6rB,EAAO4C,KACV1M,EACT,QACE,OAAOllB,ICVLo8F,GAAqB,SAAAz2E,GACzB,OAAOA,EAAY/I,QAAO,SAACy/E,EAAU13E,GAKnC,OAJK03E,EAAS13E,EAAKghC,UACjB02C,EAAS13E,EAAKghC,QAAU,IAE1B02C,EAAS13E,EAAKghC,QAAQxiD,KAAKwhB,GACpB03E,IACN,KAWU12E,GARK,WAAyB,IAAxB3lB,EAAuB,uDAAf,GAAIgvB,EAAW,uCAC1C,OAAIA,EAAO31B,OAASosB,GACX22E,GAAmBptE,EAAOrJ,aAE1B3lB,GCCI4L,GAVF,WAAyB,IAAxB5L,EAAuB,uDAAf,GAAIgvB,EAAW,uCACnC,OAAQA,EAAO31B,OACVqS,IACHpB,GAAOG,WACAukB,EAAOpjB,MAEP5L,GCYIyL,GAhBG,WAA2B,IACvCymE,EADalyE,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAE1C,OAAQA,EAAO31B,MACf,KAAKiS,GACH,OAAO0jB,EAAOvjB,UAChB,KAAKF,GAGH,OAFA2mE,EAASnuE,KAAK6B,MAAM7B,KAAKC,UAAUhE,KAC5Bu0E,kBAAoBvlD,EAAOulD,kBAC3BrC,EACT,KAAK7mE,GACH,OAAO,KACT,QACE,OAAOrL,ICRIsI,GARE,WAAsC,IAArCtI,EAAoC,uDAA5B,CAAE+I,MAAM,GAASimB,EAAW,uCACpD,OAAIA,EAAO31B,OAAS+O,GACX4mB,EAAO1mB,SAEPtI,GC+BImsB,GAhCC,WAAyB,IACnCA,EADWnsB,EAAuB,uDAAf,GAAIgvB,EAAW,uCAEtC,OAAQA,EAAO31B,MACf,KAAK2yB,GACH,OAAOgD,EAAO7C,QAChB,KAAKN,GAIH,OAHAM,EAAU,uBAAInsB,GAAJ,CAAWgvB,EAAO7B,SAAQjb,MAClC,SAACC,EAAGlB,GAAJ,OAAUkB,EAAE5V,KAAKoa,eAAiB1F,EAAE1U,KAAKoa,iBAEpCwV,EACT,KAAKF,GAOH,OANAE,EAAO,aAAOnsB,GACdmsB,EAAQjZ,SAAQ,SAAC1J,EAASwI,GACpBxI,EAAQlN,KAAO0yB,EAAO7B,OAAO7wB,KAC/B6vB,EAAQna,GAASgd,EAAO7B,WAGrBhB,EAAQja,MACb,SAACC,EAAGlB,GAAJ,OAAUkB,EAAE5V,KAAKoa,eAAiB1F,EAAE1U,KAAKoa,iBAE7C,KAAKoV,GAEH,OADAI,EAAO,aAAOnsB,GACPmsB,EAAQphB,QAAO,SAAAsE,GACpB,OAAOA,EAAE/S,KAAO0yB,EAAOrB,YAE3B,KAAK7B,GACH,OAAO,KACT,QACE,OAAO9rB,ICdI2sB,GAhBK,WAAyB,IACvCA,EADe3sB,EAAuB,uDAAf,GAAIgvB,EAAW,uCAE1C,OAAQA,EAAO31B,MACf,KAAK+yB,GACH,OAAO4C,EAAOrC,YAChB,KAAKN,GAEH,OADAM,EAAcqC,EAAOrC,YAAc,EAC5BA,EACT,KAAKL,GAEH,OADAK,EAAcqC,EAAOrC,YAAc,EAC5BA,EACT,QACE,OAAO3sB,ICIIupB,GAhBK,WAAyB,IACvCA,EADevpB,EAAuB,uDAAf,GAAIgvB,EAAW,uCAE1C,OAAQA,EAAO31B,MACf,KAAKkvB,GACH,OAAOyG,EAAOzF,YAChB,KAAKX,GAEH,OADAW,EAAcyF,EAAOzF,YAAc,EAC5BA,EACT,KAAKV,GAEH,OADAU,EAAcyF,EAAOzF,YAAc,EAC5BA,EACT,QACE,OAAOvpB,ICiBIopB,GA3BE,WAA2B,IAA1BppB,EAAyB,uDAAjB,KAAMgvB,EAAW,uCACzC,OAAQA,EAAO31B,MACf,KAAK2vB,GACH,OAAOgG,EAAO5F,SAASy+B,UACzB,KAAK/+B,GACH,IAAMY,EAAO,aAAO1pB,GAEpB,OADA0pB,EAAQ4L,QAAQtG,EAAOtF,SAChBA,EACT,KAAKT,GACH,IAAMG,EAAQ,aAAOppB,GAMrB,OALAopB,EAASlW,SAAQ,SAAC1J,EAASwI,GACrBxI,EAAQlN,KAAO0yB,EAAOtF,QAAQptB,KAChC8sB,EAASpX,GAASgd,EAAOtF,YAGtBN,EACT,KAAKL,GACH,OAAO,aAAI/oB,GAAO+K,QAAO,SAAAsE,GACvB,OAAOA,EAAE/S,KAAO0yB,EAAOhF,aAE3B,KAAKd,GACH,OAAO,KACT,QACE,OAAOlpB,ICFIwwD,GAvBK,WAA2B,IAA1BxwD,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAC5C,OAAQA,EAAO31B,MACf,KAAKmyB,GACH,OAAOwD,EAAOriB,SAEhB,KAAK8e,GACH,IAAM+kC,EAAczsD,KAAK6B,MAAM7B,KAAKC,UAAUhE,IAO9C,OANAwwD,EAAYv9C,KAAKC,SAAQ,SAAC1J,EAASwI,GAC7BxI,EAAQlN,KAAO0yB,EAAO9V,QAAQ5c,KAChCk0D,EAAYv9C,KAAKjB,GAASgd,EAAO9V,YAGrCs3C,EAAYv9C,KAAKlI,QAAO,SAAAsE,GAAC,OAAKA,EAAEghD,WACzBG,EAET,KAAK9kC,GACH,OAAO,KAET,QACE,OAAO1rB,ICdI60B,GATM,WAAyB,IAAxB70B,EAAuB,uDAAf,GAAIgvB,EAAW,uCAC3C,OAAQA,EAAO31B,OACVs7B,GACI3F,EAAO6F,aAEP70B,GCII9G,GATD,WAAyB,IAAxB8G,EAAuB,uDAAf,GAAIgvB,EAAW,uCACpC,OAAQA,EAAO31B,OACV+5E,GACIpkD,EAAO91B,MAEP8G,GCMImzE,GAVO,WAAyB,IAAxBnzE,EAAuB,uDAAf,GAAIgvB,EAAW,uCAC5C,OAAQA,EAAO31B,OACRu4E,GACI,CAAEE,cAAe9iD,EAAO8iD,eAGxB9xE,GCGE+9B,GAVW,WAAyB,IAAxB/9B,EAAuB,uDAAf,GAAIgvB,EAAW,uCAChD,OAAQA,EAAO31B,OACVutD,GACI53B,EAAO+O,kBAGP/9B,GCEIy1F,GARS,WAA2B,IAA1Bz1F,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAChD,OAAIA,EAAO31B,OAASoT,GACXuiB,EAAOriB,SAEP3M,GCKLovF,GAAe,CACnBl2B,kBAAmB,GACnBE,iBAAkB,GAClBC,qBAAsB,GACtBC,sBAAuB,GACvBC,SAAU,GACVQ,oBAAqB,IAGjBuiC,GAA2B,SAAA77E,GAC/B,OAAOA,EAAQu3C,aAAajtD,QAAO,SAAA5K,GAAS,IAAD,MACzC,OACM,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,eAAsBv1D,UAAWuxD,KAC7B,OAAJvyD,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,mBAAsBC,eAAtB,eAA+BC,WAAYn2C,EAAQw3C,gBAKnDskC,GAA0B,SAAA97E,GAC9B,OAAOA,EAAQu3C,aAAajtD,QAAO,SAAA5K,GAAS,IAAD,EACzC,OAAW,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,eAAsBv1D,UAAWuxD,OAItC8pC,GAA8B,SAAA/7E,GAClC,OAAOA,EAAQu3C,aAAajtD,QAAO,SAAA5K,GAAS,IAAD,EACzC,OAAW,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMu2D,sBAAN,eAAsBv1D,UAAWuxD,OAItC+pC,GAA+B,SAAAh8E,GACnC,OAAOA,EAAQu3C,aAAajtD,QAAO,SAAA5K,GAAS,IAAD,MACzC,OACE,UAAAA,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,KAChC,UAAAvyD,EAAKu2D,sBAAL,mBAAqBC,eAArB,eAA8BC,WAAYn2C,EAAQw3C,gBAKlDykC,GAAkB,SAAAj8E,GACtB,OAAOA,EAAQu3C,aAAajtD,QAAO,SAAA5K,GAAS,IAAD,MACzC,OACE,UAAAA,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,KAChC,UAAAvyD,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,KAChC,UAAAvyD,EAAKu2D,sBAAL,eAAqBv1D,UAAWuxD,OAKhCiqC,GAA0B,SAAC38F,EAAOygB,GAAa,IAAD,MAC5Cm8E,GACJ,UAAAn8E,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,KACxC,UAAAjyC,EAAQtgB,KAAKu2D,sBAAb,mBAA6BC,eAA7B,eAAsCC,WAAYn2C,EAAQw3C,YAE5D,OAAO4kC,GAAY78F,EAAOygB,EAASm8E,IAG/BE,GAAqB,SAAC98F,EAAOygB,GAAa,IAAD,EACvCm8E,GAAO,UAAAn8E,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,GAErD,OAAOmqC,GAAY78F,EAAOygB,EAASm8E,IAG/BG,GAAsB,SAAC/8F,EAAOygB,GAAa,IAAD,QACxCm8E,GACJ,UAAAn8E,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,KACvC,UAAAjyC,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,KACvC,UAAAjyC,EAAQtgB,KAAKu2D,sBAAb,mBAA6BC,eAA7B,eAAsCC,WAAYn2C,EAAQw3C,YAE9D,OAAO4kC,GAAY78F,EAAOygB,EAASm8E,IAG/BI,GAAiB,SAACh9F,EAAOygB,GAAa,IAAD,EACnCm8E,GAAO,UAAAn8E,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,GAErD,OAAOmqC,GAAY78F,EAAOygB,EAASm8E,IAG/BK,GAAiB,SAACj9F,EAAOygB,GAAa,IAAD,MACnCm8E,GACJ,UAAAn8E,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,KACxC,UAAAjyC,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,KACxC,UAAAjyC,EAAQtgB,KAAKu2D,sBAAb,eAA6Bv1D,UAAWuxD,GAE1C,OAAOmqC,GAAY78F,EAAOygB,EAASm8E,IAG/BC,GAAc,SAAC78F,EAAOygB,EAASm8E,GACnC,IAAMM,GAAal9F,EAAMkL,MAAK,SAAA/K,GAAI,aAAQ,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM+mB,WAAN,UAAiBzG,EAAQtgB,YAAzB,aAAiB,EAAc+mB,WAErE,OAAI01E,GAAQM,EAAkBl9F,EAE1B48F,IAASM,EACJl9F,EAAM+K,QAAO,SAAA5K,GAAI,OAAIA,EAAK+mB,SAAWzG,EAAQtgB,KAAK+mB,UAEpDg2E,EAAS,CACXz8E,EAAQtgB,MADG,oBACMH,IAClBA,EAAM+S,KAAI,SAAA5S,GAAS,IAAD,EAIlB,OAHIA,EAAK+mB,UAAL,UAAgBzG,EAAQtgB,YAAxB,aAAgB,EAAc+mB,UAChC/mB,EAAOyR,OAAOsC,OAAO,GAAI/T,EAAMsgB,EAAQtgB,OAElCA,MAIPg9F,GAA4B,SAACn9F,EAAOygB,GACxC,OAAOzgB,EAAM+S,KAAI,SAAA5S,GAAS,IAAD,EACvB,OAAQ,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM+mB,WAAN,UAAiBzG,EAAQtgB,YAAzB,aAAiB,EAAc+mB,UAA/B,OAAyC/mB,QAAzC,IAAyCA,OAAzC,EAAyCA,EAAM22D,iBACjDr2C,EAAQtgB,KAAKi9F,eAAgB,EAC7B38E,EAAQtgB,KAAK22D,eAAiB,EAC9Br2C,EAAQtgB,KAAKk9F,YAAcl9F,EAAKk9F,YAChC58E,EAAQtgB,KAAK62D,qBAAuB72D,EAAK62D,qBAClCv2C,EAAQtgB,MAEVA,MAmGIg5D,GA/FS,WAA8C,IAA7Cn5D,EAA4C,uDAApCovF,GAAoC,yCAApB/1F,EAAoB,EAApBA,KAAMonB,EAAc,EAAdA,QACrD,OAAQpnB,GACR,KAAKo+D,GACH,OAAO,2BACFz3D,GADL,IAEEk5D,kBAAmBojC,GAAyB77E,GAC5C24C,iBAAkBmjC,GAAwB97E,GAC1C44C,qBAAsBmjC,GAA4B/7E,GAClD64C,sBAAuBmjC,GAA6Bh8E,GACpD84C,SAAUmjC,GAAgBj8E,KAG9B,KAAKi3C,GACH,OAAO,2BACF13D,GADL,IAEEk5D,kBAAkB,GAAD,oBACZl5D,EAAMk5D,mBADM,aAEZojC,GAAyB77E,KAE9B24C,iBAAiB,GAAD,oBACXp5D,EAAMo5D,kBADK,aAEXmjC,GAAwB97E,KAE7B44C,qBAAqB,GAAD,oBACfr5D,EAAMq5D,sBADS,aAEfmjC,GAA4B/7E,KAEjC64C,sBAAsB,GAAD,oBAChBt5D,EAAMs5D,uBADU,aAEhBmjC,GAA6Bh8E,KAElC84C,SAAS,GAAD,oBAAMv5D,EAAMu5D,UAAZ,aAAyBmjC,GAAgBj8E,OAGrD,KAAKo3C,GACH,OAAO,2BACF73D,GADL,IAEEk5D,kBAAmByjC,GACjB38F,EAAMk5D,kBACNz4C,GAEF44C,qBAAsByjC,GACpB98F,EAAMq5D,qBACN54C,GAEF64C,sBAAuByjC,GACrB/8F,EAAMs5D,sBACN74C,GAEF24C,iBAAkB4jC,GAAeh9F,EAAMo5D,iBAAkB34C,GACzD84C,SAAU0jC,GAAej9F,EAAMu5D,SAAU94C,KAG7C,KAAKq3C,GACH,OAAO,2BACF93D,GADL,IAEEk5D,kBAAmBikC,GACjBn9F,EAAMk5D,kBACNz4C,GAEF44C,qBAAsB8jC,GACpBn9F,EAAMq5D,qBACN54C,GAEF64C,sBAAuB6jC,GACrBn9F,EAAMs5D,sBACN74C,GAEF84C,SAAU4jC,GAA0Bn9F,EAAMu5D,SAAU94C,GACpD24C,iBAAkB+jC,GAChBn9F,EAAMo5D,iBACN34C,KAIN,KAAKk3C,GACH,OAAO,2BACF33D,GADL,IAEE+5D,oBAAqBt5C,EAAQu3C,eAGjC,KAAKJ,GACH,MAAO,CACL53D,QACA+5D,oBAAoB,GAAD,oBACd/5D,EAAM+5D,qBADQ,aAEdt5C,EAAQu3C,gBAIjB,QACE,OAAOh4D,ICrNLovF,GAAe,CACnBkO,UAAW,KACX9lC,OAAQ,KACRqF,WAAY,KACZvH,UAAW,KACX+nC,YAAa,KACb9nC,SAAU,KACVJ,gBAAiB,KACjBooC,SAAU,KACVvqF,SAAU,KACVuqD,SAAU,KACVpG,WAAY,KACZT,eAAgB,KAChB0mC,cAAe,KACftmC,eAAgB,KAChB5vC,OAAQ,KACRsuC,oBAAqB,KACrB1wC,SAAU,IAmCGkuC,GAhCI,WAA8C,IAA7ChzD,EAA4C,uDAApCovF,GAAoC,yCAApB/1F,EAAoB,EAApBA,KAAMonB,EAAc,EAAdA,QAChD,OAAQpnB,GACR,KAAKu5D,GACH,OAAO,uCACF5yD,GACAygB,EAAQuyC,YAFb,IAGEluC,SAAU9kB,EAAM8kB,WAGpB,KAAK+tC,GACH,OAAO,2BACF7yD,GADL,IAEE8kB,SAAUrE,EAAQqE,WAGtB,KAAKguC,GACH,OAAO,2BACF9yD,GADL,IAEE8kB,SAAS,GAAD,oBAAM9kB,EAAM8kB,UAAZ,aAAyBrE,EAAQqE,aAG7C,KAAK6tC,GACH,OAAO,2BACF3yD,GADL,IAEE8kB,SAAS,CAAErE,EAAQpf,SAAX,oBAAuBrB,EAAM8kB,aAGzC,QACE,OAAO9kB,IC1CI09E,GAXQ,WAA6C,IAA5C19E,EAA2C,uDAAnC,KAAmC,yCAA3B09E,EAA2B,EAA3BA,eAAgBrkF,EAAW,EAAXA,KACtD,OAAQA,GACR,KAAKkkF,GACH,OAAO,eAAKG,GACd,KAAKF,GACH,OAAO,KACT,QACE,OAAOx9E,ICEIkhF,GATe,WAA6C,IAA5ClhF,EAA2C,uDAAnC,KAAmC,yCAA3B09E,EAA2B,EAA3BA,eAAgBrkF,EAAW,EAAXA,KAC7D,OAAQA,IACHskF,GACI,eAAKD,GAEL19E,GCII4zF,GATS,WAA2B,IAA1B5zF,EAAyB,uDAAjB,KAAMgvB,EAAW,uCAChD,OAAQA,EAAO31B,OACVq6F,GACI1kE,EAAO4kE,gBAEP5zF,GCYI0hB,GAbI,WAAoC,IAAnC1hB,EAAkC,uDAA1B,GAA0B,yCAApB3G,EAAoB,EAApBA,KAAMonB,EAAc,EAAdA,QACtC,OAAQpnB,GACR,KAAKk/B,GACH,OAAO,aAAI9X,EAAQiB,YACrB,KAAK8W,GACH,MAAM,GAAN,oBAAWx4B,GAAX,CAAkBygB,EAAQ8B,YAC5B,KAAKkW,GACH,MAAO,GACT,QACE,OAAOz4B,ICqEIw9F,GArCEC,YAAgB,CAC/BnkG,YACA6sB,SACAva,QACAH,aACAkZ,QACA4/C,cACAvR,cACA7mC,WACAQ,eACApD,eACAH,YACAonC,eACAloD,YACAinB,SACAmuD,kBACA+X,mBACA/qF,aACAmqB,gBACA3P,QACAiuD,iBACAj6E,SACAmb,qBACA7B,mBACAoF,0BACA6xE,aACA9jE,eACAoY,qBACAo7B,mBACAm7B,WACA5yE,cACAw/D,yBACAkL,WACAE,Y,gEC9EW1xF,GAAQ8iG,yBAAe,CAClCj/F,QAAS,CACPC,QAAS,CACPm0B,MAAO,UACP8qE,OAAQ,UACRh/F,KAAM,UACN0nF,KAAM,UACNc,UAAW,UACXloF,KAAM,UACN0W,aAAc,OACdioF,MAAO,UACP/vB,UAAW,UACXgwB,UAAW,UACXv6E,WAAY,UACZ9kB,WAAY,WAEdS,KAAM,CACJuc,OAAQ,UACRwX,KAAM,WAERF,UAAW,CACTD,MAAO,UACPl0B,KAAM,UACN0nF,KAAM,UACN1wE,aAAc,QAEhBod,QAAS,CACPC,KAAM,WAERuT,OAAQ,CACNv9B,QAAS,UACT/I,MAAO,WAETonE,eAAgB,CACdC,QAAS,UACT3Q,QAAS,cCnBTmnC,I,QAAsBrK,KAA2B,KAC1Ct6F,GAAQ4kG,YAAYC,GAASF,IACpC56F,GAAU+6F,cAEhBxK,KAAY,CACVyK,IAAKlkG,mIAAYmkG,WACjBC,aAAc,CACZ,IAAIjhB,KAAakhB,eAAe,CAC9BC,uBAAwB7K,KAAoCvwF,OAGhEq7F,iBAAkB,IAGpBC,IAASx0F,OACP,cAAC,IAAD,CAAU7Q,MAAOA,GAAjB,SACE,cAAC,KAAD,CAAyBslG,MAAOC,KAAhC,SACE,cAAC/I,EAAA,EAAD,CAAezyF,QAASA,GAAxB,SACE,cAAC,mBAAD,CAAkBtI,MAAOA,GAAzB,SACE,cAAC+O,EAAA,EAAD,CAAOjQ,KAAK,IAAIkQ,UAAWmyF,aAMnCr+D,SAASihE,eAAe,SAAWjhE,SAAS+K,cAAc,S,oBC1C5DnwC,EAAOC,QAAU,CAAC,UAAY,0BAA0B,gBAAkB,gCAAgC,OAAS,uBAAuB,MAAQ,sBAAsB,YAAc,4BAA4B,UAAY,0BAA0B,IAAM,oBAAoB,UAAY,0BAA0B,gBAAkB,gCAAgC,mBAAqB,mCAAmC,mBAAqB,mCAAmC,mBAAqB,mCAAmC,yBAA2B,yCAAyC,aAAe,+B,oBCArmBD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,qBAAqB,IAAM,oBAAoB,UAAY,0BAA0B,OAAS,yB,oBCA7LD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,YAAc,4BAA4B,WAAa,6B,oBCA/GD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,YAAc,4BAA4B,MAAQ,sBAAsB,OAAS,uBAAuB,QAAU,0B,oBCA1MD,EAAOC,QAAU,CAAC,WAAa,2BAA2B,UAAY,0BAA0B,OAAS,uBAAuB,aAAe,+B,oBCA/ID,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,MAAQ,sBAAsB,YAAc,8B,oBCApID,EAAOC,QAAU,CAAC,mBAAqB,mCAAmC,YAAc,4BAA4B,kBAAoB,kCAAkC,gBAAkB,gCAAgC,oBAAsB,sC,oBCAlPD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,SAAW,yBAAyB,UAAY,0BAA0B,MAAQ,sBAAsB,UAAY,0BAA0B,WAAa,2BAA2B,KAAO,uB,oBCArPD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,KAAO,qBAAqB,MAAQ,sBAAsB,WAAa,2BAA2B,UAAY,0BAA0B,eAAiB,+BAA+B,WAAa,6B,oBCA7PD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,qBAAqB,KAAO,qBAAqB,UAAY,0BAA0B,mBAAqB,qC,oBCA3MD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,MAAQ,sBAAsB,YAAc,4BAA4B,aAAe,6BAA6B,YAAc,8B,oBCA1LD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,cAAgB,8BAA8B,SAAW,yBAAyB,MAAQ,sBAAsB,QAAU,0B,oBCAlLD,EAAOC,QAAU,CAAC,OAAS,uBAAuB,WAAa,2BAA2B,aAAe,6BAA6B,KAAO,uB,oBCA7ID,EAAOC,QAAU,CAAC,UAAY,0BAA0B,MAAQ,sBAAsB,YAAc,4BAA4B,aAAe,6BAA6B,YAAc,8B,oBCA1LD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,IAAM,oBAAoB,KAAO,qBAAqB,SAAW,2B,oBCAzHD,EAAOC,QAAU,CAAC,OAAS,uBAAuB,OAAS,uBAAuB,MAAQ,sBAAsB,SAAW,yBAAyB,UAAY,4B,oBCAhKD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,qBAAqB,eAAiB,+BAA+B,WAAa,6B,oBCAjLD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,SAAW,2B,oBCAnED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,SAAW,2B,oBCAnED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,YAAc,4BAA4B,WAAa,6B,oBCA/GD,EAAOC,QAAU,CAAC,OAAS,uBAAuB,WAAa,2BAA2B,aAAe,+B,oBCAzGD,EAAOC,QAAU,CAAC,KAAO,qBAAqB,IAAM,oBAAoB,UAAY,0BAA0B,KAAO,uB,oBCArHD,EAAOC,QAAU,CAAC,KAAO,qBAAqB,IAAM,oBAAoB,UAAY,0BAA0B,KAAO,uB,oBCArHD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,aAAe,6BAA6B,kBAAoB,kCAAkC,gBAAkB,kC,oBCA5MD,EAAOC,QAAU,CAAC,OAAS,uBAAuB,MAAQ,sBAAsB,SAAW,2B,oBCA3FD,EAAOC,QAAU,CAAC,QAAU,wBAAwB,MAAQ,sBAAsB,MAAQ,wB,oBCA1FD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,UAAY,0BAA0B,OAAS,yB,oBCAvGD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,eAAiB,+BAA+B,UAAY,4B,oBCApHD,EAAOC,QAAU,CAAC,MAAQ,sBAAsB,MAAQ,sBAAsB,MAAQ,wB,oBCAtFD,EAAOC,QAAU,CAAC,OAAS,uBAAuB,KAAO,qBAAqB,KAAO,uB,oBCArFD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,uB,oBCA/FD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,uB,oBCA/FD,EAAOC,QAAU,CAAC,aAAe,6BAA6B,QAAU,wBAAwB,QAAU,0B,oBCA1GD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,SAAW,yBAAyB,SAAW,2B,oBCAvGD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,MAAQ,sBAAsB,OAAS,yB,oBCA/FD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,KAAO,qBAAqB,iBAAmB,iCAAiC,gBAAkB,kC,oBCA1JD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,eAAiB,+BAA+B,uBAAyB,yC,oBCAjID,EAAOC,QAAU,CAAC,UAAY,0BAA0B,KAAO,uB,oBCA/DD,EAAOC,QAAU,CAAC,WAAa,2BAA2B,UAAY,4B,oBCAtED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,UAAY,4B,oBCApED,EAAOC,QAAU,CAAC,SAAW,yBAAyB,QAAU,0B,oBCAhED,EAAOC,QAAU,CAAC,MAAQ,sBAAsB,yBAA2B,2C,oBCA3ED,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,OAAS,yB,oBCA3BD,EAAOC,QAAU,CAAC,aAAe,6BAA6B,YAAc,8B,oBCA5ED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,WAAa,6B,oBCArED,EAAOC,QAAU,CAAC,WAAa,2BAA2B,QAAU,0B,oBCApED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,UAAY,4B,oBCApED,EAAOC,QAAU,CAAC,OAAS,uBAAuB,MAAQ,sBAAsB,SAAW,2B,oBCA3FD,EAAOC,QAAU,CAAC,MAAQ,sBAAsB,aAAe,+B,oBCA/DD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,UAAY,4B,oBCApED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,gBAAkB,kC,oBCA1ED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,oBAAsB,sC,mBCA9ED,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,OAAS,uBAAuB,KAAO,qBAAqB,KAAO,qBAAqB,SAAW,yBAAyB,KAAO,qBAAqB,iBAAmB,iCAAiC,YAAc,4BAA4B,IAAM,oBAAoB,SAAW,yBAAyB,SAAW,yBAAyB,WAAa,2BAA2B,MAAQ,sBAAsB,MAAQ,wB,oBCA9fD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,OAAS,yB,oBCA3BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,QAAU,0B,oBCA5BD,EAAOC,QAAU,CAAC,MAAQ,wB,oBCA1BD,EAAOC,QAAU,CAAC,OAAS,yB,oBCA3BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,MAAQ,wB,oBCA1BD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,YAAc,4BAA4B,MAAQ,sBAAsB,KAAO,qBAAqB,OAAS,yB,oBCArMD,EAAOC,QAAU,CAAC,QAAU,0B,oBCA5BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,WAAa,6B,oBCA/BD,EAAOC,QAAU,CAAC,QAAU,0B,oBCA5BD,EAAOC,QAAU,CAAC,UAAY,4B,oBCA9BD,EAAOC,QAAU,CAAC,QAAU,0B,yCCA5BD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,qBAAqB,SAAW,yBAAyB,UAAY,0BAA0B,MAAQ,sBAAsB,aAAe,6BAA6B,KAAO,qBAAqB,MAAQ,sBAAsB,UAAY,0BAA0B,MAAQ,sBAAsB,OAAS,uBAAuB,YAAc,4BAA4B,SAAW,2B,iICA3dD,EAAOC,QAAU,CAAC,UAAY,0BAA0B,OAAS,uBAAuB,KAAO,qBAAqB,UAAY,0BAA0B,YAAc,4BAA4B,MAAQ,sBAAsB,aAAe,6BAA6B,OAAS,yB,mBCAvRD,EAAOC,QAAU,CAAC,KAAO,qBAAqB,UAAY,0BAA0B,MAAQ,sBAAsB,SAAW,yBAAyB,MAAQ,sBAAsB,gBAAkB,gCAAgC,YAAc,4BAA4B,aAAe,+B","file":"static/js/main.e732ec0a.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3yLYx\",\"statusCode\":\"styles_statusCode__2wGqI\",\"tabs\":\"styles_tabs__1WVjE\",\"activeTab\":\"styles_activeTab__39o-M\",\"tab\":\"styles_tab__2yytf\",\"body\":\"styles_body__1sJUv\",\"input\":\"styles_input__w_3LV\"};","String.prototype.addQueryStringParameter = function(key, value) {\n const separator = this.indexOf('?') !== -1 ? '&' : '?'\n return this + separator + key + '=' + value\n}\n","import * as cookie from 'react-cookies'\nimport { store } from '../../../index'\n\nexport const IS_AUTHENTICATED = 'IS_AUTHENTICATED'\nexport const IS_NOT_AUTHENTICATED = 'IS_NOT_AUTHENTICATED'\n\nexport const authenticate = token =>\n store.dispatch({\n type: IS_AUTHENTICATED,\n security: {\n token: token,\n authenticated: true,\n },\n })\n\nexport const logout = () => {\n cookie.remove('YWxpYWFkbWlu', { path: '/' })\n store.dispatch({\n type: IS_NOT_AUTHENTICATED,\n security: {\n token: null,\n authenticated: false,\n },\n })\n}\n","const isLocalhost = window.location.hostname === 'localhost'\n\nexport const SERVER_URL =\n process.env.REACT_APP_SERVER_URL ||\n (isLocalhost ? 'http://localhost:8080' : window.location.protocol + '//' + window.location.hostname)\n\n// Url of backend on a server (server url + nginx prefix for requests to tomcat)\nexport const BACKEND_URL = process.env.REACT_APP_BACKEND_URL || SERVER_URL + '/api'\n\nexport const BASE_URL = process.env.REACT_APP_BASE_URL || BACKEND_URL + '/private'\n\nexport const HOME_PATH = process.env.REACT_APP_HOME_PATH || '/admin'\n\nexport const USE_MESSAGE_KEYS = process.env.REACT_APP_USE_MESSAGE_KEYS !== '0'\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = theme => ({\n inputContainer: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n textAlign: 'left',\n },\n input: {\n width: '100%',\n height: '46px',\n margin: '4px 0 24px',\n padding: '0 24px',\n border: '1px solid #D7D8DF',\n borderRadius: '10px',\n fontFamily: 'Lato, sans-serif',\n boxSizing: 'border-box',\n webkitBoxSizing: 'border-box',\n '&:focus': {\n outline: 'none',\n borderColor: '#1658F3',\n },\n '&.error': {\n borderColor: 'red',\n },\n '&::placeholder': {\n color: '#B0B2C0',\n fontSize: '14px',\n fontWeight: '300',\n },\n '&:disabled': {\n backgroundColor: '#EBEBEF',\n },\n },\n label: {\n fontSize: '14px',\n color: '#616581',\n margin: '0',\n fontWeight: '300',\n },\n errorLabel: {\n position: 'absolute',\n right: 0,\n color: '#FF624C',\n fontSize: 14,\n textAlign: 'center',\n },\n})\n\nconst Input = ({\n id,\n name,\n type,\n required,\n placeholder,\n label,\n errorLabel,\n hasError,\n onChange,\n onBlur,\n defaultValue,\n disabled,\n minLength,\n pressEnterCallback,\n classes,\n}) => {\n const handleKeyPress = e => {\n if (e.key === 'Enter') {\n if (pressEnterCallback) {\n pressEnterCallback()\n }\n }\n }\n\n return (\n
\n \n \n {hasError &&

{errorLabel}

}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(Input)\n","import React, { useMemo, useState } from 'react'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport Input from './Input'\n\nconst styles = () => ({\n passwordInputContainer: { position: 'relative' },\n showPasswordButton: {\n backgroundColor: 'transparent',\n border: 'none',\n position: 'absolute',\n top: '37px',\n right: '24px',\n padding: 0,\n height: '12px',\n width: '20px',\n cursor: 'pointer',\n '&>img': {\n maxWidth: '100%',\n maxHeight: '100%',\n },\n },\n eyeIcon: { color: '#1658F3' },\n})\n\nconst PasswordInput = ({ classes, ...otherProps }) => {\n const [hidePassword, setHidePassword] = useState(true)\n\n const inputType = useMemo(\n () => (hidePassword ? 'password' : 'text'),\n [hidePassword],\n )\n const iconType = useMemo(\n () => (hidePassword ? 'visibility' : 'visibility_off'),\n [hidePassword],\n )\n\n const handleHidePasswordToggle = e => {\n e.preventDefault()\n setHidePassword(!hidePassword)\n }\n\n return (\n
\n \n \n {iconType}\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(PasswordInput)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = theme => ({\n button: {\n height: '48px',\n borderRadius: '10px',\n border: 'none',\n fontWeight: 400,\n lineHeight: 'normal',\n fontSize: '17px',\n textAlign: 'center',\n padding: '0 25px',\n color: '#FFF',\n cursor: 'pointer',\n background: theme.palette.primary.main,\n boxShadow: '0 3px 9px rgba(19, 69, 186, 0.206267)',\n '&:hover': {\n transform: 'scale(1.05)',\n transition: '.1s ease-in-out',\n },\n },\n})\n\nconst Button = ({ type, title, onClick, classes }) => {\n return (\n \n )\n}\n\nexport default withStyles(styles, { withTheme: true })(Button)\n","export const isStringEmpty = text => {\n if (text == null) return true\n text = text.trim()\n return text.length === 0 && !text.trim() && text.trim() !== ' '\n}\n","import React from 'react'\nimport { Link, withRouter } from 'react-router-dom'\nimport base64 from 'base-64'\nimport { login } from '../api/admin'\nimport cookie from 'react-cookies'\nimport Input from './Input'\nimport PasswordInput from './PasswordInput'\nimport Button from './Button'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { HOME_PATH } from '../../../configs'\n\nconst defaultErrorMessage = 'Invalid email or password'\n\nclass LoginForm extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n username: '',\n password: '',\n error: false,\n errorMessage: '',\n }\n }\n\n handleChangeUsername = e => {\n this.setState({ username: e.target.value })\n }\n\n handleChangePassword = e => {\n this.setState({ password: e.target.value })\n }\n\n trowError = customErrorMessage =>\n this.setState({\n errorMessage: customErrorMessage\n ? customErrorMessage\n : this.state.errorMessage,\n error: true,\n })\n\n handleSubmitLogin = () => {\n const { username, password } = this.state\n if (!username || !password) {\n this.trowError(defaultErrorMessage)\n return\n }\n\n const user = {\n username,\n password: base64.encode(password),\n }\n login(user)\n .then(response => {\n if (response.ok) {\n const token = response.headers.get('Authorization')\n if (token !== null) {\n cookie.save('YWxpYWFkbWlu', token, { path: '/' })\n const from = { pathname: HOME_PATH + '/' }\n this.props.authenticateWithReferrer(token, from)\n }\n } else {\n if (response.status >= 400) {\n response.json().then(text => this.trowError(text.message))\n }\n }\n })\n .catch(this.trowError)\n }\n\n render() {\n const { styles: classes, isSignUpEnable } = this.props\n const { error, errorMessage } = this.state\n\n return (\n
\n
\n

Sign in

\n\n
\n \n\n \n\n {error ? (\n
\n {!isStringEmpty(errorMessage)\n ? errorMessage\n : defaultErrorMessage}\n
\n ) : (\n
\n )}\n
\n \n \n Forgot your password?\n \n
\n
\n {isSignUpEnable && (\n \n Don't have an account yet? Sign up\n \n )}\n
\n )\n }\n}\n\nexport default withRouter(LoginForm)\n","import { BACKEND_URL } from '../../../configs'\n\nexport function signUpInvitedUser(user) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/invite/user', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify(user),\n })\n}\n\nexport function signUpUser(user) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/signUp/user', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify(user),\n })\n}\n\nexport function requestPasswordReset(email) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/resetPassword/requestReset', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify({ email }),\n })\n}\n\nexport function validateResetPasswordToken(token) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/resetPassword/validateToken', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify({ token }),\n })\n}\n\nexport function changeAdminPasswordWithResetToken(token, newPassword) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/resetPassword/changePassword', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify({ token, newPassword }),\n })\n}\n\nexport function getBotInviteInfo(code) {\n return fetch(BACKEND_URL + '/invite/' + code, {\n method: 'GET',\n credentials: 'same-origin',\n })\n}\n\nexport function login(user) {\n return fetch(\n BACKEND_URL +\n '/login?email=' +\n user.username +\n '&password=' +\n user.password,\n {\n method: 'POST',\n credentials: 'same-origin',\n },\n )\n}\n","import React from 'react'\nimport './Loader-small.css'\n\nconst LoaderSmall = props => {\n return props.showLoader ? (\n
\n \"loader\"\n
\n ) : (\n
\n )\n}\n\nexport default LoaderSmall\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport LoaderSmall from '../loaderSmall'\n\nconst styles = theme => ({\n loaderOverlayContainer: {\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n background: 'rgba(255, 255, 255, 0.6)',\n zIndex: '10000',\n },\n})\n\nconst LoaderOverlay = ({ classes }) => {\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(LoaderOverlay)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport Button from './Button'\n\nconst styles = theme => ({\n title: {\n fontSize: '18px',\n fontWeight: '500',\n margin: 0,\n color: '#3A3F62',\n },\n subtitle: {\n fontSize: '16px',\n color: '#616581',\n marginTop: '10px',\n marginBottom: '30px',\n fontWeight: '300',\n },\n})\n\nconst FormMessage = ({\n classes,\n title,\n subtitle,\n buttonTitle,\n buttonUrl,\n history,\n}) => {\n const handleButtonClick = () => {\n history.push(buttonUrl)\n }\n\n return (\n
\n

{title}

\n
{subtitle}
\n
\n )\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(FormMessage))\n","export const emailValidation = email =>\n /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(email)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport { Link } from 'react-router-dom'\nimport { requestPasswordReset } from '../api/admin'\nimport LoaderOverlay from '../../../uiKit/loaders/loaderOverlay'\nimport FormMessage from './FormMessage'\nimport Input from './Input'\nimport Button from './Button'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { emailValidation } from '../../../helpers/emailValidation'\n\nconst styles = theme => ({\n forgotPasswordForm: {\n position: 'relative',\n },\n errorMessage: {\n marginBottom: '20px',\n },\n})\n\nclass ForgotPasswordForm extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n email: '',\n emailError: false,\n error: false,\n processingForgotPassword: false,\n submitFormSuccessfully: false,\n }\n }\n\n handleChangeEmail = e => {\n this.setState({\n email: e.target.value,\n emailError: !emailValidation(e.target.value),\n })\n }\n\n handleRequestPasswordReset = () => {\n if (!this.state.email) {\n this.setState({\n emailError: true,\n })\n return\n }\n\n if (this.state.emailError) {\n return\n }\n\n this.setState({\n processingForgotPassword: true,\n })\n\n requestPasswordReset(this.state.email).then(response => {\n if (response.ok) {\n this.setState({\n submitFormSuccessfully: true,\n processingForgotPassword: false,\n })\n } else {\n if (response.status === 400) {\n response.json().then(text => {\n this.setState({\n error: true,\n errorMessage: text.message,\n processingForgotPassword: false,\n })\n })\n } else {\n this.setState({\n error: true,\n processingForgotPassword: false,\n })\n }\n }\n })\n }\n\n renderForgotPasswordForm = classes => {\n if (this.state.submitFormSuccessfully) {\n return (\n
\n
\n \n
\n
\n )\n }\n\n return (\n
\n
\n {this.state.processingForgotPassword && }\n\n

Reset your password

\n
\n \n\n {this.state.error ? (\n
\n {!isStringEmpty(this.state.errorMessage)\n ? this.state.errorMessage\n : 'Something went wrong, try one more time'}\n
\n ) : (\n
\n )}\n
\n
\n We will send you a link to change your password.\n
\n \n
\n
\n )\n }\n\n render() {\n const classes = { ...this.props.styles, ...this.props.classes }\n\n return (\n
\n {this.renderForgotPasswordForm(classes)}\n
\n \n Remembered your password? Sign in\n \n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(ForgotPasswordForm)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = () => ({\n main: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '32px',\n backgroundColor: 'white',\n textAlign: 'center',\n },\n imageNotFound: {\n width: '80px',\n height: '80px',\n },\n titleClass: {\n fontSize: '18px',\n lineHeight: 1,\n color: '#3A3F62',\n margin: '64px 0 16px',\n },\n paragraphClass: {\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 'normal',\n margin: 0,\n color: '#616581',\n },\n button: {\n height: '54px',\n borderRadius: '10px',\n border: 'none',\n fontWeight: 300,\n lineHeight: 'normal',\n fontSize: '16px',\n textAlign: 'center',\n padding: '0 25px',\n color: '#FFF',\n cursor: 'pointer',\n background: '#1658F3',\n boxShadow: '0 3px 9px rgba(19, 69, 186, 0.206267)',\n margin: '32px 0 0',\n '&:hover': {\n transform: 'scale(1.05)',\n transition: '.1s ease-in-out',\n },\n },\n})\n\nconst UnavailableSmall = ({\n classes,\n buttonTitle,\n buttonUrl,\n title,\n subtitle,\n history,\n}) => {\n const handleButtonClick = () => {\n history.push(buttonUrl)\n }\n\n return (\n
\n \n\n

{title}

\n\n {subtitle &&

{subtitle}

}\n\n \n
\n )\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(UnavailableSmall),\n)\n","import React from 'react'\nimport { Link, withRouter } from 'react-router-dom'\nimport {\n validateResetPasswordToken,\n changeAdminPasswordWithResetToken,\n} from '../api/admin'\nimport { withStyles } from '@material-ui/core/styles'\nimport base64 from 'base-64'\nimport queryString from 'query-string'\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\nimport UnavailableSmall from './UnavailableSmall'\nimport LoaderOverlay from '../../../uiKit/loaders/loaderOverlay'\nimport FormMessage from './FormMessage'\nimport PasswordInput from './PasswordInput'\nimport Button from './Button'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n resetPasswordFormWrapper: {\n position: 'relative',\n },\n '@global': {\n '@media (max-width: 575px)': {\n demoForm: {\n textAlign: 'center',\n maxWidth: 'unset',\n flexBasis: '90%',\n margin: 'auto',\n },\n },\n },\n})\n\nclass ResetPasswordForm extends React.Component {\n constructor(props) {\n super(props)\n\n const urlParams = queryString.parse(this.props.location.search)\n let resetPasswordToken = urlParams.t\n let resetTokenValidationFinished = false\n if (!isStringEmpty(resetPasswordToken)) {\n resetTokenValidationFinished = true\n this.props.history.replace(this.props.history.location.pathname)\n sessionStorage.setItem('resetPasswordToken', resetPasswordToken)\n } else {\n resetPasswordToken = sessionStorage.getItem('resetPasswordToken')\n if (isStringEmpty(resetPasswordToken)) {\n resetTokenValidationFinished = true\n }\n }\n\n this.state = {\n password: '',\n passwordConfirm: '',\n passwordError: false,\n passwordConfirmError: false,\n error: false,\n errorMessage: '',\n hidePassword: true,\n resetPasswordToken,\n resetTokenValidationFinished,\n resetTokenIsValid: false,\n failToValidateResetToken: false,\n processingPasswordChange: false,\n passwordChangedSuccessfully: false,\n }\n }\n\n componentDidMount() {\n if (this.state.resetTokenValidationFinished) {\n return\n }\n\n validateResetPasswordToken(this.state.resetPasswordToken).then(response => {\n if (response.ok) {\n response.json().then(response => {\n this.setState({\n resetTokenValidationFinished: true,\n resetTokenIsValid: response.valid === true,\n })\n })\n } else {\n this.setState({\n resetTokenValidationFinished: true,\n failToValidateResetToken: true,\n })\n // TODO: print error that was not able to validate resetToken.\n // Probably some internal error, maybe internet loss.\n }\n })\n }\n\n handlePasswordChange = e => {\n this.setState({\n password: e.target.value,\n passwordError: e.target.value.length < 8,\n passwordConfirmError:\n this.state.passwordConfirm.length > 0 &&\n e.target.value !== this.state.passwordConfirm,\n })\n }\n handlePasswordConfirmChange = e => {\n this.setState({\n passwordConfirm: e.target.value,\n passwordConfirmError: this.state.password !== e.target.value,\n })\n }\n\n handleRequestPasswordReset = e => {\n if (!this.state.passwordConfirm || !this.state.password) {\n if (!this.state.passwordConfirm)\n this.setState({\n passwordConfirmError: true,\n })\n if (!this.state.password)\n this.setState({\n passwordError: true,\n })\n return\n }\n if (\n this.state.passwordError ||\n this.state.passwordConfirmError ||\n isStringEmpty(this.state.password)\n ) {\n return\n }\n }\n\n handleHidePasswordToggle = e => {\n e.preventDefault()\n this.setState({\n hidePassword: !this.state.hidePassword,\n })\n }\n\n handleRequestPasswordReset = e => {\n if (!this.state.passwordConfirm || !this.state.password) {\n if (!this.state.passwordConfirm)\n this.setState({\n passwordConfirmError: true,\n })\n if (!this.state.password)\n this.setState({\n passwordError: true,\n })\n return\n }\n if (\n this.state.passwordError ||\n this.state.passwordConfirmError ||\n isStringEmpty(this.state.password)\n ) {\n return\n }\n\n this.setState({\n processingPasswordChange: true,\n })\n\n changeAdminPasswordWithResetToken(\n this.state.resetPasswordToken,\n base64.encode(this.state.password),\n ).then(response => {\n if (response.ok) {\n this.setState({\n passwordChangedSuccessfully: true,\n processingPasswordChange: false,\n })\n } else {\n if (response.status === 400) {\n response.json().then(text => {\n this.setState({ errorMessage: text.message })\n })\n }\n this.setState({\n error: true,\n processingPasswordChange: false,\n })\n }\n })\n }\n\n resetPasswordFormContent = classes => {\n const {\n resetTokenValidationFinished,\n failToValidateResetToken,\n resetTokenIsValid,\n processingPasswordChange,\n passwordChangedSuccessfully,\n } = this.state\n\n // TODO: add some error message when connection to server lost\n if (!resetTokenValidationFinished || failToValidateResetToken) {\n return \n }\n if (!resetTokenIsValid) {\n return (\n \n )\n }\n\n if (passwordChangedSuccessfully) {\n return (\n \n )\n }\n\n return (\n
\n {processingPasswordChange && }\n

Reset your password

\n
\n \n\n \n\n {this.state.error ? (\n
\n {!isStringEmpty(this.state.errorMessage)\n ? this.state.errorMessage\n : 'Something went wrong, try one more time'}\n
\n ) : (\n
\n )}\n
\n \n
\n )\n }\n\n render() {\n const classes = { ...this.props.classes, ...this.props.styles }\n\n return (\n
\n
\n {this.resetPasswordFormContent(classes)}\n
\n
\n \n Remembered your password? Sign in\n \n
\n )\n }\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(ResetPasswordForm),\n)\n","import React, { Component } from 'react'\nimport { Link, Redirect } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\nimport {\n getBotInviteInfo,\n signUpInvitedUser,\n signUpUser,\n} from '../api/admin'\nimport base64 from 'base-64'\nimport Button from './Button'\nimport Input from './Input'\nimport PasswordInput from './PasswordInput'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { emailValidation } from '../../../helpers/emailValidation'\n\nconst styles = theme => ({\n '@global': {\n '@media (max-width: 575px)': {\n demoForm: {\n textAlign: 'center',\n maxWidth: 'unset',\n flexBasis: '90%',\n margin: 'auto',\n },\n },\n },\n})\n\nclass SignUpForm extends Component {\n constructor(props) {\n super(props)\n this.state = {\n username: '',\n email: '',\n password: '',\n passwordConfirm: '',\n redirectToLogin: false,\n redirectToError: false,\n redirectToUsedLink: false,\n redirectToConfirmEmail: false,\n inputNameError: false,\n inputEmailError: false,\n inputEmailIsRegisteredError: false,\n inputPasswordError: false,\n inputPasswordConfirmError: false,\n hidePassword: true,\n hidePasswordConfirm: true,\n }\n }\n\n componentDidMount() {\n if (this.props.invited) {\n this.processInviteCode()\n }\n }\n\n handleChange = (event, state, error) => {\n this.setState({ [state]: event.target.value })\n this.setState({ [error]: !event.target.checkValidity() })\n }\n\n validatePasswordConfirm = (password, passwordConfirm) => {\n if (!isStringEmpty(passwordConfirm)) {\n this.setState({\n passwordConfirm: passwordConfirm,\n inputPasswordConfirmError: password !== passwordConfirm,\n })\n }\n }\n\n handleChangeEmail = e => {\n const email = e.target.value\n this.setState({\n email: email,\n inputEmailIsRegisteredError: false,\n inputEmailError: !emailValidation(email),\n })\n }\n\n togglePassword = (e, state) => {\n e.preventDefault()\n this.setState({ [state]: !this.state[state] })\n }\n\n handleSubmitRegister = () => {\n const invited = this.props.invited\n if (!this.isFormValid()) {\n return\n }\n\n const encodedPassword = base64.encode(this.state.password)\n const user = {\n name: this.state.username,\n password: encodedPassword,\n }\n\n if (invited) {\n this.signUpInvitedUser(user)\n } else {\n this.signUpUser(user)\n }\n }\n\n // Check whether inputs aren't empty and there's no any error\n isFormValid = () => {\n this.checkEmptyString('inputNameError', 'username')\n this.checkEmptyString('inputEmailError', 'email')\n this.checkEmptyString('inputPasswordError', 'password')\n this.checkEmptyString('inputPasswordConfirmError', 'passwordConfirm')\n return !(\n this.state.inputNameError ||\n this.state.inputEmailError ||\n this.state.inputEmailIsRegisteredError ||\n this.state.inputPasswordError ||\n this.state.inputPasswordConfirmError\n )\n }\n\n checkEmptyString = (errorState, state) => {\n // If there's no any other error with this input, check if it's not empty\n if (!this.state[errorState]) {\n this.setState({ [errorState]: isStringEmpty(this.state[state]) })\n }\n }\n\n signUpInvitedUser(user) {\n user.code = this.props.match.params.code // When a user is invited, add `code` to the request body\n signUpInvitedUser(user).then(response => {\n if (response.ok) {\n this.setState({ redirectToLogin: true })\n }\n })\n }\n\n signUpUser(user) {\n user.email = this.state.email // When a user isn't invited, add `email` to the request body\n signUpUser(user).then(response => {\n if (response.ok) {\n this.setState({ redirectToConfirmEmail: true })\n }\n })\n }\n\n processInviteCode() {\n const code = this.props.match.params.code\n getBotInviteInfo(code)\n .then(response => {\n if (response.status === 400) {\n this.setState({ redirectToError: true })\n } else if (response.status === 404) {\n this.setState({ redirectToUsedLink: true })\n } else if (response.ok) {\n return response.json()\n }\n })\n .then(json => {\n this.setState({ email: json.email })\n })\n }\n\n render() {\n const invited = this.props.invited\n const classes = { ...this.props.classes, ...this.props.styles } // Use styles from this file and styles from props\n const {\n redirectToLogin,\n redirectToError,\n redirectToUsedLink,\n redirectToConfirmEmail,\n } = this.state\n if (redirectToLogin) {\n return \n }\n if (redirectToError || redirectToUsedLink) {\n return \n }\n // After signing up, redirect to \"confirm your email\" page\n if (redirectToConfirmEmail) {\n return (\n \n )\n }\n return (\n
\n
\n

Sign up

\n
\n this.handleChange(e, 'username', 'inputNameError')}\n />\n\n \n\n {\n this.handleChange(e, 'password', 'inputPasswordError')\n this.validatePasswordConfirm(\n e.target.value,\n this.state.passwordConfirm,\n )\n }}\n hasError={this.state.inputPasswordError}\n />\n\n \n this.validatePasswordConfirm(\n this.state.password,\n e.target.value,\n )\n }\n hasError={this.state.inputPasswordConfirmError}\n />\n
\n \n
\n
\n \n Already have an account? Sign in\n \n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(SignUpForm)\n","import { store } from '../../../index'\n\nexport const SHOW_SNACKBAR = 'SHOW_SNACKBAR'\n\nexport const showSnackBar = snackBar => {\n store.dispatch({\n type: SHOW_SNACKBAR,\n snackBar,\n })\n}\n","import cookie from 'react-cookies'\n\nimport { showSnackBar } from '../tabs/home/actions/snackBar'\nimport { logout } from '../tabs/authorization/actions/security'\n\nexport function createJsonHeaders() {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n headers.append('Authorization', 'Bearer ' + cookie.load('YWxpYWFkbWlu'))\n return headers\n}\n\nexport function logoutOnRequestOrResponseJson(response) {\n if (response.ok) {\n if (response.redirected) {\n return logout()\n } else {\n const contentType = response.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n return isJSON ? response.json() : response.text()\n }\n }\n throw new Error('Not 2xx response')\n}\n\nexport function logoutOnRequestOrResponseBlob(response) {\n if (response.ok) {\n return response.redirected ? logout() : response.blob()\n }\n throw new Error('Not 2xx response')\n}\n\nexport function alertSuccess(message, duration) {\n showSnackBar({\n open: true,\n text: message,\n success: true,\n duration,\n })\n}\nexport const pasteCleanTextContent = (e) => {\n e.preventDefault()\n document.execCommand('insertText', false, e.clipboardData.getData('text/plain'))\n}\n\nexport const paramsPattern = /{{[^{]*?}}/g\nexport const ifStringEmpty = (text) => {\n if (text == null)\n return true\n text = text.trim()\n return (text.length === 0 && !text.trim() && text.trim() !== ' ')\n}\n\nexport function alertError(message) {\n showSnackBar({\n open: true,\n text: message,\n success: false,\n })\n}\n","import React, { Component } from 'react'\nimport cookie from 'react-cookies'\nimport { Redirect, Route, Switch } from 'react-router-dom'\nimport { authenticate } from '../actions/security'\nimport LoginForm from './LoginForm'\nimport ForgotPasswordForm from './ForgotPasswordForm'\nimport ResetPasswordForm from './ResetPasswordForm'\nimport SignUp from './SignUpForm'\nimport { getLoginPageElement } from '../api/login'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst formStyles = () => ({\n main: {\n flex: '0 0 50%',\n maxWidth: '50%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n padding: '40px',\n position: 'relative',\n },\n '@media (min-width: 320px) and (max-width: 480px)': {\n main: {\n flex: '0 0 100%',\n maxWidth: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n padding: '15px',\n position: 'relative',\n },\n },\n formTitle: {\n fontSize: '18px',\n fontWeight: '500',\n margin: 0,\n color: '#3A3F62',\n },\n demoForm: {\n width: '60%',\n margin: '0 0 32px',\n textAlign: 'center',\n },\n demoDiv: {\n margin: '32px 0 8px',\n textAlign: 'left',\n },\n bottomText: {\n position: 'absolute',\n bottom: '60px',\n },\n forgotPasswordLink: {\n fontSize: '13px',\n color: 'gray',\n display: 'block',\n textAlign: 'center',\n marginTop: '30px',\n },\n forgotPasswordNoteText: {\n fontSize: '14px',\n color: '#616581',\n marginTop: '-10px',\n marginBottom: '25px',\n fontWeight: '300',\n },\n})\n\nclass Login extends Component {\n constructor(props) {\n super(props)\n this.state = {\n from: null,\n title: null,\n subTitle: null,\n imagePath: null,\n isSignUpEnable: false,\n redirectToReferrer: false,\n }\n }\n\n componentDidMount() {\n getLoginPageElement(element => {\n this.setState({\n title: element.title,\n subTitle: element.subTitle,\n imagePath: element.imagePath,\n isSignUpEnable: element.isSignUpEnable,\n })\n })\n\n const token = cookie.load('YWxpYWFkbWlu')\n\n const from = this.props?.location?.state?.from?.pathname\n\n if (token) {\n this.authenticateWithReferrer(token, from)\n }\n }\n\n authenticateWithReferrer = (token, from) => {\n authenticate(token)\n this.setState({ redirectToReferrer: true, from })\n }\n\n render() {\n const { classes } = this.props\n const {\n redirectToReferrer,\n title,\n subTitle,\n imagePath,\n isSignUpEnable,\n from,\n } = this.state\n\n if (redirectToReferrer && from) {\n return \n }\n\n return (\n
\n {title && subTitle && imagePath && (\n
\n \n
\n

{title}

\n

{subTitle}

\n
\n \n \n (\n \n )}\n />\n }\n />\n (\n \n )}\n />\n }\n />\n }\n />\n \n
\n )}\n
\n )\n }\n}\n\nconst PrivateRoute = ({ component: Component, isSignUpEnable, ...rest }) => (\n \n (isSignUpEnable ? (\n \n ) : (\n \n ))\n }\n />\n)\nLogin.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(formStyles, { withTheme: true })(Login)\n","import { createJsonHeaders } from '../../../api'\nimport { BACKEND_URL } from '../../../configs'\n\nexport function getLoginPageElement(callback) {\n fetch(`${BACKEND_URL}/login/page/element`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.ok) {\n return response.json()\n }\n })\n .then(json => {\n callback(json)\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_ADMIN_USER = ' SAVE_ADMIN_USER'\n\nexport const saveAdminUser = adminUser => {\n store.dispatch({\n type: SAVE_ADMIN_USER,\n adminUser,\n })\n}\n","/**\n * Created by Admin on 08.05.2018.\n */\n\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from './api'\nimport { saveAdminUser } from './tabs/authorization/actions/adminUser'\nimport { BASE_URL } from './configs'\n\nexport const ROLE = {\n ADMIN: 'ROLE_ADMIN',\n SUPPORT: 'ROLE_SUPPORT',\n}\n\nexport const ROLE_OPTIONS = [\n {\n value: ROLE.ADMIN,\n label: 'Admin',\n features: [\n 'support',\n 'dashboard',\n 'flows',\n 'atomBuilder',\n 'settings',\n 'nlp',\n 'broadcast',\n 'widget',\n 'createBot',\n 'shareBot',\n 'analytics',\n ],\n },\n {\n value: ROLE.SUPPORT,\n label: 'Support',\n features: ['support', 'dashboard', 'analytics'],\n },\n]\n\nexport const access = {\n userRole: null,\n botAccesses: [],\n\n loadRole() {\n fetch(BASE_URL + '/getAdminUser', {\n credentials: 'same-origin',\n method: 'GET',\n headers: createJsonHeaders(),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n // access.userRole = json.role;\n access.botAccesses = json.botAccesses\n saveAdminUser(json)\n return json\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n },\n}\n\nexport function hasPermissionForBot(botId, featureName) {\n const botAccess = access?.botAccesses?.filter(\n ba => ba.botId === Number(botId),\n )[0]\n\n return (\n botAccess &&\n ROLE_OPTIONS?.find(\n role => role.value === botAccess.role,\n )?.features?.includes(featureName)\n )\n}\n\nexport function hasPermissionForFeature(featureName) {\n const userRole = access?.botAccesses[0]?.role\n\n return ROLE_OPTIONS?.find(\n role => role.value === userRole,\n )?.features?.includes(featureName)\n}\n","import { store } from '../../../index'\n\nexport const CLEAR_STATE = 'CLEAR_STATE'\nexport const SET_ACTIVE_BOT = 'SET_ACTIVE_BOT'\nexport const SET_DIALOG_FLOW = 'SET_DIALOG_FLOW'\n\nexport const clearOldBot = () => {\n store.dispatch({\n type: CLEAR_STATE,\n })\n}\n\nexport const setActiveBot = activeBot => {\n store.dispatch({\n type: SET_ACTIVE_BOT,\n activeBot,\n })\n}\n\nexport const updateDialogFlowConfigs = dialogFlowConfigs => {\n store.dispatch({\n type: SET_DIALOG_FLOW,\n dialogFlowConfigs,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_BOTS = 'SAVE_BOTS'\n\nexport const saveBots = bots => {\n store.dispatch({\n type: SAVE_BOTS,\n bots,\n })\n}\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL, HOME_PATH } from '../../../configs'\nimport { access } from '../../../security'\nimport { updateDialogFlowConfigs } from '../actions/activeBot'\nimport { setActiveBot } from '../actions/activeBot'\nimport { saveBots } from '../actions/bots'\n\nexport function getBots(callback) {\n fetch(BASE_URL + '/bot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBots(json)\n if (callback) callback()\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function getBotConfigs(botId) {\n fetch(BASE_URL + '/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setActiveBot(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function getBot(botId) {\n return fetch(BASE_URL + '/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setActiveBot(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function getDashboard(botId, state) {\n fetch(BASE_URL + '/bot/' + botId + '/dashboard', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n state.setState({ ...json })\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function deleteBot(botId) {\n fetch(BASE_URL + '/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => {\n window.location.href = HOME_PATH\n return response\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function createNewBotAPI(bot, callback, callbackError) {\n fetch(BASE_URL + '/bot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(bot),\n }).then(response => {\n logoutOnRequestOrResponseJson(response)\n if (response.ok) {\n alertSuccess('Bot is created successfully.')\n getBots()\n access.loadRole()\n if (callback) callback()\n } else if (response.status === 400 || response.status === 500) {\n response.json().then(text => callbackError(text.message))\n }\n return response.redirected\n ? (window.location.href = response.url)\n : response\n })\n}\n\nexport function shareBot(botId, json, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/shareBot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(() => {\n if (callback) callback()\n alertSuccess('Bot is shared successfully.')\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function cloneBot(botId, json, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/clone', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n alertSuccess('Bot is cloned successfully.')\n access.loadRole()\n getBots()\n if (callback) {\n callback()\n }\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateBot(bot, callback) {\n fetch(BASE_URL + '/bot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(bot),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setActiveBot(json)\n if (callback) callback()\n alertSuccess('Bot is updated successfully.')\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getBotPersistentMenu(botId, language, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/persistentMenu?language=' + language, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n return response.redirected\n ? (window.location.href = response.url)\n : response.json()\n })\n .then(json => {\n if (callback) callback(json)\n })\n .catch(function(error) {\n alertError('Failed to get the persistent menu.')\n })\n}\n\nexport function updateBotPersistentMenu(botId, language, persistentMenu) {\n persistentMenu.locale = 'default' //todo check logic on persistent component\n fetch(BASE_URL + '/bot/' + botId + '/persistentMenu?language=' + language, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(persistentMenu),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Bot is updated successfully.')\n setActiveBot(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateDialogflowConfigs(\n botId,\n dialogFlowConfigs,\n successCallback,\n errorCallback,\n) {\n fetch(BASE_URL + '/bot/' + botId + '/updateDialogflowConfigs', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n body: JSON.stringify(dialogFlowConfigs),\n })\n .then(response => {\n if (response.ok) {\n response.redirected\n ? (window.location.href = response.url)\n : alertSuccess('Bot is updated successfully.')\n updateDialogFlowConfigs(dialogFlowConfigs)\n if (successCallback) successCallback()\n } else if (errorCallback) {\n response.json().then(err => errorCallback(err.message))\n }\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateWitAiConfigsRequest(\n botId,\n successCallback,\n errorCallback,\n) {\n fetch(BASE_URL + '/bot/' + botId + '/witAiConfigs', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n })\n .then(response => {\n if (response.ok) {\n response.redirected\n ? (window.location.href = response.url)\n : alertSuccess('Bot is updated successfully.')\n if (successCallback) successCallback()\n } else if (errorCallback) {\n response.json().then(err => errorCallback(err.message))\n }\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateGreetingText(\n botId,\n greetingText,\n successCallback,\n errorCallback,\n) {\n fetch(BASE_URL + '/bot/' + botId + '/greetingText', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n body: JSON.stringify({ greetingText }),\n })\n .then(response => {\n if (response.ok) {\n response.redirected\n ? (window.location.href = response.url)\n : alertSuccess('Greeting text is updated successfully.')\n if (successCallback) successCallback()\n } else if (errorCallback) {\n response.json().then(err => errorCallback(err.message))\n }\n })\n .catch(function(error) {\n alertError('Failed. Try it later')\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_SUPPORT_REQUESTS = 'SAVE_SUPPORT_REQUESTS'\n\nexport const saveSupportRequests = requests =>\n store.dispatch({\n type: SAVE_SUPPORT_REQUESTS,\n requests,\n })\n","import {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport { saveSupportRequests } from '../actions/supportRequest'\n\nexport function getSupportRequests(botId) {\n return fetch(`${BASE_URL}/support/status/support/${botId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveSupportRequests(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support')\n })\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport class CreateLinkIcon extends React.Component {\n render() {\n return (\n \n \n \n \n\n );\n }\n}\n\nexport const NoChartDataIcon = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n)\n\nexport class BroadcastIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class Chevron extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class DashboardIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class FlowsIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n )\n }\n}\n\nexport class NlpIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class SupportIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class WidgetIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class SettingsIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport const AnalyticsIcon = props => {\n return (\n \n \n \n \n )\n}\n\nexport class PlusIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class CloseIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class SearchIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class TrashIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class TextIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class ListIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class GalleryIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class AttachmentIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class ReplyIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class OtherIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class DoneIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class LeftArrowIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class RightArrowIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class DownArrowIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class EditIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class OvalIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class CalendarIcon extends React.Component {\n render() {\n const { width, height } = this.props\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class PenIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class PhotoIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class EnterIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class UpIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class DownIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class Icon404 extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport class ThreeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class BackIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class EditMenuIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class LinkIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class WelcomeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class DelayIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class CustomizationIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class HelloIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport const CopyIcon = props => {\n const { width, height, color } = props\n return (\n \n \n \n \n )\n}\n\nexport const TrashDarkIcon = () => (\n \n \n \n \n \n \n)\n","import React from 'react'\nimport { NoChartDataIcon } from '../icons/Icons'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n text: string\n}\n\nconst NoChartData: React.FC = ({ text }) => (\n
\n \n

{text}

\n
\n)\n\nexport default NoChartData\n","export const channelColors: Map = new Map([\n ['All channels', '#354052'],\n ['Messenger', '#1658F3'],\n ['Telegram', '#FD7F4A'],\n ['Widget', '#F3B116'],\n ['Whatsapp (Amio)', '#4CDBA7'],\n ['Whatsapp (Dialog360)', '#4CDBA7'],\n ['Twilio', '#5A98F7'],\n])\n\nexport const circleChartColors = ['#1658F3', '#F3B116']\n\nexport const color = { r: 22, g: 88, b: 243 }\nexport const gridItemsCount = 5\n","export const circleChartContainerTitle = 'Conversations covered'\nexport const hourlyChartContainerTitle = 'Average conversations by time of day'\n\nexport const areaChartTooltipText = `This chart shows the number of daily\n active users for the selected period. For a given day,\n Daily Users is the number of unique users who were\n chatting with the bot that day.`\nexport const conversationsCoveredTooltipText =\n // eslint-disable-next-line max-len\n 'This chart shows the ratio of conversations covered only by the bot and conversations in which a user asked for human support.'\n\nexport const hourlyChartTooltipText = `This chart shows the average amount of users per hour\n who were interacting with the bot for the selected period.`\n\n// eslint-disable-next-line max-len\nexport const channelsChartTooltipText = 'The percentage of users active on each channel over the selected period.'\n\nexport const noDataText =\n 'You have no conversations yet. They will appear here after your chatbot will get first users'\n","export const PRIMARY = 'primary'\n\nexport const KLEIN_BLUE = '#0030A0'\nexport const CAMARONE_GREEN = '#006401'\nexport const GEM_BLUE = '#3B17A2'\nexport const CINNAMON_YELLOW = '#7D4400'\nexport const TAMARILLO_RED = '#A21010'\nexport const SPUN_PEARL_GREY = '#B0B2C0'\nexport const PERMISSION_RED = '#ff624c'\nexport const WHITE = '#ffffff'\nexport const RIBBON_BLUE = '#1658f3'\nexport const DULL_LAVANDER_BLUE = '#9bb3e4'\nexport const DANUBE_BLUE = '#547ed0'\nexport const CORNFLOWER_BLUE = '#5A98F7'\nexport const BLUE = '#0000FF'\n","import classes from './styles.module.scss'\nimport { RIBBON_BLUE } from '../../constants/colors'\nimport React from 'react'\n\ninterface Props {\n color?: string\n label: string\n checked: boolean\n onChange: (a: boolean) => void\n}\n\nconst Checkbox: React.FC = ({ color, label, checked, onChange }) => {\n const style: { [key: string]: string } = {\n '--theme-color': color || RIBBON_BLUE,\n }\n\n const handleChange = () => {\n onChange(!checked)\n }\n\n return (\n
\n {label}\n \n \n
\n )\n}\n\nexport default Checkbox\n","export const isObjectEmpty = obj => Object.keys(obj).length === 0\n","export const sortArrayOfArraysByIndex = (arr, index: number, order: 'asc' | 'desc') => {\n return arr.sort((a, b) => (order === 'asc' ? a[index] - b[index] : b[index] - a[index]))\n}\n","import React, { useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\nimport { LineChart } from 'react-chartkick'\n\nimport NoChartData from '../../../../uiKit/NoChartData'\nimport { channelColors } from '../../constants/channelColors'\nimport { noDataText } from '../../constants/chartsTexts'\nimport classes from './styles.module.scss'\nimport Checkbox from '../../../../uiKit/Checkbox'\nimport { isObjectEmpty } from '../../../../helpers/isObjectEmpty'\nimport {sortArrayOfArraysByIndex} from '../../../../helpers/sortArrayOfArraysByIndex'\nimport {ChartDataParameterType, LinePointType, usersChartDataType} from '../../../../models/DashboardTypes'\n\ninterface Props {\n usersStatistics: usersChartDataType\n isMultipleChannels: boolean\n}\n\nconst getEnabledInLocalStorage = () => {\n const result: string = localStorage.getItem('enabledChannels')\n return result ? result.split(',') : ['All channels']\n}\n\nconst AreaChart: React.FC = ({ usersStatistics: chartData, isMultipleChannels }) => {\n const [enabledPlatforms, setEnabledPlatforms] = useState(getEnabledInLocalStorage)\n\n const getDataForLineChart = (points: Map) => {\n const resultData: ChartDataParameterType[] = Object.values(points)[0]\n ?.map(({ platform }, index) => {\n const data = {}\n Object.keys(points).forEach(key => {\n data[key] = points[key][index].userCount\n })\n return { name: platform, data }\n })\n ?.filter(resultEntry => {\n return isMultipleChannels ? enabledPlatforms.includes(resultEntry.name) : resultEntry.name === 'All channels'\n })\n return resultData\n }\n\n const getColorsForLineChart = (chartData: ChartDataParameterType[]) => {\n return chartData?.map(({ name }) => channelColors.get(name))\n }\n\n const handleCheckboxChange = (value: boolean, platform: string) => {\n let copyEnabledPlatforms = Object.assign([], enabledPlatforms)\n if (value) copyEnabledPlatforms.push(platform)\n else {\n if (copyEnabledPlatforms.length < 2) return\n copyEnabledPlatforms = copyEnabledPlatforms.filter(e => e !== platform)\n }\n setEnabledPlatforms(copyEnabledPlatforms)\n localStorage.setItem('enabledChannels', copyEnabledPlatforms.toString())\n }\n\n const getKeysOrderByValuesDesc = (map: Map) => {\n return sortArrayOfArraysByIndex(Object.entries(map), 1, 'desc').map(pair => pair[0])\n }\n\n const lineChartData = useMemo(() => getDataForLineChart(chartData.points), [chartData, enabledPlatforms])\n const colors = useMemo(() => getColorsForLineChart(lineChartData), [lineChartData])\n const linePoints = useMemo(\n () => !isObjectEmpty(chartData.usersBetweenDates) &&\n ['All channels'].concat(getKeysOrderByValuesDesc(chartData.usersBetweenDates)),\n [chartData],\n )\n const isData = useMemo(() => chartData.points && !!Object.keys(chartData.points).length, [chartData])\n\n return (\n
\n {isData ? (\n <>\n \n\n {isMultipleChannels && (\n
\n {linePoints.map(platform => (\n handleCheckboxChange(value, platform)}\n color={channelColors.get(platform)}\n />\n ))}\n
\n )}\n \n ) : (\n \n )}\n
\n )\n}\n\nconst mapStateToProps = state => ({\n usersStatistics: state.usersStatistics,\n})\n\nexport default connect(mapStateToProps)(AreaChart)\n","import React, { useMemo } from 'react'\nimport { connect } from 'react-redux'\nimport { PieChart } from 'react-chartkick'\n\nimport NoChartData from '../../../../uiKit/NoChartData'\n\nimport { circleChartColors } from '../../constants/channelColors'\nimport { noDataText } from '../../constants/chartsTexts'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n supportStatistics: any\n}\n\nconst CircleChart: React.FC = ({ supportStatistics: chartData }) => {\n const { byChatBot, byCustomerSupport } = chartData\n\n const data = useMemo(() => {\n return [\n ['By chatbot', byChatBot],\n ['By customer support', byCustomerSupport],\n ]\n }, [byChatBot, byCustomerSupport])\n\n return (\n
\n {byChatBot || byCustomerSupport ? (\n \n ) : (\n \n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { supportStatistics: any }) => ({\n supportStatistics: state.supportStatistics,\n})\n\nexport default connect(mapStateToProps)(CircleChart)\n","import React from 'react'\n\nimport './Loader.css'\n\nconst Loader = () => (\n
\n
\n
\n)\n\nexport default Loader\n","export const days: string[] = [\n 'SUNDAY',\n 'MONDAY',\n 'TUESDAY',\n 'WEDNESDAY',\n 'THURSDAY',\n 'FRIDAY',\n 'SATURDAY',\n]\n\nexport const dayModel: any = [\n {\n time: '12AM',\n amount: 0,\n },\n {\n time: '1AM',\n amount: 0,\n },\n {\n time: '2AM',\n amount: 0,\n },\n {\n time: '3AM',\n amount: 0,\n },\n {\n time: '4AM',\n amount: 0,\n },\n {\n time: '5AM',\n amount: 0,\n },\n {\n time: '6AM',\n amount: 0,\n },\n {\n time: '7AM',\n amount: 0,\n },\n {\n time: '8AM',\n amount: 0,\n },\n {\n time: '9AM',\n amount: 0,\n },\n {\n time: '10AM',\n amount: 0,\n },\n {\n time: '11AM',\n amount: 0,\n },\n {\n time: '12PM',\n amount: 0,\n },\n {\n time: '1PM',\n amount: 0,\n },\n {\n time: '2PM',\n amount: 0,\n },\n {\n time: '3PM',\n amount: 0,\n },\n {\n time: '4PM',\n amount: 0,\n },\n {\n time: '5PM',\n amount: 0,\n },\n {\n time: '6PM',\n amount: 0,\n },\n {\n time: '7PM',\n amount: 0,\n },\n {\n time: '8PM',\n amount: 0,\n },\n {\n time: '9PM',\n amount: 0,\n },\n {\n time: '10PM',\n amount: 0,\n },\n {\n time: '11PM',\n amount: 0,\n },\n]\n","import React from 'react'\nimport ReactTooltip from 'react-tooltip'\nimport styles from './styles.module.scss'\n\ninterface Props {\n model: any\n color: any\n day: any\n getDayData: any\n}\n\nconst DayModel: React.FC = ({ model, color, day, getDayData }) => {\n const { opacity: colorOpacity, amount } = getDayData(day.dayToAmount, day.dayOfWeek, model.time)\n const backgroundColor = color && `rgba(${color.r}, ${color.g}, ${color.b}, ${colorOpacity / 100})`\n\n return (\n \n \n {amount}\n \n
\n )\n}\n\nexport default DayModel\n","import React from 'react'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport { withStyles } from '@material-ui/core'\n\nimport { days, dayModel } from '../../constants/daysModel'\nimport DayModel from '../DayModel'\n\nconst styles = theme => ({\n grid: {\n display: 'flex',\n flexFlow: 'row nowrap',\n backgroundColor: theme.palette.primary.contrastText,\n '&>:first-child': {\n marginRight: 16,\n },\n '&:last-child': {\n marginRight: 0,\n },\n },\n gridColumn: {\n width: 'calc(100% / 8)',\n marginRight: 5,\n },\n gridItem: {\n height: 10,\n width: '100%',\n marginBottom: 5,\n },\n gridItemTransp: {\n backgroundColor: theme.palette.primary.contrastText,\n textAlign: 'right',\n },\n gridItemText: {\n color: theme.palette.primary.text,\n fontSize: 12,\n lineHeight: 1,\n fontFamily: 'Lato, sans-serif',\n textAlign: 'right',\n width: '100%',\n verticalAlign: 'top',\n },\n textCenter: {\n textAlign: 'center',\n },\n})\n\nconst Index = ({ classes, chartData, color, maxPerHour }) => {\n const getDayData = (dayToAmount, dayName, time) => {\n let opacity = 3\n let amount = 0\n\n const dayHours = [...dayToAmount]\n const index = dayHours.findIndex(x => x.time === time)\n\n if (index !== -1 && dayHours[index] && dayHours[index].amount) {\n opacity = (dayHours[index].amount / maxPerHour) * 100\n amount = dayHours[index].amount\n }\n\n return { opacity, amount }\n }\n\n const groupByDays = (valuesArr, days) =>\n days.map(day => {\n const dayToAmount = valuesArr.filter(x => x.dayOfWeek === day)\n\n return {\n dayOfWeek: day,\n dayToAmount: [...dayToAmount],\n }\n })\n\n if (chartData) {\n const daysData = chartData.averageConversationByTimeOfDay\n\n return (\n
\n
\n
\n {dayModel.map((model, index) => (\n
\n {index % 2 === 0 && {model.time}}\n
\n ))}\n
\n {groupByDays(daysData, days).map(day => {\n const dayShort = day.dayOfWeek.substr(0, 3).toLowerCase()\n\n return (\n
\n {dayModel.map((elem, index) => (\n \n ))}\n
\n
\n {dayShort.charAt(0).toUpperCase() + dayShort.slice(1)}\n
\n
\n
\n )\n })}\n
\n
\n )\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(Index)\n","import React from 'react'\nimport uuid from 'uuid'\nimport classes from './styles.module.scss'\n\nconst GradientBar = ({ color, step, gridItemsCount }) => {\n const { r, g, b } = color\n const colors = []\n\n for (let i = 0; i < gridItemsCount; i++) {\n colors.push({\n start: `rgba(${r}, ${g}, ${b}, ${0.2 * i})`,\n end: `rgba(${r}, ${g}, ${b}, ${0.2 * (i + 1)})`,\n })\n }\n\n return (\n
\n
\n {colors.map((color, index) => (\n
\n \n
{(index + 1) * step}
\n
\n ))}\n
\n
\n )\n}\n\nexport default GradientBar\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport GridChart from '../GridChart'\nimport GradientBar from '../GradientBar'\nimport NoChartData from '../../../../uiKit/NoChartData'\nimport { noDataText } from '../../constants/chartsTexts'\nimport { color, gridItemsCount } from '../../constants/channelColors'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n popularHoursStatistics: any\n className: string\n}\n\nconst HourlyChart: React.FC = ({ popularHoursStatistics: chartData }) => (\n
\n {chartData.averageConversationByTimeOfDay && chartData.averageConversationByTimeOfDay.length ? (\n <>\n \n \n \n ) : (\n \n )}\n
\n)\n\nconst mapStateToProps = (state: { popularHoursStatistics: any }) => ({\n popularHoursStatistics: state.popularHoursStatistics,\n})\n\nexport default connect(mapStateToProps)(HourlyChart)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n topContainer: {\n fontSize: 36,\n color: '#3A3F62',\n margin: '40px 0 30px',\n fontWeight: 'bold',\n fontFamily: 'Lato, sans-serif',\n wordBreak: 'break-word',\n height: 57\n },\n})\n\nclass Headline extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { classes } = this.props\n return
{this.props.title}
\n }\n}\n\nHeadline.propTypes = {\n classes: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Headline))\n","import React from 'react'\nimport DateRangePicker from 'react-bootstrap-daterangepicker'\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-daterangepicker/daterangepicker.css'\nimport classes from './styles.module.scss'\n\ninterface Params {\n setDate: any\n startDate: any\n endDate: any\n}\n\nconst DateRange: React.FC = ({ setDate, startDate, endDate }) => {\n const saveChanges = (event, picker) => {\n setDate(picker.startDate, picker.endDate)\n }\n\n return (\n \n \n \n )\n}\nexport default DateRange\n","import React from 'react'\nimport moment from 'moment'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\n\nimport './DateControl.css'\nimport DateRange from '../DateRange'\n\nconst FREQUENCIES = {\n week: 'week',\n month: 'month',\n custom: 'custom',\n hourly: 'hourly',\n}\n\nconst styles = theme => ({\n tooltip: {\n maxWidth: '80%',\n width: '400px',\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n },\n})\n\nclass Index extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n frequency: FREQUENCIES.week,\n startDate: moment().subtract(1, 'week').add(1, 'day'),\n endDate: moment(),\n hourly: false,\n pickerOpen: false,\n custom: false,\n usersTitle: 'Last 7 days',\n }\n }\n\n componentDidMount() {\n this.setActiveFrequency(this.state.frequency)\n }\n\n static getDerivedStateFromProps(props) {\n const { custom } = props\n\n return custom ? { custom, pickerOpen: true } : { custom: !!custom }\n }\n\n updateDate = (startDate, endDate, pickerOpen, usersTitle, frequency) => {\n this.setState({\n startDate,\n endDate,\n pickerOpen,\n usersTitle,\n frequency: frequency || this.state.frequency,\n })\n }\n\n setDate = (startDate, endDate) => {\n const { botId, loadData } = this.props\n\n if (this.props.setFromDateCallback) this.props.setFromDateCallback(startDate.format('YYYY-MM-DD'))\n if (this.props.setToDateCallback) this.props.setToDateCallback(endDate.format('YYYY-MM-DD'))\n\n loadData.forEach(request => {\n const params = {botId, from: startDate.format('YYYY-MM-DD'), to: endDate.format('YYYY-MM-DD')}\n\n if (typeof request === 'function') {\n request(params)\n } else {\n request.request({...params, ...request.params})\n }\n })\n }\n\n setCustomDate = (startDate, endDate) => {\n const usersTitle = 'Custom'\n this.setState({ startDate, endDate, usersTitle }, () => {\n this.setActiveFrequency(FREQUENCIES.custom)\n })\n }\n\n setActiveFrequency = frequency => {\n let { startDate, endDate, hourly } = this.state\n let usersTitle, pickerOpen\n\n switch (frequency) {\n case FREQUENCIES.hourly:\n startDate = moment().subtract(1, 'day')\n endDate = moment()\n hourly = true\n this.setState({ hourly })\n usersTitle = 'Last 24h'\n break\n case FREQUENCIES.week:\n startDate = moment().subtract(1, 'week').add(1, 'day')\n endDate = moment()\n hourly = false\n this.setState({ hourly })\n usersTitle = 'Last 7 days'\n break\n case FREQUENCIES.month:\n startDate = moment().subtract(1, 'month').add(1, 'day')\n endDate = moment()\n hourly = false\n this.setState({ hourly })\n usersTitle = 'Last 30 days'\n break\n case FREQUENCIES.custom:\n pickerOpen = true\n usersTitle = 'Custom'\n hourly = false\n this.setState({ hourly })\n break\n default:\n hourly = false\n this.setState({ hourly })\n pickerOpen = false\n usersTitle = 'Last 7 days'\n }\n\n this.setState({ pickerOpen, frequency }, () => {\n this.setDate(startDate, endDate, () => {\n if (frequency !== FREQUENCIES.custom) {\n this.updateDate(startDate, endDate, pickerOpen, usersTitle, frequency)\n }\n })\n })\n }\n\n render() {\n const { custom } = this.props\n const { startDate, endDate, pickerOpen, frequency } = this.state\n\n return (\n
\n
\n this.setActiveFrequency(FREQUENCIES.hourly)}>\n Last 24h\n \n this.setActiveFrequency(FREQUENCIES.week)}>\n Last 7 days\n \n this.setActiveFrequency(FREQUENCIES.month)}>\n Last 30 days\n \n this.setActiveFrequency(FREQUENCIES.custom)}>\n Custom\n \n
\n {pickerOpen && }\n
\n )\n }\n}\n\nIndex.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(Index))\n","import React from 'react'\nimport Headline from '../texts/Headline'\nimport DateControl from '../DateControl'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n title: string\n botId: number\n loadData: any\n setFromDateCallback?: any\n setToDateCallback?: any\n}\n\nconst HeadlineWrapWithDateControl: React.FC = ({\n botId,\n loadData,\n title,\n setFromDateCallback,\n setToDateCallback,\n}) => (\n
\n \n \n
\n)\n\nexport default HeadlineWrapWithDateControl\n","import React from 'react'\nimport { CSVLink } from 'react-csv'\n\nimport styles from './styles.module.scss'\n\ninterface Props {\n csvOnDownload?: (a: any) => void\n csvData?: any\n csvHeaders?: any\n csvFilename?: string\n}\n\nconst DownloadButton: React.FC = ({ csvData, csvOnDownload, csvFilename, csvHeaders }) => {\n return (\n \n Download\n \n )\n}\n\nexport default DownloadButton\n","import React, { useMemo } from 'react'\nimport { connect } from 'react-redux'\n\nimport DownloadButton from '../../../../uiKit/buttons/DownloadButton'\n\nimport { isObjectEmpty } from '../../../../helpers/isObjectEmpty'\nimport {usersChartDataType} from '../../../../models/DashboardTypes'\n\ninterface Props {\n usersStatistics: usersChartDataType\n}\n\nconst convertAreaChartDataCsv: any = (data: usersChartDataType) => {\n return Object.keys(data.points).map(k => {\n const entry = {}\n\n entry['date'] = k\n\n data.points[k].forEach(({ platform, userCount }) => {\n entry[platform] = userCount\n })\n\n return entry\n })\n}\n\nconst AreaChartButton: React.FC = ({ usersStatistics: chartData }) => {\n const getAreaChartHeadersCsv = () => {\n const headers = [{ label: 'Date', key: 'date' }]\n const arr = Object.values(chartData.points)[0]\n\n if (arr && !isObjectEmpty(arr)) {\n Object.values(arr).forEach(({ platform }) => headers.push({ label: platform, key: platform }))\n }\n\n return headers\n }\n\n const csvHeaders = useMemo(() => getAreaChartHeadersCsv(), [chartData])\n\n return (\n \n )\n}\n\nconst mapStateToProps = state => ({\n usersStatistics: state.usersStatistics,\n})\n\nexport default connect(mapStateToProps)(AreaChartButton)\n","export const covertHeaders = [\n { label: 'By chat bot', key: 'byChatBot' },\n { label: 'By customer support', key: 'byCustomerSupport' },\n]\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport DownloadButton from '../../../../uiKit/buttons/DownloadButton'\nimport { covertHeaders } from '../../constants/covertHeaders'\n\ninterface Props {\n supportStatistics: any\n}\n\nconst convertCircleChartDataCsv = data => {\n return [...[], data]\n}\n\nconst CircleChartButton: React.FC = ({ supportStatistics: pieChartData }) => {\n return (\n \n )\n}\n\nconst mapStateToProps = state => ({\n supportStatistics: state.supportStatistics,\n})\n\nexport default connect(mapStateToProps)(CircleChartButton)\n","export const ByTimeOfDayHeaders = [\n { label: 'Day of week', key: 'dayOfWeek' },\n { label: 'Time', key: 'time' },\n { label: 'Amount', key: 'amount' },\n]\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport DownloadButton from '../../../../uiKit/buttons/DownloadButton'\nimport { ByTimeOfDayHeaders } from '../../../../constants/byTimeOfDayHeaders'\n\ninterface Props {\n popularHoursStatistics: any\n}\n\nconst convertHourlyChartDataCsv = data => data.averageConversationByTimeOfDay\n\nconst HourlyChartButton: React.FC = ({ popularHoursStatistics: hoursChartData }) => {\n return (\n \n )\n}\n\nconst mapStateToProps = state => ({\n popularHoursStatistics: state.popularHoursStatistics,\n})\n\nexport default connect(mapStateToProps)(HourlyChartButton)\n","/* eslint-disable */\nimport React from 'react'\n\nclass InfoButton extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport default InfoButton\n","import React from 'react'\nimport { styles } from './TooltipStyles'\nimport { withStyles } from '@material-ui/core'\nimport InfoButton from '../icons/InfoButton'\nimport ReactTooltip from 'react-tooltip'\n\nconst Tooltip = props => {\n const { classes, tooltipId, tooltipText } = props\n\n return (\n
\n \n \n
\n )\n}\n\nexport default withStyles(styles)(Tooltip)\n","export const styles = () => ({\n tooltip: {\n maxWidth: '80%',\n width: '300px',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n tooltipWrap: {\n cursor: 'pointer',\n display: 'inline',\n marginLeft: 4,\n },\n})\n","import React, { ReactNode } from 'react'\n\nimport Tooltip from '../TooltipInfo/Tooltip'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n title: string\n tooltipText: string\n children: ReactNode\n totalUsers?: number\n activeUsers?: number\n button?: ReactNode\n}\n\nconst DashboardContainer: React.FC = ({ title, tooltipText, children, activeUsers, totalUsers, button }) => {\n return (\n
\n
\n \n

\n {title}\n {tooltipText && }\n

\n {button}\n
\n {!!totalUsers && !!activeUsers && (\n
\n Active users\n {activeUsers}\n Total users\n {totalUsers}\n
\n )}\n
\n {children}\n
\n )\n}\n\nexport default DashboardContainer\n","import React from 'react'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n value: number\n title: string\n}\n\nconst NamedCounter: React.FC = ({ value, title }) => {\n return (\n
\n

{value}

\n

{title}

\n
\n )\n}\n\nexport default NamedCounter\n","export const getPercentage = (currentValue, total) => Math.floor((currentValue / total) * 100 + 0.5)\n","import React, {useMemo, useState} from 'react'\nimport {PieChart} from 'react-chartkick'\nimport {connect} from 'react-redux'\n\nimport NoChartData from '../../../../uiKit/NoChartData'\n\nimport {noDataText} from '../../constants/chartsTexts'\nimport {channelColors} from '../../constants/channelColors'\nimport {getPercentage} from '../../../../helpers/getPercentage'\n\nimport classes from './styles.module.scss'\nimport {sortArrayOfArraysByIndex} from '../../../../helpers/sortArrayOfArraysByIndex'\nimport {usersChartDataType} from '../../../../models/DashboardTypes'\n\ninterface Props {\n usersStatistics: usersChartDataType\n}\n\nconst ChannelsCircleChart: React.FC = ({ usersStatistics: chartData }) => {\n const [otherChannels, setOtherChannels] = useState([])\n\n const getOrderedData = (data: Map) => {\n const result = []\n sortArrayOfArraysByIndex(Object.entries(data), 1, 'desc')\n .forEach(e => result[e[0]] = e[1])\n return result\n }\n\n const getChartData = () => {\n const pieChartData = getOrderedData(chartData.usersBetweenDates)\n\n if (pieChartData.length > 4) {\n return getChartDataWithOther(pieChartData)\n }\n\n return Object.entries(pieChartData)\n }\n\n const getChartDataWithOther = formattedPieChartData => {\n const mainPlatforms = formattedPieChartData.slice(0, 4)\n const otherPlatforms = formattedPieChartData.slice(4)\n const otherPlatformsCount = otherPlatforms.reduce((a, [, userCount]) => a + userCount, 0)\n\n setOtherChannels(otherPlatforms)\n return [...mainPlatforms, ['Other', otherPlatformsCount]]\n }\n\n const getColorsForLineChart = data => {\n return data.map(value => channelColors.get(value[0]))\n }\n\n const getLibraryOptions = () => {\n return {\n tooltips: {\n callbacks: {\n label: (tooltipItem, data) => {\n const dataset = data.datasets[tooltipItem.datasetIndex]\n const total = dataset.data.reduce((previousValue, currentValue) => previousValue + currentValue)\n const currentValue = dataset.data[tooltipItem.index]\n const percentage = getPercentage(currentValue, total)\n\n if (data.labels[tooltipItem.index] !== 'Others') {\n return `${data.labels[tooltipItem.index]}: ${percentage}% (${currentValue})`\n }\n\n return otherChannels\n .map(channel => `${channel[0]}: ${getPercentage(channel[1], total)}% (${channel[1]})`)\n .join('\\n')\n },\n },\n },\n }\n }\n\n const data = useMemo(() => getChartData(), [chartData])\n const colors = useMemo(() => getColorsForLineChart(data), [data])\n const libraryOptions = useMemo(() => getLibraryOptions(), [otherChannels])\n\n return (\n
\n {data.length ? (\n \n ) : (\n \n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { usersStatistics: usersChartDataType; supportStatistics }) => ({\n usersStatistics: state.usersStatistics,\n})\n\nexport default connect(mapStateToProps)(ChannelsCircleChart)\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport DownloadButton from '../../../../uiKit/buttons/DownloadButton'\n\ninterface Props {\n usersStatistics: any\n}\n\nconst convertCircleChartDataCsv = chartData => {\n const pieChartData = {}\n\n for (const date in chartData.points) {\n chartData.points[date].forEach(({ platform, userCount }) => {\n if (platform !== 'All channels') {\n pieChartData[platform] = userCount + (pieChartData[platform] || 0)\n }\n })\n }\n\n const formattedPieChartData = Object.entries(pieChartData)\n .sort((a: [string, number], b: [string, number]) => b[1] - a[1])\n\n if (formattedPieChartData.length > 4) {\n return getChartDataWithOther(formattedPieChartData)\n }\n\n return Object.entries(pieChartData)\n}\n\nconst getChartDataWithOther = formattedPieChartData => {\n const mainPlatforms = formattedPieChartData.slice(0, 4)\n const otherPlatforms = formattedPieChartData.slice(4)\n const otherPlatformsCount = otherPlatforms.reduce((a, [, userCount]) => a + userCount, 0)\n\n return [...mainPlatforms, ['Other', otherPlatformsCount]]\n}\n\nconst ChannelsChartButton: React.FC = ({ usersStatistics: chartData }) => {\n return (\n \n )\n}\n\nconst mapStateToProps = state => ({\n usersStatistics: state.usersStatistics,\n})\n\nexport default connect(mapStateToProps)(ChannelsChartButton)\n","import { store } from '../../../index'\n\nexport const SAVE_POPULAR_HOURS_STATISTICS = 'SAVE_POPULAR_HOURS_STATISTICS'\n\nexport const savePopularHoursStatistics = stats => {\n store.dispatch({\n type: SAVE_POPULAR_HOURS_STATISTICS,\n stats,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_SUPPORT_STATISTICS = 'SAVE_SUPPORT_STATISTICS'\n\nexport const saveSupportStatistics = stats => {\n store.dispatch({\n type: SAVE_SUPPORT_STATISTICS,\n stats,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_USERS_STATISTICS = 'SAVE_USERS_STATISTICS'\n\nexport const saveUsersStatistics = stats => {\n store.dispatch({\n type: SAVE_USERS_STATISTICS,\n stats,\n })\n}\n","import { alertError, createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport { savePopularHoursStatistics } from '../actions/popularHoursStatistics'\nimport { saveSupportStatistics } from '../actions/supportStatistics'\nimport { saveUsersStatistics } from '../actions/usersStatistics'\n\nexport const loadUsersStatistics = ({ botId, from, to, hourly }) => {\n const loadDataUrl = !hourly\n ? `${BASE_URL}/chart/users/${botId}?from=${from}&to=${to}&allChannels=true`\n : `${BASE_URL}/chart/users/${botId}/last24hours?allChannels=true`\n return fetch(loadDataUrl, {\n method: 'GET',\n headers: createJsonHeaders(),\n credentials: 'same-origin',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n saveUsersStatistics(responseJson.data)\n })\n .catch(err => {\n alertError('Not able to load user statistics data!')\n })\n}\n\nexport const loadSupportStatistics = ({ botId, from, to }) => {\n fetch(`${BASE_URL}/chart/conversationCovering/${botId}?from=${from}&to=${to}`, {\n method: 'GET',\n headers: createJsonHeaders(),\n credentials: 'same-origin',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n saveSupportStatistics(responseJson)\n })\n .catch(() => {\n alertError('Not able to load chatbot/support statistics data!')\n })\n}\n\nexport const loadPopularHoursStatistics = ({ botId, from, to }) => {\n fetch(`${BASE_URL}/chart/hourlyConversation/${botId}?from=${from}&to=${to}`, {\n method: 'GET',\n headers: createJsonHeaders(),\n credentials: 'same-origin',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n savePopularHoursStatistics(responseJson)\n })\n .catch(() => {\n alertError('Not able to load popular hours statistics data!')\n })\n}\n","import React from 'react'\nimport LoaderSmall from '../loader'\nimport classes from './styles.module.scss'\n\nconst LoaderScreen = () => {\n return (\n
\n \n
\n )\n}\n\nexport default LoaderScreen\n","import React, {useEffect, useMemo, useRef, useState} from 'react'\nimport { withRouter } from 'react-router-dom'\nimport 'react-chartjs-2'\nimport { connect } from 'react-redux'\n\nimport AreaChart from './components/AreaChart'\nimport CircleChart from './components/CircleChart'\nimport HourlyChart from './components/HourlyChart'\nimport HeadlineWrapWithDateControl from '../../uiKit/HeadlineWrapWithDateControl'\nimport AreaChartButton from './components/AreaChartButton'\nimport CircleChartButton from './components/CircleChartButton'\nimport HourlyChartButton from './components/HourlyChartButton'\nimport ChartContainer from '../../uiKit/ChartContainer'\nimport NamedCounter from './components/NamedCounter'\nimport ChannelsCircleChart from './components/ChannelsCircleChart'\nimport ChannelsChartButton from './components/ChannelsChartButton'\n\nimport { isObjectEmpty } from '../../helpers/isObjectEmpty'\n\nimport { loadSupportStatistics, loadPopularHoursStatistics, loadUsersStatistics } from './api/dashboard'\n\nimport {\n areaChartTooltipText,\n channelsChartTooltipText,\n circleChartContainerTitle,\n conversationsCoveredTooltipText,\n hourlyChartContainerTitle,\n hourlyChartTooltipText,\n} from './constants/chartsTexts'\n\nimport classes from './styles.module.scss'\nimport LoaderScreen from '../../uiKit/loaders/loaderScreen'\nimport { usersChartDataType } from 'models/DashboardTypes'\n\ninterface Props {\n match: any\n usersStatistics: usersChartDataType\n supportStatistics: any\n popularHoursStatistics: any\n}\n\nconst Dashboard: React.FC = ({ match, usersStatistics, supportStatistics, popularHoursStatistics }) => {\n const { botId } = match.params\n\n const [loader, setLoader] = useState(true)\n const containerRef = useRef(null)\n\n useEffect(() => {\n containerRef.current.scrollTo(0, 0)\n }, [])\n\n useEffect(() => {\n if (usersStatistics && supportStatistics && popularHoursStatistics) {\n setLoader(false)\n }\n }, [usersStatistics, supportStatistics, popularHoursStatistics])\n\n const platformsNumber = useMemo(() => {\n if (usersStatistics?.points && !isObjectEmpty(usersStatistics?.points)) {\n return Object.values(usersStatistics?.points)[0]?.map(({ platform }) => platform)?.length > 2\n }\n }, [usersStatistics?.points])\n\n const activeUsersNumber = useMemo(() => {\n if (usersStatistics?.usersBetweenDates && !isObjectEmpty(usersStatistics?.usersBetweenDates)) {\n return Object.values(usersStatistics?.usersBetweenDates).reduce((acc, count) => acc + count, 0)\n }\n return 0\n }, [usersStatistics?.usersBetweenDates])\n\n return (\n
\n \n {loader ? (\n \n ) : (\n <>\n
\n }>\n \n \n\n {platformsNumber && (\n
\n
\n \n \n
\n\n }>\n \n \n
\n )}\n
\n\n
\n }>\n \n \n\n }>\n \n \n
\n \n )}\n
\n )\n}\n\nconst mapStateToProps = (state: {\n usersStatistics: usersChartDataType\n supportStatistics\n popularHoursStatistics\n}) => ({\n usersStatistics: state.usersStatistics,\n supportStatistics: state.supportStatistics,\n popularHoursStatistics: state.popularHoursStatistics,\n})\n\nexport default withRouter(connect(mapStateToProps)(Dashboard))\n","import React from 'react'\n\nexport const TextIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const GalleryIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const AttachmentMessageIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TypingIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n )\n}\n","export const USER_INPUT_TYPE = 'USER_INPUT'\nexport const SET_ATTRIBUTE_TYPE = 'SET_ATTRIBUTE'\nexport const TEXT_TYPE = 'TEXT'\nexport const SAVE_USER_INPUT_TYPE = 'SAVE_USER_INPUT'\nexport const CONDITIONAL_REDIRECT_TYPE = 'CONDITIONAL_REDIRECT'\nexport const RANDOM_REDIRECT_TYPE = 'RANDOM_REDIRECT'\nexport const API_CALL_TYPE = 'API_CALL'\n","/**\n * Created by Admin on 17.04.2018.\n */\nimport React from 'react'\n\nimport { TextIcon } from '../../../../uiKit/icons/TextIcon'\nimport { GalleryIcon } from '../../../../uiKit/icons/GalleryIcon'\nimport { AttachmentMessageIcon } from '../../../../uiKit/icons/AttachmentMessageIcon'\nimport { TypingIcon } from '../../../../uiKit/icons/TypingIcon'\n\nimport {\n CONDITIONAL_REDIRECT_TYPE,\n RANDOM_REDIRECT_TYPE,\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n TEXT_TYPE,\n USER_INPUT_TYPE,\n API_CALL_TYPE,\n} from '../../constants/messageTypes'\n\nexport const availableDefaultMessages = [\n {\n name: 'Text',\n icon: ,\n iconLarge: ,\n description: 'Send a text in chat',\n newMessage: {\n texts: [''],\n type: TEXT_TYPE,\n },\n },\n {\n name: 'Gallery',\n icon: ,\n iconLarge: ,\n type: 'gallery',\n description: 'Send a carousel of options in chat',\n newMessage: {\n attachment: {\n type: 'template',\n payload: {\n template_type: 'generic',\n elements: [\n {\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n },\n ],\n },\n },\n },\n iconName: 'TextIcon',\n },\n {\n name: 'Attachment',\n icon: ,\n iconLarge: ,\n type: 'attachment',\n description: 'Send an image, video or GIF in chat',\n newMessage: {\n attachment: {\n type: 'image',\n payload: {\n url: '',\n },\n },\n },\n iconName: 'TextIcon',\n },\n {\n name: 'Typing',\n type: 'typing',\n icon: ,\n iconLarge: ,\n description: 'Send typing indicator',\n newMessage: {\n senderAction: 'typing_on',\n time: 3,\n },\n iconName: 'TextIcon',\n },\n]\n\nexport const availableOtherMessages = [\n {\n name: 'Media template',\n newMessage: {\n attachment: {\n type: 'image',\n payload: {\n url: '',\n },\n },\n },\n },\n {\n name: 'User Input',\n type: USER_INPUT_TYPE,\n newMessage: {\n type: USER_INPUT_TYPE,\n parameter: '',\n next_atom: '',\n },\n },\n]\n\nexport const randomRedirectInitialState = {\n type: RANDOM_REDIRECT_TYPE,\n randomRedirect: {\n randomAtoms: [\n {\n atomName: '',\n number: 1,\n },\n ],\n sendFirstAtomOnlyOnce: false,\n },\n}\n\nexport const setAttributeMessage = {\n type: SET_ATTRIBUTE_TYPE,\n attributes: [\n {\n id: '',\n value: '',\n name: '',\n },\n ],\n}\n\nexport const saveUserInput = {\n type: SAVE_USER_INPUT_TYPE,\n saveUserInput: {\n validation: 'NONE',\n customValidationRegex: null,\n onValidationSuccessAtomId: null,\n onValidationFailAtomId: null,\n saveAsAttribute: null,\n },\n}\n\nexport const smartRedirect = {\n type: CONDITIONAL_REDIRECT_TYPE,\n conditionalRedirect: {\n conditionGroups: null,\n defaultRedirect: null,\n },\n}\n\nexport const conditionGroup = {\n expressions: [\n {\n attribute: null,\n operator: 'IS',\n value: null,\n },\n ],\n conjunction: 'AND',\n redirectTo: null,\n}\n\nexport const apiCall = {\n type: API_CALL_TYPE,\n apiCall: {\n addUserData: false,\n body: null,\n headers: [],\n method: 'GET',\n url: null,\n attributes: [],\n },\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport Modal from '@material-ui/core/Modal'\nimport Close from '@material-ui/icons/Close'\n\nexport function getModalStyle(style) {\n let top, left, overflowY\n\n if (style) {\n top = style.top || 50\n left = style.left || 50\n overflowY = style.overflowY || 'auto'\n } else {\n top = 50\n left = 50\n overflowY = 'auto'\n }\n\n return {\n top: `${top}%`,\n left: `${left}%`,\n transform: `translate(-${top}%, -${left}%)`,\n overflowY: `${overflowY}`,\n maxHeight: '90%',\n }\n}\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: '30px 50px 24px',\n outline: 'none',\n width: 600,\n borderRadius: 10,\n },\n title: {\n lineHeight: 'normal',\n fontSize: 18,\n color: theme.palette.primary.headerText,\n textAlign: 'center',\n },\n root: {\n width: '100%',\n backgroundColor: theme.palette.background.paper,\n },\n bot: {\n color: '#b0b0b0!important',\n },\n flex: {},\n container: {},\n menuButton: {},\n loader: {\n position: 'absolute',\n left: '50%',\n marginLeft: '-35px',\n top: '40%',\n zIndex: 9999,\n },\n buttonHolder: {\n marginTop: 40,\n display: 'flex',\n justifyContent: 'flex-end',\n },\n btnClose: {\n position: 'absolute',\n right: '24px',\n top: '24px',\n color: '#B0B2C0',\n cursor: 'pointer',\n },\n})\n\nclass CustomizedModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { classes, style } = this.props\n return (\n
\n \n
\n \n {this.props.title && (\n

{this.props.title}

\n )}\n {this.props.children}\n
\n \n
\n )\n }\n}\n\nCustomizedModal.propTypes = {\n classes: PropTypes.object.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n title: PropTypes.string,\n}\n\nexport default withStyles(styles)(CustomizedModal)\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SetAttributeIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SaveUserInputIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TagIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const RedirectToAtomIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const RandomRedirectIcon = () => {\n\n return (\n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const APICallIcon = () => {\n return (\n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst ActionModalItem = props => {\n const { classes, icon, name, description, onClick } = props\n\n return (\n
\n {icon}\n
\n

{name}

\n

{description}

\n
\n
\n )\n}\nActionModalItem.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ActionModalItem)\n","export const styles = () => ({\n item: {\n display: 'flex',\n height: 80,\n padding: 10,\n cursor: 'pointer',\n borderRadius: 8,\n lineHeight: '14px',\n '&:hover': {\n backgroundColor: 'rgba(90, 152, 247, 0.04)',\n },\n },\n text: {\n marginLeft: 8,\n },\n messageName: {\n fontSize: 14,\n color: 'rgba(43, 44, 54, 1)',\n marginBottom: 4,\n },\n messageDescription: {\n color: 'rgba(97, 101, 129, 1)',\n margin: 0,\n fontSize: 14,\n lineHeight: '17px',\n },\n})\n","export const deepCopyFunction = inObject => {\n let value, key\n\n if (typeof inObject !== 'object' || inObject === null) {\n return inObject // Return the value if inObject is not an object\n }\n\n // Create an array or object to hold the values\n const outObject = Array.isArray(inObject) ? [] : {}\n\n for (key in inObject) {\n value = inObject[key]\n\n // Recursively (deep) copy for nested objects, including arrays\n outObject[key] = deepCopyFunction(value)\n }\n\n return outObject\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Modal from '@material-ui/core/Modal'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { getModalStyle } from '../../../../uiKit/Modal'\nimport Close from '@material-ui/icons/Close'\nimport {\n apiCall,\n availableDefaultMessages,\n randomRedirectInitialState,\n saveUserInput,\n setAttributeMessage,\n smartRedirect,\n} from '../messages/AvailableMessages'\nimport uuidv1 from 'uuid/v1'\nimport { SetAttributeIcon } from '../../../../uiKit/icons/SetAttributeIcon'\nimport { SaveUserInputIcon } from '../../../../uiKit/icons/SaveUserInputIcon'\nimport { TagIcon } from '../../../../uiKit/icons/TagIcon'\nimport { RedirectToAtomIcon } from '../../../../uiKit/icons/RedirectToAtomIcon'\nimport { RandomRedirectIcon } from '../../../../uiKit/icons/RandomRedirectIcon'\nimport { APICallIcon } from '../../../../uiKit/icons/APICallIcon'\nimport ActionModalItem from '../ActionModalItem/ActionModalItem'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { alertError } from '../../../../api'\nimport {\n API_CALL_TYPE,\n CONDITIONAL_REDIRECT_TYPE,\n RANDOM_REDIRECT_TYPE,\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n} from '../../constants/messageTypes'\n\nconst AddActionModal = props => {\n const { classes, open, atom, updateAtom, onClose } = props\n\n const handleCreateNewMessage = newMessage => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n updateAtom(newAtom)\n onClose()\n }\n\n const addSetAttribute = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message => message.type === SET_ATTRIBUTE_TYPE)\n ) {\n const newMessage = deepCopyFunction(setAttributeMessage)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n updateAtom(newAtom)\n }\n onClose()\n }\n\n const addSaveUserInput = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message =>\n message.type === SAVE_USER_INPUT_TYPE ||\n message.type === RANDOM_REDIRECT_TYPE ||\n message.type === CONDITIONAL_REDIRECT_TYPE\n )\n ) {\n const newMessage = deepCopyFunction(saveUserInput)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n updateAtom(newAtom)\n } else {\n alertError(\n 'Atom can contain only one of these elements: Smart Redirect atom, Random redirect or Save User Input',\n )\n }\n onClose()\n }\n\n const addTags = () => {\n const newAtom = { ...atom }\n newAtom.tags = []\n updateAtom(newAtom)\n onClose()\n }\n\n const addSmartRedirect = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(\n message =>\n message.type === RANDOM_REDIRECT_TYPE ||\n message.type === CONDITIONAL_REDIRECT_TYPE ||\n message.type === SAVE_USER_INPUT_TYPE\n )\n ) {\n const newMessage = deepCopyFunction(smartRedirect)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n updateAtom(newAtom)\n } else {\n alertError(\n 'Atom can contain only one of these elements: Smart Redirect atom, Random redirect or Save User Input',\n )\n }\n onClose()\n }\n\n const addRandomRedirect = () => {\n const newAtom = deepCopyFunction(atom)\n\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(\n message =>\n message.type === RANDOM_REDIRECT_TYPE ||\n message.type === CONDITIONAL_REDIRECT_TYPE ||\n message.type === SAVE_USER_INPUT_TYPE,\n )\n ) {\n const newMessage = deepCopyFunction(randomRedirectInitialState)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(deepCopyFunction(newMessage))\n updateAtom(newAtom)\n } else {\n alertError(\n 'Atom can contain only one of these elements: Smart Redirect atom, Random redirect or Save User Input',\n )\n }\n onClose()\n }\n\n const addAPICall = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message => message.type === API_CALL_TYPE)\n ) {\n const newMessage = deepCopyFunction(apiCall)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n updateAtom(newAtom)\n }\n onClose()\n }\n\n return (\n \n
\n
\n \n

Add an action

\n
\n
\n
\n {availableDefaultMessages.map((message, index) => (\n handleCreateNewMessage(message.newMessage)}\n />\n ))}\n }\n name={'Set attribute'}\n description={'Set a value for an attribute'}\n onClick={addSetAttribute}\n />\n
\n
\n }\n name={'Save user input'}\n description={\n 'Set validation and save users responses to user attributes'\n }\n onClick={addSaveUserInput}\n />\n }\n name={'Add tags'}\n description={'Add tags to users'}\n onClick={addTags}\n />\n }\n name={'Smart redirect'}\n description={'Redirects user to another atom'}\n onClick={addSmartRedirect}\n />\n }\n name={'Random redirect'}\n description={'Randomly redirect user to another atom'}\n onClick={addRandomRedirect}\n />\n }\n name={'API call'}\n description={'Define an HTTP request to some external API'}\n onClick={addAPICall}\n />\n
\n
\n
\n \n )\n}\nAddActionModal.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(AddActionModal)\n","export const styles = theme => ({\n paper: {\n position: 'absolute',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n outline: 'none',\n width: 600,\n borderRadius: 10,\n padding: 40,\n },\n titleWrap: {\n display: 'flex',\n },\n title: {\n lineHeight: 'normal',\n fontSize: 24,\n color: theme.palette.primary.headerText,\n margin: '0px 8px 32px 0px',\n },\n btnClose: {\n position: 'absolute',\n right: '24px',\n top: '24px',\n color: '#B0B2C0',\n cursor: 'pointer',\n },\n body: {\n display: 'flex',\n gap: '32px',\n },\n section: {\n width: '50%',\n display: 'block',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport uuidv1 from 'uuid/v1'\n\nimport { availableDefaultMessages } from '../messages/AvailableMessages'\nimport { OtherIcon } from '../../../../uiKit/icons/Icons'\nimport AddActionModal from '../AddActionModal/AddActionModal'\n\nimport { styles } from './styles'\n\nconst NewMessage = props => {\n const { classes, atom, updateAtom } = props\n const [open, setOpen] = useState(false)\n\n const handleCreateNewMessage = newMessage => {\n const newAtom = { ...atom }\n\n if (!newAtom.messages) newAtom.messages = []\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n\n updateAtom(newAtom)\n }\n\n return (\n <>\n
\n {availableDefaultMessages.map((message, index) => (\n handleCreateNewMessage(message.newMessage)}>\n {message.icon}\n
{message.name}
\n
\n ))}\n\n
setOpen(true)}>\n \n
Other
\n
\n
\n\n setOpen(false)}\n />\n \n )\n}\nNewMessage.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(NewMessage)\n","export const styles = () => ({\n container: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n },\n listItem: {\n border: '1px solid #f3f3f3',\n width: 94,\n margin: 0,\n padding: '18px 10px 14px',\n boxSizing: 'border-box',\n textAlign: 'center',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: '#3A3F62',\n fontSize: 12,\n '&:hover': {\n background: '#5A98F7',\n color: 'white',\n border: '1px solid #5A98F7',\n },\n '&:hover svg path': {\n stroke: 'white',\n },\n '&:first-child': {\n borderBottomLeftRadius: 10,\n borderTopLeftRadius: 10,\n },\n '&:last-child': {\n borderBottomRightRadius: 10,\n borderTopRightRadius: 10,\n },\n },\n})\n","import { store } from '../../../index'\n\nexport const SET_SEARCH_ATOMS = 'SET_SEARCH_ATOMS'\n\nexport const setSearchAtoms = (searchAtoms = []) => {\n store.dispatch({\n type: SET_SEARCH_ATOMS,\n searchAtoms,\n })\n}\n","import { store } from '../../../index'\n\nexport const CLEAR_ATOM = 'CLEAR_ATOM'\nexport const SAVE_ATOM = 'SAVE_ATOM'\n\nexport const clearAtom = atom => {\n store.dispatch({\n type: CLEAR_ATOM,\n atom,\n })\n}\n\nexport const editAtom = atom => {\n store.dispatch({\n type: SAVE_ATOM,\n atom,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_FLOWS = 'SAVE_FLOWS'\nexport const ADD_NEW_FLOW = 'ADD_NEW_FLOW'\n\nexport const saveFlows = flows => {\n store.dispatch({\n type: SAVE_FLOWS,\n flows,\n })\n}\n\nexport const addNewFlow = flow => {\n store.dispatch({\n type: ADD_NEW_FLOW,\n flow,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_ATOMS = 'SAVE_ATOMS'\n\nexport const saveAtoms = flows => {\n store.dispatch({\n type: SAVE_ATOMS,\n payload: { flows },\n })\n}\n","import { addNewFlow, saveFlows } from '../actions/flows'\nimport { saveAtoms } from '../actions/atoms'\n\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\n\nimport { BASE_URL } from '../../../configs'\n\nexport function getFlows(botId) {\n fetch(BASE_URL + '/bot/' + botId + '/flow', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveFlows(json)\n saveAtoms(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function createNewFlow(botId, flow) {\n fetch(BASE_URL + '/bot/' + botId + '/flow', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(flow),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Flow is created successfully.')\n addNewFlow(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteFlow(flowId, botId, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/flow/' + flowId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Flow is deleted successfully.')\n getFlows(botId)\n callback()\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function changeFlowStatus(flowId, botId, disable) {\n fetch(BASE_URL + '/flow/' + flowId + '?disable=' + disable, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Flow status is changed successfully.')\n getFlows(botId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n","import { deepCopyFunction } from './deepCopyFunction'\nimport { API_CALL_TYPE } from '../tabs/flowBuilder/constants/messageTypes'\n\nexport const formatAtom = atom => {\n const copyAtom = deepCopyFunction(atom)\n\n if (copyAtom?.messages) {\n copyAtom.messages = copyAtom.messages.map(message => {\n if (message.type === API_CALL_TYPE) {\n const apiCall = deepCopyFunction(message.apiCall)\n\n message.apiCall.headers = Object.entries(apiCall.headers || {}).map(([key, value]) => ({ key, value }))\n\n message.apiCall.attributes = Object.entries(apiCall.attributes || {}).map(([key, value]) => ({ key, value }))\n }\n return message\n })\n }\n\n return copyAtom\n}\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { setSearchAtoms } from '../actions/searchAtoms'\nimport { editAtom } from '../actions/atom'\nimport { getFlows } from './flow'\nimport { BASE_URL } from '../../../configs'\nimport { formatAtom } from '../../../helpers/atomFormat'\n\nasync function createNewAtom(atom, botId) {\n try {\n await fetch(BASE_URL + '/atom', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(atom),\n })\n\n getFlows(botId)\n alertSuccess('Atom is created successfully.')\n } catch {\n alertError('Fail. Try it later')\n }\n}\n\nasync function saveAtom(atom, botId, language, callback) {\n try {\n const response = await fetch(`${BASE_URL}/atom?language=${language}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(atom),\n })\n\n if (response.status === 400) {\n const text = await response.text()\n const res = JSON.parse(text)\n alertError(res.fieldErrors[0]?.message || res.error?.message)\n } else {\n const responseJson = await logoutOnRequestOrResponseJson(response)\n alertSuccess('Atom is updated successfully.')\n const formattedAtom = formatAtom(responseJson?.data)\n editAtom(formattedAtom)\n getFlows(botId)\n callback(formattedAtom)\n }\n } catch {\n alertError('Fail. Try it later')\n }\n}\n\nasync function getAtom(atomId, language, callback) {\n try {\n const response = await fetch(\n `${BASE_URL}/atom/${atomId}?language=${language}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n const responseJson = await logoutOnRequestOrResponseJson(response)\n const formattedAtom = formatAtom(responseJson?.data)\n\n if (callback) callback(formattedAtom)\n editAtom(formattedAtom)\n } catch {\n alertError('Fail. Try it later')\n }\n}\n\nasync function deleteAtom(atomId, botId, callback) {\n try {\n await fetch(`${BASE_URL}/atom/${atomId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n getFlows(botId)\n alertSuccess('Atom is deleted succesfully')\n callback()\n } catch {\n alertError('Fail. Try it later')\n }\n}\n\nasync function searchAtomsByContent(searchQuery) {\n try {\n const response = await fetch(\n `${BASE_URL}/atom/search?query=${searchQuery}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n const responseJson = await logoutOnRequestOrResponseJson(response)\n setSearchAtoms(responseJson?.data)\n } catch {\n alertError('Fail. Try later')\n }\n}\n\nasync function testApiRequest(body, userId) {\n try {\n const response = await fetch(`${BASE_URL}/api/call/${userId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(body),\n })\n\n return await logoutOnRequestOrResponseJson(response)\n } catch {\n alertError('Fail. Try later')\n }\n}\n\nexport {\n createNewAtom,\n saveAtom,\n getAtom,\n deleteAtom,\n searchAtomsByContent,\n testApiRequest,\n}\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Modal from '@material-ui/core/Modal'\nimport Button from '@material-ui/core/Button'\nimport {\n availableDefaultMessages,\n availableOtherMessages,\n} from './AvailableMessages'\nimport { OtherIcon } from '../../../../uiKit/icons/Icons.js'\nimport AddActionModal from '../AddActionModal/AddActionModal'\nimport {\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n} from '../../constants/messageTypes'\n\nexport function getModalStyle() {\n const top = 50\n const left = 50\n\n return {\n maxHeight: '95%',\n maxWidth: '95%',\n top: `${top}%`,\n left: `${left}%`,\n transform: `translate(-${top}%, -${left}%)`,\n overflowY: 'auto',\n width: '600px',\n padding: '40px 24px',\n color: '#3A3F62',\n }\n}\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 60,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n fab: {\n position: 'absolute',\n bottom: 25,\n right: 50,\n backgroundColor: '#2196f3',\n color: '#fff',\n },\n root: {\n width: '100%',\n maxWidth: 360,\n },\n listBoxContainer: {\n width: '100%',\n overflowX: 'auto',\n },\n listBox: {\n display: 'flex',\n borderRadius: 10,\n width: 'max-content',\n color: '#7f7f7f',\n fontSize: 12,\n margin: '0 20px 45px',\n },\n listItem: {\n border: '1px solid #f3f3f3',\n width: 94,\n margin: 0,\n padding: '18px 10px 14px',\n boxSizing: 'border-box',\n textAlign: 'center',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: '#3A3F62',\n },\n '@global': {\n '.itemAtom:hover': {\n background: '#5A98F7',\n color: 'white',\n border: '1px solid #5A98F7',\n },\n '.itemAtom:hover svg path': {\n stroke: 'white',\n },\n '.itemAtom:first-child': {\n borderBottomLeftRadius: 10,\n borderTopLeftRadius: 10,\n },\n '.itemAtom:last-child': {\n borderBottomRightRadius: 10,\n borderTopRightRadius: 10,\n },\n },\n otherItem: {\n padding: '8px 11px',\n fontSize: 12,\n margin: 10,\n cursor: 'pointer',\n },\n})\n\nclass NewMessage extends React.Component {\n state = {\n open: false,\n anchorEl: null,\n selectedIndex: 0,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({\n open: false,\n quickReplies: [],\n })\n }\n\n closeAndAddMessage(newMessage) {\n this.props.createNewMessage(newMessage)\n this.setState({\n open: false,\n })\n }\n\n addRedirect() {\n this.props.addRedirect()\n this.setState({\n open: false,\n })\n }\n\n addTags() {\n this.props.addTags()\n this.setState({\n open: false,\n })\n }\n\n addRandomRedirect() {\n this.props.addRandomRedirect()\n this.setState({\n open: false,\n })\n }\n\n addSetAttribute() {\n this.props.addSetAttribute()\n this.setState({\n open: false,\n })\n }\n\n addSaveUserInput() {\n this.props.addSaveUserInput()\n this.setState({\n open: false,\n })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
\n {availableDefaultMessages.map((message, index) => (\n this.props.createNewMessage(message.newMessage)}>\n {message.icon}\n
{message.name}
\n
\n ))}\n \n \n
Other
\n
\n
\n \n \n
\n
\n {availableOtherMessages.map((message, index) => (\n this.closeAndAddMessage(message.newMessage)}>\n
{message.name}
\n
\n ))}\n this.addSetAttribute()}>\n
Set attribute
\n
\n this.addRedirect()}>\n
Redirect to atom
\n
\n this.addTags()}>\n
Tags
\n \n this.addRandomRedirect()}>\n
Random Redirect
\n \n this.addSaveUserInput()}>\n
Save User Input
\n \n \n\n \n Close\n \n \n \n \n )\n }\n}\n\nNewMessage.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst NewMessageExport = withStyles(styles)(NewMessage)\n\nexport default NewMessageExport\n","import { store } from '../../../index'\n\nexport const SAVE_CONTEXTS_SIZE = 'SAVE_CONTEXTS_SIZE'\nexport const ADD_CONTEXTS_SIZE = 'ADD_CONTEXTS_SIZE'\nexport const UPDATE_CONTEXTS_SIZE = 'UPDATE_CONTEXTS_SIZE'\n\nexport const saveContextsSize = contextSize => {\n store.dispatch({\n type: SAVE_CONTEXTS_SIZE,\n contextSize,\n })\n}\n\nexport const addContextsSize = contextSize => {\n store.dispatch({\n type: ADD_CONTEXTS_SIZE,\n contextSize,\n })\n}\n\nexport const deleteOldContexstSize = contextSize => {\n store.dispatch({\n type: UPDATE_CONTEXTS_SIZE,\n contextSize,\n })\n}\n","import { store } from '../../../index'\n\nexport const ADD_CONTEXT = 'ADD_CONTEXT'\nexport const DELETE_CONTEXT = 'DELETE_CONTEXT'\nexport const SAVE_CONTEXTS = 'SAVE_CONTEXTS'\nexport const UPDATE_CONTEXT = 'UPDATE_CONTEXT'\nexport const CLEAR_CONTEXTS = 'CLEAR_CONTEXTS'\n\nexport const addContext = context => {\n store.dispatch({\n type: ADD_CONTEXT,\n context,\n })\n}\n\nexport const removeContext = contextId => {\n store.dispatch({\n type: DELETE_CONTEXT,\n contextId,\n })\n}\n\nexport const saveContexts = contexts => {\n store.dispatch({\n type: SAVE_CONTEXTS,\n contexts,\n })\n}\n\nexport const updateExistedContext = context => {\n store.dispatch({\n type: UPDATE_CONTEXT,\n context,\n })\n}\n\nexport const clearContexts = () => {\n store.dispatch({\n type: CLEAR_CONTEXTS,\n })\n}\n","import {\n saveContextsSize,\n addContextsSize,\n deleteOldContexstSize,\n} from '../actions/contextSize'\nimport { BASE_URL } from '../../../configs'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api/index'\nimport {\n addContext,\n removeContext,\n saveContexts,\n updateExistedContext,\n} from '../actions/contexts'\n\nexport function getContextsPages(botId, page) {\n return fetch(BASE_URL + '/context/bot/' + botId + '?page=' + page, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveContextsSize(json.contextSize)\n saveContexts(json.contextDTOList)\n return json.contextDTOList\n })\n }\n response.text().then(alertSuccess)\n })\n .catch(e => {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n )\n })\n}\n\nexport function getAtomContexts(atomId) {\n fetch(BASE_URL + '/context/atom/' + atomId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(logoutOnRequestOrResponseJson)\n .then(saveContexts)\n .catch(function(e) {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n )\n })\n}\n\nexport function getIntentContexts(intentId) {\n fetch(BASE_URL + '/context/intent/' + intentId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveContexts(json)\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n )\n })\n}\n\nexport function getContext(contextId, self) {\n fetch(BASE_URL + '/context/' + contextId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n self.setState({\n context: json,\n })\n return json\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting trigger please ping support!',\n )\n })\n}\n\nexport function createNewContext(context, botId, contextSize) {\n fetch(BASE_URL + '/context/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(context),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Trigger is created successfully.')\n addContextsSize(contextSize)\n addContext(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateContext(context, botId) {\n fetch(BASE_URL + '/context/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(context),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Trigger is updated successfully.')\n updateExistedContext(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteContext(contextId, contextSize) {\n fetch(BASE_URL + '/context/' + contextId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Trigger is deleted successfully.')\n // todo: check json response\n deleteOldContexstSize(contextSize)\n removeContext(contextId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport { deleteContext } from '../api/context'\nimport { TrashIcon } from '../../../uiKit/icons/Icons.js'\nimport {\n Dialog,\n DialogActions,\n DialogTitle,\n IconButton,\n Slide,\n} from '@material-ui/core'\n\nconst styles = theme => ({\n paper: {\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n flow: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n button: {\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n margin: '40px 0',\n color: 'white',\n fontFamily: 'Lato, sans-serif',\n },\n '@global': {\n \"[class*='MuiDialog-paperWidthSm']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover:hover': {\n background: 'white',\n color: '#1658F3',\n },\n '.buttonHover1:hover': {\n color: 'white',\n background: '#1658F3',\n },\n '.buttonHover1': {\n background: 'white',\n color: '#1658F3',\n },\n },\n})\n\nfunction Transition(props) {\n return \n}\n\nclass DeleteTrigger extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n deleteTrigger() {\n if (this.props.newContext) {\n this.props.changeNewContext()\n } else {\n deleteContext(this.props.triggerId, this.props.contextSize)\n this.setState({ open: false })\n }\n }\n\n render() {\n const { classes } = this.props\n\n return (\n \n this.handleOpen()}>\n \n \n \n \n {'Are you sure you want to delete this trigger?'}\n \n \n this.deleteTrigger()}\n color=\"primary\">\n Delete\n \n \n Cancel\n \n \n \n \n )\n }\n}\n\nDeleteTrigger.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(DeleteTrigger)\n","export const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 6px',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n}\n","import { store } from '../../../index'\n\nexport const SAVE_NLP_REQUESTS = 'SAVE_NLP_REQUESTS'\nexport const UPDATE_NLP_REQUEST = 'UPDATE_NLP_REQUEST'\nexport const CLEAR_NLP_REQUESTS = 'CLEAR_NLP_REQUESTS'\n\nexport const saveNlpRequests = requests => {\n store.dispatch({\n type: SAVE_NLP_REQUESTS,\n requests,\n })\n}\n\nexport const updateTrainedNlpRequest = request => {\n store.dispatch({\n type: UPDATE_NLP_REQUEST,\n request,\n })\n}\n\nexport const clearNlpRequests = () => {\n store.dispatch({\n type: CLEAR_NLP_REQUESTS,\n })\n}\n","import { store } from '../../../index'\n\nexport const ADD_INTENT = 'ADD_INTENT'\nexport const CLEAR_INTENTS = 'CLEAR_INTENTS'\nexport const DELETE_INTENT = 'DELETE_INTENT'\nexport const SAVE_INTENTS = 'SAVE_INTENTS'\nexport const UPDATE_INTENT = 'UPDATE_INTENT'\n\nexport const addIntent = intent => {\n store.dispatch({\n type: ADD_INTENT,\n intent,\n })\n}\n\nexport const clearIntents = () => {\n store.dispatch({\n type: CLEAR_INTENTS,\n })\n}\n\nexport const deleteOldIntent = intentId => {\n store.dispatch({\n type: DELETE_INTENT,\n intentId,\n })\n}\n\nexport const saveIntents = intents => {\n store.dispatch({\n type: SAVE_INTENTS,\n intents,\n })\n}\n\nexport const updateExistedIntent = intent => {\n store.dispatch({\n type: UPDATE_INTENT,\n intent,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_INTENTS_SIZE = 'SAVE_INTENTS_SIZE'\nexport const ADD_INTENT_SIZE = 'ADD_INTENT_SIZE'\nexport const UPDATE_INTENTS_SIZE = 'UPDATE_INTENTS_SIZE'\n\nexport const saveIntentsSize = intentsSize => {\n store.dispatch({\n type: SAVE_INTENTS_SIZE,\n intentsSize,\n })\n}\n\nexport const addIntentsSize = intentsSize => {\n store.dispatch({\n type: ADD_INTENT_SIZE,\n intentsSize,\n })\n}\n\nexport const deleteOldIntentsSize = intentsSize => {\n store.dispatch({\n type: UPDATE_INTENTS_SIZE,\n intentsSize,\n })\n}\n","import {\n saveNlpRequests,\n updateTrainedNlpRequest,\n} from '../actions/nlpRequests'\nimport {\n addIntent,\n deleteOldIntent,\n saveIntents,\n updateExistedIntent,\n} from '../actions/intents'\nimport {\n saveIntentsSize,\n addIntentsSize,\n deleteOldIntentsSize,\n} from '../actions/intentsSize'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api/'\nimport { BASE_URL } from '../../../configs'\n\nexport function getIntents(botId, faq) {\n fetch(BASE_URL + '/intent/bot/' + botId + '/faq/' + faq, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getPagingIntents(botId, faq, page, query) {\n return fetch(\n BASE_URL +\n '/intent/bot/' +\n botId +\n '/faq/' +\n faq +\n '/' +\n page +\n '/search?query=' +\n query,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntentsSize(json.intentsSize)\n saveIntents(json.intentDTOList)\n return json.intentDTOList\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getAllPagingIntents(botId, query = '') {\n fetch(BASE_URL + '/intent/bot/' + botId + '?query=' + query, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getAllPagingIntentsForTriggers(botId, query) {\n fetch(\n BASE_URL + '/intent/bot/' + botId + '?includeFAQ=false&query=' + query,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getAllIntents(botId) {\n fetch(BASE_URL + '/intent/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getTrainingData(botId, page, size, shortName) {\n fetch(\n BASE_URL +\n '/bot/' +\n botId +\n '/training' +\n '?page=' +\n page +\n '&size=' +\n size +\n '&shortName=' +\n shortName,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveNlpRequests(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n 5000,\n )\n })\n}\n\nexport function getHistoryData(botId, page, size, shortName) {\n fetch(\n `${BASE_URL}/bot/${botId}/training/all?page=${page}&size=${size}&shortName=${shortName}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveNlpRequests(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting training data please ping support!',\n )\n })\n}\n\nexport function getIntentUserSays(intentId) {\n return fetch(BASE_URL + '/intent/' + intentId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 400) {\n response.text().then(text => alertSuccess(text))\n return\n }\n return logoutOnRequestOrResponseJson(response)\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intent please ping support!',\n )\n })\n}\n\nexport function createNewIntent(intent, intentsSize) {\n fetch(BASE_URL + '/intent', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(intent),\n })\n .then(response => {\n if (!response.ok) {\n throw response.json()\n }\n return logoutOnRequestOrResponseJson(response)\n })\n .then(json => {\n alertSuccess('Intent is created successfully.')\n addIntent(json)\n addIntentsSize(intentsSize)\n })\n .catch(function(error) {\n error.then(err => {\n alertError(`Create intent error: ${err.message}`, 10000)\n })\n })\n}\n\nexport function trainIntent(request, botId) {\n fetch(BASE_URL + '/bot/' + botId + '/training/', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(request),\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n updateTrainedNlpRequest(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateIntent(intent, callback) {\n fetch(BASE_URL + '/intent', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(intent),\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n alertSuccess('Intent is updated successfully.')\n updateExistedIntent(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteIntent(intentId, intentsSize) {\n fetch(BASE_URL + '/intent/' + intentId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n alertSuccess('Intent is deleted successfully.')\n deleteOldIntent(intentId)\n deleteOldIntentsSize(intentsSize)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n","import { smallTalkIntent } from './constants'\n\nexport const isValueSmallTalk = (value: string) => value?.includes(smallTalkIntent)\n\nexport const createIntentObject = (label: string, value: string, id: number) => ({ label, value, id })\n\nexport const useSelectIntents = intents => {\n const getIntentLabel = intent => `${intent.faq ? 'FAQ' : ''}${intent.name}`\n\n return intents.map(intent => createIntentObject(getIntentLabel(intent), intent.name, intent.id))\n}\n","export const smallTalkIntent = 'smalltalk.'\n","import React, { FC, useEffect, useState } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { inputChangeEvent, mapIntentSelectStateToProps } from './configs.module'\nimport { IntentSelectComponentProps, IntentSelectProps, SelectedIntent } from './types.module'\nimport { customStyles } from '../../../../uiKit/AtomSelect/styles'\nimport { getAllPagingIntents } from '../../api/nlp'\n\nimport classes from './styles.module.scss'\n\nimport { createIntentObject, isValueSmallTalk, useSelectIntents } from '../../hooks/useSelectIntents/useSelectIntents'\n\nconst IntentsSelect: FC = ({ match, intents, onElementSelected, value, id }) => {\n const [selectedOption, setSelectedOption] = useState(null as SelectedIntent)\n const [stateIntents, setStateIntents] = useState([])\n\n useEffect(() => {\n const mappedIntents = useSelectIntents(intents || [])\n if (isValueSmallTalk(value)) mappedIntents.push(getSelectedIntentObject())\n setStateIntents(mappedIntents)\n setSelectedOption(processSelectedOptionForStateChange())\n }, [])\n\n const botId = (match.params as any).botId\n\n const handleStateChange = (newOption: SelectedIntent) => {\n setSelectedOption(newOption)\n onElementSelected(newOption)\n getAllPagingIntents(botId)\n }\n\n const getSelectedIntentObject = () => createIntentObject(value, value, id)\n\n const modifyIntents = () => {\n return stateIntents.map(intent => ({ ...intent, disabled: isValueSmallTalk(intent.label) }))\n }\n\n const handleInputChange = (value: string, action) => {\n if (action.action === inputChangeEvent) getAllPagingIntents(botId, value)\n }\n\n const processSelectedOptionForStateChange = () => (value ? getSelectedIntentObject() : undefined)\n\n return (\n
\n \n
\n )\n}\n\nexport default withRouter(connect(mapIntentSelectStateToProps)(IntentsSelect))\n","export const mapIntentSelectStateToProps = ({ intents }) => ({ intents })\n\nexport const inputChangeEvent = 'input-change'\n","import React, { useEffect, useMemo, useState } from 'react'\nimport Select, { components } from 'react-select'\nimport ReactTooltip from 'react-tooltip'\nimport DetectableOverflow from 'react-detectable-overflow'\n\nimport { customStyles } from './styles'\nimport { connect } from 'react-redux'\nimport classes from './styles.module.scss'\nimport {OptionItemType} from '../../models/MessageTypes'\n\ninterface Props {\n flows: any\n value: string\n touched?: boolean\n onFocus?(event): void\n onChange(value: OptionItemType): void\n}\n\nconst AtomSelect: React.FC = ({ flows, value, touched, onFocus, onChange }) => {\n const [options, setOptions]: [OptionItemType[], any] = useState([])\n const [isOverflowed, setIsOverflowed]: [boolean, any] = useState(false)\n\n const atomValue = useMemo(() => {\n return options.find(({ value: val, label }) => val === value || label === value)\n }, [value, options])\n\n useEffect(() => {\n if (flows) {\n const options: OptionItemType[] = []\n\n flows.forEach(({ atoms }: any) => {\n if (atoms) {\n atoms.forEach(({ name, id }: any) => {\n options.push({ label: name, value: id })\n })\n }\n })\n\n setOptions(options)\n }\n }, [flows])\n\n const SingleValue = props => {\n return (\n \n {props.children}\n \n )\n }\n\n const handleOverflow = isOverflowed => {\n setIsOverflowed(isOverflowed)\n }\n\n const handleChange = value => {\n setIsOverflowed(false)\n onChange(value)\n }\n\n return (\n \n \n {isOverflowed && atomValue?.label && (\n \n )}\n \n )\n}\n\nconst mapStateToProps = (state: { flows: any }) => ({\n flows: state.flows,\n})\n\nexport default connect(mapStateToProps)(AtomSelect)\n","/**\n * Created by Admin on 08.02.2018.\n */\nimport React, { Component } from 'react'\nimport { createNewContext, updateContext } from '../api/context'\nimport DeleteTrigger from './DeleteTrigger'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles/index'\nimport { withRouter } from 'react-router-dom'\n\nimport IntentsSelect from './IntentSelect'\nimport { getAllPagingIntentsForTriggers } from '../api/nlp'\nimport AtomSelect from '../../../uiKit/AtomSelect/AtomSelect'\n\nconst styles = theme => ({\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n position: 'relative',\n },\n selectItem: {\n flexBasis: '33%',\n padding: 24,\n borderRight: '1px solid #EBEBEF',\n },\n desc: {\n fontWeight: 'bold',\n fontSize: 14,\n color: '#3A3F62',\n },\n states: {\n color: '#1658F3',\n fontSize: 14,\n },\n '@global': {\n '[class*=\"TriggerItem-mainSelected\" class*=\"TriggerItem-selectItem\":last-child ]': {\n borderRight: 0,\n },\n '.Select.has-value.Select--single > .Select-control .Select-value .Select-value-label': {\n color: '#1658F3 !important',\n fontSize: 14,\n },\n '.trashIcon': {\n position: 'absolute',\n right: -19,\n display: 'none',\n marginTop: -20,\n },\n '.selected-trigger:hover .trashIcon': {\n display: 'block',\n },\n },\n})\n\nclass TriggerItem extends Component {\n state = {\n triggerAtomId: this.props.modalTriggerId || null,\n context: null,\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { context } = nextProps\n\n if (!prevState.context && context) {\n return { context }\n }\n\n return null\n }\n\n handleChange = (name, value) => {\n if (name === 'previousAtom' || value !== null) {\n const context = JSON.parse(JSON.stringify(this.state.context))\n context[name] = value\n this.setState({ context: context }, () => {\n if (context.currentAtom !== null && context.intent !== null) {\n if (this.props.newContext) {\n createNewContext(context, this.props.match.params.botId, this.props.contextSize)\n this.props.changeNewContext()\n } else {\n updateContext(context, this.props.match.params.botId)\n }\n }\n })\n }\n }\n customSearch = e => {\n getAllPagingIntentsForTriggers(this.props.match.params.botId, e)\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n {this.state.context && (\n
\n
\n

Current Atom

\n this.handleChange('previousAtom', label)}\n />\n
\n
\n

Intent

\n this.handleChange('intent', value.value)}\n value={this.state.context.intent}\n />\n
\n
\n

New Atom

\n this.handleChange('currentAtom', label)}\n />\n
\n \n
\n )}\n
\n )\n }\n}\n\nTriggerItem.propTypes = {\n classes: PropTypes.object.isRequired,\n}\nexport default withRouter(withStyles(styles)(TriggerItem))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { Button } from '@material-ui/core'\nimport { getModalStyle } from '../../flowBuilder/components/messages/NewMessage'\nimport { withRouter } from 'react-router-dom'\nimport {\n createNewContext,\n getAtomContexts,\n updateContext,\n} from '../api/context'\nimport { connect } from 'react-redux'\nimport TriggerItem from './TriggerItem'\nimport { getIntents } from '../api/nlp'\nimport { PlusIcon } from '../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: '60%',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n },\n selectItem: {\n flexBasis: '30%',\n padding: 24,\n },\n title: {\n textAlign: 'center',\n fontSize: 24,\n color: '#3A3F62',\n fontWeight: 'bold',\n },\n createIntentButton: {\n background: 'linear-gradient(312.17deg, #5A98F7 3.33%, #1658F3 96.71%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n height: 43,\n width: 43,\n padding: 0,\n minWidth: 43,\n borderRadius: 25,\n },\n})\n\nclass AtomNLPModal extends React.Component {\n state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n triggerAtom: {},\n }\n\n componentDidMount() {\n getAtomContexts(this.props.atomId)\n getIntents(this.props.match.params.botId, false)\n }\n\n createTrigger() {\n const context = {\n previousAtom: this.state.currentAtom,\n intent: this.state.intent,\n currentAtom: this.state.newAtom,\n }\n if (this.props.modalTriggerId == null) {\n createNewContext(context, this.props.match.params.botId)\n } else {\n context.id = this.props.modalTriggerId\n updateContext(context, this.props.match.params.botId)\n }\n }\n\n save() {\n // this.props.closeAtomNLP();\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page })\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value })\n }\n\n openTriggerModal(contextId) {\n this.setState({\n modalTriggerId: contextId,\n triggerAtom: {\n id: this.props.atomId,\n name: this.props.atomName,\n },\n open: true,\n })\n }\n\n closeTriggerModal = () => {\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
\n {this.props.contexts != null && (\n
\n \n

Triggers

\n \n this.createTrigger()}\n variant=\"raised\">\n \n \n

\n Add new{' '}\n Trigger\n

\n
\n
\n\n
\n {this.props.contexts &&\n this.props.contexts.map(context => (\n
\n \n
\n ))}\n
\n
\n )}\n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n contexts: state.contexts,\n intents: state.intents,\n})\n\nAtomNLPModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AtomNLPModal)),\n)\n","import { store } from '../../../index'\n\nexport const ADD_NEW_TAG = 'ADD_NEW_TAG'\nexport const SAVE_TAGS = 'SAVE_TAGS'\n\nexport const saveTags = tags => {\n store.dispatch({\n type: SAVE_TAGS,\n tags,\n })\n}\n\nexport const addNewTag = tag => {\n store.dispatch({\n type: ADD_NEW_TAG,\n tag,\n })\n}\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { saveTags, addNewTag } from '../actions/tags'\n\nexport function loadTags(botId) {\n fetch(`${BASE_URL}/marketing/${botId}/tags`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveTags(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function createTag(tag, botId, callback) {\n fetch(`${BASE_URL}/marketing/${botId}/tags`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(tag),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n addNewTag(json)\n if (callback) callback()\n alertSuccess('Tag is created successfully')\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n padding: '4px 0',\n color: theme.palette.text.header,\n },\n red: {\n border: '1px solid #FF624C',\n color: '#FF624C',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 24px',\n maxHeight: 45,\n width: 400,\n },\n})\n\nclass InputHolder extends React.Component {\n render() {\n const {\n classes,\n defaultValue,\n placeholder,\n holderStyle,\n inputStyle,\n maxLength,\n rtl,\n } = this.props\n return (\n
\n 0 ? maxLength : 255}\n defaultValue={defaultValue}\n placeholder={placeholder}\n type={this.props.type ? this.props.type : 'text'}\n onChange={e => this.props.onChange(e)}\n onKeyPress={e => {\n this.props.handleKeyPress && this.props.handleKeyPress(e)\n }}\n onBlur={e => {\n this.props.onBlur && this.props.onBlur(e)\n }}\n dir={rtl && 'rtl'}\n />\n
\n )\n }\n}\n\nInputHolder.propTypes = {\n classes: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired,\n maxLength: PropTypes.number.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(InputHolder))\n","/**\n * Created by Admin on 25.05.2018.\n */\nimport React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport PropTypes from 'prop-types'\n\nconst styles = theme => ({\n primary: {\n padding: '10px 16px',\n color: theme.palette.primary.contrastText,\n background: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n border: '1px solid',\n outline: 'none',\n cursor: 'pointer',\n borderRadius: 10,\n lineHeight: 'normal',\n fontFamily: 'Lato',\n fontSize: 14,\n '&:hover': {},\n '&:disabled': {\n backgroundColor: theme.palette.primary.light,\n borderColor: theme.palette.primary.light,\n },\n },\n secondary: {\n padding: '10px 16px',\n color: theme.palette.primary.main,\n background: theme.palette.primary.contrastText,\n borderColor: theme.palette.primary.main,\n border: '1px solid',\n outline: 'none',\n cursor: 'pointer',\n borderRadius: 10,\n lineHeight: 'normal',\n fontFamily: 'Lato',\n fontSize: 14,\n '&:hover': {},\n '&:disabled': {\n backgroundColor: theme.palette.primary.background,\n },\n },\n default: {\n padding: '8px 16px',\n background: theme.palette.primary.contrastText,\n border: '1px solid',\n borderColor: theme.palette.default.gray,\n color: theme.palette.text.header,\n borderRadius: 10,\n fontSize: 14,\n lineHeight: 1,\n '&:hover': {\n cursor: 'pointer',\n },\n },\n noStyle: {\n color: theme.palette.text.header,\n textDecoration: 'underline',\n border: 'none',\n background: 'transparent',\n padding: '0',\n fontSize: 14,\n fontWeight: '600',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n sizeSm: {\n padding: '8px 16px',\n },\n sizeLg: {\n padding: '14px 28px',\n },\n cancel: {\n backgroundColor: 'unset',\n outline: 'none',\n cursor: 'pointer',\n fontSize: 14,\n color: '#616581',\n padding: '8px 28px',\n border: 'none',\n },\n empty: {\n background: theme.palette.primary.contrastText,\n color: theme.palette.primary.main,\n border: '1px solid',\n borderColor: theme.palette.primary.main,\n },\n})\n\nclass SubmitButton extends React.Component {\n render() {\n const { classes, type, size } = this.props\n const classButton = `${type ? classes[type] : classes.primary} ${\n this.props.empty && classes.empty\n }`\n const buttonSizeClass =\n size === 'sm' ? classes.sizeSm : size === 'lg' ? classes.sizeLg : ''\n\n return (\n this.props.onClick && this.props.onClick(e)}\n style={this.props.styles}>\n {this.props.title}\n \n )\n }\n}\n\nSubmitButton.propTypes = {\n classes: PropTypes.object,\n styles: PropTypes.object,\n title: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n empty: PropTypes.bool,\n onClick: PropTypes.func,\n}\n\nexport default withStyles(styles, { withTheme: true })(SubmitButton)\n","/**\n * Created by serhiy on 12.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { createTag } from '../../api/tag'\nimport { alertError } from '../../../../api'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n buttonHolder: {\n display: 'flex',\n justifyContent: 'center',\n },\n})\n\nclass TagModal extends React.Component {\n changeName = e => {\n this.setState({ tagValue: e.target.value })\n }\n\n createTag = () => {\n if (\n !this.props.allTags\n .map(function(tag) {\n return tag.value\n })\n .includes(this.state.tagValue)\n ) {\n createTag(\n { value: this.state.tagValue },\n this.props.match.params.botId,\n this.props.closeTagModal,\n )\n } else {\n alertError('Tag with this name already exists')\n }\n }\n\n constructor(props) {\n super(props)\n this.state = {\n tagValue: '',\n }\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n this.changeName(e)}\n />\n
\n this.createTag()} title=\"Create\" />\n
\n
\n )\n }\n}\n\nTagModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(TagModal))\n","import React, { Component } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Select from 'react-select'\nimport Modal from '../../../../uiKit/Modal'\nimport TagModal from './TagModal'\n\nconst styles = theme => ({\n createNewTagLink: {\n marginTop: 10,\n fontSize: 12,\n cursor: 'pointer',\n fontFamily: 'Lato',\n textDecoration: 'underline',\n width: 'max-content',\n },\n})\n\nclass Tags extends Component {\n constructor(props) {\n super(props)\n this.state = {\n openTagModal: false,\n }\n }\n\n handleChangeTags = event => {\n this.props.onChange(event)\n }\n\n handleDelete = data => () => {\n this.setState(\n state => {\n const tagsSelected = [...state.tagsSelected]\n const chipToDelete = tagsSelected.indexOf(data)\n tagsSelected.splice(chipToDelete, 1)\n return { tagsSelected }\n },\n () => this.props.payload(this.state.tagsSelected),\n )\n }\n\n openCreateTagModal = () => {\n this.setState({ openTagModal: true })\n }\n\n closeCreateTagModal = () => {\n this.setState({ openTagModal: false })\n }\n\n convertValuesToOptions(values) {\n return values.map(tag => {\n return {\n value: tag.value,\n label: tag.value,\n id: tag.id,\n }\n })\n }\n\n render() {\n const { classes, style } = this.props\n\n return (\n
\n tag2.id - tag1.id,\n )}\n />\n {!this.props.disableNew && (\n \n Create new tag\n

\n )}\n \n \n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n tags: state.tags,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Tags))\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport Tags from './Tags'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = {\n container: {\n marginTop: 10,\n padding: 10,\n width: '90%',\n },\n flowBuilderTags: {\n width: '100%',\n },\n}\n\nclass TagAction extends React.Component {\n render() {\n return (\n
\n

Tags

\n this.props.onChange(value)}\n value={this.props.value}\n style={styles.flowBuilderTags}\n styleSelect={styles.flowBuilderTags}\n />\n
this.props.onDelete()}>\n \"delete\"\n
\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default withRouter(connect(mapStateToProps)(TagAction))\n","import { store } from '../../../index'\n\nexport const SAVE_BOT_ACCESSORS = 'SAVE_BOT_ACCESSORS'\n\nexport const saveBotAccessors = botAccessors => {\n store.dispatch({\n type: SAVE_BOT_ACCESSORS,\n botAccessors,\n })\n}\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { saveBotAccessors } from '../actions/botAccessors'\n\nexport function saveTeamHours(id, settings) {\n fetch(BASE_URL + '/bot/' + id + '/workingHours', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(settings),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(function(error) {\n alertError('Something goes wrong. Ping administrator.')\n })\n}\n\nexport function loadBotAccessors(botId) {\n fetch(BASE_URL + '/botAccesses/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBotAccessors(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateBotAccessorRole(botId, accessorId, inviteAccessId, role) {\n const url =\n accessorId === null\n ? `${BASE_URL}/botAccesses/${botId}/pending-user/${inviteAccessId}?role=${role}`\n : `${BASE_URL}/botAccesses/${botId}/${accessorId}?role=${role}`\n\n fetch(url, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n })\n .then(response => {\n return response\n })\n .then(() => {\n loadBotAccessors(botId)\n alertSuccess(\"User's settings has been successfully updated.\", 3000)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateBotAccessorSupportRequestNotifying(\n botId,\n accessorId,\n supportRequestNotify,\n) {\n fetch(\n BASE_URL +\n '/botAccesses/' +\n botId +\n '/' +\n accessorId +\n '?supportRequestNotify=' +\n supportRequestNotify,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n },\n )\n .then(response => {\n return response\n })\n .then(() => {\n loadBotAccessors(botId)\n alertSuccess(\"User's settings has been successfully updated.\", 3000)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function removeBotAccessor(botId, accessorId, inviteAccessId) {\n const url =\n accessorId == null\n ? `${BASE_URL}/botAccesses/${botId}/pending-user/${inviteAccessId}`\n : `${BASE_URL}/botAccesses/${botId}/${accessorId}`\n\n fetch(url, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => {\n return response\n })\n .then(() => {\n loadBotAccessors(botId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getBotLanguages(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/language/info`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(botLanguages => {\n const { defaultLanguage, activeLanguages } = botLanguages\n let index = -1\n activeLanguages.map(language => {\n if (language.id === defaultLanguage.id)\n index = activeLanguages.indexOf(language)\n })\n if (index !== -1) activeLanguages.splice(index, 1)\n defaultLanguage.isDefault = true\n activeLanguages.unshift(defaultLanguage)\n\n return botLanguages\n })\n .catch(error => console.log(error))\n}\n\n//TODO\nexport function addLanguage(botId, languageCode) {\n return fetch(\n `${BASE_URL}/bot/${botId}/language?languageCode=${languageCode}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n },\n )\n .then(response => {\n if (response.ok) {\n alertSuccess('Language added successfully', 3000)\n } else {\n response\n .json()\n .then(errorMessage => {\n if (errorMessage.message) {\n alertError(errorMessage.message)\n }\n })\n .catch(() => {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n }\n return response\n })\n .catch(error => console.log(error))\n}\n\nexport function deleteLanguage(botId, languageCode) {\n return fetch(\n `${BASE_URL}/bot/${botId}/language?languageCode=${languageCode}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n },\n )\n .then(response => {\n if (response.ok) {\n alertSuccess('Language deleted', 3000)\n } else {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n }\n return response\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(error => console.log(error))\n}\n","export const styles = () => ({\n container: {},\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SearchIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { SearchIcon } from '../icons/SearchIcon'\n\nconst Search = props => {\n const { classes, value, onChange, style, placeholder, onKeyDown } = props\n\n return (\n
\n onKeyDown && onKeyDown(event)}\n />\n
\n \n
\n
\n )\n}\nSearch.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(Search)\n","export const styles = () => ({\n container: {\n position: 'relative',\n },\n input: {\n width: '100%',\n height: 36,\n outline: 'none',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n boxSizing: 'border-box',\n borderRadius: 4,\n padding: '8px 38px 8px 12px',\n },\n icon: {\n position: 'absolute',\n top: 4,\n right: 12,\n },\n})\n","export const styles = () => ({\n arrow: {\n marginLeft: 10\n },\n})\n\nexport const customStyles = {\n control: (provided, state) => ({\n ...provided,\n width: 210,\n border: 'none',\n outline: 'none',\n boxShadow: 'none',\n backgroundColor: 'transparent',\n '&:hover': {\n border: 'none',\n boxShadow: 'none',\n },\n }),\n indicatorSeparator: (provided, state) => ({\n ...provided,\n backgroundColor: 'transparent',\n }),\n singleValue: (provided, state) => ({\n ...provided,\n color: '#1658F3',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n color: '#1658F3',\n display: 'none',\n cursor: 'pointer',\n '&:hover': {\n color: '#1658F3',\n },\n }),\n}\n","import React from 'react'\n\nexport const LanguageArrowDown = () => {\n return (\n \n \n \n\n )\n}\n","import React from 'react'\n\nexport const LanguageArrowUp = () => {\n return (\n \n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { customStyles, styles } from './styles'\nimport { getBotLanguages } from '../../tabs/settings/api/settings'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport Select, { components } from 'react-select'\nimport { LanguageArrowDown } from '../icons/LanguageArrowDown'\nimport { LanguageArrowUp } from '../icons/LanguageArrowUp'\n\nconst LaguageSelector = props => {\n const { activeBotId, onChange, value, classes } = props\n const [activeLanguages, setActiveLanguages] = useState([])\n const [isOpen, setIsOpen] = useState(false)\n const [selectedLanguageOption, setSelectedLanguageOption] = useState({ label: 'English', value: 'en' })\n\n useEffect(() => {\n if (activeBotId) {\n getBotLanguages(activeBotId).then(botLanguages => {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n originValue: defaultLanguage.shortName,\n rtl: defaultLanguage.isRtl,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n rtl: language.isRtl,\n }\n })\n onChange(selectedOption)\n setActiveLanguages(languageOptions)\n setSelectedLanguageOption(selectedOption)\n })\n }\n }, [activeBotId])\n\n const SingleValue = props => {\n return (\n \n {props.children}\n {isOpen ? : }\n \n )\n }\n\n return (\n setIsOpen(true)}\n onMenuClose={() => setIsOpen(false)}\n />\n )\n}\n\nLaguageSelector.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(LaguageSelector)))\n","/* eslint-disable */\nimport React from 'react'\n\nexport const PlusIcon = () => {\n // eslint-disable-next-line react/prop-types\n\n return (\n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { PlusIcon } from '../../icons/PlusIcon'\n\nconst SecondaryButton = props => {\n const { classes, onClick, styles, title } = props\n\n return (\n
onClick && onClick(e)} style={styles}>\n \n {title}\n \n
\n )\n}\n\nSecondaryButton.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(SecondaryButton)\n","export const styles = theme => ({\n button: {\n cursor: 'pointer',\n fontSize: 14,\n padding: '8px 16px',\n border: '1px solid rgba(22, 88, 243, 1)',\n borderRadius: 4,\n color: 'rgba(22, 88, 243, 1)',\n width: 'fit-content',\n fontWeight: 500,\n backgroundColor: '#ffffff',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TrashIcon = () => {\n\n return (\n \n \n \n \n \n \n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { TrashIcon } from '../icons/TrashIcon'\nimport ReactTooltip from 'react-tooltip'\n\nconst AttributeSelectItem = props => {\n const {\n classes,\n attribute,\n handleUpdateAttributeName,\n handleUpdateAttributeValue,\n handleEnterAttributeName,\n handleFocus,\n handleDeleteAttribute,\n focus,\n error,\n isRtl,\n } = props\n const [isExtraWidth, setIsExtraWidth] = useState(false)\n const currentAttribute = useRef(null)\n const attributeContainer = useRef(null)\n\n useEffect(() => {\n setIsExtraWidth(\n currentAttribute?.current?.offsetWidth >=\n attributeContainer?.current?.offsetWidth,\n )\n }, [focus])\n\n return (\n
\n
\n {focus === attribute.id || !attribute.name ? (\n
\n handleUpdateAttributeName(e, attribute.id)}\n onKeyPress={e => handleEnterAttributeName(e)}\n onBlur={() => handleFocus(false)}\n placeholder={'none'}\n autoFocus={true}\n />\n {error && (\n

\n This attribute name is already used\n

\n )}\n
\n ) : (\n attribute.isNew && handleFocus(attribute.id)}>\n {attribute.name}\n {isExtraWidth && (\n \n )}\n

\n )}\n
\n\n handleUpdateAttributeValue(e, attribute.id)}\n />\n {attribute.isNew && (\n handleDeleteAttribute(attribute.id)}>\n \n
\n )}\n \n )\n}\nAttributeSelectItem.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(AttributeSelectItem)\n","export const styles = () => ({\n attributeWrap: {\n display: 'flex',\n flexFlow: 'row',\n marginBottom: 9,\n '&:hover > div': {\n display: 'flex',\n },\n },\n attributeNameWrap: {\n width: 194,\n display: 'flex',\n alignItems: 'center',\n height: 38,\n },\n inputWrap: {\n position: 'relative',\n },\n input: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n outline: 'none',\n height: 38,\n borderRadius: 4,\n padding: '8px 12px',\n color: 'rgba(53, 64, 82, 0.7)',\n },\n warning: {\n position: 'absolute',\n color: '#FF6666',\n fontSize: 12,\n },\n attributeName: {\n backgroundColor: '#5A98F7',\n color: '#ffffff',\n borderRadius: 50,\n padding: '1px 8px',\n fontSize: 14,\n height: 24,\n width: 'fit-content',\n margin: 0,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'none',\n alignItems: 'center',\n marginLeft: 4,\n },\n tooltip: {\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { deepCopyFunction } from '../../../../../helpers/deepCopyFunction'\nimport AttributeSelectItem from '../../../../../uiKit/AttributeSelectItem/AttributeSelectItem'\n\nimport { styles } from './styles'\n\nconst AttributesModalList = props => {\n const {\n classes,\n attributes,\n searchValue,\n setAttributes,\n error,\n setShowError,\n isRtl,\n allAttributes\n } = props\n\n const [focus, setFocus] = useState(null)\n\n const handleFocus = focus => {\n if (!error) setFocus(focus)\n }\n\n const handleUpdateAttributeValue = (e, attributeId) => {\n const attributesUpdate = deepCopyFunction(attributes).map(attribute => {\n if (attribute.id === attributeId) {\n attribute.defaultValue = e.target.value\n }\n return attribute\n })\n\n setAttributes(attributesUpdate)\n }\n\n const handleUpdateAttributeName = (e, attributeId) => {\n const attributesUpdate = deepCopyFunction(attributes).map(attribute => {\n if (attribute.id === attributeId) {\n attribute.name = e.target.value\n attribute.isValid = true\n }\n return attribute\n })\n const error = allAttributes.some(\n attribute => attribute.name === e.target.value,\n )\n\n setShowError(error)\n setAttributes(attributesUpdate)\n setFocus(attributeId)\n }\n\n const handleDeleteAttribute = attributeId => {\n const attributesUpdate = deepCopyFunction(attributes).filter(\n attribute => attribute.id !== attributeId,\n )\n\n setAttributes(attributesUpdate)\n }\n\n const handleEnterAttributeName = e => {\n if (e.key === 'Enter') {\n handleFocus(false)\n }\n }\n\n return (\n <>\n
\n

Name

\n

Default value

\n
\n {attributes\n .filter(attribute => attribute.name.includes(searchValue))\n .map(attribute => (\n \n ))}\n \n )\n}\n\nAttributesModalList.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(AttributesModalList)\n","export const styles = () => ({\n labels: {\n display: 'flex',\n '& p': {\n width: '204px',\n fontSize: 14,\n fontWeight: '700',\n color: '#354052',\n },\n },\n})\n","import { store } from '../../../index'\n\nexport const SET_ATTRIBUTES = 'SET_ATTRIBUTES'\nexport const ADD_ATTRIBUTE = 'ADD_ATTRIBUTE'\nexport const CLEAR_ATTRIBUTES = 'CLEAR_ATTRIBUTES'\n\nexport const setAttributes = attributes => {\n store.dispatch({\n type: SET_ATTRIBUTES,\n payload: {\n attributes,\n },\n })\n}\n\nexport const addAttribute = attribute => {\n store.dispatch({\n type: ADD_ATTRIBUTE,\n payload: {\n attribute,\n },\n })\n}\n\nexport const clearAttributes = attribute => {\n store.dispatch({\n type: CLEAR_ATTRIBUTES,\n payload: {\n attribute,\n },\n })\n}\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { setAttributes, addAttribute } from '../actions/attributes'\n\nexport function getAttributes(botId, lang) {\n return fetch(`${BASE_URL}/bot/${botId}/attributes?lang=${lang}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n if (json.data) setAttributes(json.data)\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function updateAttributes(botId, attributes, lang) {\n return fetch(`${BASE_URL}/bot/${botId}/attributes?lang=${lang}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(attributes),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setAttributes(json.data)\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function getAttribute(botId, attributeId, lang) {\n return fetch(\n `${BASE_URL}/bot/${botId}/attributes/${attributeId}/values?lang=${lang}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n return json.data\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function createAttribute(botId, attribute) {\n return fetch(`${BASE_URL}/bot/${botId}/attributes`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(attribute),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n addAttribute(json.data)\n return json.data\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n","export const styles = theme => ({\n paper: {\n position: 'absolute',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n outline: 'none',\n width: 480,\n borderRadius: 10,\n },\n btnClose: {\n position: 'absolute',\n right: '24px',\n top: '24px',\n color: '#B0B2C0',\n cursor: 'pointer',\n },\n title: {\n lineHeight: 'normal',\n fontSize: 24,\n color: theme.palette.primary.headerText,\n marginRight: 8,\n },\n searchWrap: {\n margin: '24px 0px 0px',\n },\n header: {\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n padding: '24px 16px',\n },\n body: {\n padding: '24px',\n height: 'calc(80vh - 235px)',\n maxHeight: '408px',\n overflowY: 'scroll',\n },\n footer: {\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n padding: '24px',\n },\n buttonsWrap: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n titleWrap: {\n display: 'flex',\n },\n noAttribute: {\n lineHeight: '22px',\n fontSize: 14,\n color: theme.palette.primary.text,\n height: '100%',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Modal from '@material-ui/core/Modal'\nimport Close from '@material-ui/icons/Close'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { getModalStyle } from '../../../../../uiKit/Modal'\nimport Search from '../../../../../uiKit/Search/Search'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport LaguageSelector from '../../../../../uiKit/LaguageSelector/LaguageSelector'\nimport SecondaryButton from '../../../../../uiKit/buttons/SecondaryButton/SecondaryButton'\n\nimport AttributesModalList from '../AttributesModalList/AttributesModalList'\n\nimport { deepCopyFunction } from '../../../../../helpers/deepCopyFunction'\nimport { getModifiedObject } from '../../../../../helpers/getModifiedObject'\n\nimport { alertSuccess } from '../../../../../api'\nimport { getAttributes, updateAttributes } from '../../../api/attributes'\n\n\nimport { styles } from './styles'\n\n\nconst style = {\n top: 50,\n left: 50,\n overflowY: 'visible',\n}\n\nconst AttributesModal = props => {\n const { classes, onClose, attributes, open, activeBotId } = props\n const [searchValue, setSearchValue] = useState('')\n const [attributesCopy, setAttributesCopy] = useState([])\n const [language, setLanguage] = useState(null)\n const [error, setShowError] = useState(null)\n\n useEffect(() => {\n if (language?.value) {\n getAttributes(activeBotId, language?.value)\n }\n }, [language?.value])\n\n useEffect(() => {\n const chatbotAttributes = attributes?.filter(\n attribute => attribute?.type === 'CHATBOT',\n )\n setAttributesCopy(chatbotAttributes)\n setShowError(false)\n }, [attributes, open])\n\n const handleAddAttribute = () => {\n const attributesUpdate = deepCopyFunction(attributesCopy)\n const newAttribute = {\n name: '',\n defaultValue: '',\n type: 'CHATBOT',\n isNew: true,\n isValid: true,\n id: Math.random(),\n }\n\n attributesUpdate.push(newAttribute)\n setAttributesCopy(attributesUpdate)\n }\n\n const handleSaveAttributes = () => {\n if (handleValidate()) {\n const chatbotAttributes = deepCopyFunction(attributesCopy)\n ?.filter(\n attribute =>\n getModifiedObject(attributes, attribute) && attribute.name,\n )\n ?.map(attribute => {\n if (!attributes.find(x => x.id === attribute.id)) {\n const { name, defaultValue, type } = attribute\n\n return { name, defaultValue, type }\n }\n return attribute\n })\n\n updateAttributes(activeBotId, chatbotAttributes, language?.value)\n .then(() => alertSuccess('Attributes are updated successfully'))\n .then(() => onClose())\n }\n }\n\n const handleValidate = () => {\n const attributesUpdate = deepCopyFunction(attributesCopy)?.map(\n attribute => {\n if (attribute.isNew && !attribute.name) {\n attribute.isValid = false\n }\n return attribute\n },\n )\n\n const isValid = attributesUpdate\n ?.filter(attribute => attribute.isNew)\n ?.every(attribute => attribute.isValid)\n\n setAttributesCopy(attributesUpdate)\n\n return isValid\n }\n\n return (\n \n
\n
\n \n
\n

Manage attributes

\n \n
\n setSearchValue(e.target.value)}\n style={{ margin: '24px 0px 0px' }}\n placeholder={'Search attributes...'}\n />\n
\n
\n {attributesCopy.length ? (\n \n ) : (\n

\n You have no chatbot attributes yet\n

\n )}\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n )\n}\n\nAttributesModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AttributesModal)),\n)\n","export const getModifiedObject = (array, object) => {\n return !array.find(\n x => Object.entries(x).toString() === Object.entries(object).toString(),\n )\n}\n","export const SPACE_KEY = 32\nexport const ARROW_DOWN_KEY = 40\nexport const ARROW_UP_KEY = 38\nexport const ARROW_LEFT_KEY = 37\nexport const ARROW_RIGHT_KEY = 39\nexport const ENTER_KEY = 13\nexport const DELETE_KEY = 46\nexport const BACKSPACE_KEY = 8\nexport const ZERO_KEY = 48\nexport const NINE_KEY = 57\n","import React, { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport Autocomplete from 'react-autocomplete'\nimport { getAttribute } from '../../tabs/settings/api/attributes'\nimport { withRouter } from 'react-router-dom'\nimport { ClickAwayListener, withStyles } from '@material-ui/core'\nimport { styles } from './styles'\nimport { connect } from 'react-redux'\nimport { BACKSPACE_KEY, DELETE_KEY, ENTER_KEY } from '../../constants/keyCodes'\n\nconst InputAutosuggest = props => {\n const {\n placeholder,\n attributeId,\n value,\n onChange,\n activeBotId,\n style,\n classes,\n containerStyle,\n menuStyle,\n onBlur,\n error,\n } = props\n const [suggestions, setAutoSuggest] = useState([])\n const [focus, setFocus] = useState(false)\n const [upward, setUpward] = useState(false)\n\n const autocompleteRef = useRef(null)\n\n //buttonPos?.top + buttonPos?.height\n useEffect(() => {\n if (attributeId) {\n getAttribute(activeBotId, attributeId, 'en').then(data => {\n setAutoSuggest(data || [])\n })\n }\n }, [attributeId])\n\n useEffect(() => {\n const menuPos = autocompleteRef?.current?.firstChild?.childNodes[1]?.getBoundingClientRect()\n setUpward(menuPos?.top + menuPos?.height > window.innerHeight)\n }, [focus])\n\n const handleKeyUp = event => {\n const key = event.keyCode || event.charCode\n\n if ((key === DELETE_KEY || key === BACKSPACE_KEY) && !value) {\n setFocus(true)\n }\n }\n\n const handleKeyPress = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ENTER_KEY) {\n setFocus(!focus)\n }\n }\n\n const getItemValue = suggestion => suggestion\n\n const renderItem = (item, isHighlighted) => {\n return (\n
\n {item}\n
\n )\n }\n\n const renderInput = props => {\n return (\n setFocus(true)}\n onBlur={handleBlur}\n />\n )\n }\n\n const renderMenu = items => {\n const style = {\n display: !items.length && 'none',\n bottom: upward && '46px',\n top: !upward && '46px',\n }\n\n return
\n }\n\n const onSelect = value => {\n const newValue = {\n target: {\n value,\n },\n }\n\n onChange(newValue)\n setFocus(false)\n }\n\n const handleBlur = () => {\n if (onBlur) onBlur()\n }\n\n const filterSuggestions = suggestion => {\n return suggestion.toLowerCase().includes(value?.toLowerCase())\n }\n\n return (\n
\n setFocus(false)}>\n \n \n
\n )\n}\n\nInputAutosuggest.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(InputAutosuggest)))\n","export const styles = () => ({\n input: {\n outline: 'none',\n width: '100%',\n height: 38,\n borderRadius: 4,\n fontSize: 14,\n padding: '8px 12px',\n border: '1px solid #d7d8df',\n '&:hover': {\n border: '1px solid rgba(53, 64, 82, 0.5)',\n },\n '&::placeholder': {\n color: '#999',\n },\n },\n item: {\n color: '#354052',\n padding: '8px 12px',\n },\n menu: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n background: 'rgba(255, 255, 255, 0.9)',\n fontSize: '90%',\n position: 'absolute',\n overflowY: 'scroll',\n overflowX: 'hidden',\n zIndex: 1000,\n cursor: 'pointer',\n borderRadius: 4,\n width: '100%',\n maxHeight: 210\n },\n container: {\n position: 'relative',\n },\n})\n","import { useEffect, useRef } from 'react'\n\nexport function usePrevious(value) {\n const ref = useRef()\n useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n","export const DEFAULT = 'DEFAULT'\nexport const CHATBOT = 'CHATBOT'\nexport const WIDGET = 'WIDGET'\nexport const FACEBOOK = 'FACEBOOK'\nexport const WHATSAPP = 'WHATSAPP'\nexport const TWILIO = 'TWILIO'\n","import {\n CHATBOT,\n FACEBOOK,\n TWILIO,\n WHATSAPP,\n WIDGET,\n} from '../constants/attributeTypes'\n\nexport const getAttributeColor = type => {\n switch (type) {\n case CHATBOT:\n return '#5A98F7'\n case WIDGET:\n return '#1658F3'\n case FACEBOOK:\n return '#1877F2'\n case WHATSAPP:\n return '#33D26B'\n case TWILIO:\n return '#F22F46'\n default:\n return '#5A98F7'\n }\n}\n","export const FormatOption = (options, type, allowedAttributes) => {\n return options\n .filter(option => option.type === type)\n .filter(option => {\n if (allowedAttributes?.length) {\n return allowedAttributes.includes(option.name)\n }\n return true\n })\n .map(option => {\n return {\n label: option.name,\n value: option.id,\n type: option.type,\n description: option.description,\n }\n })\n}\n","export const styles = () => ({\n attributeNameWrap: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n height: 38,\n minWidth: 79,\n },\n inputWrap: {\n width: '100%',\n position: 'relative',\n display: 'inline-block',\n },\n attributeName: {\n backgroundColor: '#5A98F7',\n color: '#ffffff',\n borderRadius: 50,\n padding: '1px 8px',\n fontSize: 14,\n height: 24,\n width: 'fit-content',\n margin: 0,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n button: {\n fontSize: 14,\n color: '#1658F3',\n padding: '8px 0px',\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n textAlign: 'center',\n cursor: 'pointer',\n },\n addAttibute: {\n padding: '8px 12px',\n backgroundColor: 'rgba(90, 152, 247, 0.1)',\n cursor: 'pointer',\n },\n optionTitle: {\n color: 'rgba(53, 64, 82, 0.7)',\n fontSize: 14,\n margin: 0,\n textAlign: 'start',\n },\n option: {\n margin: '4px 0px 0px',\n color: '#ffffff',\n padding: '1px 8px',\n borderRadius: 50,\n width: 'fit-content',\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: '#5A98F7',\n },\n customOption: {\n color: '#ffffff',\n borderRadius: 50,\n padding: '1px 8px',\n height: 24,\n width: 'fit-content',\n margin: '5px 12px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n tooltip: {\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n})\n\nexport const customStyles = (required, styles) => ({\n control: (provided, state) => {\n const error =\n required &&\n !state.hasValue &&\n !state.isFocused &&\n state.selectProps.touched\n\n return {\n ...provided,\n ...styles,\n width: '100%',\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: (provided, state) => ({\n ...provided,\n backgroundColor: '#ffffff',\n display: 'none',\n }),\n singleValue: (provided, state) => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n color: '#ffffff',\n display: 'none',\n cursor: 'pointer',\n '&:hover': {\n color: '#ffffff',\n },\n }),\n groupHeading: base => ({\n ...base,\n color: '#354052',\n fontSize: 14,\n textTransform: 'none',\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n padding: '2px 0px',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n width: '100%',\n overflowX: 'hidden',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n },\n }\n },\n menu: (provided, state) => ({\n ...provided,\n width: '100%',\n minWidth: 200,\n maxHeight: 250,\n padding: 0,\n }),\n menuList: provided => ({\n ...provided,\n padding: 0,\n overflowY: 'scroll',\n overflowX: 'hidden',\n maxHeight: 200,\n }),\n placeholder: (provided, state) => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n noOptionsMessage: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n clearIndicator: provided => ({\n ...provided,\n display: 'none',\n }),\n})\n","export const container = {\n width: 200,\n height: 314,\n}\n\nexport const ATTRIBUTE_REGEX = /{{[^{]*?}}/g\nexport const ATTRIBUTE_REGEX_OR_OPEN_BRACKETS = /{{[^{]*?}}|{{/g\nexport const ATTRIBUTE_REGEX_INCLUDE = /({{[^{]*?}})/g\nexport const NOT_ASTERISK_REGEX = '[^*]+'\nexport const EMPTY_BRACKETS = ''\nexport const OPEN_BRACKET = '{'\nexport const CLOSE_BRACKET = '}'\nexport const ASTERISK = '*'\nexport const CLOSE_PAIR_BRACKET = '}}'\nexport const OPEN_PAIR_BRACKET = '{{'\nexport const OPEN_OR_CLOSE_BRACKET = /{|}/g\n","export const getScrollableParent = ele => {\n return !ele || ele === document.body\n ? document.body\n : (ele.id === 'scrollable' ? ele : getScrollableParent(ele.parentNode))\n}\n","import React, { useContext, useEffect, useRef, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport Select, { components } from 'react-select'\nimport { usePrevious } from '../../hooks/usePrevious'\nimport { getAttributeColor } from '../../helpers/getAttributeColor'\nimport AttributesModal from '../../tabs/settings/components/general/AttributesModal/AttributesModal'\nimport { FormatOption } from '../../helpers/formatOption'\nimport { styles, customStyles } from './styles'\nimport { createAttribute } from '../../tabs/settings/api/attributes'\nimport { CHATBOT, DEFAULT, FACEBOOK, TWILIO, WHATSAPP, WIDGET } from '../../constants/attributeTypes'\nimport ReactTooltip from 'react-tooltip'\nimport { SaveTimeContext } from '../../tabs/flowBuilder/components/MessagesWrap/MessagesWrap'\nimport { EMPTY_BRACKETS, OPEN_OR_CLOSE_BRACKET } from '../InputWithParams/config'\nimport { alertError } from '../../api'\nimport { getScrollableParent } from '../../helpers/getScrollableParent'\n\nconst AttributeSelect = props => {//NOSONAR\n const {\n classes,\n focus,\n value,\n onChange,\n onBlur,\n onClick,\n containerStyle,\n attributes,\n activeBot,\n required,\n styles,\n isClearable,\n placeholder,\n onFocus,\n displayOptions,\n twilioCredentials,\n defaultAttributes,\n } = props\n const [open, setOpen] = useState(false)\n const [touched, setTouched] = useState(false)\n const [isExtraWidth, setIsExtraWidth] = useState(false)\n const [isNotConnectedMatch, setIsNotConnectedMatch] = useState(false)\n const [menuPlacement, setMenuPlacement] = useState(false)\n const select = useRef(null)\n const attribute = useRef(null)\n const attributeContainer = useRef(null)\n const saveTime = useContext(SaveTimeContext)\n const prevSaveTime = usePrevious(saveTime)\n\n const isFacebookConnected = activeBot?.messengerConfigs?.accessToken\n const isWhatsappConnected = activeBot?.dialog360WhatsAppConfigs?.apiKey\n const isTwilioConnected = twilioCredentials?.connected\n\n const options = [\n {\n label: 'Default attributes',\n options: FormatOption(attributes, DEFAULT, defaultAttributes),\n type: DEFAULT,\n connected: true,\n },\n {\n label: 'Chatbot attributes',\n options: FormatOption(attributes, CHATBOT),\n type: CHATBOT,\n connected: true,\n },\n {\n label: 'Widget attributes',\n options: FormatOption(attributes, WIDGET),\n type: WIDGET,\n connected: true,\n },\n {\n label: 'Facebook attributes',\n options: FormatOption(attributes, FACEBOOK),\n type: FACEBOOK,\n connected: isFacebookConnected,\n },\n {\n label: 'Whatsapp attributes',\n options: FormatOption(attributes, WHATSAPP),\n type: WHATSAPP,\n connected: isWhatsappConnected,\n },\n {\n label: 'Twilio attributes',\n options: FormatOption(attributes, TWILIO),\n type: TWILIO,\n connected: isTwilioConnected,\n },\n ].filter(option => displayOptions.includes(option.type) && option.connected)\n\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n setTouched(true)\n }\n }, [saveTime])\n\n useEffect(() => {\n setTouched(false)\n }, [required])\n\n useEffect(() => {\n setIsExtraWidth(attribute?.current?.offsetWidth >= attributeContainer?.current?.offsetWidth)\n }, [focus])\n\n useEffect(() => {\n setTouched(!!props.touched)\n }, [props.touched])\n\n const handleCreateAttribute = () => {\n const newAttribute = { name: select?.current?.state?.inputValue }\n\n createAttribute(activeBot.id, newAttribute).then(attribute => {\n const newAttribute = {\n value: attribute.id,\n label: attribute.name,\n }\n onChange(newAttribute)\n })\n }\n\n const currentValue = (() => {\n const currentAttribute = attributes?.find(attribute => attribute.id === value || attribute.name === value)\n\n return {\n label: currentAttribute?.name,\n value: currentAttribute?.id,\n type: currentAttribute?.type,\n }\n })()\n\n const handleInput = value => {\n handleMatch(value)\n return value.replace(OPEN_OR_CLOSE_BRACKET, EMPTY_BRACKETS)\n }\n\n const handleMatch = value => {\n const isMatch = attributes\n .filter(option => !displayOptions.includes(option.type))\n .find(({ name }) => name === value)\n\n if (\n isMatch &&\n ((isMatch.type === FACEBOOK && !isFacebookConnected) ||\n (isMatch.type === WHATSAPP && !isWhatsappConnected) ||\n (isMatch.type === TWILIO && !isTwilioConnected))\n ) {\n alertError('This attribute name is already exists')\n setIsNotConnectedMatch(true)\n } else {\n setIsNotConnectedMatch(false)\n }\n }\n\n const handleMenuOpen = () => {\n const attributeContainerPosition = attributeContainer?.current?.getBoundingClientRect()\n const menuHeight = 100\n const parentHeight = getScrollableParent(attributeContainer?.current?.parentNode).offsetHeight\n const menuPlacement = attributeContainerPosition?.top + menuHeight > parentHeight\n\n setMenuPlacement(menuPlacement)\n }\n\n const Menu = props => {\n return (\n <>\n \n {props.children}\n
setOpen(true)}>\n Manage attibutes\n
\n
\n \n )\n }\n\n const NoOptionsMessage = props => {\n return (\n \n {!isNotConnectedMatch ? (\n
\n

Create new attribute:

\n

{select?.current?.state?.inputValue}

\n
\n ) : (\n
\n )}\n \n )\n }\n\n const Option = props => {\n return (\n \n \n {props.children}\n
\n {props.data.description && (\n \n {props.data.description}\n \n )}\n \n )\n }\n\n return (\n <>\n
\n {focus ? (\n
\n onBlur && onBlur()}\n autoFocus={value}\n openMenuOnFocus={true}\n options={options}\n components={{ Menu, NoOptionsMessage, Option }}\n menuPlacement={menuPlacement ? 'top' : 'auto'}\n touched={touched}\n isSearchable={true}\n onMenuClose={() => setTouched(true)}\n onMenuOpen={handleMenuOpen}\n ref={select}\n onFocus={() => onFocus && onFocus()}\n isClearable={isClearable}\n />\n
\n ) : (\n \n {currentValue.label}\n {isExtraWidth && (\n \n )}\n

\n )}\n
\n\n setOpen(false)} />\n \n )\n}\n\nAttributeSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBot: state.activeBot,\n twilioCredentials: state.twilioCredentials,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(AttributeSelect)))\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport AttributesModal from '../../../settings/components/general/AttributesModal/AttributesModal'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport InputAutosuggest from '../../../../uiKit/InputAutosuggest/InputAutosuggest'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { styles } from './styles'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\n\nconst PostbackAttributes = props => {//NOSONAR\n const { classes, atomAttributes, handleUpdateAttributes, callBack } = props\n const [open, setOpen] = useState(false)\n const [focus, setFocus] = useState(null)\n const buttonName = atomAttributes?.length\n ? 'Add attribute'\n : 'Set attribute'\n const showPlusAttribute = !atomAttributes || atomAttributes?.length < 10\n\n const handleUpdateAttributeValue = (e, index) => {\n const attributesUpdate = deepCopyFunction(atomAttributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.value = e.target.value || e.target.innerText\n }\n return attribute\n },\n )\n\n handleUpdateAttributes(attributesUpdate)\n }\n\n const handleUpdateAttribute = (e, index) => {\n const atomAttributesCopy = deepCopyFunction(atomAttributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.id = e.value\n attribute.name = e.label\n }\n\n return attribute\n },\n )\n setFocus(false)\n handleUpdateAttributes(atomAttributesCopy)\n }\n\n const handleAddAttribute = () => {\n const attributesUpdate = deepCopyFunction(atomAttributes) || []\n const newAttribute = { id: null, value: null, name: null }\n\n attributesUpdate.push(newAttribute)\n handleUpdateAttributes(attributesUpdate)\n if (callBack) callBack()\n }\n\n const handleDeleteAttribute = index => {\n const attributesUpdate = deepCopyFunction(atomAttributes)?.filter(\n (attribute, i) => index !== i,\n )\n\n handleUpdateAttributes(attributesUpdate)\n if (callBack) callBack()\n }\n\n return (\n <>\n
\n {!!atomAttributes?.length && (\n
Set attribute
\n )}\n
\n {atomAttributes?.map((attribute, index) => (\n
\n handleUpdateAttribute(e, index)}\n onBlur={() => setFocus(false)}\n onClick={() => setFocus(index)}\n menuPlacement={'top'}\n required={true}\n displayOptions={[DEFAULT, CHATBOT]}\n containerStyle={{ minWidth: 112, width: 112 }}\n isClearable={false}\n defaultAttributes={['language', 'close_conversation', 'conversation_outcome']}\n />\n handleUpdateAttributeValue(e, index)}\n />\n handleDeleteAttribute(index)}>\n \n
\n
\n ))}\n
\n
\n {showPlusAttribute && (\n
\n {buttonName}\n
\n )}\n setOpen(false)} />\n \n )\n}\n\nPostbackAttributes.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(PostbackAttributes)),\n)\n","export const styles = () => ({\n addButton: {\n color: 'rgba(22, 88, 243, 1)',\n fontWeight: 700,\n fontSize: 14,\n cursor: 'pointer',\n marginTop: 8,\n width: 'fit-content',\n },\n title: {\n fontSize: 14,\n fontWeight: 700,\n color: 'rgba(53, 64, 82, 1)',\n margin: '24px 0px 12px 0px',\n },\n attributeWrap: {\n display: 'flex',\n marginTop: 8,\n gap: '8px',\n position: 'relative',\n paddingRight: 26,\n },\n inputValue: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n outline: 'none',\n height: 38,\n borderRadius: 4,\n width: '128px',\n padding: '8px 12px',\n color: 'rgba(53, 64, 82, 0.7)',\n marginLeft: 8,\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n marginLeft: 8,\n position: 'absolute',\n right: '-3px',\n top: 6,\n },\n bottomScrollElem: {\n float: 'left',\n clear: 'both',\n },\n})\n","import React from 'react'\nimport {\n Checkbox,\n FormControlLabel,\n IconButton,\n Popover,\n Tab,\n Tabs,\n Typography,\n withStyles,\n} from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport PostbackAttributes from '../PostbackAttributes/PostbackAttributes'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\n\nconst styles = theme => ({\n button: {\n marginBottom: theme.spacing.unit * 4,\n },\n typography: {\n margin: theme.spacing.unit * 2,\n },\n popover: {\n borderRadius: 10,\n height: 'auto',\n },\n tab: {\n width: '50%',\n fontFamily: 'Lato, sans-serif',\n minWidth: 134,\n },\n tabIndicator: {\n backgroundColor: '#1890ff',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n width: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: '100%',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 5,\n maxHeight: 40,\n minWidth: 220,\n },\n addParametersBtn: {\n marginTop: 10,\n textAlign: 'center',\n color: 'black',\n cursor: 'pointer',\n backgroundColor: 'white',\n height: 40,\n border: '0.5px solid rgb(51, 51, 51)',\n padding: 10,\n },\n popoverButton: {\n width: 'calc(100% - 32px)',\n color: 'rgba(97, 101, 129, 1)',\n fontWeight: 500,\n textAlign: 'center',\n height: 40,\n fontSize: 14,\n border: '1px solid #e5e5e5',\n outline: 'none',\n borderRadius: 10,\n margin: 16,\n },\n})\n\nfunction TabContainer(props) {\n return (\n \n {props.children}\n \n )\n}\n\nclass MessageButton extends React.Component {\n state = {\n open: false,\n anchorOriginVertical: 'top',\n anchorOriginHorizontal: 'center',\n transformOriginVertical: 'top',\n transformOriginHorizontal: 'center',\n positionTop: 200,\n positionLeft: 400,\n anchorReference: 'anchorEl',\n error: false,\n }\n\n handleChange = (event, value) => {\n const btn = { ...this.props.btn }\n btn.type = value\n\n if (btn.type === 'postback') {\n btn.payload = ''\n btn.url = undefined\n delete btn.messengerExtensions\n } else if (btn.type === 'web_url') {\n btn.payload = undefined\n btn.url = ''\n btn.messengerExtensions = true\n }\n this.props.onUpdate(btn)\n }\n handleClose = () => {\n this.setState({ open: false })\n }\n anchorEl = null\n\n handleUpdateAttributes = attributes => {\n const btn = { ...this.props.btn }\n btn.attributes = attributes\n this.props.onUpdate(btn)\n }\n\n handleChangeButton(value, fieldName) {\n const btn = { ...this.props.btn }\n btn[fieldName] = value\n this.props.onUpdate(btn)\n }\n\n handleChangeButtonUrl(value) {\n const btn = deepCopyFunction(this.props.btn)\n btn.url = value\n this.props.onUpdate(btn)\n }\n\n focus = () => {\n this.setState({\n open: true,\n })\n }\n\n updatePopoverPosition = () => {\n this.setState(\n {\n open: false,\n },\n () => {\n this.setState({\n open: true,\n })\n },\n )\n }\n\n render() {\n const { btn, rtl } = this.props\n const {\n open,\n anchorOriginVertical,\n anchorOriginHorizontal,\n transformOriginVertical,\n transformOriginHorizontal,\n positionTop,\n positionLeft,\n anchorReference,\n error,\n errorTitle,\n } = this.state\n const { classes } = this.props\n return (\n this.setState({ showDelete: true })}\n onMouseLeave={() => this.setState({ showDelete: false })}>\n {\n this.anchorEl = node\n }}\n onClick={this.focus}\n style={{\n color: 'transparent',\n textShadow: '0 0 0 #0084ff',\n borderRadius: this.props.last ? ' 0 0 10px 10px' : 0,\n borderBottom: this.props.last ? '0px' : '1px solid #e5e5e5',\n }}\n dir={rtl && 'rtl'}\n />\n \n \n \n \n
\n \n this.handleChangeButton(event.target.value, 'title')\n }\n maxLength={20}\n dir={rtl && 'rtl'}\n />\n
\n
\n this.handleChange(event, value)}>\n \n \n \n {btn.type === 'postback' && (\n \n this.handleChangeButton(label, 'payload')}/>\n \n \n )}\n {btn.type === 'web_url' && (\n \n \n {\n if (e.keyCode === 13)\n this.handleChangeButtonUrl(e.target.value)\n }}\n onBlur={event => {\n this.handleChangeButtonUrl(event.target.value)\n }}\n defaultValue={btn.url}\n placeholder=\"Enter URL\"\n />\n
\n {\n const btn = { ...this.props.btn }\n btn.messengerExtensions = !btn.messengerExtensions\n this.props.onUpdate(btn)\n }}\n value=\"messengerExtensions\"\n color=\"primary\"\n />\n }\n label=\"Open in Messenger\"\n />\n \n \n )}\n
\n
\n \n \n \n )\n }\n}\n\nMessageButton.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(MessageButton)\n","import React from 'react'\nimport { IconButton, Popover, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\nimport PostbackAttributes from '../PostbackAttributes/PostbackAttributes'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport DetectableOverflow from 'react-detectable-overflow'\nimport ReactTooltip from 'react-tooltip'\n\nconst styles = theme => ({\n typography: {\n margin: theme.spacing.unit * 2,\n },\n paper: {\n borderRadius: 10,\n overflow: 'visible',\n padding: 16,\n },\n reply: {\n position: 'relative',\n },\n showDelete: {\n position: 'absolute',\n right: '-15px',\n top: '-10px',\n zIndex: 1,\n },\n hideDelete: {\n display: 'none',\n },\n payload: {\n margin: 0,\n fontSize: 10,\n position: 'absolute',\n top: 24,\n width: '100%',\n textAlign: 'center',\n color: 'grey',\n padding: '0 12px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n title: {\n borderRadius: 35,\n color: '#2668E8',\n outline: 'none',\n textAlign: 'center',\n border: '1px solid #2668E8',\n backgroundColor: '#ffffff',\n padding: '10px 24px',\n fontSize: 14,\n lineHeight: '16px',\n resize: 'none',\n height: 36,\n width: '100%',\n },\n titlePopover: {\n borderRadius: 10,\n color: '#9B9CA3',\n outline: 'none',\n textAlign: 'center',\n border: '1px solid #9B9CA3',\n backgroundColor: '#ffffff',\n padding: '14px',\n fontSize: 14,\n lineHeight: '16px',\n resize: 'none',\n height: 40,\n width: '100%',\n },\n titles: {\n color: 'rgb(38, 104, 232)',\n fontSize: 14,\n maxHeigth: '100%',\n lineHeight: '0',\n },\n selectWrap: {\n marginTop: 16,\n },\n tooltip: {\n maxWidth: '100%',\n width: '300px',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n }\n})\n\nclass QuickReply extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: false,\n anchorOriginVertical: 'top',\n anchorOriginHorizontal: 'center',\n transformOriginVertical: 'top',\n transformOriginHorizontal: 'center',\n positionTop: 200,\n positionLeft: 400,\n anchorReference: 'anchorEl',\n showDelete: false,\n isOverflowed: false\n }\n }\n\n handleChange(value, fieldName) {\n const reply = { ...this.props.reply }\n reply[fieldName] = value\n this.props.onChange(reply)\n }\n\n handleClickButton = () => {\n this.setState({\n open: true,\n })\n }\n\n handleUpdateAttributes = attributes => {\n const reply = { ...this.props.reply }\n reply.attributes = attributes\n this.props.onChange(reply)\n }\n\n handleClose = () => {\n this.setState({\n open: false,\n })\n }\n\n anchorEl = null\n\n showDelete(show) {\n this.setState({ showDelete: show })\n }\n\n updatePopoverPosition = () => {\n this.setState(\n {\n open: false,\n },\n () => {\n this.setState({\n open: true,\n })\n },\n )\n }\n\n handleOverflow = isOverflowed => {\n this.setState({\n isOverflowed\n })\n }\n\n render() {\n const {\n open,\n anchorOriginVertical,\n anchorOriginHorizontal,\n transformOriginVertical,\n transformOriginHorizontal,\n positionTop,\n positionLeft,\n anchorReference,\n isOverflowed\n } = this.state\n const { classes, reply, rtl } = this.props\n const error = reply.content_type === 'text' && isStringEmpty(reply.payload)\n return (\n this.showDelete(true)}\n onMouseLeave={() => this.showDelete(false)}>\n {\n this.anchorEl = node\n }}\n onClick={() => this.handleClickButton()}\n readOnly={reply.content_type !== 'text' ? 'readonly' : false}\n dir={rtl && 'rtl'}\n />\n

this.handleClickButton()}>\n \n {this.props.reply.payload}\n \n

\n {isOverflowed && !open && this.props.reply.payload && (\n \n )}\n this.props.onDelete()}>\n \n \n \n
\n this.handleChange(event.target.value, 'title')}\n maxLength={20}\n readOnly={reply.content_type !== 'text' ? 'readonly' : false}\n dir={rtl && 'rtl'}\n />\n this.props.onDelete()}>\n \n \n
\n this.handleChange(label, 'payload')} />\n
\n \n
\n \n \n )\n }\n}\n\nQuickReply.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(QuickReply)\n","/**\n * Created by Admin on 16.02.2018.\n */\nimport React from 'react'\nimport QuickReply from './QuickReply'\nimport { OvalIcon } from '../../../../uiKit/icons/Icons'\nimport { Popover, withStyles } from '@material-ui/core'\n\nconst styles = {\n container: {\n direction: 'inherit',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 53,\n display: 'flex',\n margin: '20px auto auto',\n },\n view: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'scroll',\n marginRight: -17,\n marginBottom: -17,\n display: 'flex',\n },\n threeIcon: {\n borderLeft: '1px solid #1658F3',\n display: 'flex',\n flexDirection: 'column',\n padding: '7px 13px',\n justifyContent: 'space-between',\n width: 35,\n },\n replyItems: {\n display: 'flex',\n flexDirection: 'column',\n },\n replyItem: {\n fontSize: 14,\n color: '#3A3F62',\n padding: 16,\n cursor: 'pointer',\n },\n popover: {\n background: '#FFFFFF',\n border: '1px solid #D7D8DF',\n boxSizing: 'border-box',\n borderRadius: 10,\n boxShadow: 'none',\n },\n qrWrap: {\n display: '-webkit-box',\n overflow: 'scroll',\n marginTop: 10,\n '&::-webkit-scrollbar': {\n height: 6,\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.6,\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n}\n\nclass MessageQuickReplies extends React.Component {\n state = {\n open: false,\n positionTop: 400,\n positionLeft: 200,\n anchorReference: 'anchorEl',\n }\n\n handleChange(reply, replyIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.quick_replies[replyIndex] = reply\n this.props.updateMessage(newMessage)\n }\n\n addNewReply(type) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.quick_replies == null) {\n newMessage.quick_replies = []\n }\n if (type == undefined) {\n newMessage.quick_replies.push({\n title: '',\n content_type: 'text',\n payload: '',\n })\n } else {\n newMessage.quick_replies.push({\n content_type: type,\n })\n }\n\n this.props.updateMessage(newMessage)\n }\n\n focus() {\n this.setState({\n open: true,\n })\n }\n\n handleClose = () => {\n this.setState({\n open: false,\n })\n }\n\n deleteReply(replyIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.quick_replies.splice(replyIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const { open, anchorReference } = this.state\n const { classes, rtl } = this.props\n return (\n
\n {this.props.message.quick_replies != null &&\n this.props.message.quick_replies.map((reply, replyIndex) => (\n
\n this.deleteReply(replyIndex)}\n onChange={reply => this.handleChange(reply, replyIndex)}\n rtl={rtl}\n />\n
\n ))}\n {(this.props.message.quick_replies == null ||\n this.props.message.quick_replies.length < 11) && (\n {\n this.anchorEl = node\n }}\n className=\"add-reply\">\n
this.addNewReply()}>\n + Add Quick Reply\n
\n
this.focus()} style={styles.threeIcon}>\n \n \n \n
\n
\n )}\n \n
\n
\n this.addNewReply('user_phone_number')}\n className={classes.replyItem}>\n Phone number\n
\n this.addNewReply('location')}\n className={classes.replyItem}>\n Location\n
\n this.addNewReply('user_email')}\n className={classes.replyItem}>\n Email\n \n \n \n \n \n )\n }\n}\n\nexport default withStyles(styles)(MessageQuickReplies)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './styles'\nimport ReactTooltip from 'react-tooltip'\nimport { getAttributeColor } from '../../helpers/getAttributeColor'\n\nconst AttributeItem = props => {\n const {\n classes,\n attribute,\n onClick,\n selectedAttribute,\n index,\n onMouseEnter,\n } = props\n\n return (\n <>\n {attribute.type === 'GROUP' ? (\n {attribute.title}\n ) : (\n onMouseEnter(index)}\n onClick={() => onClick(attribute)}>\n \n {attribute.name}\n \n\n {attribute.description && (\n \n {attribute.description}\n \n )}\n \n )}\n \n )\n}\n\nexport default withStyles(styles)(AttributeItem)\n","export const styles = () => ({\n category: {\n height: 36,\n padding: '8px 12px',\n color: '#354052',\n display: 'block',\n fontSize: 14,\n },\n option: {\n margin: '5px 12px',\n color: '#ffffff',\n padding: '1px 8px',\n borderRadius: 50,\n width: 'fit-content',\n fontSize: 14,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n tooltip: {\n maxWidth: '100%',\n width: '300px',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n optionWrap: {\n width: '100%',\n height: 33,\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n})\n","export const CHATBOT_TITLE = { type: 'GROUP', title: 'Chatbot attributes' }\nexport const WIDGET_TITLE = { type: 'GROUP', title: 'Widget attributes' }\nexport const FACEBOOK_TITLE = { type: 'GROUP', title: 'Facebook attributes' }\nexport const WHATSAPP_TITLE = { type: 'GROUP', title: 'Whatsapp attributes' }\nexport const TWILIO_TITLE = { type: 'GROUP', title: 'Twilio attributes' }\n","import React, { useEffect, useState } from 'react'\nimport { ClickAwayListener, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport Popper from '@material-ui/core/Popper'\n\nimport Search from '../../uiKit/Search/Search'\nimport AttributesModal from '../../tabs/settings/components/general/AttributesModal/AttributesModal'\nimport AttributeItem from '../AttributeItem/AttributeItem'\n\nimport { styles } from './styles'\nimport { CHATBOT_TITLE, FACEBOOK_TITLE, TWILIO_TITLE, WHATSAPP_TITLE, WIDGET_TITLE } from './config'\nimport { CHATBOT, FACEBOOK, TWILIO, WHATSAPP, WIDGET } from '../../constants/attributeTypes'\nimport { alertError } from '../../api'\n\nconst AttributesList = props => {\n const {\n classes,\n show,\n onClose,\n position,\n addParam,\n activeBot,\n showSearch,\n attributes,\n twilioCredentials,\n listRef,\n selectedAttribute,\n updateSelectedAttribute,\n onKeyDown,\n } = props\n const [searchValue, setSearchValue] = useState('')\n const [open, setOpen] = useState(false)\n const [options, setOptions] = useState([])\n const [isMatch, setIsMatch] = useState(false)\n const [isMatchAll, setIsMatchAll] = useState(false)\n\n const isFacebookConnected = activeBot?.messengerConfigs?.accessToken\n const isWhatsappConnected = activeBot?.dialog360WhatsAppConfigs?.apiKey\n const isTwilioConnected = twilioCredentials?.connected\n\n useEffect(() => {\n const chatbotAttributes = getAttributeList(CHATBOT, true, CHATBOT_TITLE)\n const widgetAttributes = getAttributeList(WIDGET, true, WIDGET_TITLE)\n const facebookAttributes = getAttributeList(FACEBOOK, isFacebookConnected, FACEBOOK_TITLE)\n const whatsappAttributes = getAttributeList(WHATSAPP, isWhatsappConnected, WHATSAPP_TITLE)\n const twilioAttributes = getAttributeList(TWILIO, isTwilioConnected, TWILIO_TITLE)\n\n const optionsList = [\n ...chatbotAttributes,\n ...widgetAttributes,\n ...facebookAttributes,\n ...whatsappAttributes,\n ...twilioAttributes,\n ]\n\n const isMatch = !!optionsList?.filter(({ name }) => {\n return name?.includes(searchValue) && name?.includes(props.searchValue)\n })?.length\n\n const isMatchAll = !!attributes?.filter(({ id, name }) => {\n return (\n !optionsList.some(option => option.id === id) &&\n (props.searchValue ? props.searchValue === name : showSearch) &&\n (searchValue ? searchValue === name : !showSearch)\n )\n })?.length\n\n if (isMatchAll) {\n alertError('This attribute name is already exists')\n }\n\n setIsMatchAll(isMatchAll)\n setIsMatch(isMatch)\n setOptions(optionsList)\n }, [attributes?.length, searchValue, props.searchValue])\n\n useEffect(() => {\n setSearchValue('')\n }, [show])\n\n useEffect(() => {\n updateSelectedAttribute(1)\n }, [searchValue])\n\n const getAttributeList = (type, connected, titleObject) => {\n const options = filterOptions(type)\n\n return options?.length && connected ? [titleObject, ...options] : []\n }\n\n const handleClose = attribute => {\n addParam(attribute.name)\n }\n\n const handleCreateAttribute = () => {\n const newAttribute = { name: searchValue || props.searchValue }\n handleClose(newAttribute)\n }\n\n const filterOptions = type => {\n return attributes\n ?.filter(attribute => attribute.type === type && attribute?.name?.includes(searchValue))\n ?.filter(attribute => attribute.type === type && attribute?.name?.includes(props.searchValue))\n }\n\n const handleOpenModal = () => {\n setOpen(true)\n onClose()\n }\n\n return (\n <>\n {show && (attributes?.length || searchValue || props.searchValue) && (\n \n \n
\n {showSearch && (\n setSearchValue(e.target.value)}\n onKeyDown={onKeyDown}\n style={{ margin: 6 }}\n />\n )}\n
\n {isMatch &&\n options.map((attribute, index) => (\n \n ))}\n {!isMatch && !isMatchAll && (\n
\n

Create new attribute:

\n

{searchValue || props.searchValue}

\n
\n )}\n
\n\n
\n Manage attibutes\n
\n
\n
\n
\n )}\n\n setOpen(false)} />\n \n )\n}\n\nAttributesList.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBot: state.activeBot,\n twilioCredentials: state.twilioCredentials,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(AttributesList))\n","export const styles = () => ({\n attributesContainer: {\n maxHeight: 236,\n overflowY: 'scroll',\n overflowX: 'hidden',\n outline: 'none',\n },\n button: {\n height: 36,\n width: 212,\n color: '#1658F3',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n cursor: 'pointer',\n background: '#ffffff',\n fontSize: 14,\n },\n addAttibute: {\n padding: '8px 12px',\n backgroundColor: 'rgba(90, 152, 247, 0.1)',\n cursor: 'pointer',\n },\n optionTitle: {\n color: 'rgba(53, 64, 82, 0.7)',\n fontSize: 14,\n margin: 0,\n },\n option: {\n margin: '4px 0px 0px',\n color: '#ffffff',\n padding: '1px 8px',\n borderRadius: 50,\n width: 'fit-content',\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: '#5A98F7',\n },\n container: {\n zIndex: 10000,\n width: 200,\n background: '#ffffff',\n position: 'absolute',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n borderRadius: 5,\n overflow: 'hidden',\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = theme => ({\n container: {\n position: 'relative'\n },\n input: {\n outline: 'none',\n width: '100%',\n padding: '14px 24px',\n borderRadius: 10,\n fontSize: '14px',\n lineHeight: '19px',\n color: theme.palette.primary.text,\n border: '1px solid #C7CAD6',\n maxHeight: 45,\n position: 'relative',\n },\n inputTitle: {\n fontSize: 14,\n color: theme.palette.primary.headerText,\n fontWeight: 400,\n margin: '24px 0 8px',\n },\n error: {\n borderColor: theme.palette.alerts.error,\n },\n errorMessage: {\n fontSize: 12,\n position: 'absolute',\n color: theme.palette.alerts.error,\n margin: 0,\n },\n})\n\nconst Input = props => {\n const {\n classes,\n title,\n autofocus,\n inputTitleStyles,\n maxLength,\n style,\n value,\n placeholder,\n onChange,\n handleKeyPress,\n handleEnterPress,\n error,\n onBlur,\n onKeyDown,\n errorMessage,\n } = props\n\n const handleKeyPressHandler = e => {\n if (e.key === 'Enter') {\n if (handleEnterPress) {\n handleEnterPress()\n }\n }\n if (handleKeyPress) {\n handleKeyPress(e)\n }\n }\n\n const handleBlur = e => {\n if (onBlur) onBlur(e)\n }\n\n const handleKeyDown = e => {\n if (onKeyDown) onKeyDown(e)\n }\n\n return (\n
\n {title && (\n

\n {title}\n

\n )}\n \n {errorMessage && (\n

\n {errorMessage}\n

\n )}\n
\n )\n}\n\nInput.defaultProps = {\n inputTitleStyles: {},\n}\n\nInput.propTypes = {\n classes: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired,\n inputTitleStyles: PropTypes.object,\n style: PropTypes.object,\n maxLength: PropTypes.number,\n title: PropTypes.string,\n error: PropTypes.bool,\n autofocus: PropTypes.bool,\n handleKeyPress: PropTypes.func,\n handleEnterPress: PropTypes.func,\n}\n\nexport default withRouter(withStyles(styles)(Input))\n","import React from 'react'\nimport { Checkbox, FormControlLabel, withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport Input from '../../../../uiKit/inputs/Input'\nimport { alertError, ifStringEmpty } from '../../../../api'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n warning: {\n color: '#FF624C',\n margin: 0,\n },\n btnContainer: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 24,\n },\n})\n\nclass LinkTemplate extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n link: {\n link: '',\n text: '',\n messengerExtensions: false,\n },\n initialLink: JSON.parse(JSON.stringify(props.link)),\n urlError: false,\n }\n }\n\n handleChange = (name, value) => {\n const { link } = this.state\n link[name] = value\n this.updateLink(link)\n }\n\n updateLink = link => {\n this.setState({ link })\n }\n\n componentDidMount() {\n const link = Object.assign({}, this.props.link)\n const isSting = typeof link.messengerExtensions === 'string'\n link.messengerExtensions = isSting ? JSON.parse(link.messengerExtensions) : link.messengerExtensions\n this.updateLink(link)\n }\n\n urlValidation(url) {\n return !/^(ftp|http|https):\\/\\/[^ \"]+$/.test(url)\n }\n\n submitLink = () => {\n const { onClose, createLink } = this.props\n const { link, initialLink } = this.state\n\n if (ifStringEmpty(link.link) || ifStringEmpty(link.text)) {\n alertError(\"name and url fields shouldn't be empty\")\n throw \"name and url fields shouldn't be empty\"\n }\n if (this.urlValidation(link.link)) {\n return alertError('please enter valid Url')\n }\n createLink(link, ((initialLink.link.length) !== 0))\n onClose()\n }\n\n render() {\n const { classes } = this.props\n const { initialLink, urlError } = this.state\n const { text, link, messengerExtensions } = this.state.link\n return (\n
\n this.handleChange('text', e.target.value)}\n />\n this.handleChange('link', e.target.value)}\n />\n {urlError &&

Please enter valid URL

}\n this.handleChange('messengerExtensions', !messengerExtensions)}\n value={String(messengerExtensions)}\n checked={messengerExtensions}\n color=\"primary\"\n />\n }\n label=\"Open in Widget\"\n />\n
\n \n
\n
\n )\n }\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(LinkTemplate))\n","import React from 'react'\nimport Modal from '../Modal'\nimport LinkTemplate from '../../tabs/flowBuilder/components/messages/LinkTemplate'\nimport {LinkType} from '../../models/LinkTypes'\n\ninterface LinkTemplateModalProps {\n isOpen?: boolean\n setIsOpen?: any\n link?: LinkType\n range?: any\n createLink?: (link: LinkType, isEditing) => void\n setRange?: (range: any) => void\n setCaret?: any\n node?: any\n}\n\nexport const LinkTemplateModal: React.FC = ({\n isOpen,\n setIsOpen,\n link,\n createLink,\n setCaret\n}) => {\n const handleClose = () => setIsOpen(false)\n const closeWithNoCreation = () => {\n handleClose()\n setCaret()\n }\n return (\n
\n {link && (\n \n \n \n )}\n
\n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const AttributeIcon = () => {\n return (\n \n \n \n \n )\n}\n","export const frontDataProcessing = (frontValue = '', prevAttrIndex = 0) => {\n const attrIndex = frontValue?.indexOf('', attrIndex)\n\n if (attrIndex < 0 || attrBackIndex < 0) {\n return frontValue\n }\n\n let newArr = frontValue.split('')\n newArr.splice(attrIndex, attrBackIndex - attrIndex + 1, '{', '{')\n frontValue = newArr.join('')\n const endAttrIndex = frontValue.indexOf('', attrIndex)\n newArr = frontValue.split('')\n newArr.splice(endAttrIndex, 7, '}', '}')\n frontValue = newArr.join('')\n\n if (frontValue.includes('')) {\n return frontDataProcessing(frontValue, attrIndex + 4)\n } else {\n return frontValue\n }\n}\n","import { frontDataProcessing } from './frontDataProcessing/frontDataProcessing'\nimport { getSelectionHtml } from './getSelectionHtml'\n\nexport const handleCtrlC = (event: any, isMenu: boolean) => {\n const charCode = String.fromCharCode(event.which).toLowerCase()\n if (((event.ctrlKey || event.metaKey) && charCode === 'c') || isMenu) {\n navigator.clipboard.writeText(frontDataProcessing(getSelectionHtml()))\n event.preventDefault()\n }\n}\n","export function getSelectionHtml() {\n let html = ''\n if (window.getSelection) {\n const sel = window.getSelection && window.getSelection()\n if (sel.rangeCount) {\n const container = document.createElement('div')\n for (let i = 0; i < sel.rangeCount; ++i) {\n container.appendChild(sel.getRangeAt(i).cloneContents())\n }\n html = container.innerHTML\n }\n } else {\n if (typeof document.getSelection() !== 'undefined') {\n if (document.getSelection().type == 'Range') {\n // @ts-ignore\n html = document.selection.createRange().htmlText\n }\n }\n }\n return html\n}\n","import { getAttributeColor } from 'helpers/getAttributeColor'\nimport { createAttribute } from 'tabs/settings/api/attributes'\nimport {AttributeItemType} from 'models/AttributeTypes'\n\nexport const backEndProcessing = (backData: string, attributes: AttributeItemType[], botId?: number) => {\n const attrIndex = backData.indexOf('{{')\n const attrBackIndex = backData.indexOf('}}', attrIndex)\n\n if (attrIndex < 0 || attrBackIndex < 0) {\n return backData\n }\n\n const helper1 = backData.split('')\n const helper2 = backData.split('')\n const attrText = helper1.splice(attrIndex + 2, attrBackIndex - attrIndex - 2).join('')\n const currentAttribute = attributes.find(attributeI => attributeI.name === attrText)\n\n if (currentAttribute === undefined && botId) {\n createAttribute(botId, { name: attrText })\n }\n\n // eslint-disable-next-line max-len\n const attrElStart = ``\n const attrElEnd = ''\n\n const attr = attrElStart + attrText + attrElEnd\n helper2.splice(attrIndex, attrBackIndex - attrIndex + 2, ...attr.split(''))\n\n if (backData.includes('{{') && backData.includes('}}')) {\n return backEndProcessing(helper2.join(''), attributes, botId)\n } else {\n return helper2.join('')\n }\n}\n","import { backEndProcessing } from './backEndProcessing/backEndProcessing'\nimport { RefObject } from 'react'\nimport {AttributeItemType} from '../../../../models/AttributeTypes'\n\nconst insertArrayOfNodes = (\n wrapEl: HTMLElement,\n insertionWrapperEL: HTMLElement,\n nextElement: any,\n setNode: (a: any) => void,\n) => {\n const length = insertionWrapperEL.childNodes.length\n const insertionWrapperChild = insertionWrapperEL.childNodes\n\n for (let i = 0; i < length; i++) {\n wrapEl.insertBefore(insertionWrapperChild[0], nextElement)\n if (i === insertionWrapperChild.length - 1) {\n setNode(insertionWrapperChild[i])\n }\n }\n}\n\nexport const handleCtrlV = (\n event: any,\n attributes: AttributeItemType[],\n inputRef: RefObject,\n caretNodePos: number,\n setValue: (a: string) => void,\n setNode: (a: any) => void,\n botId: number,\n isMenu: boolean,\n) => { //NOSONAR\n const charCode = String.fromCharCode(event.which).toLowerCase()\n\n if (window.getSelection().rangeCount > 0) {\n const selectedText = window.getSelection().toString()\n const caretP = window.getSelection()?.getRangeAt(0)\n const anchor = window.getSelection().anchorNode\n if (((event.ctrlKey || event.metaKey) && charCode === 'v') || isMenu) {\n navigator.clipboard.readText().then(text => {\n text = backEndProcessing(text, attributes, botId)\n const wrapper = document.createElement('span')\n wrapper.innerHTML = text\n const lastEl = wrapper?.childNodes[wrapper.childNodes?.length - 1]\n\n\n if (selectedText) {\n caretP.deleteContents()\n const length = wrapper.childNodes.length\n for (let i = 0; i < length; i++) {\n caretP.insertNode(wrapper.childNodes[length - i - 1])\n if (i === length - 1) {\n setNode(wrapper.childNodes[i])\n }\n }\n } else if (anchor === inputRef.current && caretP.startOffset) {\n inputRef.current.childNodes.forEach((nodeItem, index) => {\n if (index === caretP.startOffset - 1) {\n insertArrayOfNodes(inputRef.current, wrapper, nodeItem.nextSibling, setNode)\n }\n return index === caretNodePos - 1\n })\n } else if (anchor?.nodeValue) {\n const text1 = anchor.nodeValue?.substr(0, caretP.startOffset) || ''\n const text2 = anchor.nodeValue?.substr(caretP.startOffset) || ''\n const text1Node = document.createTextNode(text1)\n const text2Node = document.createTextNode(text2)\n inputRef.current?.replaceChild(text1Node, anchor)\n const next = text1Node.nextSibling\n insertArrayOfNodes(inputRef.current, wrapper, next, setNode)\n inputRef.current?.insertBefore(text2Node, lastEl?.nextSibling)\n } else if (!caretP || (!caretP.startOffset && !caretP.endOffset)) {\n insertArrayOfNodes(inputRef.current, wrapper, inputRef.current.childNodes[0], setNode)\n }\n setValue(inputRef?.current.innerHTML)\n setNode(lastEl)\n })\n event.preventDefault()\n }\n }\n}\n","export const getPopupPosition = (element: any, container: any) => {\n const absoluteTop = element?.top + element?.height\n const absoluteRight = element?.left + element?.width\n const isEnoughSpaceHeight = absoluteTop + container.height > window.innerHeight\n const isEnoughSpaceWidth = absoluteRight + container.width < window.innerWidth\n const top = absoluteTop - (isEnoughSpaceHeight && container.height) + 'px'\n const left = absoluteRight - (!isEnoughSpaceWidth && container.width) + 'px'\n\n return { top, left }\n}\n","export const setCaretAfterNode = (nodeEL:HTMLElement = null) => {\n const range = document.createRange()\n const sel = window.getSelection()\n\n if (nodeEL && nodeEL?.parentNode) {\n range.setStartAfter(nodeEL)\n range.collapse(true)\n sel.removeAllRanges()\n sel.addRange(range)\n }\n}\n","export const checkForSelection = (callBack: (a: any) => void, spanLink?: any) => {\n if (window.getSelection().rangeCount) {\n callBack(spanLink || null)\n }\n}\n","import React, { CSSProperties, useEffect, useMemo, useRef, useState } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { FACEBOOK, TWILIO, WHATSAPP } from '../../../constants/attributeTypes'\nimport AttributesList from '../../AttributesList/AttributesList'\nimport { CreateLinkIcon } from '../../icons/Icons'\nimport { LinkTemplateModal } from '../LinkTemplateModal'\nimport { AttributeIcon } from '../../icons/AttributeIcon'\nimport { container } from '../../InputWithParams/config'\nimport { ARROW_DOWN_KEY, ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ENTER_KEY, SPACE_KEY } from 'constants/keyCodes'\nimport { createAttribute } from 'tabs/settings/api/attributes'\n\nimport { createSpan } from './helpers/createSpan/createSpan'\nimport { handleCtrlC } from './helpers/handleCtrlC'\nimport { handleCtrlV } from './helpers/handleCtrlV'\nimport { getPopupPosition } from './helpers/getPopupPosition'\nimport { backEndProcessing } from './helpers/backEndProcessing/backEndProcessing'\nimport { generateAttribute } from './helpers/generateAttribute'\nimport { setCaretAfterNode } from './helpers/setCaretAfterNode'\nimport { checkForSelection } from './helpers/checkForSelection'\nimport { frontDataProcessing } from './helpers/frontDataProcessing/frontDataProcessing'\nimport { selectionChangeListener } from './helpers/selectionChangeListener'\nimport { addAttributeToAfterText } from './helpers/addAttributeToAfterText'\nimport { addAttributeToEmptyField } from './helpers/addAttributeToEmptyField'\nimport { calculateSelectedChildNodeIndex } from './helpers/calculateSelectedChildNodeIndex'\nimport { removeExtraBracketsAfterAttributeIsAdded } from './helpers/removeExtraBracketsAfterAttributeIsAdded'\n\nimport classes from './styles.module.scss'\nimport { addAttributeToAfterTag } from './helpers/addAttributeToAfterTag'\n\nimport { checkAttributeForExistingAndConnection } from './helpers/checkAttributeForExistingAndConnection'\nimport { AttributeItemType } from '../../../models/AttributeTypes'\nimport { LinkType } from '../../../models/LinkTypes'\n\ninterface InputWithParamsAndLinksProps {\n onChange: any\n currentValue: any\n rtl?: any\n activeBotId: number\n attributes: AttributeItemType[]\n activeBot?: any\n twilioCredentials: any\n}\n\nconst InputWithParamsAndLinks: React.FC = ({\n currentValue,\n onChange,\n activeBotId,\n activeBot,\n twilioCredentials,\n attributes,\n rtl,\n}) => {\n const [node, setNode] = useState(null)\n const [value, setValue] = useState(currentValue)\n const [ranger, setRange] = useState(null)\n const [show, setShow] = useState(false)\n const [showSearch, setShowSearch] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [isEmpty, setIsEmpty] = useState(false)\n const [link, setLink] = useState(null)\n const [caretPos, setCaretPos] = useState(undefined)\n const [selectedAttribute, setSelectAttribute] = useState(1)\n const [anchorNode, setAnchorNode] = useState(undefined)\n const [selectionText, setSelectionText] = useState('')\n const [searchAttribute, setSearchAttribute] = useState('')\n const [caretNodePos, setCaretNodePos] = useState(undefined)\n const [notConnectedAttributes, setNotConnectedAttributes] = useState([])\n\n const inputRef = useRef(null)\n const attributeIcon = useRef(null)\n const attributeList = useRef(null)\n const isFacebookConnected = activeBot?.messengerConfigs?.accessToken\n const isWhatsappConnected = activeBot?.dialog360WhatsAppConfigs?.apiKey\n const isTwilioConnected = twilioCredentials?.connected\n\n useEffect(() => {\n const attributesCopy = attributes\n .filter(({ type }) => {\n return (\n (type === FACEBOOK && !isFacebookConnected) ||\n (type === WHATSAPP && !isWhatsappConnected) ||\n (type === TWILIO && !isTwilioConnected)\n )\n })\n .map(({ name }) => {\n return `{{${name}}}`\n })\n\n setNotConnectedAttributes(attributesCopy)\n }, [attributes])\n\n useEffect(() => {\n const selectionchangeListener = () => selectionChangeListener(inputRef, setSelectionText)\n // eslint-disable-next-line max-len\n const pasteListener = event =>\n handleCtrlV(event, attributes, inputRef, caretNodePos, setValue, setNode, activeBotId, true)\n const copyListener = event => handleCtrlC(event, true)\n\n inputRef.current.innerHTML = backEndProcessing(currentValue, attributes)\n document.addEventListener('selectionchange', selectionchangeListener)\n inputRef.current.addEventListener('paste', pasteListener)\n inputRef.current.addEventListener('copy', copyListener)\n return () => document.removeEventListener('selectionchange', selectionchangeListener)\n }, [])\n\n useEffect(() => {\n inputRef.current.childNodes.forEach(nodeItem => {\n if (nodeItem?.tagName?.toLowerCase() === 'span') {\n nodeItem.onclick = () => checkForSelection(handleOnClickLink, nodeItem)\n }\n })\n setValue(inputRef?.current?.innerHTML)\n }, [inputRef?.current?.innerHTML])\n\n useEffect(() => {\n if (node) setCaretAfterNode(node)\n }, [node])\n\n useEffect(() => {\n onChange(frontDataProcessing(value))\n }, [value])\n\n useEffect(() => {\n setSelectAttribute(1)\n }, [show])\n\n const createLink = (link, isEditing: boolean) => {\n const linkData = {\n dataHref: link.link,\n dataExtension: link.messengerExtensions,\n innerText: link.text,\n onclick: () => checkForSelection(handleOnClickLink, spanLink),\n }\n const spanLink = createSpan(linkData)\n\n if (isEditing) node?.remove()\n ranger.deleteContents()\n ranger.insertNode(spanLink)\n onChange(frontDataProcessing(inputRef.current?.innerHTML))\n setNode(spanLink)\n }\n\n const handleOnClickLink = el => {\n const range = document.createRange()\n range.selectNodeContents(el)\n setNode(el)\n handleModalOpening(range, el.innerText, el.getAttribute('data-href'), JSON.parse(el.getAttribute('data-extension')))\n }\n\n const handleOnClickLinkButton = () => {\n const selection = window.getSelection().toString()\n if (selection) {\n handleModalOpening(window.getSelection().getRangeAt(0), selection, '', false)\n }\n }\n\n const handleModalOpening = (range, text: string, link: string, messengerExtensions) => {\n setLink({ link, text, messengerExtensions })\n setRange(range)\n setIsOpen(true)\n }\n\n const handleChange = e => {\n const caretCurPos = window.getSelection().getRangeAt(0)\n const caretCurPosIndex = caretCurPos.startOffset\n const anchorCurNode = caretCurPos.commonAncestorContainer\n const inputCurVal = e.target.innerHTML\n\n checkForOpeningAndClosingBrackets(inputRef.current, anchorCurNode, caretCurPosIndex)\n updateShowPopupWhileOnChange()\n setValue(inputCurVal)\n setIsEmpty(!inputRef.current?.innerHTML)\n\n saveCaretPos()\n }\n\n const checkForOpeningAndClosingBrackets = (inputEl, textEl, caretPosition) => {\n const inputElValue = inputEl.innerHTML\n const indexOffOpenBrackets = inputElValue.indexOf('{{')\n const indexOffCloseBrackets = inputElValue.indexOf('}}', indexOffOpenBrackets)\n\n if (indexOffOpenBrackets >= 0) {\n if (indexOffCloseBrackets > 0) {\n const startIndex = indexOffOpenBrackets + 2\n const deleteCount = indexOffCloseBrackets - indexOffOpenBrackets - 2\n const attrArr = inputElValue.split('').splice(startIndex, deleteCount)\n const attrVal = [...attrArr].join('')\n addAttribute(attrVal)\n } else {\n const start = textEl.nodeValue?.indexOf('{{') + 2\n const searchVal = textEl.nodeValue?.substring(start, caretPosition)\n setSearchAttribute(searchVal)\n }\n }\n }\n\n const updateShowPopupWhileOnChange = () => {\n inputRef.current.childNodes.forEach(nodeItem => {\n if (nodeItem.nodeType === Node.TEXT_NODE) {\n if (nodeItem.nodeValue?.includes('{{')) {\n setShow(true)\n setShowSearch(false)\n } else if (nodeItem.nodeValue?.includes('}}') || show) {\n setShow(false)\n }\n }\n })\n }\n\n const saveCaretPos = (e = null) => {\n e?.preventDefault()\n setAnchorNode(window.getSelection().anchorNode)\n\n if (window.getSelection().anchorNode === inputRef.current) {\n setCaretNodePos(window.getSelection().anchorOffset)\n } else {\n setCaretPos(window.getSelection().getRangeAt(0))\n }\n }\n\n const handleCloseAttributeList = () => {\n inputRef.current.childNodes.forEach(nodeItem => {\n if (nodeItem.nodeType === Node.TEXT_NODE && nodeItem.nodeValue?.includes('{{')) {\n nodeItem.nodeValue = nodeItem.nodeValue?.replace('{{' + searchAttribute, '')\n }\n })\n setShow(false)\n }\n\n const onKeyDown = event => {\n handleSpace(event)\n handleVerticalArrows(event)\n handleEnter(event)\n handleHorizontalArrows(event)\n handleCtrlC(event, false)\n handleCtrlV(event, attributes, inputRef, caretNodePos, setValue, setNode, activeBotId, false)\n }\n\n const handleSpace = event => {\n const key = event.keyCode || event.charCode\n\n if (!showSearch && key === SPACE_KEY && show) {\n event.preventDefault()\n }\n }\n\n const handleVerticalArrows = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n event.preventDefault()\n\n if (show) {\n updateAttributeListScroll(key)\n }\n return true\n }\n }\n\n const updateAttributeListScroll = direction => {\n const childNodes = attributeList?.current?.childNodes\n const selectedChildNodeIndex = calculateSelectedChildNodeIndex(direction, attributeList, selectedAttribute)\n const selectedChildNode = childNodes[selectedChildNodeIndex]\n\n selectedChildNode?.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n })\n setSelectAttribute(selectedChildNodeIndex)\n }\n\n const handleEnter = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ENTER_KEY) {\n event.preventDefault()\n\n if (show) {\n const selectedValue = attributeList?.current?.childNodes[selectedAttribute]?.innerText || searchAttribute\n if (selectedValue) {\n addAttribute(selectedValue)\n }\n } else {\n document.execCommand('insertLineBreak')\n }\n }\n }\n\n const handleHorizontalArrows = event => {\n const key = event.keyCode || event.charCode\n\n if ((key === ARROW_LEFT_KEY || key === ARROW_RIGHT_KEY) && show) {\n event.preventDefault()\n }\n }\n\n const onKeyPress = event => {\n const key = event.keyCode || event.charCode\n\n inputRef.current.childNodes.forEach(nodeItem => {\n if (nodeItem.nodeType === Node.TEXT_NODE && nodeItem.nodeValue?.includes('{{') && key === 123) {\n event.preventDefault()\n }\n })\n }\n\n const addAttribute = attribute => {\n if (attribute) {\n const caretCurPos = window.getSelection().getRangeAt(0).startOffset\n if (!checkAttributeForExistingAndConnection(inputRef, notConnectedAttributes, attribute, caretCurPos)) {\n const currentAttribute = attributes.find(({ name }) => name === attribute)\n const newAttr = generateAttribute(currentAttribute, attribute)\n if (!currentAttribute) createAttribute(activeBotId, { name: attribute })\n selectAttributeAddType(newAttr)\n setNode(newAttr)\n removeExtraBracketsAfterAttributeIsAdded(inputRef, newAttr, attribute)\n setCaretAfterNode(newAttr)\n }\n } else {\n removeExtraBrackets()\n }\n setShowSearch(true)\n setSearchAttribute('')\n setShow(false)\n setValue(inputRef?.current.innerHTML)\n }\n\n const removeExtraBrackets = () => {\n inputRef.current.childNodes.forEach(nodeItem => {\n if (nodeItem?.nodeValue?.includes('{{}}')) {\n nodeItem.nodeValue = nodeItem.nodeValue.replace('{{}}', '')\n setCaretAfterNode(nodeItem)\n }\n })\n }\n\n const selectAttributeAddType = newAttr => {\n if (anchorNode === inputRef.current && caretNodePos) {\n addAttributeToAfterTag(newAttr, inputRef, caretNodePos)\n } else if (anchorNode?.nodeValue) {\n addAttributeToAfterText(newAttr, anchorNode, caretPos, inputRef)\n } else if ((!caretPos || (!caretPos.startOffset && !caretPos.endOffset)) && !caretNodePos) {\n addAttributeToEmptyField(newAttr, inputRef)\n }\n }\n\n const handleShowAttributeList = () => {\n setShow(true)\n setShowSearch(true)\n }\n\n const childNodes = inputRef?.current?.childNodes\n\n const getTextAligningForInput = (): CSSProperties => useMemo(() => ({ textAlign: rtl ? 'right' : 'left' }), [rtl])\n\n return (\n
\n {!isEmpty && selectionText && document.activeElement === inputRef?.current && (\n
checkForSelection(handleOnClickLinkButton)}>\n \n
\n )}\n \n \n setCaretAfterNode(childNodes[childNodes.length - 1])}\n />\n {((!selectionText && document.activeElement === inputRef?.current) || show) && (\n
\n \n \n \n
\n )}\n
\n )\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n activeBot: state.activeBot,\n twilioCredentials: state.twilioCredentials,\n})\n\nexport default withRouter(connect(mapStateToProps)(InputWithParamsAndLinks))\n","import { RefObject } from 'react'\n\nexport const selectionChangeListener = (inputRef: RefObject, setSelectionText: (a: string) => void) => {\n setSelectionText(document.getSelection().toString())\n\n if (document.getSelection()?.rangeCount > 0) {\n const parent = window.getSelection().getRangeAt(0).commonAncestorContainer.parentElement\n if (parent.tagName.toLowerCase() === 'span' && parent.parentElement === inputRef.current) {\n const range = document.createRange()\n const sel = window.getSelection()\n range.setStartBefore(parent)\n range.setEndAfter(parent)\n sel.removeAllRanges()\n sel.addRange(range)\n }\n }\n}\n","import { ARROW_UP_KEY, ARROW_DOWN_KEY } from '../../../../constants/keyCodes'\nimport { RefObject } from 'react'\n\nexport const calculateSelectedChildNodeIndex = (\n direction: ARROW_UP_KEY | ARROW_DOWN_KEY,\n attributeList: RefObject,\n selectedAttribute: number,\n) => {\n const childNodes = attributeList?.current?.childNodes\n const directionStep = direction === ARROW_UP_KEY ? -1 : 1\n const childNodesLength = childNodes?.length - 1\n let selectedChildNodeIndex\n\n if (childNodes[selectedAttribute + directionStep] !== undefined) {\n selectedChildNodeIndex = selectedAttribute + directionStep\n } else {\n selectedChildNodeIndex = direction === ARROW_UP_KEY ? childNodesLength : 1\n }\n\n if (childNodes[selectedChildNodeIndex]?.nodeName !== 'DIV') {\n selectedChildNodeIndex =\n selectedChildNodeIndex + directionStep < 1 ? childNodesLength : selectedChildNodeIndex + directionStep\n }\n\n return selectedChildNodeIndex\n}\n","import { RefObject } from 'react'\n\nexport const checkAttributeForExistingAndConnection = (\n inputRef: RefObject,\n notConnectedAttributes,\n attribute: string,\n caretCurPos: number\n):boolean => {\n const attributeWithBrackets = '{{' + attribute + '}}'\n let mistakeFound = false\n inputRef.current.childNodes.forEach((nodeItem, nodeIndex) => {\n if ((nodeItem.nodeType === Node.TEXT_NODE) && nodeItem.nodeValue.includes(attributeWithBrackets)) {\n notConnectedAttributes.forEach(att => {\n if (att === attributeWithBrackets) {\n nodeItem.nodeValue = nodeItem.nodeValue.replace(attributeWithBrackets, '')\n const caretCurPosIndex = caretCurPos - attributeWithBrackets.length\n const range = document.createRange()\n const sel = window.getSelection()\n range.setStart(inputRef.current.childNodes[nodeIndex], caretCurPosIndex)\n range.collapse(true)\n sel.removeAllRanges()\n sel.addRange(range)\n mistakeFound = true\n }\n })\n }\n })\n return mistakeFound\n}\n","import { WHITE } from 'constants/colors'\nimport { getAttributeColor } from 'helpers/getAttributeColor'\nimport {AttributeItemType} from 'models/AttributeTypes'\n\nexport const generateAttribute = (currentAttribute: AttributeItemType, attribute: string) => {\n const newAttr = document.createElement('attr')\n newAttr.style.display = 'inline-block'\n newAttr.style.minWidth = '15px'\n newAttr.style.minHeight = '15px'\n newAttr.style.color = WHITE\n newAttr.style.backgroundColor = getAttributeColor(currentAttribute?.type)\n newAttr.setAttribute('contenteditable', 'false')\n newAttr.style.borderRadius = '50px'\n newAttr.innerHTML = attribute\n\n return newAttr\n}\n","import { RefObject } from 'react'\n\nexport const removeExtraBracketsAfterAttributeIsAdded = (\n inputRef: RefObject,\n newAttr: HTMLElement,\n attribute: string,\n) => {\n inputRef.current.childNodes.forEach((nodeItem, index) => { //NOSONAR\n if (\n nodeItem === newAttr &&\n inputRef.current.childNodes[index - 1]?.nodeValue?.includes('{{') &&\n inputRef.current.childNodes[index - 1]?.nodeValue?.endsWith('}') &&\n !inputRef.current.childNodes[index - 1]?.nodeValue?.endsWith('}}') &&\n inputRef.current.childNodes[index + 1]?.nodeValue?.startsWith('}')\n ) {\n const prevNodeVal = inputRef.current.childNodes[index - 1]?.nodeValue\n const nextNodeVal = inputRef.current.childNodes[index + 1]?.nodeValue\n const indexOffOpenBrackets = prevNodeVal.indexOf('{{')\n if (index - 1 === 0 && prevNodeVal === '{{' + attribute + '}') {\n inputRef.current.childNodes[index - 1]?.remove()\n index -= 1\n } else {\n inputRef.current.childNodes[index - 1].nodeValue = prevNodeVal.substring(0, indexOffOpenBrackets)\n }\n if (nextNodeVal === '}' && inputRef.current.childNodes.length === 2) {\n inputRef.current.childNodes[index + 1]?.remove()\n } else {\n inputRef.current.childNodes[index + 1].nodeValue = nextNodeVal.substring(1, nextNodeVal.length)\n }\n } else if (\n nodeItem === newAttr &&\n inputRef.current.childNodes[index - 1]?.nodeValue?.includes('{{') &&\n inputRef.current.childNodes[index - 1]?.nodeValue?.endsWith('}}')\n ) {\n const prevNodeVal = inputRef.current.childNodes[index - 1]?.nodeValue\n const indexOffOpenBrackets = prevNodeVal.indexOf('{{')\n if (index - 1 === 0 && prevNodeVal === '{{' + attribute + '}}') {\n inputRef.current.childNodes[index - 1]?.remove()\n index -= 1\n } else {\n inputRef.current.childNodes[index - 1].nodeValue = prevNodeVal.substring(0, indexOffOpenBrackets)\n }\n if (inputRef.current.childNodes[index + 1] && inputRef.current.childNodes[index + 1]?.nodeValue === '') {\n inputRef.current.childNodes[index + 1]?.remove()\n }\n } else if (nodeItem === newAttr && inputRef.current.childNodes[index - 1]?.nodeValue?.includes('{{')) {\n const nodeVal = inputRef.current.childNodes[index - 1]?.nodeValue\n const indexOfOpenBrackets = nodeVal.indexOf('{{')\n inputRef.current.childNodes[index - 1].nodeValue = nodeVal.substring(0, indexOfOpenBrackets)\n if (inputRef.current.childNodes[index + 1] && inputRef.current.childNodes[index + 1]?.nodeValue === '') {\n inputRef.current.childNodes[index + 1]?.remove()\n }\n if (inputRef.current.childNodes[index - 1] && inputRef.current.childNodes[index - 1]?.nodeValue === '') {\n inputRef.current.childNodes[index - 1]?.remove()\n }\n }\n })\n}\n","import { RefObject } from 'react'\n\nexport const addAttributeToAfterTag = (\n newAttr: HTMLElement,\n inputRef: RefObject,\n caretNodePos: number,\n) => {\n inputRef.current.childNodes.forEach((nodeItem, index) => {\n if (index === caretNodePos - 1) {\n inputRef.current.insertBefore(newAttr, nodeItem.nextSibling)\n }\n })\n}\n","import { RefObject } from 'react'\n\nexport const addAttributeToAfterText = (\n newAttr: HTMLElement,\n anchorNode: HTMLElement,\n caretPos: any,\n inputRef: RefObject,\n) => {\n const text1 = anchorNode.nodeValue?.substr(0, caretPos.startOffset) || ''\n const text2 = anchorNode.nodeValue?.substr(caretPos.startOffset) || ''\n const text1Node = document.createTextNode(text1)\n const text2Node = document.createTextNode(text2)\n inputRef.current?.replaceChild(text1Node, anchorNode)\n inputRef.current?.insertBefore(newAttr, text1Node.nextSibling)\n inputRef.current?.insertBefore(text2Node, newAttr.nextSibling)\n}\n","import { RefObject } from 'react'\n\nexport const addAttributeToEmptyField = (newAttr: HTMLElement, inputRef: RefObject) => {\n inputRef.current.insertBefore(newAttr, inputRef.current.childNodes[0])\n}\n","import { BLUE } from 'constants/colors'\n\nexport const createSpan = ({ dataHref, dataExtension, innerText, onclick }) => {\n const spanLink = document.createElement('span')\n spanLink.className = 'linkEdited'\n spanLink.setAttribute('data-href', `${dataHref}`)\n spanLink.setAttribute('contenteditable', 'false')\n spanLink.style.color = BLUE\n spanLink.id = '' + Date.now()\n spanLink.setAttribute('data-extension', `${dataExtension}`)\n spanLink.innerText = innerText\n spanLink.onclick = onclick\n\n return spanLink\n}\n","import React from 'react'\nimport { IconButton, Tooltip, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { Warning } from '@material-ui/icons'\n\nimport { PlusIcon, TrashIcon } from '../../../../uiKit/icons/Icons'\nimport { USE_MESSAGE_KEYS } from '../../../../configs'\nimport MessageButton from '../messages/MessageButton'\nimport MessageQuickReplies from '../messages/MessageQuickReplies'\nimport { styles } from './styles'\nimport InputWithParamsAndLinks from '../../../../uiKit/inputs/InputWithParamsAndLinks/index'\n\nconst TextMessage = props => {\n const { classes, message, updateMessage, onDelete, rtl } = props\n const handleChangeName = value => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.name = value\n updateMessage(newMessage)\n }\n\n const handleChangeText = (index, value) => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.texts[index] = value\n updateMessage(newMessage)\n }\n\n const updateBtn = (btn, btnIndex) => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.buttons[btnIndex] = btn\n updateMessage(newMessage)\n }\n\n const deleteButton = btnIndex => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.buttons.splice(btnIndex, 1)\n updateMessage(newMessage)\n }\n\n const addNewButton = () => {\n const newMessage = JSON.parse(JSON.stringify(message))\n if (newMessage.buttons == null) newMessage.buttons = []\n\n newMessage.buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n updateMessage(newMessage)\n }\n\n const handleDeleteText = index => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.texts.splice(index, 1)\n updateMessage(newMessage)\n }\n\n const addAddTextField = () => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.texts.push('')\n updateMessage(newMessage)\n }\n\n return (\n
\n
\n
\n {onDelete && !message?.isHardCoded && (\n \n \n \n \n \n )}\n\n {message?.isHardCoded && (\n \n \n \n )}\n\n {USE_MESSAGE_KEYS && (\n handleChangeName(event.target.value)}\n />\n )}\n\n handleChangeText(0, value)}\n />\n\n
\n {message?.buttons?.map((btn, index) => (\n updateBtn(btn, index)}\n onDelete={() => deleteButton(index)}\n />\n ))}\n {(message.buttons == null || message.buttons.length < 3) && (\n
\n Add button\n
\n )}\n
\n
\n\n {message.texts\n .filter((elem, index) => index !== 0)\n .map((elem, index) => (\n
\n handleDeleteText(index + 1)}>\n \n \n \n \n handleChangeText(index + 1, value)}\n rtl={rtl}\n />\n
\n ))}\n
\n \n
\n
\n \n
\n )\n}\n\nTextMessage.propTypes = {\n classes: PropTypes.object,\n message: PropTypes.object,\n updateMessage: PropTypes.func,\n onDelete: PropTypes.func,\n}\n\nexport default withStyles(styles)(TextMessage)\n","export const styles = () => ({\n container: {\n width: '100%',\n },\n textFieldsWrap: {\n display: 'flex',\n overflow: 'scroll',\n alignItems: 'center',\n cursor: 'pointer',\n '&::-webkit-scrollbar': {\n height: 6,\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.6,\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n message: {\n width: 280,\n position: 'relative',\n padding: 0,\n borderRadius: 10,\n backgroundColor: '#f8f8f8',\n textAlign: 'left',\n minWidth: 250,\n margin: '0px 0px 10px',\n maxWidth: 250,\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n deleteTemplate: {\n left: '228px',\n top: '0px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n tooltip: {\n margin: 10,\n color: '#f44336',\n },\n keyInput: {\n width: '100%',\n border: '1px solid #e5e5e5',\n borderBottom: '0px',\n borderRadius: '10px 10px 0px 0px',\n outline: 'none',\n height: 40,\n fontSize: 14,\n padding: '0px 10px',\n },\n buttonsContainer: {\n backgroundColor: 'white',\n borderRadius: '0 0 10px 10px',\n border: '1px solid #e5e5e5',\n borderTop: '0px solid #e5e5e5',\n },\n textWrap: {\n minWidth: 250,\n marginLeft: 10,\n position: 'relative',\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n deleteText: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n },\n plusIconWrap: {\n minWidth: 250,\n height: 120,\n marginLeft: 10,\n border: '1px solid #e5e5e5',\n borderRadius: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n },\n deleteIconWrap: {\n position: 'absolute',\n right: -19,\n display: 'none',\n marginTop: -20,\n zIndex: 100,\n },\n addButton: {\n background: '#5A98F7',\n color: 'white',\n fontWeight: 500,\n padding: 6,\n textAlign: 'center',\n cursor: 'pointer',\n margin: 'auto',\n borderRadius: '0 0 10px 10px',\n '&:hover': {\n color: '#0084ff',\n background: 'white',\n },\n },\n})\n","/**\n * Created by Admin on 22.03.2018.\n */\n/**\n * @author Den Boyko\n * @version 1.0\n */\nimport React from 'react'\nimport Dropzone from 'react-dropzone'\nimport { withStyles } from '@material-ui/core/styles'\nimport { alertError, logoutOnRequestOrResponseJson } from '../../api'\nimport { BASE_URL } from '../../configs'\nimport { PhotoIcon } from '../icons/Icons'\nimport * as cookie from 'react-cookies'\nimport { isStringEmpty } from '../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n image: {\n width: 'auto',\n height: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n margin: 'auto',\n },\n replace: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n maxHeight: 80,\n },\n container: {\n background: '#FFFFFF',\n border: '1px dashed #D7D8DF',\n boxSizing: 'border-box',\n borderRadius: 10,\n margin: '0 auto',\n width: '60%',\n maxWidth: 650,\n display: 'flex',\n justifyContent: 'center',\n padding: '60px 0 40px',\n },\n containerEmpty: {\n padding: '47px 0 25px',\n display: 'flex',\n justifyContent: 'center',\n },\n})\n\nclass FileDropzone extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n show: false,\n }\n this.handleDrop = this.handleDrop.bind(this)\n }\n\n handleDrop(files) {\n const self = this\n const file = new FormData()\n file.append('file', files[0])\n fetch(BASE_URL + '/image', {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(response => {\n self.props.onChange(response.url)\n })\n .catch(function(error) {\n alertError('Fail. Try it later', 10000)\n })\n }\n\n render() {\n const { classes } = this.props\n return (\n \n \n \n {isStringEmpty(this.props.value) && (\n
\n \n {/**/}\n \n {this.props.title}\n

\n
\n )}\n \n \n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(FileDropzone)\n","export const regexIndexOf = (string, regex, startpos) => {\n var indexOf = string.substring(startpos || 0).search(regex)\n return indexOf >= 0 ? indexOf + (startpos || 0) : indexOf\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport AttributesList from '../../uiKit/AttributesList/AttributesList'\nimport { AttributeIcon } from '../icons/AttributeIcon'\nimport { getAttributeColor } from '../../helpers/getAttributeColor'\nimport { createAttribute } from '../../tabs/settings/api/attributes'\n\nimport { styles } from './styles'\nimport {\n ARROW_DOWN_KEY,\n ARROW_LEFT_KEY,\n ARROW_RIGHT_KEY,\n ARROW_UP_KEY,\n BACKSPACE_KEY,\n DELETE_KEY,\n ENTER_KEY,\n SPACE_KEY,\n} from '../../constants/keyCodes'\nimport {\n ASTERISK,\n ATTRIBUTE_REGEX,\n ATTRIBUTE_REGEX_INCLUDE,\n ATTRIBUTE_REGEX_OR_OPEN_BRACKETS,\n CLOSE_BRACKET,\n CLOSE_PAIR_BRACKET,\n container,\n EMPTY_BRACKETS,\n NOT_ASTERISK_REGEX,\n OPEN_BRACKET,\n OPEN_PAIR_BRACKET,\n} from './config'\nimport { usePrevious } from '../../hooks/usePrevious'\nimport { regexIndexOf } from '../../helpers/regexIndexOf'\nimport { FACEBOOK, TWILIO, WHATSAPP } from '../../constants/attributeTypes'\nimport { alertError } from '../../api'\n\nconst InputWithParams = props => {//NOSONAR\n const {\n classes,\n rtl,\n value,\n placeholder,\n onChange,\n disableBorderRadius,\n attributes,\n activeBotId,\n scrollBlock,\n singleLine,\n hoverButton,\n styles,\n saveTime,\n required,\n activeBot,\n twilioCredentials,\n } = props\n\n const [show, setShow] = useState(false)\n const [showSearch, setShowSearch] = useState(false)\n const [currentValue, setCurrentValue] = useState(null)\n const [searchValue, setSearchValue] = useState(EMPTY_BRACKETS)\n const [selectedAttribute, setSelectAttribute] = useState(1)\n const [caretPosition, setCaretPosition] = useState(0)\n const [touched, setTouched] = useState(false)\n const [focused, setFocused] = useState(false)\n const [notConnectedAttributes, setNotConnectedAttributes] = useState(false)\n\n const prevShow = usePrevious(show)\n const prevSaveTime = usePrevious(saveTime)\n\n const backdrop = useRef(null)\n const highlights = useRef(null)\n const textarea = useRef(null)\n const attributeIcon = useRef(null)\n const attributeList = useRef(null)\n\n const isFacebookConnected = activeBot?.messengerConfigs?.accessToken\n const isWhatsappConnected = activeBot?.dialog360WhatsAppConfigs?.apiKey\n const isTwilioConnected = twilioCredentials?.connected\n\n useEffect(() => {\n const attributesCopy = attributes\n .filter(({ type }) => {\n return (\n (type === FACEBOOK && !isFacebookConnected) ||\n (type === WHATSAPP && !isWhatsappConnected) ||\n (type === TWILIO && !isTwilioConnected)\n )\n })\n .map(({ name }) => {\n return `{{${name}}}`\n })\n\n setNotConnectedAttributes(attributesCopy)\n }, [attributes])\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n setTouched(true)\n }\n }, [saveTime])\n\n useEffect(() => {\n if (highlights?.current) {\n highlights.current.innerHTML = applyHighlights(textarea.current.value)\n }\n }, [value, attributes])\n\n useEffect(() => {\n if (scrollBlock?.current?.style?.overflowY) scrollBlock.current.style.overflowY = show ? 'hidden' : 'scroll'\n if (prevShow && show !== prevShow) {\n textarea.current.focus()\n if (caretPosition) updateCursorPosition(caretPosition)\n }\n\n setSearchValue(EMPTY_BRACKETS)\n setSelectAttribute(1)\n }, [show])\n\n const handleScroll = event => {\n backdrop.current.scrollTop = event.target.scrollTop\n backdrop.current.scrollLeft = event.target.scrollLeft\n highlights.current.scrollLeft = event.target.scrollLeft\n highlights.current.scrollTop = event.target.scrollTop\n }\n\n const handleInput = event => {\n const text = event.target.value\n const selectionStart = textarea.current.selectionStart\n const selectionEnd = textarea.current.selectionEnd\n\n highlights.current.innerHTML = applyHighlights(text)\n\n //open attributes list when '{{' was typed\n if (text[selectionStart - 1] === OPEN_BRACKET && text[selectionStart - 2] === OPEN_BRACKET) {\n handleShowAttributes(false)\n }\n\n //close attributes list when '{' was removed\n if (text[selectionStart - 1] === OPEN_BRACKET && text[selectionStart - 2] !== OPEN_BRACKET) {\n setCaretPosition(selectionEnd)\n setShow(false)\n }\n\n //create new attribute when '}}' was typed\n if (\n text[selectionEnd - 1] === CLOSE_BRACKET &&\n text[selectionEnd - 2] === CLOSE_BRACKET &&\n text[selectionEnd - 3] !== CLOSE_BRACKET\n ) {\n const subString = text.substring(text.lastIndexOf(OPEN_PAIR_BRACKET) + 2, selectionEnd - 2)\n const isNewAttribute = !attributes.some(attribute => attribute.name === subString)\n setCaretPosition(selectionEnd)\n if (!subString.includes(CLOSE_PAIR_BRACKET) && isNewAttribute) {\n handleCreateAttribute(subString)\n } else {\n setShow(false)\n }\n }\n\n handleSearch(text)\n }\n\n const handleSearch = text => {\n const caretPosition = textarea.current.selectionStart\n const noAttributesText = text?.replace(ATTRIBUTE_REGEX, EMPTY_BRACKETS)\n const arrowIndex = noAttributesText.indexOf(OPEN_PAIR_BRACKET)\n const textStart = text.substring(0, caretPosition)\n const noAttributeTextStartLength = textStart\n .replace(ATTRIBUTE_REGEX, EMPTY_BRACKETS)\n .substring(0, caretPosition).length\n const newSearchValue = noAttributesText.substring(\n arrowIndex,\n caretPosition - (textStart.length - noAttributeTextStartLength),\n )\n\n if (newSearchValue.includes(OPEN_PAIR_BRACKET) && !newSearchValue.includes(CLOSE_BRACKET)) {\n setSearchValue(newSearchValue.replace(OPEN_PAIR_BRACKET, EMPTY_BRACKETS))\n }\n }\n\n const handleArrowDown = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ARROW_DOWN_KEY) {\n event.preventDefault()\n\n if (show) {\n updateAttributeListScroll(ARROW_DOWN_KEY)\n }\n }\n }\n\n const handleArrowUp = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ARROW_UP_KEY) {\n event.preventDefault()\n\n if (show) {\n updateAttributeListScroll(ARROW_UP_KEY)\n }\n }\n }\n const handleEnter = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ENTER_KEY && (show || singleLine)) {\n event.preventDefault()\n const selectedValue = attributeList?.current?.childNodes[selectedAttribute]?.innerText || searchValue\n if (selectedValue) {\n addParam(selectedValue)\n }\n }\n }\n\n const handleLeftArrow = event => {\n const key = event.keyCode || event.charCode\n const prevChar = event.target.value && event.target.value[textarea.current.selectionStart - 1]\n\n if (key === ARROW_LEFT_KEY && show) {\n event.preventDefault()\n }\n\n if (key === ARROW_LEFT_KEY && prevChar === CLOSE_BRACKET) {\n event.preventDefault()\n\n const closestBracketsIndex = event.target.value\n .substring(0, textarea.current.selectionStart)\n .lastIndexOf(OPEN_PAIR_BRACKET)\n\n updateCursorPosition(closestBracketsIndex)\n }\n }\n\n const handleRightArrow = event => {\n const key = event.keyCode || event.charCode\n const nextChar = event.target.value && event.target.value[textarea.current.selectionStart + 1]\n\n if (key === ARROW_RIGHT_KEY && show) {\n event.preventDefault()\n }\n\n if (key === ARROW_RIGHT_KEY && nextChar === OPEN_BRACKET) {\n event.preventDefault()\n\n const stringStart = event.target.value.substring(0, textarea.current.selectionStart)\n\n const closestBracketsIndex =\n event.target.value\n .substring(textarea.current.selectionStart, event.target.value.length)\n .indexOf(CLOSE_PAIR_BRACKET) +\n stringStart.length +\n 2\n\n updateCursorPosition(closestBracketsIndex)\n }\n }\n\n const handleSpace = event => {\n const key = event.keyCode || event.charCode\n const prevChar = event.target.value && event.target.value[textarea.current.selectionStart - 1]\n\n if (!showSearch && prevChar === OPEN_BRACKET && key === SPACE_KEY) {\n event.preventDefault()\n }\n }\n\n const onKeyDown = event => {\n handleSpace(event)\n\n handleArrowDown(event)\n\n handleArrowUp(event)\n\n handleEnter(event)\n\n handleLeftArrow(event)\n\n handleRightArrow(event)\n\n setCurrentValue(event.target.value)\n }\n\n const updateAttributeListScroll = direction => {\n let selectedChildNodeIndex\n const childNodes = attributeList?.current?.childNodes\n const directionStep = direction === ARROW_UP_KEY ? -1 : 1\n const childNodesLength = childNodes?.length - 1\n\n //change index of highlighted item\n if (childNodes[selectedAttribute + directionStep]) {\n selectedChildNodeIndex = selectedAttribute + directionStep\n } else {\n selectedChildNodeIndex = direction === ARROW_UP_KEY ? childNodesLength : 1\n }\n\n //make one step ahead when childNode is not item\n if (childNodes[selectedChildNodeIndex].nodeName !== 'DIV') {\n selectedChildNodeIndex =\n selectedChildNodeIndex + directionStep < 1 ? childNodesLength : selectedChildNodeIndex + directionStep\n }\n\n const selectedChildNode = childNodes[selectedChildNodeIndex]\n\n selectedChildNode.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n })\n setSelectAttribute(selectedChildNodeIndex)\n }\n\n //function to remove whole attribute by 'delete' or 'backspace'\n const onKeyUp = event => {\n const key = event.keyCode || event.charCode\n const position = textarea.current.selectionStart\n const placeholder = ATTRIBUTE_REGEX\n\n if (key === DELETE_KEY || key === BACKSPACE_KEY) {\n for (let match; (match = placeholder.exec(currentValue)) !== null;) {\n if (match.index < position + 1 && placeholder.lastIndex > position) {\n handleChange(\n currentValue.substr(0, match.index) + currentValue.substring(placeholder.lastIndex, currentValue.length),\n )\n\n const caretPosition = currentValue.substr(0, match.index).length\n\n //need this to keep cursor position\n setTimeout(() => updateCursorPosition(caretPosition), 0)\n }\n }\n }\n }\n\n const addParam = attributeName => {\n const position = textarea.current.selectionStart\n const stringStart = value.slice(0, position)\n const lastBracketIndex = stringStart.lastIndexOf(OPEN_PAIR_BRACKET)\n const start = showSearch ? stringStart : stringStart.slice(0, lastBracketIndex)\n const end = value.slice(position)\n const text = `${start}{{${attributeName}}}${end}`\n const caretPosition = position + (attributeName?.length - searchValue.length) + (showSearch ? 4 : 2)\n\n setCaretPosition(caretPosition)\n\n handleChange(text)\n setShow(false)\n }\n\n const handleShowAttributes = focus => {\n setShow(true)\n setShowSearch(focus)\n }\n\n const handleCreateAttribute = attributeName => {\n createAttribute(activeBotId, { name: attributeName }).then(() => setShow(false))\n }\n\n const getPopupPosition = () => {\n const buttonPos = attributeIcon?.current?.getBoundingClientRect()\n const highlightsPos = Object.values(highlights?.current?.children || {})\n ?.find(({ nodeName }) => nodeName === 'MOCK')\n ?.getBoundingClientRect()\n\n return getPopupPositionByElement(showSearch ? buttonPos : highlightsPos)\n }\n\n const getPopupPositionByElement = element => {\n const absoluteTop = element?.top + element?.height\n const absoluteRight = element?.left + element?.width\n const isEnoughSpaceHeight = absoluteTop + container.height > window.innerHeight\n const isEnoughSpaceWidth = absoluteRight + container.width < window.innerWidth\n\n const top = absoluteTop - (isEnoughSpaceHeight && container.height) + 'px'\n\n const left = absoluteRight - (!isEnoughSpaceWidth && container.width) + 'px'\n\n return { top, left }\n }\n\n const handleCloseAttributeList = () => {\n const text = value.split(ATTRIBUTE_REGEX_INCLUDE).map(removeExtraBrackets).join(EMPTY_BRACKETS)\n\n handleChange(text)\n setShow(false)\n }\n\n const removeExtraBrackets = str => {\n if (!str.endsWith(CLOSE_PAIR_BRACKET)) {\n return str.replace(`{{${searchValue}`, EMPTY_BRACKETS)\n }\n return str\n }\n\n const updateCursorPosition = caretPosition => {\n textarea.current.selectionStart = caretPosition\n textarea.current.selectionEnd = caretPosition\n }\n\n const handleSkipAttribute = () => {\n const updatedValue = value?.replaceAll(ATTRIBUTE_REGEX_INCLUDE, match => {\n return match.replace(/[^{}]/g, ASTERISK)\n })\n\n const prevChar = updatedValue[textarea.current.selectionStart - 1]\n const nextChar = updatedValue[textarea.current.selectionStart]\n\n if (\n [ASTERISK, CLOSE_BRACKET, OPEN_BRACKET].includes(prevChar) &&\n [ASTERISK, CLOSE_BRACKET, OPEN_BRACKET].includes(nextChar)\n ) {\n const endText = updatedValue.substring(textarea.current.selectionStart, updatedValue.length)\n let caretPosition = updatedValue.substring(0, textarea.current.selectionStart).length\n\n if (regexIndexOf(endText, NOT_ASTERISK_REGEX, 0) > 0 || (prevChar === ASTERISK && nextChar === CLOSE_BRACKET)) {\n caretPosition += regexIndexOf(endText, NOT_ASTERISK_REGEX, 0) + 2\n } else if (prevChar === OPEN_BRACKET && nextChar === OPEN_BRACKET) {\n caretPosition += regexIndexOf(endText, NOT_ASTERISK_REGEX, 2) + 2\n } else if (prevChar === CLOSE_BRACKET && nextChar === CLOSE_BRACKET) {\n caretPosition += regexIndexOf(endText, NOT_ASTERISK_REGEX, 0) + 1\n } else if (prevChar === CLOSE_BRACKET && nextChar === OPEN_BRACKET) {\n caretPosition = textarea.current.selectionStart\n } else {\n caretPosition = updatedValue.length\n }\n\n updateCursorPosition(caretPosition)\n }\n }\n\n const applyHighlights = text => {\n return text?.replace(/\\n$/g, '\\n\\n')?.replace(ATTRIBUTE_REGEX_OR_OPEN_BRACKETS, onReplaceAttribute)\n }\n\n const onReplaceAttribute = match => {\n const matchCopy = match?.replace(/{{/g, '')?.replace(/}}/g, '')\n const currentAttribute = attributes?.find(attribute => attribute.name === matchCopy)\n const openBracketsStyle = `background: ${getAttributeColor(\n currentAttribute?.type,\n )}; color:transparent; border-radius: 50px 0 0 50px;`\n const attributeStyle = `background: ${getAttributeColor(currentAttribute?.type)}; color:#ffffff;`\n const closeBracketsStyle = `background: ${getAttributeColor(\n currentAttribute?.type,\n )}; color:transparent; border-radius: 0 50px 50px 0;`\n\n return match.length > 2\n ? // eslint-disable-next-line max-len\n `{{${matchCopy}}}`\n : `${match}`\n }\n\n const handleBlur = () => {\n setCaretPosition(textarea.current.selectionStart)\n setFocused(false)\n }\n\n const handleChange = value => {\n let valueCopy = value\n notConnectedAttributes.forEach(att => {\n const found = value.match(att) && value.match(att)[0]\n if (found) {\n alertError('Attribute with this channel is not connected to bot instance')\n }\n return (valueCopy = valueCopy.replace(found, ''))\n })\n\n setTouched(true)\n onChange(valueCopy)\n }\n\n const handleFocus = () => {\n setFocused(true)\n setTouched(true)\n }\n\n return (\n
\n \n \n
\n handleChange(e.target.value)}\n onScroll={handleScroll}\n onInput={handleInput}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n onClick={handleSkipAttribute}\n onBlur={handleBlur}\n ref={textarea}\n onFocus={handleFocus}\n />\n onKeyDown(event)}\n updateSelectedAttribute={setSelectAttribute}\n />\n
\n {hoverButton}\n handleShowAttributes(true)}\n onKeyDown={event => onKeyDown(event)}\n tabIndex={'0'}\n ref={attributeIcon}>\n \n \n
\n \n )\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n activeBot: state.activeBot,\n twilioCredentials: state.twilioCredentials,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(InputWithParams))\n","export const styles = () => ({\n container: {\n display: 'flex',\n transform: 'translateZ(0)',\n '-webkit-text-size-adjust': 'none',\n width: '100%',\n position: 'relative',\n '&:hover > div': {\n visibility: 'visible',\n },\n },\n backdrop: {\n position: 'absolute',\n zIndex: 1,\n border: '1px solid #e5e5e5',\n backgroundColor: '#fff',\n overflow: 'auto',\n pointerEvents: 'none',\n transition: 'transform 1s',\n width: '100%',\n lineHeight: '20px',\n fontSize: '14px',\n borderRadius: 10,\n height: 120,\n '&::-webkit-scrollbar': {\n width: 0,\n background: 'transparent',\n },\n },\n highlights: {\n padding: 10,\n lineHeight: '20px',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n overflow: 'scroll',\n '&>span': {\n display: 'inline',\n },\n },\n highlightsInput: {\n padding: 10,\n lineHeight: '20px',\n wordWrap: 'break-word',\n resize: 'none',\n whiteSpace: 'nowrap',\n overflowX: 'scroll',\n overflowY: 'hidden',\n '&>span': {\n display: 'inline',\n },\n '&::-webkit-scrollbar': {\n width: 0,\n background: 'transparent',\n },\n },\n textarea: {\n display: 'block',\n position: 'absolute',\n zIndex: 2,\n margin: 0,\n border: '1px solid #e5e5e5',\n color: 'transparent',\n backgroundColor: 'transparent',\n overflow: 'auto',\n resize: 'none',\n transition: 'transform 1s',\n outline: 'none',\n padding: '10px 12px 10px 10px',\n lineHeight: '20px',\n caretColor: '#000000',\n fontFamily: \"'Lato', sans-serif\",\n wordWrap: 'break-word',\n height: 120,\n },\n input: {\n display: 'block',\n position: 'absolute',\n zIndex: 2,\n margin: 0,\n border: '1px solid #D7D8DF',\n color: 'transparent',\n backgroundColor: 'transparent',\n overflow: 'auto',\n resize: 'none',\n transition: 'transform 1s',\n outline: 'none',\n padding: 10,\n lineHeight: '20px',\n caretColor: '#000000',\n fontFamily: \"'Lato', sans-serif\",\n wordWrap: 'break-word',\n whiteSpace: 'nowrap',\n overflowX: 'scroll',\n overflowY: 'hidden',\n '&::-webkit-scrollbar-thumb': {\n background: 'transparent',\n },\n },\n icon: {\n width: 24,\n height: 24,\n borderRadius: 4,\n backgroundColor: 'rgba(53, 64, 82, 0.7)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n outline: 'none',\n },\n iconsWrap: {\n position: 'absolute',\n visibility: 'hidden',\n zIndex: 2,\n bottom: 4,\n right: 4,\n display: 'flex',\n gap: '2px',\n },\n})\n","import React from 'react'\nimport { IconButton } from '@material-ui/core'\nimport MessageButton from './MessageButton'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport ImageDropzone from '../../../../uiKit/inputs/FileDropzone'\nimport { connect } from 'react-redux'\nimport { PlusIcon } from '../../../../uiKit/icons/Icons.js'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\n\nconst styles = {\n container: {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n },\n view: {\n overflow: 'scroll',\n marginRight: '-17px',\n marginBottom: '-17px',\n paddingBottom: 12,\n display: 'flex',\n },\n message: {\n height: 'max-content',\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n addElement: {\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n height: '356px',\n },\n}\n\nclass Template extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n addElement() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.push({\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n })\n this.props.updateMessage(newMessage)\n }\n\n handleChange(elemIndex, value, name) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements[elemIndex][name] = value\n this.props.updateMessage(newMessage)\n }\n\n addNewButtonToElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.elements[elemIndex].buttons == null) {\n newMessage.attachment.payload.elements[elemIndex].buttons = []\n }\n newMessage.attachment.payload.elements[elemIndex].buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n addNewButton() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.buttons == null) {\n newMessage.attachment.payload.buttons = []\n }\n newMessage.attachment.payload.buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n updateBtn(btn, btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons[btnIndex] = btn\n else newMessage.attachment.payload.buttons[btnIndex] = btn\n this.props.updateMessage(newMessage)\n }\n\n deleteButton(btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons.splice(\n btnIndex,\n 1,\n )\n else newMessage.attachment.payload.buttons.splice(btnIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n isEnoughElements() {\n const numOfElem = 11\n return this.props.message.attachment.payload.elements.length < numOfElem\n }\n\n onDeleteElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const elementsNum = this.props.message.attachment.payload.elements.length\n const { rtl, scrollBlock } = this.props\n\n return (\n
\n \n {this.props.message.attachment.payload.elements.map(\n (elem, elemIndex) => (\n
\n \n this.handleChange(elemIndex, image_url, 'image_url')\n }\n title=\"Replace image\"\n />\n\n \n this.handleChange(elemIndex, value, 'title')\n }\n value={elem.title}\n placeholder=\"Title\"\n styles={{\n height: 70,\n }}\n title=\"Title\"\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n\n \n this.handleChange(elemIndex, value, 'subtitle')\n }\n value={elem.subtitle}\n placeholder=\"Subtitle\"\n styles={{\n height: 70,\n }}\n title=\"Subtitle\"\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n\n
\n {elem.buttons != null &&\n elem.buttons.map((btn, btnIndex) => (\n \n this.updateBtn(btn, btnIndex, elemIndex)\n }\n onDelete={() => this.deleteButton(btnIndex, elemIndex)}\n />\n ))}\n {(elem.buttons == null || elem.buttons.length < 3) && (\n this.addNewButtonToElem(elemIndex)}>\n add button\n
\n )}\n
\n {elementsNum > 1 && (\n this.onDeleteElem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ),\n )}\n
\n {this.isEnoughElements() && (\n this.addElement()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n \n
\n
\n )}\n {this.props.onDelete && (\n this.props.onDelete()}>\n \"delete\"\n \n )}\n \n \n this.props.updateMessage(message)}\n />\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(Template)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { IconButton } from '@material-ui/core'\nimport MessageButton from './MessageButton'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport ImageDropzone from '../../../../uiKit/inputs/FileDropzone'\nimport { connect } from 'react-redux'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\n\nconst styles = {\n container: {\n width: 280,\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n position: 'relative',\n },\n message: {\n position: 'relative',\n },\n button: {\n // marginLeft: \"30px\",\n },\n addElement: {\n borderTop: '1px solid rgb(229, 229, 229)',\n cursor: 'pointer',\n color: 'grey',\n },\n}\n\nclass Template extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n addElement() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.push({\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n })\n this.props.updateMessage(newMessage)\n }\n\n handleChange(elemIndex, value, name) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements[elemIndex][name] = value\n this.props.updateMessage(newMessage)\n }\n\n addNewButtonToElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.elements[elemIndex].buttons == null) {\n newMessage.attachment.payload.elements[elemIndex].buttons = []\n }\n newMessage.attachment.payload.elements[elemIndex].buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n addNewButton() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.buttons == null) {\n newMessage.attachment.payload.buttons = []\n }\n newMessage.attachment.payload.buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n updateBtn(btn, btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons[btnIndex] = btn\n else newMessage.attachment.payload.buttons[btnIndex] = btn\n this.props.updateMessage(newMessage)\n }\n\n deleteButton(btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons.splice(\n btnIndex,\n 1,\n )\n else newMessage.attachment.payload.buttons.splice(btnIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n isEnoughElements() {\n const numOfElem = 4\n return this.props.message.attachment.payload.elements.length < numOfElem\n }\n\n onDeleteElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const { buttons } = this.props.message.attachment.payload\n const elementsNum = this.props.message.attachment.payload.elements.length\n const { scrollBlock } = this.props\n\n return (\n
\n
\n {this.props.message.attachment.payload.elements.map(\n (elem, elemIndex) => (\n
\n \n this.handleChange(elemIndex, image_url, 'image_url')\n }\n title=\"Try choosing or dropping some image here.\"\n />\n\n \n this.handleChange(elemIndex, value, 'title')\n }\n value={elem.title}\n placeholder=\"Title\"\n styles={{\n height: 70,\n }}\n title=\"Title\"\n scrollBlock={scrollBlock}\n />\n\n \n this.handleChange(elemIndex, value, 'subtitle')\n }\n value={elem.subtitle}\n placeholder=\"Subtitle\"\n styles={{\n height: 70,\n }}\n title=\"Subtitle\"\n scrollBlock={scrollBlock}\n />\n\n
\n {elem.buttons != null &&\n elem.buttons.map((btn, btnIndex) => (\n \n this.updateBtn(btn, btnIndex, elemIndex)\n }\n onDelete={() => this.deleteButton(btnIndex, elemIndex)}\n />\n ))}\n\n {(elem.buttons == null || elem.buttons.length < 1) && (\n this.addNewButtonToElem(elemIndex)}\n style={styles.button}>\n add button\n
\n )}\n
\n {elementsNum > 2 && (\n this.onDeleteElem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ),\n )}\n {this.isEnoughElements() && (\n this.addElement()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n

+ ADD ITEM

\n
\n
\n )}\n {\n \n {buttons != null &&\n buttons.map((btn, btnIndex) => (\n this.updateBtn(btn, btnIndex, null)}\n onDelete={() => this.deleteButton(btnIndex, null)}\n />\n ))}\n {(buttons == null || buttons.length < 1) && (\n
this.addNewButton()}>\n Add button\n
\n )}\n \n }\n {this.props.onDelete && (\n
this.props.onDelete()}>\n \"delete\"\n
\n )}\n \n this.props.updateMessage(message)}\n />\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\nexport default connect(mapStateToProps)(Template)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport GenericTemplate from './GenericTemplate'\nimport ListTemplate from './ListTemplate'\n\nclass Template extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n isGeneric() {\n return this.props.message.attachment.payload.template_type === 'generic'\n }\n\n isList() {\n return this.props.message.attachment.payload.template_type === 'list'\n }\n\n render() {\n return (\n
\n {this.isList() && (\n this.props.updateMessage(message)}\n onDelete={() => this.props.onDelete()}\n scrollBlock={this.props.scrollBlock}\n />\n )}\n {this.isGeneric() && (\n this.props.updateMessage(message)}\n onDelete={() => this.props.onDelete()}\n scrollBlock={this.props.scrollBlock}\n />\n )}\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\nexport default connect(mapStateToProps)(Template)\n","/**\n * Created by Admin on 15.02.2018.\n */\nimport React from 'react'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport FileDropzone from '../../../../uiKit/inputs/FileDropzone'\n\nexport default class Attachment extends React.Component {\n state = {}\n\n handleChange(fileUrl) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.url = fileUrl\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const { rtl } = this.props\n return (\n
\n
\n this.handleChange(fileUrl)}\n title=\"Replace image\"\n />\n {this.props.onDelete && (\n
this.props.onDelete()}>\n \"delete\"\n
\n )}\n
\n this.props.updateMessage(message)}\n />\n
\n )\n }\n}\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport { IconButton } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { Scrollbars } from 'react-custom-scrollbars'\nimport LibraryAdd from '@material-ui/icons/LibraryAdd'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\n\nconst styles = {\n container: {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n },\n view: {\n overflow: 'scroll',\n marginRight: '-17px',\n marginBottom: '-17px',\n paddingBottom: 12,\n display: 'flex',\n },\n message: {\n height: 'max-content',\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n addElement: {\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n}\n\nclass RandomTextMessage extends React.Component {\n state = {}\n\n handleChangeText(elemIndex, value) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].text = value\n this.props.updateMessage(newMessage)\n }\n\n handleChangeName(value) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.name = value\n this.props.updateMessage(newMessage)\n }\n\n updateBtn(btn, btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].buttons[btnIndex] = btn\n this.props.updateMessage(newMessage)\n }\n\n deleteButton(btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].buttons.splice(btnIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n addNewButton(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.items[elemIndex].buttons == null) {\n newMessage.items[elemIndex].buttons = []\n }\n newMessage.items[elemIndex].buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n addItem() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.push({\n text: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n onDeleteItem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const elementsNum = this.props.message.items.length\n const { rtl, scrollBlock } = this.props\n return (\n
\n
}>\n {this.props.message.items.map((elem, elemIndex) => (\n
\n this.handleChangeText(elemIndex, value)}\n value={elem.text}\n placeholder=\"Input text...\"\n scrollBlock={scrollBlock}\n />\n {elementsNum > 1 && (\n this.onDeleteItem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ))}\n this.addItem()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n \n
\n
\n {this.props.onDelete && (\n this.props.onDelete()}>\n \"delete\"\n \n )}\n \n this.props.updateMessage(message)}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(RandomTextMessage)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport { IconButton } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { Scrollbars } from 'react-custom-scrollbars'\nimport LibraryAdd from '@material-ui/icons/LibraryAdd'\nimport FileDropzone from '../../../../uiKit/inputs/FileDropzone'\n\nconst styles = {\n container: {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n },\n view: {\n overflow: 'scroll',\n marginRight: '-17px',\n marginBottom: '-17px',\n paddingBottom: 12,\n display: 'flex',\n },\n message: {\n height: 'max-content',\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n addElement: {\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n}\n\nclass RandomTextMessage extends React.Component {\n state = {}\n\n handleChangeUrl(fileUrl, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].attachment.payload.url = fileUrl\n this.props.updateMessage(newMessage)\n }\n\n addItem() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.push({\n attachment: {\n type: 'image',\n payload: {\n url: '',\n },\n },\n })\n this.props.updateMessage(newMessage)\n }\n\n onDeleteItem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const elementsNum = this.props.message.items.length\n const { rtl } = this.props\n\n return (\n
\n
}>\n {this.props.message.items.map((elem, elemIndex) => (\n
\n this.handleChangeUrl(fileUrl, elemIndex)}\n title=\"Replace image\"\n />\n {elementsNum > 1 && (\n this.onDeleteItem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ))}\n\n this.addItem()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n \n
\n
\n\n {this.props.onDelete && (\n this.props.onDelete()}>\n \"delete\"\n \n )}\n \n this.props.updateMessage(message)}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(RandomTextMessage)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport Slider from 'react-rangeslider'\nimport 'react-rangeslider/lib/index.css'\n\nconst styles = {\n container: {\n marginTop: 10,\n position: 'relative',\n padding: 10,\n border: '1px solid #e5e5e5',\n borderRadius: 10,\n width: '100%',\n },\n}\n\nclass Typing extends React.Component {\n handleChange = value => {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.time = value\n this.props.updateMessage(newMessage)\n }\n\n render() {\n return (\n
\n

Show typing for at least {this.props.message.time} seconds

\n \n {this.props.onDelete && (\n
this.props.onDelete()}>\n \"delete\"\n
\n )}\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(Typing)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport { TrashIcon } from '../../../../uiKit/icons/Icons'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\n\nconst styles = theme => ({\n container: {\n background: '#ffffff',\n border: '1px solid #EBEBEF',\n borderRadius: 10,\n width: 254,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n marginBottom: 16,\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n name: {\n padding: '17px 24px',\n borderBottom: '1px solid #EBEBEF',\n fontSize: 14,\n color: '#3A3F62',\n fontWeight: 'bold',\n },\n options: {\n padding: 16,\n },\n text: {\n fontSize: 14,\n color: '#616581',\n margin: '0 0 8px',\n },\n '@global': {\n '.message1:hover .delete-template': {\n display: 'block',\n },\n '.message1': {\n position: 'relative',\n },\n '.message1 .delete-template': {\n left: '233px',\n top: '-20px',\n position: 'absolute',\n transition: 'all 0.5s ease',\n },\n '.trashIcon:hover svg path': {\n stroke: '#1658F3',\n },\n '.add-button': {\n background: '#5A98F7',\n color: 'white',\n },\n '.add-button:hover': {\n background: 'white',\n color: '#5A98F7',\n },\n },\n})\nclass UserInput extends React.Component {\n state = {\n atom: {\n id: null,\n name: null,\n },\n parameter: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n function getAtomNameByAtomId(atomId, flows) {\n let selectedAtomName\n flows.forEach(flow => {\n if (flow.atoms) {\n flow.atoms.forEach(atom => {\n if (atom.id === atomId) {\n selectedAtomName = atom.name\n }\n })\n }\n })\n return selectedAtomName\n }\n\n return {\n atom: {\n id: props.message.next_atom,\n name: getAtomNameByAtomId(props.message.next_atom, props.flows),\n },\n parameter: props.message.parameter,\n }\n }\n\n onChange(atomName, atomId) {\n const message = this.props.message\n message.next_atom = atomId\n this.setState(\n {\n atom: {\n id: atomId,\n name: atomName,\n },\n },\n () => {\n this.props.updateMessage(message)\n },\n )\n }\n\n handleName(event) {\n const message = this.props.message\n message.parameter = event.target.value\n this.setState(\n {\n parameter: event.target.value,\n },\n () => {\n this.props.updateMessage(message)\n },\n )\n }\n\n render() {\n const { classes, rtl } = this.props\n return (\n
\n {this.props.onDelete && !this.props.message.isHardCoded && (\n
\n this.props.onDelete()}>\n \n \n
\n )}\n
User input
\n
\n

Add an input name

\n
\n this.handleName(event)}\n />\n
\n

Choose atom on successful input

\n this.onChange(label, id)}/>\n
\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n flows: state.flows,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UserInput))\n","import React, { MouseEventHandler, ReactNode } from 'react'\nimport classes from './styles.module.scss'\nimport Tooltip from '../../../../uiKit/TooltipInfo/Tooltip'\nimport { IconButton } from '@material-ui/core'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\n\ninterface Props {\n tooltipText: string\n title: string\n children: ReactNode\n headerButton?: () => void\n onDelete: MouseEventHandler\n}\n\nconst MessageTemplate: React.FC = ({ tooltipText, title, children, onDelete, headerButton }) => {\n return (\n
\n
\n \n {title}\n \n \n {headerButton}\n
\n\n {children}\n\n {onDelete && (\n \n \n \n \n \n )}\n
\n )\n}\n\nexport default MessageTemplate\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport SecondaryButton from '../../../../uiKit/buttons/SecondaryButton/SecondaryButton'\n\nimport { styles } from './styles'\nimport InputAutosuggest from '../../../../uiKit/InputAutosuggest/InputAutosuggest'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\nimport MessageTemplate from '../MessageTemplate/MessageTemplate'\n\nconst SetAttribute = props => {\n const { classes, message, updateMessage, onDelete } = props\n\n const [focus, setFocus] = useState(null)\n\n const handleUpdateAttribute = (e, index) => {\n message.attributes = deepCopyFunction(message?.attributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.id = e?.value\n attribute.name = e?.label\n }\n\n return attribute\n },\n )\n updateMessage(message)\n setFocus(false)\n }\n\n const handleUpdateAttributeValue = (e, index) => {\n message.attributes = deepCopyFunction(message?.attributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.value = e.target.value\n }\n return attribute\n },\n )\n\n updateMessage(message)\n }\n\n const handleAddAttribute = () => {\n const attributesUpdate = deepCopyFunction(message?.attributes) || []\n const newAttribute = { id: null, value: null, name: null }\n\n attributesUpdate.push(newAttribute)\n message.attributes = attributesUpdate\n updateMessage(message)\n }\n\n const handleDeleteAttribute = index => {\n message.attributes = deepCopyFunction(message?.attributes).filter(\n (attribute, i) => index !== i,\n )\n updateMessage(message)\n }\n\n return (\n \n <>\n
\n
\n

Name

\n

Value

\n
\n {message?.attributes?.map((attribute, index) => (\n
\n handleUpdateAttribute(e, index)}\n onBlur={() => setFocus(false)}\n onClick={() => setFocus(index)}\n required={true}\n displayOptions={[DEFAULT, CHATBOT]}\n containerStyle={{ width: '50%' }}\n isClearable={false}\n defaultAttributes={['language', 'close_conversation', 'conversation_outcome']}\n />\n handleUpdateAttributeValue(e, index)}\n />\n {message?.attributes?.length > 1 && (\n handleDeleteAttribute(index)}>\n \n \n )}\n
\n ))}\n
\n
\n \n
\n \n \n )\n}\n\nSetAttribute.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(SetAttribute)),\n)\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid rgba(53, 64, 82, 0.1)',\n position: 'relative',\n margin: '10px 0px',\n width: '100%',\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n header: {\n padding: 18,\n fontSize: 14,\n borderBottom: '1px solid #EBEBEF',\n display: 'flex',\n },\n body: {\n padding: '24px 0px 24px 24px',\n },\n footer: {\n borderTop: '1px solid #EBEBEF',\n padding: 24,\n display: 'flex',\n justifyContent: 'flex-end',\n },\n title: {\n color: '#3A3F62',\n margin: 0,\n fontWeight: 700,\n },\n infoIcon: {\n cursor: 'pointer',\n marginLeft: 6,\n },\n labels: {\n display: 'flex',\n gap: '10px',\n paddingRight: '32px',\n '& p': {\n width: '50%',\n fontSize: 14,\n fontWeight: '700',\n color: '#354052',\n },\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'none',\n alignItems: 'center',\n marginLeft: 4,\n position: 'absolute',\n right: '4px',\n top: '6px',\n },\n attributeWrap: {\n display: 'flex',\n flexFlow: 'row',\n marginBottom: 9,\n gap: '10px',\n position: 'relative',\n paddingRight: '32px',\n '&:hover > u': {\n display: 'flex',\n },\n },\n warning: {\n position: 'absolute',\n color: '#FF6666',\n fontSize: 12,\n },\n input: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n outline: 'none',\n height: 38,\n borderRadius: 4,\n width: '214px',\n padding: '8px 12px',\n color: 'rgba(53, 64, 82, 0.7)',\n },\n deleteTemplate: {\n right: '28px',\n top: '-16px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n})\n","export const styles = () => ({\n optionWrap: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n optionDescription: {\n color: 'rgba(53, 64, 82, 0.5)',\n },\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 6px',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { customStyles, styles } from './styles'\nimport Select, { components } from 'react-select'\n\nconst ValidationSelect = props => {\n const { value, onChange, touched, onFocus, classes } = props\n\n const options = [\n { label: 'None', value: 'NONE', description: null },\n { label: 'Number', value: 'NUMBER', description: '1234567890' },\n { label: 'Email', value: 'EMAIL', description: 'example@mail.com' },\n { label: 'Phone', value: 'PHONE', description: '+12345678901' },\n { label: 'Date', value: 'DATE', description: 'yyyymmdd' },\n { label: 'Time', value: 'TIME', description: 'hh:mm' },\n { label: 'Custom validation', value: 'CUSTOM' },\n ]\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n const Option = props => {\n return (\n \n
\n
{props.data.label}
\n
\n {props.data.description}\n
\n
\n
\n )\n }\n\n return (\n \n )\n}\nValidationSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ValidationSelect)\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport ValidationSelect from '../ValidationSelect/ValidationSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\nimport MessageTemplate from '../MessageTemplate/MessageTemplate'\n\nconst initialTouched = {\n validation: false,\n customValidationRegex: false,\n onValidationSuccessAtomId: false,\n saveAsAttribute: false,\n onValidationFailAtomId: false,\n}\n\nconst SaveUserInput = props => {\n const { classes, message, updateMessage, onDelete, saveTime } = props\n\n const [focus, setFocus] = useState(null)\n const [touched, setTouched] = useState(initialTouched)\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n validation: true,\n customValidationRegex: true,\n onValidationSuccessAtomId: true,\n saveAsAttribute: true,\n onValidationFailAtomId: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n const handleChangeValidation = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.validation = e.value\n\n if (e.value === 'CUSTOM') {\n updateTouched('customValidationRegex', false)\n }\n\n if (message.saveUserInput.validation === 'NONE') {\n updateTouched('onValidationFailAtomId', false)\n }\n\n updateMessage(messageCopy)\n }\n\n const handleUpdateRegex = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.customValidationRegex = e.target.value\n\n updateMessage(messageCopy)\n }\n\n const handleUpdateAttribute = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.saveAsAttribute = {\n id: e?.value || null,\n name: e?.label || null,\n }\n updateMessage(messageCopy)\n setFocus(false)\n }\n\n const handleUpdateSuccessAtomId = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.onValidationSuccessAtomId = e.value\n\n updateMessage(messageCopy)\n }\n\n const handleUpdateFailAtomId = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.onValidationFailAtomId = e.value\n\n updateMessage(messageCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n return (\n \n
\n
\n
\n

\n Validation *\n

\n updateTouched('validation', true)}\n />\n
\n {message?.saveUserInput?.validation === 'CUSTOM' && (\n
\n

\n Custom regex *\n

\n updateTouched('customValidationRegex', true)}\n />\n
\n )}\n
\n\n
\n
\n

\n Valid input redirect *\n

\n updateTouched('onValidationSuccessAtomId', true)}\n />\n
\n\n
\n

Save as

\n setFocus(false)}\n onClick={() => setFocus(true)}\n onChange={handleUpdateAttribute}\n required={false}\n styles={{ borderRadius: 10, padding: '2px 6px' }}\n displayOptions={[DEFAULT, CHATBOT]}\n isClearable={true}\n placeholder={'Select attribute'}\n defaultAttributes={['language']}\n />\n
\n\n {message?.saveUserInput?.validation !== 'NONE' && (\n
\n

\n Invalid input redirect *\n

\n updateTouched('onValidationFailAtomId', true)}\n />\n
\n )}\n
\n
\n \n )\n}\n\nSaveUserInput.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(SaveUserInput)\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n width: '100%',\n marginBottom: 10,\n minWidth: 400,\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n header: {\n padding: '17px 0px 24px 24px',\n fontWeight: 700,\n color: 'rgba(58, 63, 98, 1)',\n borderBottom: '2px solid #EBEBEF',\n },\n body: {\n padding: 24,\n },\n label: {\n fontSize: 14,\n color: '#354052',\n marginBottom: 8,\n '& span': {\n color: 'red',\n },\n },\n section: {\n borderBottom: '1px solid #EBEBEB',\n marginBottom: 14,\n },\n inputWrap: {\n marginBottom: 14,\n },\n smallInputWrap: {\n width: '48%',\n },\n input: {\n width: '100%',\n fontSize: 14,\n outline: 'none',\n padding: 14,\n border: '1px solid #D7D8DF',\n borderRadius: 10,\n height: 42,\n '&:hover': {\n border: '1px solid #9a9fa8',\n },\n },\n flexContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '12px',\n },\n deleteTemplate: {\n right: '28px',\n top: '-16px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n})\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 0px',\n width: 96,\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n padding: '8px 4px',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n width: 96,\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n display: 'none',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles, customStyles } from './styles'\nimport Select from 'react-select'\n\nconst options = [\n { value: 'IS', label: 'is' },\n { value: 'IS_NOT', label: 'is not' },\n { value: 'GREATER_THAN', label: 'greater than' },\n { value: 'LESS_THAN', label: 'less than' },\n { value: 'CONTAINS', label: 'contains' },\n { value: 'IS_DEFAULT', label: 'is default' },\n { value: 'IS_NOT_DEFAULT', label: 'is not default' },\n]\n\nconst OperatorSelect = props => {\n const { classes, value, touched, onFocus, onChange } = props\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n return (\n
\n \n
\n )\n}\nOperatorSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(OperatorSelect)\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 0px',\n width: 42,\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n padding: '8px 10px',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n width: 42,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n display: 'none',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles, customStyles } from './styles'\nimport Select from 'react-select'\n\nconst options = [\n { value: 'AND', label: 'and' },\n { value: 'OR', label: 'or' },\n]\n\nconst ConjunctionSelect = props => {\n const { classes, value, touched, onFocus, onChange } = props\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n return (\n
\n \n
\n )\n}\nConjunctionSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ConjunctionSelect)\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport OperatorSelect from '../OperatorSelect/OperatorSelect'\nimport InputAutosuggest from '../../../../uiKit/InputAutosuggest/InputAutosuggest'\nimport ConjunctionSelect from '../ConjunctionSelect/ConjunctionSelect'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport {\n CHATBOT,\n DEFAULT,\n FACEBOOK,\n TWILIO,\n WHATSAPP,\n WIDGET,\n} from '../../../../constants/attributeTypes'\n\nconst ConditionExpression = props => {\n const {\n classes,\n expression,\n onDelete,\n onUpdate,\n conjunction,\n onUpdateConjunction,\n isLast,\n onAdd,\n isOne,\n saveTime,\n } = props\n const [focus, setFocus] = useState(null)\n const [touched, setTouched] = useState({ attribute: false, value: false })\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n attribute: true,\n value: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n useEffect(() => {\n if (isOne) {\n onUpdateConjunction({ value: 'AND', label: 'and' })\n }\n }, [isOne])\n\n const handleUpdateAttribute = e => {\n const expressionCopy = deepCopyFunction(expression)\n\n expressionCopy.attribute = { id: e?.value || null, name: e?.label || null }\n\n onUpdate(expressionCopy)\n setFocus(false)\n }\n\n const handleUpdateOperator = e => {\n const expressionCopy = deepCopyFunction(expression)\n expressionCopy.operator = e.value\n\n if (['IS_DEFAULT', 'IS_NOT_DEFAULT'].includes(expression?.operator)) {\n expressionCopy.value = null\n }\n\n onUpdate(expressionCopy)\n }\n\n const handleUpdateAttributeValue = e => {\n const expressionCopy = deepCopyFunction(expression)\n expressionCopy.value = e.target.value || e.target.innerText\n\n onUpdate(expressionCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n return (\n
\n setFocus(false)}\n onClick={() => setFocus(true)}\n onChange={handleUpdateAttribute}\n required={true}\n styles={{ borderRadius: 10, padding: '2px 0px' }}\n containerStyle={{ minWidth: 112, width: 'calc(50% - 97px)' }}\n placeholder={'Select attribute'}\n displayOptions={[DEFAULT, CHATBOT, WIDGET, FACEBOOK, WHATSAPP, TWILIO]}\n defaultAttributes={['language', 'platform', 'close_conversation', 'conversation_outcome']}\n isClearable={true}\n onFocus={() => updateTouched('attribute', true)}\n touched={touched?.attribute}\n />\n\n \n\n {!['IS_DEFAULT', 'IS_NOT_DEFAULT'].includes(expression?.operator) && (\n updateTouched('value', true)}\n />\n )}\n\n {isLast ? (\n
\n \n
\n ) : (\n \n )}\n\n {!isOne && (\n
\n \n
\n )}\n
\n )\n}\n\nConditionExpression.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default React.memo(withStyles(styles)(ConditionExpression))\n","export const styles = () => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n marginBottom: '8px',\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'flex',\n },\n addButton: {\n border: '1px solid rgba(22, 88, 243, 1)',\n height: 42,\n minWidth: 42,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n cursor: 'pointer',\n },\n})\n","export const generateId = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport ConditionExpression from '../ConditionExpression/ConditionExpression'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { generateId } from '../../../../helpers/generateId'\n\nconst ConditionGroup = props => {\n const { classes, onDelete, condition, updateCondition, saveTime } =\n props\n const [touched, setTouched] = useState({ redirectTo: false })\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n redirectTo: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n const handleUpdateRedirectTo = e => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.redirectTo = e.value\n\n updateCondition(conditionCopy)\n }\n\n const handleDeleteExpression = index => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.expressions.splice(index, 1)\n\n updateCondition(conditionCopy)\n }\n\n const handleUpdateExpression = (expression, index) => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.expressions[index] = expression\n\n updateCondition(conditionCopy)\n }\n\n const handleUpdateConjunction = e => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.conjunction = e.value\n\n updateCondition(conditionCopy)\n }\n\n const handleAddExpression = () => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.expressions.push({\n attribute: null,\n operator: 'IS',\n value: '',\n id: generateId(),\n })\n\n updateCondition(conditionCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n return (\n
\n
\n Condition group\n \n Delete\n \n
\n
\n {condition?.expressions?.map((expression, index) => (\n handleDeleteExpression(index)}\n onUpdate={expression => handleUpdateExpression(expression, index)}\n onAdd={handleAddExpression}\n saveTime={saveTime}\n />\n ))}\n
\n

\n Redirect to *\n

\n updateTouched('redirectTo', true)}\n />\n
\n
\n
\n )\n}\nConditionGroup.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default React.memo(withStyles(styles)(ConditionGroup))\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n width: '100%',\n marginBottom: 20,\n },\n header: {\n padding: '12px',\n color: 'rgba(58, 63, 98, 1)',\n borderBottom: '2px solid #EBEBEF',\n fontSize: 16,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n deleteButton: {\n color: 'rgba(255, 98, 76, 1)',\n fontSize: 12,\n cursor: 'pointer',\n },\n body: {\n padding: 16,\n },\n label: {\n fontSize: 14,\n color: '#354052',\n margin: '24px 0px 8px',\n '& span': {\n color: 'red',\n },\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { conditionGroup } from '../messages/AvailableMessages'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport ConditionGroup from '../ConditionGroup/ConditionGroup'\nimport SecondaryButton from '../../../../uiKit/buttons/SecondaryButton/SecondaryButton'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { generateId } from '../../../../helpers/generateId'\nimport MessageTemplate from '../MessageTemplate/MessageTemplate'\n\nconst addIdToArrayAtConditionalRedirect = conditionalRedirect => {\n return {\n defaultRedirect: conditionalRedirect.defaultRedirect,\n conditionGroups: conditionalRedirect?.conditionGroups?.map(condition => {\n return {\n id: condition.id || generateId(),\n conjunction: condition.conjunction,\n redirectTo: condition.redirectTo,\n priority: condition.priority,\n expressions: condition.expressions.map(expression => {\n return {\n id: expression.id || generateId(),\n attribute: expression.attribute,\n operator: expression.operator,\n value: expression.value,\n }\n }),\n }\n }),\n }\n}\n\nconst SmartRedirect = props => {\n const { classes, onDelete, updateMessage, message, saveTime } = props\n const [conditionalRedirect, setConditionalRedirect] = useState(\n addIdToArrayAtConditionalRedirect(message.conditionalRedirect),\n )\n const [touched, setTouched] = useState({ defaultRedirect: false })\n const prevSaveTime = usePrevious(saveTime)\n const isConditionGroups = !!conditionalRedirect?.conditionGroups?.length\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n defaultRedirect: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n const handleUpdateDefaultRedirect = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.conditionalRedirect.defaultRedirect = e.value\n\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const handleAddConditionGroup = () => {\n const messageCopy = deepCopyFunction(message)\n const newConditionGroup = deepCopyFunction(conditionGroup)\n newConditionGroup.id = generateId()\n newConditionGroup.priority = getMaxPriority()\n\n if (!messageCopy?.conditionalRedirect?.conditionGroups) {\n messageCopy.conditionalRedirect.conditionGroups = []\n }\n\n messageCopy.conditionalRedirect.conditionGroups.push(newConditionGroup)\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const handleDeleteCondition = index => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.conditionalRedirect.conditionGroups.splice(index, 1)\n\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const handleUpdateCondition = (condition, index) => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.conditionalRedirect.conditionGroups[index] = condition\n\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n const sortOrder = (a, b) => {\n if (a.priority < b.priority) return -1\n if (a.priority > b.priority) return 1\n return 0\n }\n\n const getMaxPriority = () => {\n return message?.conditionalRedirect?.conditionGroups?.length\n ? message?.conditionalRedirect?.conditionGroups?.reduce((prev, current) =>\n (prev.priority > current.priority ? prev : current),\n ).priority + 1\n : 1\n }\n\n const addConditionGroupButton = !isConditionGroups && (\n \n )\n\n return (\n \n
\n {conditionalRedirect?.conditionGroups\n ?.sort(sortOrder)\n ?.map((condition, index) => (\n \n handleUpdateCondition(condition, index)\n }\n onDelete={() => handleDeleteCondition(index)}\n saveTime={saveTime}\n />\n ))}\n {isConditionGroups && (\n \n )}\n
\n

\n Default redirect *\n

\n updateTouched('defaultRedirect', true)}\n />\n
\n
\n \n )\n}\n\nSmartRedirect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default React.memo(withStyles(styles)(SmartRedirect))\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n width: '100%',\n marginBottom: 20,\n position: 'relative',\n minWidth: 480,\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n header: {\n padding: '17px 24px 24px 24px',\n fontWeight: 700,\n color: 'rgba(58, 63, 98, 1)',\n borderBottom: '2px solid #EBEBEF',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n deleteTemplate: {\n right: '28px',\n top: '-16px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n body: {\n padding: 24,\n },\n label: {\n fontSize: 14,\n color: '#354052',\n marginBottom: 8,\n '& span': {\n color: 'red',\n },\n },\n inputWrap: {\n borderTop: '1px solid #EBEBEF',\n paddingTop: 16,\n marginTop: 16,\n },\n})\n","export const styles = () => ({\n container: {\n width: 254,\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n color: '#3A3F62',\n position: 'relative',\n },\n header: {\n padding: 16,\n borderBottom: '1px solid #EBEBEF',\n fontWeight: 700,\n },\n body: {\n padding: '0 16px 16px',\n },\n switcherWrap: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n addButton: {\n color: '#1658F3',\n cursor: 'pointer',\n marginTop: 8,\n },\n atomWrap: {\n margin: '8px 0',\n position: 'relative',\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n deleteRandomAtomWrap: {\n position: 'absolute',\n cursor: 'pointer',\n top: 3,\n right: -16,\n zIndex: 5,\n display: 'none',\n height: '29px',\n overflow: 'hidden',\n },\n '@global': {\n '.MuiSwitch-root-215': {\n left: 16,\n },\n },\n})\n\nexport const SwitchStyles = {\n checked: {\n color: '#1658F3',\n },\n}\n","export const InitialState = {\n firstTimeRedirect: {\n atomName: '',\n number: 0,\n },\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles, SwitchStyles } from './RandomAtomsStyles'\nimport Switch from '@material-ui/core/Switch'\nimport Tooltip from '../../../../uiKit/TooltipInfo/Tooltip'\nimport { InitialState } from './RandomAtomConfig'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\n\nconst tooltipText =\n 'The user will be redirected to the following atom if he interacts with current atom for the first time.'\n\nconst RandomAtoms = props => {\n const { classes, message, updateMessage, onDelete } = props\n\n const randomAtomsDisplay = message.randomRedirect.sendFirstAtomOnlyOnce\n ? message.randomRedirect.randomAtoms.filter(element => element.number !== 0)\n : message.randomRedirect.randomAtoms\n\n const handleSwitch = e => {\n const firstTimeRedirect = Object.assign({}, InitialState.firstTimeRedirect)\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n\n if (e.target.checked) {\n newRandomAtoms = [firstTimeRedirect, ...newRandomAtoms]\n } else {\n newRandomAtoms.shift()\n }\n\n newRandomAtoms = newRandomAtoms.map((elem, index) => {\n elem.number = index\n return elem\n })\n\n message.randomRedirect.randomAtoms = newRandomAtoms\n message.randomRedirect.sendFirstAtomOnlyOnce = e.target.checked\n\n updateMessage(message)\n }\n\n const handleRandomAtoms = (e, number) => {\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n\n newRandomAtoms = newRandomAtoms.map(elem => {\n if (elem.number === number) elem.atomId = e.value\n return elem\n })\n\n message.randomRedirect.randomAtoms = newRandomAtoms\n updateMessage(message)\n }\n\n const handleAddRandomAtom = () => {\n const messageCopy = deepCopyFunction(message)\n\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n const newRandomAtom = {\n atomName: '',\n number: newRandomAtoms.length + 1,\n }\n\n newRandomAtoms = [...newRandomAtoms, newRandomAtom]\n\n messageCopy.randomRedirect.randomAtoms = newRandomAtoms\n\n updateMessage(messageCopy)\n }\n\n const handleDeleteRandomAtom = number => {\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n\n newRandomAtoms = newRandomAtoms\n .filter(elem => elem.number !== number)\n .map((elem, index) => {\n elem.number = index\n return elem\n })\n\n message.randomRedirect.randomAtoms = newRandomAtoms\n\n updateMessage(message)\n }\n\n return (\n
\n
\n Random redirect\n \n
\n\n
\n
\n
\n First time redirect\n \n
\n \n
\n\n {message.randomRedirect.sendFirstAtomOnlyOnce && (\n handleRandomAtoms(e, 0)}\n />\n )}\n
\n Random atoms\n {randomAtomsDisplay.map(element => (\n
\n {message.randomRedirect.randomAtoms.length > 1 && (\n handleDeleteRandomAtom(element.number)}>\n \n \n )}\n\n handleRandomAtoms(e, element.number)}\n />\n
\n ))}\n
\n\n {message.randomRedirect.randomAtoms.length < 10 && (\n
\n + Add random atom\n
\n )}\n
\n\n
\n \"delete\"\n
\n
\n )\n}\n\nexport default withStyles(styles)(RandomAtoms)\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 0px',\n width: 145,\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n padding: '8px 10px',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n width: 145,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Select from 'react-select'\n\nimport { styles, customStyles } from './styles'\nimport {ApiCallMethodType} from '../../../../models/MessageTypes'\n\ninterface Props {\n value: string\n touched: boolean\n onFocus?: any\n onChange?: any\n}\n\ntype OptionType = {value: ApiCallMethodType, label: ApiCallMethodType};\n\nconst methods: ApiCallMethodType[] = ['POST', 'PUT', 'GET', 'DELETE']\nconst options: OptionType[] = methods.map((str) => ({ value: str, label: str }))\n\nconst RequestTypeSelect: React.FC = ({\n value,\n touched,\n onFocus,\n onChange,\n}) => {\n const getValue = (value: string) => {\n return options.find(option => option.value === value)\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles)(RequestTypeSelect)\n","import React, { useContext, useEffect, useState } from 'react'\nimport { SaveTimeContext } from '../../tabs/flowBuilder/components/MessagesWrap/MessagesWrap'\nimport { usePrevious } from '../../hooks/usePrevious'\nimport classes from './styles.module.scss'\n\ninterface Props {\n value: string\n placeholder: string\n required?: boolean\n onChange(value: string): void\n}\n\nconst FieldInput: React.FC = ({\n value,\n placeholder,\n required,\n onChange,\n}) => {\n const saveTime = useContext(SaveTimeContext)\n\n const [touched, setTouched] = useState(false)\n const [focused, setFocused] = useState(false)\n const prevSaveTime = usePrevious(saveTime)\n\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n setTouched(true)\n }\n }, [saveTime])\n\n useEffect(() => {\n setTouched(false)\n }, [required])\n\n const handleChange = e => {\n setTouched(true)\n onChange(e.target.value)\n }\n\n const handleFocus = () => {\n setFocused(true)\n setTouched(true)\n }\n\n return (\n setFocused(false)}\n />\n )\n}\n\nexport default FieldInput\n","import FieldInput from '../../../../uiKit/FieldInput/FieldInput'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\n\nimport classes from './styles.module.scss'\nimport React, {MouseEventHandler, useMemo} from 'react'\n\ninterface Props {\n header: any\n onChange(header: any): any\n onDelete: MouseEventHandler\n}\n\nconst HeaderField: React.FC = ({ header, onChange, onDelete }) => {\n const headerCopy = useMemo(() => ({ ...header }), [header])\n\n const handleUpdateKey = value => {\n headerCopy.key = value\n onChange(headerCopy)\n }\n\n const handleUpdateValue = value => {\n headerCopy.value = value\n onChange(headerCopy)\n }\n\n return (\n
\n \n\n \n\n \n \n \n
\n )\n}\n\nexport default HeaderField\n","import React, {MouseEventHandler, useMemo, useState} from 'react'\nimport FieldInput from '../../../../uiKit/FieldInput/FieldInput'\nimport classes from './styles.module.scss'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\nimport {OptionMessageItemType} from '../../../../models/MessageTypes'\n\ninterface Props {\n field: OptionMessageItemType\n index?: number\n onChange(header: OptionMessageItemType): void\n onDelete: MouseEventHandler\n}\n\nconst ResponseMappingField: React.FC = ({\n field,\n index,\n onChange,\n onDelete,\n}) => {\n const [focus, setFocus] = useState(null)\n const headerCopy: OptionMessageItemType = useMemo(() => ({ ...field }), [field])\n\n const handleUpdateKey = value => {\n headerCopy.value = value\n onChange(headerCopy)\n }\n\n const handleUpdateValue = e => {\n headerCopy.key = e?.label\n onChange(headerCopy)\n }\n\n return (\n
\n handleUpdateValue(e)}\n onBlur={() => setFocus(false)}\n onClick={() => setFocus(index)}\n required={!!field.value}\n displayOptions={[DEFAULT, CHATBOT]}\n isClearable={false}\n defaultAttributes={['language']}\n placeholder={'Select attribute name'}\n />\n\n \n\n \n \n \n
\n )\n}\n\nexport default ResponseMappingField\n","import React, { useMemo } from 'react'\n\nimport HeaderField from '../HeaderField/HeaderField'\nimport ResponseMappingField from '../ResponseMappingField/ResponseMappingField'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\n\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { generateId } from '../../../../helpers/generateId'\n\nimport classes from './styles.module.scss'\nimport { OptionMessageItemType } from 'models/MessageTypes'\n\ninterface Props {\n items: OptionMessageItemType[] | null\n onChange: (a: any) => void\n isHeaders: boolean\n}\n\nconst ItemsListTab: React.FC = ({ items, onChange, isHeaders }) => {\n const itemsCopy = useMemo(() => deepCopyFunction(items), [items])\n\n const handleAddItem = () => {\n itemsCopy.push({ key: '', value: '', id: generateId() })\n onChange(itemsCopy)\n }\n\n const handleUpdateItem = (item, index) => {\n itemsCopy[index] = item\n onChange(itemsCopy)\n }\n\n const handleDeleteItem = index => {\n itemsCopy.splice(index, 1)\n onChange(itemsCopy)\n }\n\n return (\n
\n {!!items.length && (\n
\n {isHeaders ? 'Key' : 'Custom field'}\n {isHeaders ? 'Value' : 'JSON Path'}\n
\n )}\n {items.map((item, index) =>\n (isHeaders ? (\n handleUpdateItem(item, index)}\n onDelete={() => handleDeleteItem(index)}\n />\n ) : (\n handleUpdateItem(item, index)}\n onDelete={() => handleDeleteItem(index)}\n index={index}\n />\n )),\n )}\n\n
\n \n {isHeaders ? 'Request header' : 'Add JSONPath'}\n
\n
\n )\n}\n\nexport default ItemsListTab\n","/* eslint-disable */\nimport React from 'react'\n\nconst SquareIcon = () => {\n return (\n \n \n \n \n )\n}\n\nexport default SquareIcon\n","/* eslint-disable */\nimport React from 'react'\n\nconst SquareCheckedIcon = () => {\n return (\n \n \n \n \n )\n}\n\nexport default SquareCheckedIcon\n","import React, {MouseEventHandler} from 'react'\nimport classes from './styles.module.scss'\nimport SquareIcon from '../../../uiKit/icons/SquareIcon'\nimport SquareCheckedIcon from '../../../uiKit/icons/SquareCheckedIcon'\n\ninterface Props {\n onChange: MouseEventHandler\n value: boolean\n title: string\n}\n\nconst HoverButton: React.FC = ({ onChange, title, value }) => {\n return (\n
\n {value ? : }\n {title}\n
\n )\n}\n\nexport default HoverButton\n","import React, {MouseEventHandler} from 'react'\n\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\nimport HoverButton from '../../../../uiKit/buttons/HoverButton/HoverButton'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n addUserData: boolean\n body: string\n scrollBlock: any\n onChange(body: string): void\n onCheck: MouseEventHandler\n}\n\nconst BodyTab: React.FC = ({ addUserData, body, scrollBlock, onChange, onCheck }) => {\n return (\n
\n }\n />\n
\n )\n}\n\nexport default BodyTab\n","import React from 'react'\nimport classes from './styles.module.scss'\n\ninterface Props {\n headers: Headers\n}\n\nconst HeadersPreview:React.FC = ({ headers }) => {\n return (\n
\n {Object.entries(headers).map(([key, value], index) => (\n
\n {key}\n : \n {value[0]}\n
\n ))}\n
\n )\n}\n\nexport default HeadersPreview\n","import React, { useMemo, useState } from 'react'\nimport classes from './styles.module.scss'\nimport JSONPretty from 'react-json-pretty'\nimport {\n KLEIN_BLUE,\n CAMARONE_GREEN,\n GEM_BLUE,\n CINNAMON_YELLOW,\n TAMARILLO_RED\n} from '../../../../constants/colors'\nimport HeadersPreview from '../HeadersPreview/HeadersPreview'\n\ninterface Props {\n data: any\n}\n\ntype TabType = 'Response Headers' | 'Response Body' | 'Request Headers' | 'Request Body'\n\nconst tabs: TabType[] = ['Response Headers', 'Response Body', 'Request Headers', 'Request Body']\n\nconst ResponseTab: React.FC = ({ data }) => {\n const [selectedTab, setSelectedTab] = useState('Response Headers')\n const disable = data.request.method === 'GET'\n\n const handleSelectTab = (tab: TabType) => {\n if (disable && tab === tabs[3]) return\n setSelectedTab(tab)\n }\n\n const statusCodeColor = useMemo(() => {\n switch (data.response.statusCodeValue.toString()[0]) {\n case '1':\n return KLEIN_BLUE\n case '2':\n return CAMARONE_GREEN\n case '3':\n return GEM_BLUE\n case '4':\n return CINNAMON_YELLOW\n default:\n return TAMARILLO_RED\n }\n }, [data.response.statusCodeValue])\n\n return (\n
\n
\n {data.response.statusCodeValue} {data.response.statusCode}\n
\n
\n
\n {tabs.map((tab, index) => (\n handleSelectTab(tab)}>\n {tab}\n
\n ))}\n
\n
\n {selectedTab === tabs[0] && }\n\n {selectedTab === tabs[1] && }\n\n {selectedTab === tabs[2] && }\n\n {selectedTab === tabs[3] && }\n
\n
\n \n )\n}\n\nexport default ResponseTab\n","import { deepCopyFunction } from './deepCopyFunction'\nimport { CONDITIONAL_REDIRECT_TYPE, API_CALL_TYPE } from '../tabs/flowBuilder/constants/messageTypes'\nimport { isObjectEmpty } from './isObjectEmpty'\n\nexport const formatAtomSave = atom => {\n const atomCopy = deepCopyFunction(atom)\n\n if (atomCopy?.messages) {\n atomCopy.messages = atomCopy.messages.map(message => {\n if (message.type === CONDITIONAL_REDIRECT_TYPE) {\n const { conditionalRedirect } = message\n\n if (message.conditionalRedirect) {\n message.conditionalRedirect = _formatConditionRedirect(conditionalRedirect)\n }\n }\n\n if (message.type === API_CALL_TYPE) {\n if (message.apiCall) {\n message.apiCall = formatApiCall(message.apiCall)\n }\n }\n return message\n })\n }\n\n return atomCopy\n}\n\nexport const formatApiCall = apiCall => {\n const { addUserData, body, headers, method, url, attributes } = deepCopyFunction(apiCall)\n\n const apiCallCopy = {\n addUserData,\n body,\n method,\n url,\n }\n\n const formatAttributes = attributes\n ?.filter(cur => cur.key)\n .reduce((acc, cur) => ({ ...acc, [cur.key]: cur.value }), {})\n\n const formatHeaders = headers?.filter(cur => cur.key).reduce((acc, cur) => ({ ...acc, [cur.key]: cur.value }), {})\n\n if (formatAttributes && !isObjectEmpty(formatAttributes)) {\n apiCallCopy.attributes = formatAttributes\n }\n\n if (formatHeaders && !isObjectEmpty(formatHeaders)) {\n apiCallCopy.headers = formatHeaders\n }\n\n return apiCallCopy\n}\n\nconst _formatConditionRedirect = conditionalRedirect => {\n const { defaultRedirect, conditionGroups } = conditionalRedirect\n\n return {\n defaultRedirect,\n conditionGroups: conditionGroups?.map(_formatCondition),\n }\n}\n\nconst _formatCondition = condition => {\n const { conjunction, redirectTo, priority, expressions } = condition\n\n return {\n conjunction,\n redirectTo,\n priority,\n expressions: expressions?.map(_formatConditionExpression),\n }\n}\n\nconst _formatConditionExpression = expression => {\n const { attribute, operator, value } = expression\n\n return {\n attribute,\n operator,\n value,\n }\n}\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 6px',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n}\n","import {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { SUPPORT_USERS_SIZE } from '../../../constants/userSize'\nimport { BASE_URL } from '../../../configs'\n\nexport function getAssignedToMeSupportUsers(\n botId,\n adminId,\n searchName = '',\n offset = 0,\n) {\n return fetch(\n `${BASE_URL}/support/assigned-to/${botId}?searchName=${searchName}&adminId=${adminId}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getAssignedSupportUsers(botId, searchName = '', offset = 0) {\n return fetch(\n `${BASE_URL}/support/assigned/${botId}?searchName=${searchName}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getNewRequestSupportUsers(botId, searchName = '', offset = 0) {\n return fetch(`${BASE_URL}/support/open/${botId}?searchName=${searchName}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getExpiredRequestSupportUsers(\n botId,\n searchName = '',\n offset = 0,\n) {\n return fetch(\n `${BASE_URL}/support/expired/${botId}?searchName=${searchName}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getAllSupportUsers(botId, searchName = '', offset = 0) {\n return fetch(\n `${BASE_URL}/support/chatbot/${botId}?searchName=${searchName}&size=${SUPPORT_USERS_SIZE}&offset=${offset}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getClosedSupports(botId, searchName = '', offset = 0) {\n return fetch(\n `${BASE_URL}/support/closed/${botId}?searchName=${searchName}&size=${SUPPORT_USERS_SIZE}&offset=${offset}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function updateSupportUser(user) {\n return fetch(`${BASE_URL}/support/user/${user.userId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\n//TODO change size query param\nexport async function getAllUsers(botId) {\n try {\n const response = await fetch(\n `${BASE_URL}/audience/${botId}/users?size=100&page=0`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify({}),\n },\n )\n\n return await logoutOnRequestOrResponseJson(response)\n } catch {\n alertError('Sorry but something going wrong please ping support!')\n }\n}\n","export const SUPPORT_USERS_SIZE = 20\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport AsyncSelect from 'react-select'\n\nimport { styles, customStyles } from './styles'\nimport { connect } from 'react-redux'\nimport { getAllUsers } from '../../tabs/support/api/users'\n\nconst UsersSelect = props => {\n const { value, onChange, activeBot } = props\n const [options, setOptions] = useState([])\n\n useEffect(() => {\n getAllUsers(activeBot.id).then(response => {\n const formattedUsers = response.users.map(user => ({\n label: user.id,\n value: user.id,\n }))\n setOptions(formattedUsers)\n })\n }, [])\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n return (\n \n )\n}\n\nUsersSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UsersSelect))\n","import React, { useState } from 'react'\nimport classes from './styles.module.scss'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { formatApiCall } from '../../../../helpers/formatAtomSave'\nimport { testApiRequest } from '../../api/atom'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport { alertError } from '../../../../api'\nimport UsersSelect from '../../../../uiKit/UsersSelect/UsersSelect'\nimport {ApiCallType} from '../../../../models/MessageTypes'\n\ninterface Props {\n apiCall: ApiCallType\n setResponse(data: any): void\n}\n\nconst TestRequestScreen: React.FC = ({ apiCall, setResponse }) => {\n const [loading, setLoading] = useState(false)\n const [userId, setUserId] = useState(null)\n\n const handleTestRequest = async() => {\n const formattedApiCall = formatApiCall(apiCall)\n\n if (!formattedApiCall.url) {\n alertError('Enter request url')\n return\n }\n\n setLoading(true)\n\n const response = await testApiRequest(formattedApiCall, userId)\n\n if (response?.data) {\n setResponse(response.data)\n } else {\n alertError(response?.error?.message || 'Failed. Try it later')\n }\n\n setLoading(false)\n }\n\n return (\n
\n {loading ? (\n \n ) : (\n <>\n \"request\"\n
\n
\n setUserId(value.value)}\n />\n
\n \n
\n \n )}\n
\n )\n}\n\nexport default TestRequestScreen\n","import React, { useEffect, useMemo, useState } from 'react'\nimport { usePrevious } from 'react-use'\n\nimport ItemsListTab from '../ItemsListTab/ItemsListTab'\nimport BodyTab from '../BodyTab/BodyTab'\nimport ResponseTab from '../ResponseTab/ResponseTab'\nimport TestRequestScreen from '../TestRequestScreen/TestRequestScreen'\n\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\n\nimport classes from './styles.module.scss'\nimport {ApiCallMessageType, OptionMessageItemType} from 'models/MessageTypes'\n\ninterface Props {\n disable: boolean\n scrollBlock: any\n message: ApiCallMessageType\n updateMessage(message: ApiCallMessageType): void\n}\ntype TabType = 'Headers' | 'Body' | 'Response' | 'Response mapping'\n\nconst tabs: TabType[] = ['Headers', 'Body', 'Response', 'Response mapping']\n\nconst ApiCallTabs: React.FC = ({\n disable,\n scrollBlock,\n message,\n updateMessage,\n}) => {//NOSONAR\n const [selectedTab, setSelectedTab] = useState(tabs[0])\n const [response, setResponse] = useState(null)\n const prevMessage = usePrevious(message)\n const messageCopy = useMemo(() => deepCopyFunction(message), [message])\n\n useEffect(() => {\n if (JSON.stringify(prevMessage) !== JSON.stringify(message)) {\n setResponse(null)\n }\n }, [message])\n\n useEffect(() => {\n if (disable && selectedTab === tabs[1]) {\n setSelectedTab(tabs[0])\n }\n }, [disable])\n\n const handleUpdateHeaders = (headers: OptionMessageItemType[]) => {\n messageCopy.apiCall.headers = headers\n updateMessage(messageCopy)\n }\n\n const handleUpdateAttributes = (attributes: OptionMessageItemType[]) => {\n messageCopy.apiCall.attributes = attributes\n updateMessage(messageCopy)\n }\n\n const handleUpdateBody = (body: string) => {\n messageCopy.apiCall.body = body\n updateMessage(messageCopy)\n }\n\n const handleCheckbox = () => {\n messageCopy.apiCall.addUserData = !messageCopy.apiCall.addUserData\n updateMessage(messageCopy)\n }\n\n const handleSelectTab = (tab: TabType) => {\n if (disable && tab === tabs[1]) return\n setSelectedTab(tab)\n }\n\n const handleClearResponse = () => {\n setResponse(null)\n setSelectedTab(tabs[2])\n }\n\n return (\n
\n
\n
\n {tabs.map((tab, index) => (\n handleSelectTab(tab)}>\n {tab}\n
\n ))}\n
\n
\n Test the request\n
\n
\n\n {selectedTab === tabs[0] && (\n \n )}\n\n {selectedTab === tabs[1] && (\n \n )}\n\n {selectedTab === tabs[2] &&\n (response ? (\n \n ) : (\n \n ))}\n\n {selectedTab === tabs[3] && (\n \n )}\n \n )\n}\n\nexport default ApiCallTabs\n","import React, {MouseEventHandler, useMemo} from 'react'\n\nimport classes from './styles.module.scss'\nimport RequestTypeSelect from '../RequestTypeSelect/RequestTypeSelect'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\nimport MessageTemplate from '../MessageTemplate/MessageTemplate'\nimport ApiCallTabs from '../ApiCallTabs/ApiCallTabs'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport {ApiCallMessageType, ApiCallMethodType, OptionItemType} from '../../../../models/MessageTypes'\n\ninterface Props {\n saveTime: Date\n scrollBlock: any\n message: ApiCallMessageType\n onDelete: MouseEventHandler\n updateMessage(message: ApiCallMessageType): void\n}\n\nconst ApiCall: React.FC = ({ saveTime, scrollBlock, message, onDelete, updateMessage }) => {\n const messageCopy = useMemo(() => deepCopyFunction(message), [message])\n const disable: boolean = useMemo(() => {\n const disableMethodTypes: ApiCallMethodType[] = ['GET', 'DELETE']\n\n return disableMethodTypes.includes(message.apiCall.method)\n }, [message.apiCall.method])\n\n const handleUpdateRequestURL = (value: string) => {\n messageCopy.apiCall.url = value\n updateMessage(messageCopy)\n }\n\n const handleUpdateRequestType = (value: OptionItemType) => {\n messageCopy.apiCall.method = value.value\n updateMessage(messageCopy)\n }\n\n return (\n \n
\n
\n
\n

Request type

\n \n
\n\n
\n

Request URL

\n \n
\n
\n\n \n
\n
\n )\n}\n\nexport default ApiCall\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport TextMessage from '../../components/TextMessage/TextMessage'\nimport Template from '../messages/Template'\nimport Attachment from '../messages/Attachment'\nimport RandomTextMessage from '../messages/RandomTextMessage'\nimport RandomAttachment from '../messages/RandomAttachment'\nimport Typing from '../messages/Typing'\nimport UserInput from '../messages/UserInput'\nimport SetAttribute from '../SetAttribute/SetAttribute'\nimport SaveUserInput from '../SaveUserInput/SaveUserInput'\nimport SmartRedirect from '../SmartRedirect/SmartRedirect'\nimport {\n API_CALL_TYPE,\n CONDITIONAL_REDIRECT_TYPE,\n RANDOM_REDIRECT_TYPE,\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n TEXT_TYPE,\n USER_INPUT_TYPE,\n} from '../../constants/messageTypes'\nimport RandomAtoms from '../RandomAtoms/RandomAtoms'\nimport ApiCall from '../ApiCall/ApiCall'\n\nexport const SaveTimeContext = React.createContext()\n\nconst MessagesWrap = props => {\n const { message, rtl, index, updateMessage, deleteMessage, scrollBlock, saveTime } = props\n return (\n \n {message.texts && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n )}\n {message.attachment != null &&\n (message.attachment.type === 'template' ? (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n scrollBlock={scrollBlock}\n />\n ) : (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n ))}\n {message.random != null && message.type === TEXT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n scrollBlock={scrollBlock}\n />\n )}\n {message.random != null && message.type === 'attachment' && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message?.senderAction === 'typing_on' && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message.type === USER_INPUT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message.type === SET_ATTRIBUTE_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message.type === SAVE_USER_INPUT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n saveTime={saveTime}\n />\n )}\n {message.type === CONDITIONAL_REDIRECT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n saveTime={saveTime}\n />\n )}\n {message.type === RANDOM_REDIRECT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n saveTime={saveTime}\n />\n )}\n {message.type === API_CALL_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n scrollBlock={scrollBlock}\n saveTime={saveTime}\n />\n )}\n \n )\n}\nMessagesWrap.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(MessagesWrap)\n","import {ExpressionType} from 'models/MessageTypes'\n\nexport const expressionValidation = (expression: ExpressionType) => {\n return (\n !expression?.attribute?.id ||\n !(expression?.value || ['IS_DEFAULT', 'IS_NOT_DEFAULT'].includes(expression?.operator))\n )\n}\n","/**\n * Created by Admin on 02.02.2018.\n */\nimport React from 'react'\nimport Select from 'react-select'\nimport { Button, withStyles } from '@material-ui/core'\nimport './Atom.css'\nimport '../components/messages/Messages.css'\nimport Modal from '@material-ui/core/Modal'\nimport NewMessage from './NewMessage/NewMessage'\nimport { getAtom, saveAtom } from '../api/atom'\nimport AtomNLPModal from '../../nlp/components/AtomNLPModal'\nimport { connect } from 'react-redux'\nimport { Prompt, withRouter } from 'react-router-dom'\nimport { DownIcon, UpIcon } from '../../../uiKit/icons/Icons'\nimport 'array.prototype.move'\nimport { alertError } from '../../../api'\nimport TagAction from './messages/TagAction'\nimport { loadTags } from '../api/tag'\nimport uuidv1 from 'uuid/v1'\nimport { getBotLanguages } from '../../settings/api/settings'\n\nimport { randomRedirectInitialState, saveUserInput, setAttributeMessage } from './messages/AvailableMessages'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport MessagesWrap from '../components/MessagesWrap/MessagesWrap'\nimport { getAttributes } from '../../settings/api/attributes'\nimport { deepCopyFunction } from '../../../helpers/deepCopyFunction'\nimport { formatAtomSave } from '../../../helpers/formatAtomSave'\nimport {\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n TEXT_TYPE,\n CONDITIONAL_REDIRECT_TYPE,\n API_CALL_TYPE,\n RANDOM_REDIRECT_TYPE,\n} from '../constants/messageTypes'\nimport { expressionValidation } from '../../../helpers/expressionValidation'\n\nconst styles = theme => ({\n container: {\n position: 'relative',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n marginRight: '-17px',\n padding: '40px 40px 00px',\n height: 'calc(100vh - 220px)',\n width: '100%',\n },\n warning: {\n width: 42,\n height: 26,\n marginTop: 18,\n },\n headerBlock: {\n padding: '15px 40px',\n display: 'flex',\n justifyContent: 'space-between',\n },\n headerSelectorAndButton: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minWidth: '40%',\n height: '100%',\n },\n headerButton: {\n margin: '5px',\n background: 'linear-gradient(285.2deg, #5A98F7 -35.9%, #1658F3 61.17%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n color: 'white',\n borderRadius: 10,\n height: 45,\n },\n root: {\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n },\n input: {\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n transition: '1s all ease',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n margin: 5,\n maxHeight: 40,\n },\n '@global': {\n '.element:hover>.text_element': {\n opacity: '1',\n transition: '0.5s all ease',\n },\n '.element:hover rect': {\n fill: '#1658F3',\n transition: '0.5s all ease',\n },\n '.element:hover path': {\n stroke: '#1658F3',\n transition: '0.5s all ease',\n },\n '.element>.text_element': {\n opacity: '0',\n transition: '0.5s all ease',\n },\n },\n})\n\nclass AtomEditor extends React.Component {\n handleChange = event => {\n const atom = { ...this.state.atom }\n atom.name = event.target.value\n this.setState({\n atom: atom,\n })\n }\n handleOpen = () => {\n if (!this.state.atom.isHardCoded) {\n this.setState({ open: true })\n }\n }\n handleClose = () => {\n if (this.state.isNameOk) this.setState({ open: false })\n }\n handleOpenAtomNLPModal = () => {\n this.setState({ openNlp: true })\n }\n handleCloseAtomNLPModal = () => {\n this.setState({ openNlp: false })\n }\n\n constructor(props) {\n super(props)\n this.scrollBlock = React.createRef()\n this.state = {\n open: false,\n isNameOk: true,\n name: '',\n openNlp: false,\n languageOptions: [],\n saveTime: new Date(),\n selectedLanguageOption: {\n value: 'EN',\n label: 'English',\n rtl: false,\n },\n }\n }\n\n componentDidMount() {\n getAtom(this.props.match.params.atomId, this.state.selectedLanguageOption.value, atom => {\n this.setState({ atom: JSON.parse(JSON.stringify(atom)) })\n loadTags(this.props.match.params.botId)\n this.setLanguageOptions(this.props.match.params.botId)\n })\n }\n\n componentDidUpdate = () => {\n if (this.checkAtomForEditing()) {\n window.onbeforeunload = () => true\n } else {\n window.onbeforeunload = undefined\n }\n }\n\n setLanguageOptions = () => {\n getBotLanguages(this.props.activeBot.id)\n .then(botLanguages => {\n if (botLanguages.defaultLanguage) {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n rtl: defaultLanguage.isRtl,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n rtl: language.isRtl,\n }\n })\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: selectedOption,\n })\n return selectedOption\n }\n })\n .then(selectedOption => {\n getAttributes(this.props.match.params.botId, selectedOption.value)\n })\n }\n\n handleChangeName(text) {\n const atom = { ...this.state.atom }\n atom.name = text\n this.setState({\n atom: atom,\n })\n if ((this.props.atom.name !== text && this.getAtomNames().includes(text)) || text.trim() === '') {\n this.setState({ isNameOk: false })\n } else {\n this.setState({ isNameOk: true })\n }\n }\n\n getAtomNames() {\n const names = []\n if (this.props.flows) {\n this.props.flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n names.push(atom.name)\n })\n })\n }\n return names\n }\n\n validateMessages() {\n let isValid = true\n\n if (!this.state.atom.messages) return isValid\n\n for (const message of this.state.atom.messages) {\n switch (message.type) {\n case TEXT_TYPE: {\n isValid = this.validateTextMessages(message)\n break\n }\n case SET_ATTRIBUTE_TYPE: {\n isValid = this.validateSetAttribute(message)\n break\n }\n case SAVE_USER_INPUT_TYPE: {\n isValid = this.validateSaveUserInput(message)\n break\n }\n case API_CALL_TYPE: {\n isValid = this.validateApiCall(message)\n break\n }\n case CONDITIONAL_REDIRECT_TYPE: {\n isValid = this.validateSmartRedirect(message)\n break\n }\n case RANDOM_REDIRECT_TYPE: {\n isValid = this.validateRandomRedirect(message)\n break\n }\n }\n\n if (isValid && message?.buttons?.length) {\n isValid = this.validateButtons(message.buttons)\n }\n\n if (isValid && message?.quick_replies?.length) {\n isValid = this.validateReplies(message.quick_replies)\n }\n\n if (!isValid) {\n return isValid\n }\n }\n\n return isValid\n }\n\n validateTextMessages = message => {\n const error = message?.texts?.some(elem => isStringEmpty(elem))\n if (error) {\n alertError(\"You can't save an empty message.\")\n }\n return !error\n }\n\n validateSetAttribute = message => {\n const error = message?.attributes?.some(elem => isStringEmpty(elem?.id?.toString()))\n if (error) {\n alertError('Please, fill in required fields.')\n }\n return !error\n }\n\n validateSaveUserInput = message => {\n const error =\n !this.isLastInTheArray(message) ||\n !message?.saveUserInput?.validation ||\n !message?.saveUserInput?.onValidationSuccessAtomId ||\n (message?.saveUserInput?.validation !== 'NONE' && !message?.saveUserInput?.onValidationFailAtomId) ||\n (message?.saveUserInput?.validation === 'CUSTOM' && !message?.saveUserInput?.customValidationRegex)\n if (error) {\n this.showErrorMessage(message, 'Save user input')\n }\n return !error\n }\n\n validateApiCall = message => {\n const error =\n !message?.apiCall?.url ||\n this.validateApiCallItems(message?.apiCall?.attributes) ||\n this.validateApiCallItems(message?.apiCall?.headers)\n if (error) {\n alertError('Please, fill in required fields.')\n }\n return !error\n }\n\n validateApiCallItems = items => {\n return items.some(item => {\n return (item.key && !item.value) || (item.value && !item.key)\n })\n }\n\n validateSmartRedirect = message => {\n const error =\n !this.isLastInTheArray(message) ||\n !message?.conditionalRedirect?.defaultRedirect ||\n message?.conditionalRedirect?.conditionGroups?.some(condition => {\n return (\n !condition?.redirectTo ||\n condition.expressions.some(expressionValidation)\n )\n })\n if (error) {\n this.showErrorMessage(message, 'Smart redirect')\n }\n return !error\n }\n\n validateRandomRedirect = message => {\n const error =\n !this.isLastInTheArray(message) ||\n message.randomRedirect?.randomAtoms.length === 0 ||\n message.randomRedirect?.randomAtoms?.some(randomAtom => {\n return randomAtom.atomId === undefined\n })\n if (error) {\n message.randomRedirect?.randomAtoms.length === 0\n ? alertError('Please, add at least one random atom')\n : this.showErrorMessage(message, 'Random redirect')\n }\n return !error\n }\n\n validateButtons = buttons => {\n return !buttons?.some(this.validateAttribute)\n }\n\n validateReplies = replies => {\n const errorTitle = replies?.some(qrItem => !qrItem.title)\n const errorPayload = replies?.some(qrItem => !qrItem.payload)\n const errorAttributes = replies?.some(this.validateAttribute)\n\n if (errorTitle) {\n alertError('Please, full titles for quick replies')\n }\n\n if (errorPayload) {\n alertError('Please, full next atom for quick replies')\n }\n\n return !errorTitle && !errorPayload && !errorAttributes\n }\n\n showErrorMessage(message, elementName) {\n if (!this.isLastInTheArray(message)) {\n alertError(\n `${elementName} element can be only the last in the atom, ` +\n 'please move it down or delete all other elements.',\n )\n } else {\n alertError('Please, fill in required fields.')\n }\n }\n\n isLastInTheArray(message) {\n return this.state.atom.messages.indexOf(message) === this.state.atom.messages.length - 1\n }\n\n validateAttribute = item => {\n if (item?.attributes?.some(attribute => !attribute.id)) {\n alertError('Please, fill in required fields.')\n return true\n }\n }\n\n saveAtom() {\n let send = this.validateMessages()\n\n if (this.state.atom.randomAtoms && this.state.atom.randomAtoms.some(randomAtom => !randomAtom.atomName)) {\n alertError(\"You can't save an empty elements.\")\n send = false\n }\n\n if (\n this.state.atom.messages?.length &&\n this.state.atom.messages?.every(message => message.type === SET_ATTRIBUTE_TYPE)\n ) {\n alertError('Set attribute cannot be a single element in the atom.')\n send = false\n }\n\n send &&\n saveAtom(\n formatAtomSave(this.state.atom),\n this.props.match.params.botId,\n this.state.selectedLanguageOption.value,\n atom => {\n this.setState({ atom: JSON.parse(JSON.stringify(atom)) })\n },\n )\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.atom && state.atom.id != props.match.params.atomId) {\n getAtom(props.match.params.atomId, state.selectedLanguageOption.value)\n return {\n atom: props.atom,\n open: false,\n isNameOk: true,\n }\n }\n return null\n }\n\n deleteMessage = message => {\n const newAtom = { ...this.state.atom }\n newAtom.messages.splice(newAtom.messages.indexOf(message), 1)\n this.setState({ atom: newAtom })\n }\n\n updateMessage = (message, index) => {\n const newAtom = { ...this.state.atom }\n newAtom.messages[index] = message\n this.setState({\n atom: newAtom,\n })\n }\n\n updateRedirect(redirectTo) {\n const newAtom = { ...this.state.atom }\n newAtom.redirectTo = redirectTo\n this.setState({\n atom: newAtom,\n })\n }\n\n updateTags(tags) {\n const newAtom = { ...this.state.atom }\n newAtom.tags = tags\n this.setState({\n atom: newAtom,\n })\n }\n\n moveToTop(oldIndex) {\n const newIndex = oldIndex - 1\n const atom = JSON.parse(JSON.stringify(this.state.atom))\n atom.messages.move(oldIndex, newIndex)\n this.setState({\n atom: atom,\n })\n }\n\n moveToBottom(oldIndex) {\n const newIndex = oldIndex + 1\n const atom = JSON.parse(JSON.stringify(this.state.atom))\n atom.messages.move(oldIndex, newIndex)\n this.setState({\n atom: atom,\n })\n }\n\n createNewMessage(message) {\n const newAtom = { ...this.state.atom }\n if (!newAtom.messages) newAtom.messages = []\n message['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(message)))\n this.setState({\n atom: newAtom,\n })\n }\n\n addSetAttribute() {\n const newAtom = { ...this.state.atom }\n if (!newAtom.messages) newAtom.messages = []\n if (!newAtom.messages.some(message => message.type === SET_ATTRIBUTE_TYPE)) {\n const newMessage = deepCopyFunction(setAttributeMessage)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n this.setState({\n atom: newAtom,\n })\n }\n }\n\n addSaveUserInput() {\n const newAtom = { ...this.state.atom }\n if (!newAtom.messages) newAtom.messages = []\n if (!newAtom.messages.some(message => message.type === SAVE_USER_INPUT_TYPE)) {\n const newMessage = deepCopyFunction(saveUserInput)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n this.setState({\n atom: newAtom,\n })\n }\n }\n\n addRedirect() {\n if (!this.state.atom.randomAtoms) {\n const newAtom = { ...this.state.atom }\n newAtom.redirectTo = ''\n this.setState({\n atom: newAtom,\n })\n } else {\n alertError('Atom can contain only one of these elements: Redirect to atom, Random redirect')\n }\n }\n\n addTags() {\n const newAtom = { ...this.state.atom }\n newAtom.tags = []\n this.setState({\n atom: newAtom,\n })\n }\n\n addRandomRedirect = () => {\n if (this.state.atom.redirectTo === undefined || this.state.atom.redirectTo === null) {\n const newAtom = { ...this.state.atom }\n newAtom.randomAtoms = JSON.parse(JSON.stringify(randomRedirectInitialState.randomAtoms))\n newAtom.sendFirstAtomOnlyOnce = randomRedirectInitialState.sendFirstAtomOnlyOnce\n this.setState({\n atom: newAtom,\n })\n } else {\n alertError('Atom can contain only one of these elements: Redirect to atom, Random redirect')\n }\n }\n\n checkAtomForEditing() {\n const propsAtom = formatAtomSave(this.deepCopyFunction(this.props.atom))\n const stateAtom = formatAtomSave(this.deepCopyFunction(this.state.atom))\n\n return JSON.stringify(propsAtom) !== JSON.stringify(stateAtom)\n }\n\n deepCopyFunction = inObject => {\n let value, key\n if (typeof inObject !== 'object' || inObject === null) {\n return inObject // Return the value if inObject is not an object\n }\n // Create an array or object to hold the values\n const outObject = Array.isArray(inObject) ? [] : {}\n for (key in inObject) {\n value = inObject[key]\n // Recursively (deep) copy for nested objects, including arrays\n outObject[key] = typeof value === 'object' && value !== null ? this.deepCopyFunction(value) : value\n }\n\n return outObject\n }\n\n deleteTextsField(atom) {\n if (!atom || !atom.messages) return\n atom.messages.forEach(msg => {\n delete msg.texts\n })\n return atom\n }\n\n handleSelectedLanguage = languageOption => {\n this.setState(\n {\n selectedLanguageOption: languageOption,\n },\n () => {\n getAtom(this.props.match.params.atomId, this.state.selectedLanguageOption.value, atom => {\n this.setState({ atom: JSON.parse(JSON.stringify(atom)) })\n loadTags(this.props.match.params.botId)\n })\n },\n )\n }\n\n onSaveAtom = () => {\n this.setState(\n {\n saveTime: new Date(),\n },\n () => this.saveAtom(),\n )\n }\n\n updateAtom = atom => {\n this.setState({ atom })\n }\n\n render() {\n const { classes } = this.props\n const { rtl } = this.state.selectedLanguageOption\n const nameBorder = !this.state.isNameOk ? '1px solid #FF624C' : '1px solid #C7CAD6'\n\n return (\n
\n {this.state.atom && (\n <>\n \n
\n
\n \n {this.state.open ? (\n \n this.handleClose()}\n value={this.state.atom.name}\n onKeyUp={this.checkEnterPress}\n onChange={event => this.handleChangeName(event.target.value)}\n />\n
\n ) : (\n this.handleOpen()}>\n {this.state.atom.name}\n

\n )}\n
\n
\n
\n \n
\n\n this.onSaveAtom()}>\n Save\n \n
\n\n \n \n \n
\n \n {this.state?.atom?.messages?.map((message, index) => (\n \n \n {this.state.atom.messages.length > 1 && index != 0 && (\n {\n this.moveToTop(index)\n }}>\n
\n Move
\n up\n
\n
\n \n
\n \n )}\n {this.state.atom.messages.length > 1 && index + 1 !== this.state.atom.messages.length && (\n this.moveToBottom(index)}\n className=\"element\">\n
\n \n
\n
\n Move
\n down\n
\n \n )}\n \n \n \n ))}\n {this.state.atom.tags != null && (\n this.updateTags(value)}\n onDelete={() => this.updateTags(null)}\n />\n )}\n \n \n \n \n )}\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n atom: state.atom,\n activeBot: state.activeBot,\n flows: state.flows,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(AtomEditor)))\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { createNewAtom } from '../api/atom'\nimport { PlusIcon } from '../../../uiKit/icons/Icons.js'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n addNew: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid #1658F3',\n borderRadius: 10,\n padding: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n margin: '5px 5px 5px 0',\n cursor: 'pointer',\n },\n input: {\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #B0B2C0',\n boxSizing: 'border-box',\n boxShadow: '0px 0px 6px rgba(215, 216, 223, 0.668054)',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n margin: 5,\n // maxHeight: 40,\n },\n '@global': {\n \"[class*='NewFlow-paper']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover2:hover': {\n color: '#1658F3',\n background: 'white',\n },\n '.buttonHover2': {\n marginTop: 20,\n background: '#1658F3',\n color: 'white',\n borderRadius: 10,\n },\n \"[class*='addNew'] svg\": {\n position: 'relative',\n top: 2,\n right: 3,\n },\n },\n})\n\nclass NewFlow extends React.Component {\n state = {\n open: false,\n usedNames: [],\n isNameOk: true,\n name: '',\n empty: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n handleChangeName(text) {\n this.setState({ name: text })\n if (this.state.usedNames.includes(text)) {\n this.setState({ isNameOk: false })\n } else {\n this.setState({ isNameOk: true })\n }\n }\n\n checkEnterPress = event => {\n if (event.key === 'Enter') {\n this.saveNewAtom()\n }\n }\n\n saveNewAtom() {\n if (!this.state.isNameOk) {\n return\n }\n if (!isStringEmpty(this.state.name)) {\n const newAtom = {\n name: this.state.name,\n flowId: this.props.flowId,\n }\n createNewAtom(newAtom, this.props.activeBotId)\n this.setState({ open: false, name: '', empty: false }, this.handleClose)\n } else {\n this.setState({ empty: true }, this.handleClose)\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.flows) {\n const names = []\n nextProps.flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n names.push(atom.name)\n })\n })\n this.setState({ usedNames: names })\n }\n }\n\n componentDidUpdate() {\n if (this.state.open && this.nameInput != null) this.nameInput.focus()\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n Add a new atom\n
\n {this.state.open && (\n \n this.saveNewAtom()}\n value={this.state.name}\n onKeyUp={this.checkEnterPress}\n onChange={event => this.handleChangeName(event.target.value)}\n />\n
\n )}\n \n )\n }\n}\n\nNewFlow.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst NewFlowExport = withStyles(styles)(NewFlow)\n\nexport default NewFlowExport\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { IconButton } from '@material-ui/core'\nimport { deleteFlow } from '../api/flow'\nimport { TrashIcon } from '../../../uiKit/icons/Icons.js'\nimport Modal from '../../../uiKit/Modal'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '24px 70px',\n },\n})\n\nclass DeleteFlow extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n deleteFlow() {\n const { flow } = this.props\n\n flow &&\n flow.atoms &&\n flow.atoms.forEach(atom => {\n const atomId = atom.id\n if (atomId == this.props.atomId) {\n this.props.selectAtom(this.props.flows[0].atoms[0].id)\n }\n })\n deleteFlow(\n this.props.flow.id,\n this.props.match.params.botId,\n this.handleClose,\n )\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n \n \n \n
\n this.deleteFlow()} title=\"Delete\" />\n \n
\n \n
\n )\n }\n}\n\nDeleteFlow.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n flows: state.flows,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(DeleteFlow)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport {\n FormControl,\n FormHelperText,\n Input,\n InputLabel,\n} from '@material-ui/core'\nimport { PlusIcon } from '../../../uiKit/icons/Icons.js'\nimport { createNewFlow } from '../api/flow'\nimport Modal from '../../../uiKit/Modal'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n addFlow: {\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n padding: 15,\n justifyContent: 'center',\n },\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n formControl: {\n margin: theme.spacing.unit,\n },\n buttonHolder: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 30,\n },\n newFlowButton: {\n fontWeight: 700,\n fontSize: 14,\n color: '#3A3F62',\n margin: '0 0 0 16px',\n fontFamily: 'Lato',\n },\n})\n\nclass NewFlow extends React.Component {\n state = {\n open: false,\n usedNames: [],\n isNameOk: true,\n name: '',\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n checkEnterPress = event => {\n if (\n event.key === 'Enter' &&\n !isStringEmpty(this.state.name) &&\n !this.state.usedNames.includes(this.state.name)\n ) {\n this.saveNewFLow()\n }\n }\n\n handleChangeName(text) {\n this.setState({ name: text })\n if (this.state.usedNames.includes(text)) {\n this.setState({ isNameOk: false })\n } else {\n this.setState({ isNameOk: true })\n }\n }\n\n saveNewFLow() {\n if (\n !isStringEmpty(this.state.name) &&\n !this.state.usedNames.includes(this.state.name)\n ) {\n const newFLow = {\n name: this.state.name,\n }\n createNewFlow(this.props.botId, newFLow)\n this.setState({ open: false, name: '' })\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.flows) {\n const names = []\n nextProps.flows.forEach(flow => {\n names.push(flow.name)\n })\n this.setState({ usedNames: names })\n }\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n \n \n \n \n

Add new flow

\n
\n \n \n Flow name\n this.handleChangeName(event.target.value)}\n onKeyUp={this.checkEnterPress}\n />\n {!this.state.isNameOk && (\n \n This flow name is already used!\n \n )}\n \n
\n this.saveNewFLow()}>\n CREATE\n \n
\n \n \n )\n }\n}\n\nNewFlow.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(NewFlow)\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { CloseIcon } from '../../../uiKit/icons/Icons.js'\nimport { deleteAtom } from '../api/atom'\nimport Modal from '../../../uiKit/Modal'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '24px 70px',\n },\n})\n\nclass DeleteAtom extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n handleAtomDelete = () => {\n this.props.selectWelcomeAtom()\n this.handleClose()\n }\n\n deleteAtom = () => {\n deleteAtom(\n this.props.atom.id,\n this.props.activeBotId,\n this.handleAtomDelete,\n )\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
this.handleOpen()}>\n \n
\n \n
\n \n \n
\n \n
\n )\n }\n}\n\nDeleteAtom.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(DeleteAtom)\n","import { store } from '../../../index'\n\nexport const GET_TWILIO_CREDENTIALS = 'GET_TWILIO_CREDENTIALS'\n\nexport const setTwilioCredentials = twilioCredentials => {\n store.dispatch({\n type: GET_TWILIO_CREDENTIALS,\n twilioCredentials,\n })\n}\n","export const TimeConstants = Object.freeze({\n defaultBackTime: 7, //days\n})\n\nexport const DEFAULT_DEBOUNCE_TIME = 1000 //mls\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport { setTwilioCredentials } from '../actions/twilioCredentials'\n\nexport function getTwilioCredentials(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/twilio/integration`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(credentials => {\n setTwilioCredentials(credentials)\n return credentials\n })\n .catch(() => alertError('Fail. Try it later 45'))\n}\n\nexport function submitTwilioCredentials(botId, credentials) {\n return fetch(`${BASE_URL}/bot/${botId}/twilio/integration`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(credentials),\n }).then(response => {\n if (response.status === 400) {\n response.text().then(text => {\n const res = JSON.parse(text)\n alertError(res.message)\n })\n return\n } else if (response.status === 204) {\n alertSuccess('Twilio is updated successfully.')\n console.log(response)\n } else {\n alertError(response.message)\n }\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n Typography,\n withStyles,\n} from '@material-ui/core'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport { NavLink, Redirect, Route, withRouter } from 'react-router-dom'\nimport AtomEditor from './components/AtomEditor'\nimport NewAtom from './components/NewAtom'\nimport DeleteFlow from './components/DeleteFlow'\nimport NewFlow from './components/NewFlow'\nimport DeleteAtom from './components/DeleteAtom'\nimport { getFlows } from './api/flow'\nimport { SearchIcon } from '../../uiKit/icons/Icons.js'\nimport Headline from '../../uiKit/texts/Headline'\nimport { HOME_PATH } from '../../configs'\nimport { debounce } from 'lodash'\n\nimport { DEFAULT_DEBOUNCE_TIME } from '../../constants/time'\nimport { searchAtomsByContent } from './api/atom'\nimport { isStringEmpty } from '../../helpers/isStringEmpty'\nimport { getTwilioCredentials } from '../settings/api/twilioCredetials'\nimport { getBot } from '../home/api/bots'\n\nconst styles = theme => ({\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n width: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 340,\n },\n searchIcon: {\n margin: 10,\n fontSize: 20,\n color: theme.palette.primary.main,\n },\n atomsSearch: {\n padding: 10,\n },\n activeChip: {\n backgroundColor: theme.palette.primary.main,\n color: 'white',\n margin: 5,\n },\n chip: {\n margin: 5,\n border: '1px solid #EBEBEF',\n },\n mainWrap: {\n background: '#FFFFFF',\n boxShadow: 'none',\n borderRadius: 10,\n height: 'auto',\n display: 'flex',\n justifyContent: 'space-between',\n },\n header: {\n color: theme.palette.primary.headerText,\n fontSize: 14,\n fontWeight: 700,\n fontFamily: 'Lato, sans-serif',\n },\n '@global': {\n \"[class*='MuiExpansionPanel']:before \": {\n display: 'none',\n },\n '.flowExp:hover .delete': {\n display: 'block',\n },\n '.flowExp::before': {\n display: 'none',\n },\n '.delete': {\n position: 'relative',\n left: 35,\n bottom: 33,\n display: 'none',\n transition: 'all 0.5s ease',\n },\n \".flowExp[class*='expanded'] .delete\": {\n bottom: 44,\n transition: 'all 0.5s ease',\n },\n },\n addNew: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid #1658F3',\n padding: 10,\n borderRadius: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n maxHeight: 40,\n margin: 5,\n },\n})\n\nclass Builder extends React.Component {\n state = {\n searchText: '',\n atomId: null,\n flowId: null,\n redirect: false,\n redirectId: null,\n }\n\n constructor() {\n super()\n this.getSearchAtoms = this.getSearchAtoms.bind(this)\n }\n\n componentDidMount() {\n const str = window.location.pathname.split('/')\n const atomId = str[str.length - 1] !== 'flows' ? str[str.length - 1] : null\n\n this.setState({ atomId }, () => {\n getFlows(this.props.match.params.botId)\n getTwilioCredentials(this.props.match.params.botId)\n getBot(this.props.match.params.botId)\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.flows !== this.props.flows) {\n if (!this.state.atomId) {\n this.selectWelcomeAtom()\n }\n }\n }\n\n selectWelcomeAtom = () => {\n const { flows } = this.props\n if (\n flows &&\n flows.length > 0 &&\n flows[0].atoms &&\n flows[0].atoms[0].id &&\n this.state.redirectId === null\n ) {\n this.setState(\n {\n redirect: true,\n redirectId: flows[0].atoms[0].id,\n },\n () => {\n this.setState({\n redirect: false,\n })\n },\n )\n }\n }\n\n selectAtom(id) {\n this.setState(\n {\n redirectId: id,\n redirect: true,\n },\n () => {\n this.setState({\n redirect: false,\n })\n },\n )\n }\n\n checkAccessToDelete(flow) {\n let deleteAccess = true\n if (flow.atoms !== undefined) {\n flow.atoms.find(atom => {\n if (atom.isHardCoded) {\n deleteAccess = false\n }\n })\n }\n return deleteAccess\n }\n\n renderRedirect() {\n if (this.state.redirect) {\n return (\n \n )\n }\n }\n\n checkTextExists = atom => {\n if (isStringEmpty(this.state.searchText)) return true\n\n if (atom.name.toUpperCase().includes(this.state.searchText.toUpperCase()))\n return true\n\n const searchFlow = this.props.searchAtoms[atom.flowId]\n return !!searchFlow && searchFlow.some(({ id }) => id === atom.id)\n }\n\n checkAtom(flow) {\n if (isStringEmpty(this.state.searchText)) return true\n if (flow.atoms != null) {\n for (let x = 0; x < flow.atoms.length; x++) {\n if (this.checkTextExists(flow.atoms[x])) {\n return true\n }\n }\n }\n\n return false\n }\n\n getSearchAtoms = debounce(_ => {\n if (this.state.searchText.length > 0) {\n searchAtomsByContent(this.state.searchText)\n }\n }, DEFAULT_DEBOUNCE_TIME)\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n
\n
\n
\n \n \n\n
\n {\n this.setState({ searchText: event.target.value })\n this.getSearchAtoms(event.target.value)\n }}\n />\n\n \n
\n
\n
\n
\n \n
\n \n {this.props.flows != null &&\n this.props.flows\n .filter(flow => this.checkAtom(flow))\n .reverse()\n .map(flow => (\n \n }>\n \n \n {flow.name}\n \n {!flow.atoms && this.checkAccessToDelete(flow) && (\n this.selectAtom(atomId)}\n flow={flow}\n atomId={this.state.atomId}\n />\n )}\n
\n \n \n {!this.checkAccessToDelete(flow) && (\n \n Start with customizing these messages to make the\n conversation feel personal\n
\n )}\n \n \n\n {flow.atoms != null &&\n flow.atoms\n .filter(atom => this.checkTextExists(atom))\n .reverse()\n .map((atom, key) => (\n \n {atom.name}\n \n {!atom.isHardCoded && (\n \n this.selectAtom(\n this.props.flows[0].atoms[0].id,\n )\n }\n />\n )}\n \n \n ))}\n \n \n \n ))}\n \n \n \n {this.props.flows[0] && this.props.flows[0].atoms[0] && (\n
\n
\n \n {this.renderRedirect()}\n
\n
\n )}\n \n \n )\n }\n}\n\nBuilder.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = ({ flows, activeBot, searchAtoms }) => ({\n flows,\n activeBot,\n searchAtoms,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Builder)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport { deleteIntent } from '../api/nlp'\nimport { connect } from 'react-redux'\nimport { Dialog, DialogActions, DialogTitle, Slide } from '@material-ui/core'\n\nfunction Transition(props) {\n return \n}\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n deleteInt: {\n flexBasis: '10%',\n color: '#FF624C',\n cursor: 'pointer',\n },\n flow: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n button: {\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n margin: '40px 0',\n color: 'white',\n fontFamily: 'Lato, sans-serif',\n },\n '@global': {\n \"[class*='MuiDialog-paperWidthSm']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover:hover': {\n background: 'white',\n color: '#1658F3',\n },\n '.buttonHover1:hover': {\n color: 'white',\n background: '#1658F3',\n },\n '.buttonHover1': {\n background: 'white',\n color: '#1658F3',\n },\n },\n})\n\nclass DeleteIntent extends React.Component {\n state = {\n open: false,\n }\n\n // componentWillMount() {\n // getIntentContexts(this.props.intentId); //todo fix ASAP\n // }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n deleteIntent() {\n deleteIntent(this.props.intentId, this.props.intentsSize)\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
this.handleOpen()}>Delete
\n\n \n \n {'Are you sure you want to delete' + this.props.name + '?'}\n \n \n this.deleteIntent()}\n color=\"primary\">\n Delete\n \n \n Cancel\n \n \n \n
\n )\n }\n\n getContextList() {\n return this.props.contexts.map(e => e.currentAtom).join(', ')\n }\n}\n\nDeleteIntent.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n contexts: state.contexts,\n intents: state.intents,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(DeleteIntent))\n","/**\n * Created by serhiy on 05.03.18.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport img from './discuss.png'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n wrap: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n text: {\n maxWidth: 330,\n lineHeight: '22px',\n fontSize: 14,\n textAlign: 'center',\n color: theme.palette.primary.text,\n marginBottom: 24,\n },\n img: {\n display: 'block',\n marginBottom: 24,\n },\n})\n\nclass NoData extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { classes, description, buttonTitle } = this.props\n return (\n
\n \"img\"\n

{description}

\n {buttonTitle && (\n \n )}\n
\n )\n }\n}\n\nNoData.propTypes = {\n classes: PropTypes.object.isRequired,\n description: PropTypes.string.isRequired,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(NoData)))\n","export default \"data:image/png;base64,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\"","/**\n * Created by serhiy on 06.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport IconButton from '@material-ui/core/IconButton'\nimport FirstPageIcon from '@material-ui/icons/FirstPage'\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight'\nimport LastPageIcon from '@material-ui/icons/LastPage'\n\nconst actionsStyles = theme => ({\n root: {\n flexShrink: 0,\n color: theme.palette.text.secondary,\n marginLeft: theme.spacing.unit * 2.5,\n },\n page: {\n fontSize: '14px',\n },\n})\n\nclass TablePaginationActions extends React.Component {\n handleFirstPageButtonClick = event => {\n this.props.onChangePage(event, 0)\n }\n\n handleBackButtonClick = event => {\n this.props.onChangePage(event, this.props.page - 1)\n }\n\n handleNextButtonClick = event => {\n this.props.onChangePage(event, this.props.page + 1)\n }\n\n handleLastPageButtonClick = event => {\n this.props.onChangePage(\n event,\n Math.max(0, Math.ceil(this.props.count / this.props.rowsPerPage) - 1),\n )\n }\n\n render() {\n const { classes, count, page, rowsPerPage, theme } = this.props\n\n return (\n
\n {count > 0 && (\n \n {page * rowsPerPage + 1} -{' '}\n {count > (page + 1) * rowsPerPage\n ? (page + 1) * rowsPerPage\n : count}{' '}\n of {count}\n \n )}\n\n \n {theme.direction === 'rtl' ? : }\n \n \n {theme.direction === 'rtl' ? (\n \n ) : (\n \n )}\n \n {page > 2 && '...'}\n {page > 1 && (\n \n this.props.onChangePage(event, this.props.page - 2)\n }\n aria-label=\"current\">\n {this.props.page - 1}\n \n )}\n {page > 0 && (\n \n this.props.onChangePage(event, this.props.page - 1)\n }\n aria-label=\"current\">\n {this.props.page}\n \n )}\n \n {this.props.page + 1}\n \n {page < Math.ceil(count / rowsPerPage) - 1 && (\n \n this.props.onChangePage(event, this.props.page + 1)\n }\n aria-label=\"current\">\n {this.props.page + 2}\n \n )}\n {page + 1 < Math.ceil(count / rowsPerPage) - 1 && (\n \n this.props.onChangePage(event, this.props.page + 2)\n }\n aria-label=\"current\">\n {this.props.page + 3}\n \n )}\n {page + 1 < Math.ceil(count / rowsPerPage) - 1 && '...'}\n = Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"Next Page\">\n {theme.direction === 'rtl' ? (\n \n ) : (\n \n )}\n \n = Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"Last Page\">\n {theme.direction === 'rtl' ? : }\n \n
\n )\n }\n}\n\nTablePaginationActions.propTypes = {\n classes: PropTypes.object.isRequired,\n count: PropTypes.number.isRequired,\n onChangePage: PropTypes.func.isRequired,\n page: PropTypes.number.isRequired,\n rowsPerPage: PropTypes.number.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default withStyles(actionsStyles, { withTheme: true })(\n TablePaginationActions,\n)\n","/**\n * Created by Admin on 02.07.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport TablePagination from '@material-ui/core/TablePagination'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport TablePaginationActionsWrapped from './TablePaginationActionsWrapped'\n\nconst styles = theme => ({\n caption: {\n display: 'none!important',\n },\n})\n\nclass Pagination extends React.Component {\n render() {\n const { classes } = this.props\n return (\n \n )\n }\n}\n\nPagination.propTypes = {\n classes: PropTypes.object,\n count: PropTypes.number.isRequired,\n onChangePage: PropTypes.func,\n page: PropTypes.number,\n rowsPerPage: PropTypes.number,\n}\n\nexport default withStyles(styles)(Pagination)\n","export const styles = theme => ({\n alert: {\n color: '#FF624C',\n fontSize: 12,\n },\n container: {\n overflowY: 'auto',\n height: '100%',\n },\n statesModal: {\n height: 45,\n padding: '10px 0',\n },\n heading: {\n lineHeight: 'normal',\n fontSize: 18,\n color: '#3A3F62',\n textAlign: 'center',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n flexBasis: '60%',\n },\n progress: {\n margin: theme.spacing.unit * 2,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '90%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n enter: {\n width: '10%',\n cursor: 'pointer',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n userSaysWrapper: {\n maxHeight: '175px',\n overflow: 'auto',\n },\n save: {\n margin: '30px auto 0',\n },\n modalHeading: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 600,\n marginTop: 24,\n },\n modalHeadingQuestions: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 600,\n marginTop: 24,\n },\n none: {\n display: 'none',\n },\n '@global': {\n '.Select-placeholder': {\n color: '#616581',\n lineHeight: '43px',\n },\n '.Select-input > input': {\n lineHeight: '28px',\n },\n '.Select-value': {\n paddingTop: 4,\n },\n '.Select-control': {\n height: 45,\n },\n },\n})\n\nexport const HolderStyles = {\n color: '#3A3F62',\n padding: '10px 24px',\n width: '100%',\n marginRight: 0,\n}\n\nexport const TabTemplateStyles = {\n display: 'block',\n padding: '0',\n}\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport { withRouter } from 'react-router-dom'\nimport {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n withStyles,\n} from '@material-ui/core'\nimport SubmitButton from './buttons/SubmitButton'\n\nconst styles = theme => ({\n wrapHeader: {\n display: 'flex',\n width: '100%',\n },\n wrapNameAndPhrases: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 12,\n color: theme.palette.text.gray,\n marginBottom: 0,\n },\n name: {\n fontFamily: 'Lato',\n fontSize: 18,\n marginBottom: 0,\n color: theme.palette.text.header,\n },\n flowExp: {\n borderRadius: '10px !important',\n overflow: 'hidden',\n margin: '16px 0 0 !important',\n boxShadow: ' 4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n '& >div': {\n padding: '0 40px',\n },\n },\n mainWrap: {\n borderRadius: 10,\n height: 'auto',\n display: 'flex',\n justifyContent: 'space-between',\n '& [class*=\"MuiIconButton\"]': {\n right: 24,\n },\n '& [class*=\"MuiExpansionPanel\"]:not([class*=\"MuiIconButton\"])': {\n margin: '24px 0',\n },\n \"& [class*='MuiExpansionPanel']:before \": {\n display: 'none',\n },\n '::before': {\n display: 'none',\n },\n },\n})\n\nconst TabTemplate = ({\n classes,\n tab,\n expanded,\n onChange,\n children,\n button,\n detailsStyle,\n}) => (\n \n }>\n
\n \n {tab.icon}\n
\n {tab.name && tab.phrasesNumber ? (\n
\n

{tab.name}

\n

{tab.phrasesNumber} phrases

\n
\n ) : (\n
\n

{tab.name}

\n

{tab.description}

\n
\n )}\n {button && (\n
\n button.onClick(e)}\n />\n
\n )}\n \n \n \n {children}\n \n \n)\n\nTabTemplate.propTypes = {\n tab: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(TabTemplate))\n","/**\n * Created by serhiy on 12.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { CloseIcon, PenIcon } from '../../../uiKit/icons/Icons'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n red: {\n border: '1px solid #FF624C',\n color: '#FF624C',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n disabled: {\n border: '1px solid white',\n marginRight: 10,\n maxHeight: 45,\n },\n userSays: {\n fontSize: 14,\n color: '#1658F3',\n margin: 0,\n },\n none: {\n display: 'none',\n },\n '@global': {\n '.addPhrase::placeholder,.addPhrase': {\n color: '#1658F3',\n },\n '.userSay:hover .editPhrase': {\n display: 'flex',\n alignItems: 'center',\n },\n '.class*=[none]:hover .editPhrase': {\n display: 'none',\n },\n '.editPhrase': {\n display: 'none',\n },\n },\n})\n\nclass UserSays extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n red: false,\n }\n }\n\n deleteUserPhrase(index, e) {\n const id = this.props.index\n this.props.deleteUserPhrase(id, e)\n }\n\n focusTextInput(id) {\n this.props.modifyInput(id)\n }\n\n onBlur() {\n this.setState({ focused: false })\n }\n\n onFocus() {\n this.setState({ focused: true })\n }\n\n handleOnBlur = e => {\n if (isStringEmpty(e.target.value)) {\n this.setState({\n red: true,\n })\n } else {\n this.onBlur()\n this.props.editUserPhrase(this.props.index, e)\n if (this.props.emptySay == this.props.index) {\n this.props.setEmptySay(null)\n this.props.modifyInput(null)\n }\n }\n }\n\n render() {\n const { classes, says, index, emptySay, isRtl } = this.props\n const { red } = this.state\n const modify = this.props.emptySay === index\n\n return (\n
\n \n {\n const id = this.props.index\n this.focusTextInput(id)\n }}>\n {\n this.textInput = node\n }}\n autoFocus={modify}\n readOnly={this.props.editInput !== index}\n onBlur={this.handleOnBlur}\n onKeyPress={event => {\n if (event.charCode === 13 && event.target.value !== '') {\n this.props.editUserPhrase(index, event)\n this.onBlur()\n if (emptySay == index) {\n this.props.setEmptySay(null)\n }\n }\n }}\n onFocus={() => this.onFocus()}\n className={` ${classes.input} addPhrase`}\n style={\n this.props.editInput === index\n ? { padding: '2px 10px' }\n : { padding: '15px 32px 0px' }\n }\n defaultValue={says}\n />\n
\n\n \n {\n const id = this.props.index\n this.props.modifyInput(id)\n this.props.setEmptySay(id)\n }}>\n \n \n {\n this.deleteUserPhrase(e, index)\n }}>\n \n \n \n \n \n )\n }\n}\n\nUserSays.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(UserSays))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { HolderStyles, styles, TabTemplateStyles } from './IntentModalStyles'\nimport { createNewIntent, getIntentUserSays, updateIntent } from '../../api/nlp'\nimport { getBotLanguages } from '../../../settings/api/settings'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport TabTemplate from '../../../../uiKit/TabTemplate'\nimport { EnterIcon } from '../../../../uiKit/icons/Icons'\nimport UserSays from '../UserSays'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { alertError } from '../../../../api'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\n\nclass IntentModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n intentName: null,\n userSays: [],\n answerAtom: null,\n intentId: null,\n faq: null,\n expanded: null,\n loading: false,\n }\n }\n\n componentDidMount() {\n const { modalIntentId, match } = this.props\n\n getBotLanguages(match.params.botId)\n .then(botLanguages => {\n if (botLanguages) {\n const { activeLanguages } = botLanguages\n this.setState({\n botActiveLanguagesList: activeLanguages,\n userSays: this.createUserSays(activeLanguages),\n })\n }\n })\n .then(() => {\n if (modalIntentId != null) {\n this.setState({\n loading: true,\n })\n\n getIntentUserSays(this.props.modalIntentId).then(json => {\n if (json) {\n const { name, answerAtom, intentId, faq, userSays } = json\n\n this.setState({\n intentName: name,\n userSays: userSays,\n answerAtom: answerAtom,\n intentId: intentId,\n faq: faq,\n loading: false,\n })\n }\n })\n }\n })\n }\n\n convert = back => {\n const converted = []\n\n for (const [key, value] of Object.entries(back)) {\n converted.unshift({\n isEdited: false,\n shortName: key,\n phrases: value,\n })\n }\n\n return converted\n }\n\n createUserSays = languages => {\n const userSays = []\n languages.forEach(language => {\n userSays.push({\n isEdited: false,\n shortName: language.shortName,\n phrases: [],\n })\n })\n return userSays\n }\n\n handleIntentName = event => {\n this.setState({\n intentName: event.target.value,\n })\n }\n\n handleChangeExpansion = expanded => {\n this.setState({\n expanded: expanded === this.state.expanded ? null : expanded,\n text: '',\n })\n }\n\n handleChangeInput = e => {\n this.setState({\n text: e.target.value,\n })\n }\n\n handleChangeAtom = ({ label }) => {\n this.setState({ answerAtom: label })\n }\n\n addUserSays = (event, languageCode) => {\n const { userSays, text } = this.state\n let newUserSays = [...userSays]\n const currentUserSays =\n newUserSays?.find(elem => elem.shortName === languageCode).phrases || []\n\n if (\n (event.type === 'keypress' && event.charCode === 13) ||\n event.type === 'click'\n ) {\n let found = false\n\n currentUserSays.forEach(elem => {\n if (\n elem.trim().toUpperCase() === this.state.text.trim().toUpperCase() &&\n !found\n ) {\n found = true\n this.setState({\n notValue: this.state.text,\n showNotification: true,\n })\n }\n })\n\n if (!found && this.state.text !== '') {\n newUserSays = newUserSays.map(elem => {\n if (elem.shortName === languageCode) {\n elem.phrases.unshift(text)\n elem.isEdited = true\n }\n return elem\n })\n\n this.setState({\n userSays: newUserSays,\n showNotification: false,\n text: '',\n })\n return\n }\n }\n }\n\n editUserPhrase = (index, languageCode, event) => {\n let found = false\n const { userSays } = this.state\n let newUserSays = [...userSays]\n const currentUserSays = newUserSays.find(\n elem => elem.shortName === languageCode,\n ).phrases\n for (let i = 0; i < currentUserSays.length && !found; i++) {\n if (\n currentUserSays[i].trim().toUpperCase() ===\n event.target.value.trim().toUpperCase() &&\n index !== i\n ) {\n found = true\n this.setState({\n notValue: event.target.value,\n showNotification: true,\n })\n this.modifyInput(index)\n break\n }\n }\n\n if (!found && event.target.value !== '') {\n newUserSays = newUserSays.map(elem => {\n if (elem.shortName === languageCode) {\n elem.phrases.splice(index, 1, event.target.value)\n elem.isEdited = true\n }\n return elem\n })\n this.setState({\n userSays: newUserSays,\n showNotification: false,\n })\n this.modifyInput(null)\n return\n }\n }\n\n deleteUserPhrase = (index, languageCode) => {\n const { userSays } = this.state\n const newUserSays = [...userSays]\n\n newUserSays[languageCode] = newUserSays\n .find(elem => elem.shortName === languageCode)\n .phrases.splice(index, 1)\n\n this.setState(\n {\n userSays: newUserSays,\n },\n () => this.modifyInput(null),\n )\n }\n\n getTabInfo = language => {\n const { userSays } = this.state\n const { fullName, shortName } = language\n\n return {\n name: fullName,\n phrasesNumber:\n userSays.length &&\n userSays.find(elem => elem.shortName === shortName).phrases.length,\n }\n }\n\n modifyInput = id => {\n this.setState({\n editInput: id,\n })\n }\n\n setEmptySay = index => {\n this.setState({\n emptySay: index,\n })\n }\n\n createIntent = () => {\n if (isStringEmpty(this.state.intentName)) {\n alertError(\n `please write ${this.props.isFaqModal ? 'FAQ' : 'Intent'} name`,\n )\n return\n }\n if (this.props.isFaqModal && this.state.answerAtom == null) {\n alertError('please choose answer')\n return\n }\n let unique = true\n this.props.intents.forEach(intent => {\n if (\n intent.name.toUpperCase() === this.state.intentName.toUpperCase() &&\n intent.id !== this.props.modalIntentId\n ) {\n alertError(`Intent with name '${intent.name}' already exist`, 10000)\n unique = false\n return\n }\n })\n if (unique == true) {\n const intent = {\n name: this.state.intentName,\n intentId: this.state.intentId,\n botId: this.props.match.params.botId,\n userSays: this.state.userSays,\n answerAtom: this.state.answerAtom,\n faq: this.props.isFaqModal,\n }\n if (this.props.modalIntentId == null) {\n createNewIntent(intent, this.props.intentsSize)\n } else {\n intent.id = this.props.modalIntentId\n updateIntent(intent)\n }\n this.props.closeIntent()\n }\n }\n\n render() {\n const { classes, modalIntentId, isFaqModal } = this.props\n const {\n intentName,\n botActiveLanguagesList,\n expanded,\n text,\n showNotification,\n notValue,\n emptySay,\n editInput,\n userSays,\n loading,\n } = this.state\n const modalName = isFaqModal ? 'FAQ' : 'Intent'\n\n return (\n
\n {loading ? (\n \n ) : (\n
\n

\n {modalIntentId != null ? `Edit ${intentName}` : 'Create new'}{' '}\n {modalName}\n

\n

{modalName} name

\n \n\n

Questions

\n {botActiveLanguagesList &&\n botActiveLanguagesList.map(language => (\n \n this.handleChangeExpansion(language.shortName)\n }\n detailsStyle={TabTemplateStyles}>\n
\n {\n this.textInput = node\n }}\n dir={language.isRtl && 'rtl'}\n placeholder=\"+ Add user phrase and press Enter to add it\"\n onKeyPress={(event, text) =>\n this.addUserSays(event, language.shortName, text)\n }\n onChange={this.handleChangeInput}\n />\n {\n this.addUserSays(e, language.shortName)\n }}\n className={`${classes.enter} enter`}>\n \n
\n
\n {showNotification && (\n

\n {`User Phrase '${notValue}' already exist`}\n

\n )}\n\n
\n {!!userSays.length &&\n userSays\n .find(elem => elem.shortName === language.shortName)\n .phrases.map((says, id) => (\n
\n \n this.editUserPhrase(id, language.shortName, e)\n }\n deleteUserPhrase={(id, e) =>\n this.deleteUserPhrase(id, language.shortName, e)\n }\n index={id}\n />\n
\n ))}\n
\n \n ))}\n {isFaqModal && (\n
\n

Answers

\n \n
\n )}\n \n
\n )}\n \n )\n }\n}\n\nIntentModal.propTypes = {\n classes: PropTypes.object.isRequired,\n intents: PropTypes.array.isRequired,\n intentsSize: PropTypes.number.isRequired,\n tabIndex: PropTypes.string.isRequired,\n modalIntentId: PropTypes.number.isRequired,\n isFaqModal: PropTypes.bool.isRequired,\n closeIntent: PropTypes.func.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(IntentModal))\n","/**\n * Created by serhiy on 05.03.18.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport { withRouter } from 'react-router-dom'\nimport Paper from '@material-ui/core/Paper'\nimport { getPagingIntents } from '../api/nlp'\nimport { PlusIcon, SearchIcon } from '../../../uiKit/icons/Icons.js'\nimport DeleteIntent from './DeleteIntent.js'\nimport NoData from './NoNlpData.js'\nimport Loader from '../../../uiKit/loaders/loader'\nimport Pagination from '../../../uiKit/table/Pagination'\nimport Modal from '../../../uiKit/Modal'\nimport { clearIntents } from '../actions/intents'\nimport IntentModalNew from './IntentModal/IntentModal'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n background: 'rgb(247, 250, 254)',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n },\n createIntentButton: {\n background: 'linear-gradient(312.17deg, #5A98F7 3.33%, #1658F3 96.71%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n height: 40,\n width: 40,\n padding: 0,\n minWidth: 40,\n borderRadius: 25,\n },\n title: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: '#3A3F62',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 400,\n },\n intentItem: {\n padding: 24,\n fontSize: 14,\n display: 'flex',\n fontFamily: 'Lato, sans-serif',\n color: '#616581',\n },\n name: {\n flexBasis: '30%',\n maxWidth: '30%',\n wordWrap: 'break-word',\n padding: '0 10px',\n },\n answer: {\n flexBasis: '50%',\n maxWidth: '50%',\n wordWrap: 'break-word',\n padding: '0 10px',\n },\n editInt: {\n flexBasis: '10%',\n color: '#1658F3',\n cursor: 'pointer',\n },\n deleteInt: {\n flexBasis: '10%',\n color: '#FF624C',\n cursor: 'pointer',\n },\n desc: {\n lineHeight: 17,\n fontSize: 14,\n color: '#3A3F62',\n },\n addTitle: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 14,\n color: '#3A3F62',\n },\n})\n\nclass Intents extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n modalIntentId: 0,\n searchIntent: '',\n }\n\n clearIntents()\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n this.state.page,\n '',\n )\n }\n componentWillReceiveProps() {\n if (this.props.intents != null) {\n if ((this.props.intents.length < 10 && this.props.intentsSize > this.state.page * 10 + 10) ||\n this.props.intents.length > 10) {\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n this.state.page,\n '',\n )\n }\n if (this.props.intents.length === 0 && this.props.intentsSize > 0) {\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n this.state.page === 0 ? 0 : this.state.page - 1,\n '',\n )\n }\n }\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page })\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n page,\n this.state.searchIntent,\n )\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value })\n }\n\n closeIntentModal = () => {\n this.setState({ open: false })\n }\n\n openIntentModal(id) {\n this.setState({\n modalIntentId: id,\n open: true,\n })\n }\n\n handleSearchIntent(value) {\n this.setState({ searchIntent: value })\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n 0,\n encodeURI(value),\n )\n }\n\n getRowStyle = index => {\n if ((index + 1) % 2 === 1) {\n return { background: '#F7FAFE' }\n } else {\n return {\n background: 'rgba(90, 152, 247, 0.1)',\n borderRadius: 10,\n }\n }\n }\n\n getContent = isFaq => {\n if (isFaq) {\n return {\n buttonTitle: 'faq',\n tableHeader: 'Answer',\n noDataContainerText:\n \"You have no FAQ's yet. Try adding new FAQ to make your bot answer the frequenty asked questions easily.\",\n noDataContainerButton: 'Add FAQ',\n }\n } else {\n return {\n buttonTitle: 'intent',\n tableHeader: 'User phrase',\n noDataContainerText:\n 'You have no Intents yet. Try adding new Intent to make your bot answer more complicated questions.',\n noDataContainerButton: 'Add Intent',\n }\n }\n }\n\n render() {\n const { classes, intents, isFaq } = this.props\n const { rowsPerPage, page } = this.state\n const displayTable = intents?.length || this.state.searchIntent !== ''\n const tableContent = this.getContent(isFaq)\n\n return (\n
\n \n \n \n\n \n \n

\n {this.props.tableTitle}\n

\n {intents && (\n \n this.openIntentModal(null)}\n variant=\"raised\">\n \n \n \n Add new {tableContent.buttonTitle}\n

\n
\n )}\n \n\n {displayTable && (\n
\n this.handleSearchIntent(event.target.value)}\n />\n \n
\n )}\n \n\n {!intents && }\n\n {intents && displayTable ? (\n \n
\n
\n
\n \n
Name
\n
\n {tableContent.tableHeader}\n
\n
\n {intents\n .filter(\n n =>\n n.name\n .toUpperCase()\n .indexOf(this.state.searchIntent.toUpperCase()) !==\n -1,\n )\n .map((n, index) => (\n \n
{n.name}
\n
\n {n.faq ? n.answerAtom : n.userPhrase}\n
\n this.openIntentModal(n.id)}>\n Edit\n
\n \n
\n ))}\n \n \n \n \n
\n ) : (\n
\n this.openIntentModal(null)}\n buttonTitle={tableContent.noDataContainerButton}\n />\n
\n )}\n \n )\n }\n}\n\nIntents.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n intentsSize: state.intentsSize,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(Intents)))\n","/**\n * Created by serhiy on 05.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport Button from '@material-ui/core/Button'\nimport { getIntents } from '../api/nlp'\nimport { getContextsPages } from '../api/context'\nimport TriggerItem from './TriggerItem'\nimport { PlusIcon } from '../../../uiKit/icons/Icons.js'\nimport Loader from '../../../uiKit/loaders/loader'\nimport Pagination from '../../../uiKit/table/Pagination'\nimport NoData from './NoNlpData.js'\nimport { clearContexts } from '../actions/contexts'\n\nconst styles = theme => ({\n root: {\n width: '100%',\n overflow: 'visible',\n },\n table: {\n minWidth: 700,\n overflow: 'visible',\n },\n createTriggerButton: {\n float: 'right',\n },\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n },\n selectItem: {\n flexBasis: '30%',\n padding: 24,\n },\n title: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: '#3A3F62',\n },\n createIntentButton: {\n background: 'linear-gradient(312.17deg, #5A98F7 3.33%, #1658F3 96.71%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n height: 40,\n width: 40,\n padding: 0,\n minWidth: 40,\n borderRadius: 25,\n },\n addTitle: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 14,\n color: '#3A3F62',\n },\n})\n\nclass Triggers extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n modalTriggerId: 0,\n currentAtom: null,\n newAtom: null,\n intent: null,\n newContext: false,\n }\n\n clearContexts()\n getIntents(this.props.match.params.botId, false)\n getContextsPages(props.match.params.botId, this.state.page)\n }\n\n componentWillReceiveProps() {\n if (this.props.contexts != null) {\n if (this.props.contexts.length == 1 && this.props.contextSize > 10) {\n if (this.state.page === 0) {\n getContextsPages(this.props.match.params.botId, this.state.page)\n }\n }\n if (this.props.contexts.length == 0 && this.props.contextSize > 0) {\n if (this.state.page > 0) {\n const page = this.state.page - 1\n getContextsPages(this.props.match.params.botId, page)\n }\n }\n }\n }\n\n handleChange = (name, value, id) => {\n this.setState({\n [name]: value,\n })\n this.createTrigger(id)\n }\n\n createTrigger = () => {\n this.setState({\n newContext: true,\n })\n }\n\n changeNewContext = () => {\n this.setState({\n newContext: false,\n })\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page })\n getContextsPages(this.props.match.params.botId, page)\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value })\n }\n\n render() {\n const { classes, contexts } = this.props\n const { rowsPerPage, page, newContext } = this.state\n\n const context = {\n previousAtom: this.state.currentAtom,\n intent: this.state.intent,\n currentAtom: this.state.newAtom,\n }\n\n return (\n
\n
\n
\n
\n

\n Triggers\n

\n\n {!contexts ? (\n \n ) : !contexts.length && !newContext ? (\n \n ) : (\n
\n {\n
\n {!!contexts.length && (\n \n \n \n \n \n \n \n Add new trigger\n

\n
\n
\n
\n )}\n\n
\n {newContext && (\n \n )}\n {!!contexts.length && (\n
\n {contexts.map(context => (\n
\n \n
\n ))}\n \n
\n )}\n
\n
\n }\n
\n )}\n
\n \n \n \n )\n }\n}\n\nTriggers.defaultProps = {\n activeBot: {},\n}\n\nTriggers.propTypes = {\n classes: PropTypes.object.isRequired,\n activeBot: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n contexts: state.contexts,\n activeBot: state.activeBot,\n contextSize: state.contextSize,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(Triggers)),\n)\n","export const styles = theme => ({\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n overflow: 'visible',\n background: 'red',\n },\n table: {\n minWidth: 700,\n overflow: 'visible',\n },\n menuItem: {\n background: 'red !',\n },\n createTriggerButton: {\n float: 'right',\n },\n button: {\n border: '1px solid #1658F3',\n color: theme.palette.primary.main,\n background: '#FFFFFF',\n borderRadius: 10,\n padding: '10px 34px',\n boxShadow: 'none',\n '&:hover': {\n background: '#ffffff',\n },\n },\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n position: 'relative',\n },\n selectItem: {\n flexBasis: '33%',\n padding: 24,\n borderRight: '1px solid #EBEBEF',\n },\n desc: {\n fontWeight: 'bold',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n selectIcon: {\n background: 'red',\n },\n trainedIcon: {\n background: '#11C314',\n border: '1px solid #11C314',\n borderRadius: 10,\n padding: '10px 34px',\n boxShadow: 'none',\n lineHeight: '1.4em',\n fontSize: '0.875rem',\n minHeight: '36px',\n },\n tabsTrain: {\n display: 'flex',\n cursor: 'pointer',\n maxHeight: 45,\n alignItems: 'center',\n },\n leftTab: {\n borderTopLeftRadius: 10,\n borderBottomLeftRadius: 10,\n background: theme.palette.primary.light,\n color: '#ffffff',\n padding: '13px 24px',\n maxHeight: '100%',\n },\n rightTab: {\n borderBottomRightRadius: 10,\n borderTopRightRadius: 10,\n background: '#ffffff',\n color: theme.palette.primary.text,\n padding: '13px 24px',\n maxHeight: '100%',\n },\n trainButton: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '100%',\n },\n title: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: theme.palette.text.header,\n flexBasis: '15%',\n marginRight: '32px',\n },\n headerWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n },\n activeNlp: {\n background: '#5A98F7 !important',\n color: '#ffffff !important',\n },\n defaultNlp: {\n background: '#ffffff !important',\n color: '#616581 !important',\n },\n filterWrapper: {\n display: 'flex',\n alignItems: 'baseline',\n flexDirection: 'row',\n },\n filterText: {\n marginRight: '17px',\n fontSize: '14px',\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n },\n selectWrapper: {\n minWidth: '145px',\n },\n userSay: {\n margin: 0,\n },\n})\n","import React from 'react'\n\nimport { Button } from '@material-ui/core'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from './Training-styles'\n\nfunction TrainButton(props) {\n const { classes, onClick } = props\n return (\n \n Train\n \n )\n}\n\nexport default withStyles(styles)(TrainButton)\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from './Training-styles'\nimport IntentsSelect from '../IntentSelect/index'\nimport TrainButton from './TrainButton'\nimport { DoneIcon } from '../../../../uiKit/icons/Icons'\nimport { getNestedProps } from '../../../../helpers/getNestedProps'\n\nfunction TrainingRequestView(props) {\n const { classes, request, handleChangeIntent, trainRequest } = props\n return (\n
\n
\n

User Says

\n \n {request.userSay}\n

\n
\n
\n

Intent

\n handleChangeIntent(value, request)}\n />\n
\n
\n
\n {request.trained ? (\n
\n \n
\n ) : (\n trainRequest(request)} />\n )}\n
\n
\n
\n )\n}\n\nexport default withStyles(styles)(TrainingRequestView)\n","export function getNestedProps(obj, path, def) {\n const fullPath = path\n .replace(/\\[/g, '.')\n .replace(/]/g, '')\n .split('.')\n .filter(Boolean)\n\n return fullPath.every(everyFunc) ? obj : def\n\n function everyFunc(step) {\n // eslint-disable-next-line no-param-reassign\n return !(step && (obj = obj[step]) === undefined)\n }\n}\n","export const LEFT = 'left'\nexport const RIGHT = 'right'\nexport const PAGE_SIZE = 5\nexport const NO_DATA_TEXT =\n 'You have not Trainings yet. It will appear here after your chatbot get first messages from users.'\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport Pagination from '../../../../uiKit/table/Pagination'\nimport { styles } from './Training-styles'\nimport TrainingRequest from './TrainingRequest-view'\nimport { PAGE_SIZE } from './Training-config'\n\nfunction TrainingRequestsView(props) {\n const {\n nlpRequests,\n classes,\n page,\n handleChangeIntent,\n trainRequest,\n handleChangePage,\n } = props\n return (\n
\n {nlpRequests.data.length &&\n nlpRequests.data.map(request => (\n \n ))}\n \n
\n )\n}\n\nexport default withStyles(styles)(TrainingRequestsView)\n","import React from 'react'\nimport Select from 'react-select'\n\nimport { withStyles } from '@material-ui/core/styles'\nimport { styles } from './Training-styles'\nimport { LEFT, RIGHT } from './Training-config'\nimport classnames from 'classnames'\n\nclass TrainingHeaderView extends React.Component {\n getTabClasses = (value, selectedTab) => {\n const classes = this.props.classes\n return classnames(\n {\n [`${classes.leftTab}`]: value === LEFT,\n },\n {\n [`${classes.rightTab}`]: value === RIGHT,\n },\n {\n [`${classes.activeNlp}`]: value === selectedTab,\n },\n {\n [`${classes.defaultNlp}`]: value !== selectedTab,\n },\n )\n }\n\n render() {\n const {\n classes,\n changeTab,\n selectedTab,\n selectedLanguageOption,\n languageOptions,\n handleLanguageChange,\n } = this.props\n return (\n
\n
\n

Training

\n\n
\n changeTab(LEFT)}>\n Training\n
\n changeTab(RIGHT)}>\n History\n
\n
\n \n\n
\n

Filter

\n
\n handleLanguageChange(option)}\n />\n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(TrainingHeaderView)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport {\n getHistoryData,\n getTrainingData,\n trainIntent,\n getAllPagingIntents,\n} from '../../api/nlp'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport TrainingRequestsView from './Training-requests-view'\nimport { clearNlpRequests } from '../../actions/nlpRequests'\nimport { styles } from './Training-styles'\nimport NoData from '../NoNlpData'\nimport { LEFT, RIGHT, PAGE_SIZE, NO_DATA_TEXT } from './Training-config'\nimport TrainingHeaderView from './TrainingHeader-view'\nimport { getBotLanguages } from '../../../settings/api/settings'\n\nclass Training extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n open: false,\n modalTriggerId: 0,\n nlpRequests: null,\n selected: LEFT,\n page: 0,\n selectedLanguageOption: { value: 'all', label: 'All' },\n }\n }\n\n componentDidMount() {\n this.setLanguagesOptions(this.props.match.params.botId)\n getAllPagingIntents(this.props.match.params.botId, '')\n getTrainingData(\n this.props.match.params.botId,\n this.state.page,\n PAGE_SIZE,\n this.state.selectedLanguageOption.value,\n )\n }\n\n static getDerivedStateFromProps(nextProps) {\n const { nlpRequests } = nextProps\n return nlpRequests ? { nlpRequests } : null\n }\n\n componentWillUnmount() {\n clearNlpRequests()\n }\n\n setLanguagesOptions = botId => {\n getBotLanguages(botId).then(botLanguages => {\n if (botLanguages) {\n const { activeLanguages } = botLanguages\n\n const languageOptions = activeLanguages\n .filter(language => language)\n .map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n }\n })\n\n const defaultSelectedLanguageOption = { label: 'All', value: 'all' }\n\n languageOptions.unshift(defaultSelectedLanguageOption)\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: defaultSelectedLanguageOption,\n })\n }\n })\n }\n\n changeTab = tabName => {\n const botId = this.props.match.params.botId\n clearNlpRequests()\n if (tabName === RIGHT) {\n getHistoryData(\n botId,\n 0,\n PAGE_SIZE,\n this.state.selectedLanguageOption.value,\n )\n } else {\n getTrainingData(\n botId,\n 0,\n PAGE_SIZE,\n this.state.selectedLanguageOption.value,\n )\n }\n this.setState({\n selected: tabName,\n page: 0,\n nlpRequests: null,\n })\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page: page }, () => {\n const { botId } = this.props.match.params\n const { selected, selectedLanguageOption } = this.state\n\n if (selected === LEFT) {\n getTrainingData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n } else {\n getHistoryData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n }\n })\n }\n\n trainRequest = request => {\n if (\n request.triggeredIntentId == null ||\n request.triggeredIntentName == null ||\n request.triggeredIntentName.includes('smalltalk.')\n ) {\n return\n }\n const { botId } = this.props.match.params\n trainIntent(request, botId)\n }\n\n handleChangeIntent = (value, request) => {\n const newRequests = [...this.state.nlpRequests.data]\n request.triggeredIntentId = value.id\n request.triggeredIntentName = value.value\n request.trained = false\n this.setState({ ...this.state.nlpRequests, data: newRequests })\n }\n\n handleLanguageChanged = option => {\n this.setState(\n {\n selectedLanguageOption: option,\n },\n () => {\n const { botId } = this.props.match.params\n const { page, selected, selectedLanguageOption } = this.state\n if (selected === LEFT) {\n getTrainingData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n } else {\n getHistoryData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n }\n },\n )\n }\n\n render() {\n const { classes } = this.props\n const { nlpRequests, page, selected } = this.state\n\n return (\n
\n this.changeTab(value)}\n selectedLanguageOption={this.state.selectedLanguageOption}\n languageOptions={this.state.languageOptions}\n handleLanguageChange={this.handleLanguageChanged}\n />\n\n {!nlpRequests && }\n\n {nlpRequests &&\n (!nlpRequests.totalCount ? (\n \n ) : (\n \n ))}\n
\n )\n }\n}\n\nTraining.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n nlpRequests: state.nlpRequests,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Training))\n","import Intents from '../tabs/nlp/components/Intents'\nimport React from 'react'\nimport Triggers from '../tabs/nlp/components/Triggers'\nimport Training from '../tabs/nlp/components/training/Training-container'\n\nexport const nlpRoutes = [\n {\n path: 'training',\n name: 'Training',\n component: Training,\n },\n {\n path: 'faq',\n name: 'FAQ',\n component: () => (\n \n ),\n },\n {\n path: 'intents',\n name: 'Intents',\n component: () => (\n \n ),\n },\n {\n path: 'triggers',\n name: 'Triggers',\n component: Triggers,\n },\n]\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport { NavLink, Redirect, Route, Switch, withRouter } from 'react-router-dom'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemText from '@material-ui/core/ListItemText'\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n height: '100%',\n },\n navigation: {\n minWidth: '250px',\n marginRight: 80,\n },\n body: {\n minWidth: '700px',\n width: '100%',\n marginRight: 40,\n },\n rootLink: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n padding: 0,\n background: theme.palette.primary.contrastText,\n },\n link: {\n textDecoration: 'none',\n color: theme.palette.primary.text,\n border: 'none',\n '&:hover>div': {\n background: 'rgba(90, 152, 247, 0.2)',\n },\n '&>div': {\n height: 70,\n },\n '&:first-child > div': {\n borderTopLeftRadius: 10,\n borderTopRightRadius: 10,\n },\n '&:last-child>div': {\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n },\n },\n activeLink: {\n '& span': {\n color: theme.palette.primary.contrastText,\n },\n '& >div': {\n background: theme.palette.primary.light,\n },\n '&:hover>div': {\n background: theme.palette.primary.light,\n },\n },\n})\n\nclass Submenu extends React.Component {\n render() {\n const { classes } = this.props\n\n return (\n
\n
\n
\n \n {this.props.routes.map(route => (\n \n \n \n \n \n ))}\n \n
\n
\n \n {this.props.routes.map(route => (\n \n ))}\n \n \n
\n
\n
\n )\n }\n}\n\nSubmenu.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n pathRoute: PropTypes.string.isRequired,\n pathLink: PropTypes.string,\n routes: PropTypes.array.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(Submenu))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n heading: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: '#3A3F62',\n marginBottom: 8,\n },\n})\n\nclass Heading extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { classes } = this.props\n return

{this.props.children}

\n }\n}\n\nHeading.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Heading))\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Heading from '../../../uiKit/texts/Heading'\n\nconst styles = theme => ({\n image: {\n width: 64,\n height: 64,\n opacity: '.2',\n marginBottom: 16,\n },\n container: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n // padding: '32px',\n textAlign: 'center',\n },\n text: {\n margin: '0 0 24px',\n color: theme.palette.primary.text,\n fontSize: 14,\n },\n buttonHolder: {\n textAlign: 'center',\n },\n})\n\nclass EmptyNlp extends React.Component {\n state = {\n open: false,\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n\n Connect NLP agent\n\n

\n Connect NLP agent to be able to make your bot smarter.\n

\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(EmptyNlp)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { HOME_PATH } from '../../configs'\nimport Headline from '../../uiKit/texts/Headline'\nimport { nlpRoutes } from '../../routes/nlpRoutes'\nimport Submenu from '../../uiKit/submenu/Submenu'\nimport { getFlows } from '../flowBuilder/api/flow'\nimport { connect } from 'react-redux'\nimport EmptyNlp from './components/EmptyNlp'\nimport Loader from '../../uiKit/loaders/loader'\nimport { getBot } from '../home/api/bots'\n\nconst styles = theme => ({\n loaderWrap: {\n height: 'calc(100vh - 198px)',\n },\n})\n\nclass NLP extends React.Component {\n state = {\n botHasNlp: false,\n loading: true,\n }\n\n componentDidMount() {\n getFlows(this.props.match.params.botId)\n getBot(this.props.match.params.botId).then(() => {\n this.setState({ loading: false })\n })\n }\n\n render() {\n const pathLink = `${HOME_PATH}/bot/${this.props.match.params.botId}/nlp`\n const pathRoute = `${HOME_PATH}/bot/:botId/nlp/`\n const { loading } = this.state\n const { classes } = this.props\n\n return (\n
\n \n {loading && (\n
\n \n
\n )}\n\n {!loading &&\n (this.props.activeBot?.nlpEnabled ? (\n \n ) : (\n \n ))}\n
\n )\n }\n}\n\nNLP.propTypes = {\n classes: PropTypes.object,\n theme: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(NLP)),\n)\n","export const OPEN_REQUESTS = 'Open requests'\nexport const SOLVED_REQUESTS = 'Solved requests'\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport { OPEN_REQUESTS, SOLVED_REQUESTS } from './config'\n\nimport { styles } from './styles'\n\nconst TabsWrap = props => {\n const { classes, selectedTab, setSelectedTab } = props\n\n const getTabClasses = tab => {\n return classnames(classes.tab, {\n [`${classes.activeTab}`]: selectedTab === tab,\n })\n }\n\n return (\n
\n setSelectedTab(OPEN_REQUESTS)}>\n Open requests\n
\n setSelectedTab(SOLVED_REQUESTS)}>\n Solved requests\n \n \n )\n}\n\nTabsWrap.propTypes = {\n classes: PropTypes.object,\n selectedTab: PropTypes.string,\n setSelectedTab: PropTypes.func,\n}\n\nexport default withStyles(styles)(TabsWrap)\n","export const styles = () => ({\n container: {\n display: 'flex',\n width: '100%',\n height: 72,\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n tab: {\n width: '50%',\n fontSize: 14,\n color: '#616581',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n },\n activeTab: {\n background: '#5A98F7',\n color: '#FFFFFF',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SearchIcon = () => {\n return (\n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { SearchIcon } from '../../../../uiKit/icons/Search'\n\nimport { styles } from './styles'\n\nconst Search = props => {\n const { classes, handleSearch, search, styles, placeholder } = props\n\n return (\n
\n handleSearch(e.target.value)}\n />\n
\n \n
\n
\n )\n}\n\nSearch.propTypes = {\n classes: PropTypes.object,\n handleSearch: PropTypes.func,\n search: PropTypes.string,\n}\n\nexport default withStyles(styles)(Search)\n","export const styles = () => ({\n container: {\n position: 'relative',\n },\n input: {\n outline: 'none',\n padding: '8px 40px 8px 12px',\n fontSize: 14,\n width: '100%',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n borderRadius: 4,\n color: '#616581',\n '&::placeholder': {\n color: 'rgba(53, 64, 82, 0.5)',\n },\n },\n iconWrap: {\n position: 'absolute',\n top: 5,\n right: 12,\n },\n})\n","export const SUPPORT_ICON = '/images/platform/support-icon.svg'\n\nexport const MY_SUPPORT_ICON = '/images/platform/my-support-icon.svg'\n\nexport const EXPIRED_ICON = '/images/platform/time-expired.svg'\n\nexport const SUPPORT_STATUSES = {\n OPEN: 'OPEN',\n PENDING: 'PENDING',\n ASSIGNED: 'ASSIGNED',\n CLOSED: 'CLOSED',\n EXPIRED: 'EXPIRED',\n}\n","import { store } from '../../../index'\n\nexport const SAVE_MESSAGE = 'SAVE_MESSAGE'\nexport const SAVE_ACTIVE_SUPPORT_USER = 'SAVE_ACTIVE_SUPPORT_USER'\nexport const SAVE_SUPPORT_USER_MESSAGES = 'SAVE_SUPPORT_USER_MESSAGES'\nexport const SAVE_SUPPORT_USER_MORE_MESSAGES = 'SAVE_SUPPORT_USER_MORE_MESSAGES'\n\nexport const saveActiveUser = activeUser => {\n store.dispatch({\n type: SAVE_ACTIVE_SUPPORT_USER,\n payload: {\n activeUser,\n },\n })\n}\n\nexport const saveSupportUserMessages = ({data}) => {\n store.dispatch({\n type: SAVE_SUPPORT_USER_MESSAGES,\n payload: {\n messages: data.content,\n },\n })\n}\n\nexport const saveSupportUserMoreMessages = ({data}) => {\n store.dispatch({\n type: SAVE_SUPPORT_USER_MORE_MESSAGES,\n payload: {\n messages: data.content,\n },\n })\n}\n\nexport const saveMessage = message => {\n store.dispatch({\n type: SAVE_MESSAGE,\n payload: {\n message,\n },\n })\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './BadgeStyles'\n\nconst Badge = props => {\n const { classes, badgeContent } = props\n\n return (\n \n {badgeContent}\n \n )\n}\n\nBadge.propTypes = {\n classes: PropTypes.object,\n badgeContent: PropTypes.any.isRequired,\n}\n\nexport default withStyles(styles)(Badge)\n","export const styles = () => ({\n badge: {\n top: -11,\n right: -11,\n width: 22,\n height: 22,\n display: 'flex',\n zIndex: 1,\n position: 'absolute',\n flexWrap: 'wrap',\n fontSize: '0.75rem',\n alignItems: 'center',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n alignContent: 'center',\n borderRadius: '50%',\n flexDirection: 'row',\n justifyContent: 'center',\n color: '#ffffff',\n backgroundColor: '#1658F3',\n },\n badgeWrap: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'middle',\n },\n})\n","import moment from 'moment'\nimport { MINUTES_IN_DAY } from '../tabs/support/components/InteractionTimer/config'\n\nexport const getMinutesLeft = start => {\n const now = moment.now()\n const utcDate = moment(start).utc(true)\n\n return MINUTES_IN_DAY - moment(now).diff(utcDate, 'minutes')\n}\n","export const MINUTES_IN_DAY = 24 * 60\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nimport { useTimer } from '../../../../hooks/useTimer'\nimport { EXPIRED_ICON } from '../UserDialogPreview/config'\n\nconst InteractionTimer = props => {\n const { classes, lastInteractionDate } = props\n const timerTime = useTimer(lastInteractionDate)\n\n const buildTimeLeft = minutes => {\n if (minutes <= 0) return ''\n\n const time = {\n hours: Math.floor(minutes / 60),\n minutes: minutes % 60,\n }\n const displayHours = time.hours === 0 ? '' : time.hours + 'h '\n const displayMinutes = time.minutes === 0 ? '' : time.minutes + 'm '\n\n return displayHours + displayMinutes + 'left'\n }\n\n const formattedTime = buildTimeLeft(timerTime)\n\n return (\n
\n {formattedTime === '' ? (\n \n ) : (\n = 60\n ? classes.timeLeftContent\n : classes.timeLeftContentRed\n }>\n {formattedTime}\n

\n )}\n
\n )\n}\n\nInteractionTimer.propTypes = {\n classes: PropTypes.object,\n lastInteractionDate: PropTypes.string,\n}\n\nexport default withStyles(styles)(InteractionTimer)\n","export const styles = () => ({\n timeLeftContent: {\n margin: '0px 4px',\n padding: '2px 4px',\n color: '#354052',\n fontSize: '10px',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '12px',\n fontFamily: 'Lato, sans-serif',\n borderRadius: '4px',\n backgroundColor: '#ebecee',\n width: 'max-content',\n },\n timeLeftContentRed: {\n margin: '0px 4px',\n padding: '2px 4px',\n color: '#FFFFFF',\n fontSize: '10px',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '12px',\n fontFamily: 'Lato, sans-serif',\n borderRadius: '4px',\n backgroundColor: '#fc6769',\n width: 'max-content',\n },\n timeExpiredIcon: {\n width: 20,\n height: 20,\n marginLeft: 5,\n },\n})\n","import { useEffect, useState } from 'react'\nimport { getMinutesLeft } from '../helpers/getMinutesLeft'\n\nexport function useTimer(start) {\n const minutesLeft = getMinutesLeft(start)\n const [count, setCount] = useState(minutesLeft)\n\n useEffect(() => {\n const minutesLeft = getMinutesLeft(start)\n setCount(minutesLeft)\n }, [start])\n\n useEffect(() => {\n if (minutesLeft) {\n const secondsLeft = setInterval(() => {\n setCount(c => c - 1)\n }, 60000)\n return () => clearInterval(secondsLeft)\n }\n }, [minutesLeft])\n\n return count\n}\n","export const CHAT_PLATFORM = {\n WHATSAPP: 'DIALOG360_WHATSAPP',\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport InteractionTimer from '../InteractionTimer/InteractionTimer'\nimport { MY_SUPPORT_ICON, SUPPORT_ICON } from '../UserDialogPreview/config'\nimport moment from 'moment'\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\n\nconst UserNameBlock = props => {\n const { classes, user, isAssigned, isAssignedToCurrentAdmin } = props\n const supportIcon =\n (isAssignedToCurrentAdmin && MY_SUPPORT_ICON) ||\n (isAssigned && SUPPORT_ICON)\n\n const lastMessageDate = moment(user?.messageDatetime).isSame(\n new Date(),\n 'day',\n )\n ? 'Today'\n : moment(user?.messageDatetime).format('MMM DD')\n\n const isFromWhatsApp = user?.platform === CHAT_PLATFORM.WHATSAPP\n\n return (\n
\n
\n

\n {user?.firstName} {user?.lastName}\n

\n\n {supportIcon && (\n \n )}\n\n {isFromWhatsApp && user.userMessageDatetime && (\n \n )}\n
\n\n
{lastMessageDate}
\n
\n )\n}\nUserNameBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(UserNameBlock)\n","export const styles = () => ({\n userMainInfo: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n },\n userNameWrapper: {\n display: 'flex',\n alignItems: 'center',\n height: 30,\n width: 'calc(100% - 46px)',\n },\n name: {\n fontSize: '14px',\n lineHeight: '17px',\n marginBottom: '0',\n textDecoration: 'none !important',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n color: '#3A3F62',\n },\n supportIcon: {\n width: 12,\n height: 12,\n marginLeft: 5,\n },\n lastMsgTime: {\n color: '#B0B2C0',\n fontSize: 12,\n fontWeight: 400,\n marginLeft: 5,\n width: 40,\n textAlign: 'right',\n },\n})\n","export const FACELESS_PICTURE = 'https://nrm.co.nz/wp-content/uploads/2017/08/facebook-avatar.jpg'\nexport const PLATFORM_IMAGE = {\n WEBSITE: '/images/platform/widget-icon.svg',\n FB_MESSENGER: '/images/platform/messenger-icon.svg',\n AMIO_WHATSAPP: '/images/platform/whatsapp-icon.svg',\n DIALOG360_WHATSAPP: '/images/platform/whatsapp-icon.svg',\n TELEGRAM: '/images/platform/telegram.png',\n SMS_MMS_TWILIO: '/images/platform/sms-icon.svg',\n}\n","import React from 'react'\nimport classes from './styles.module.scss'\nimport { PLATFORM_IMAGE, FACELESS_PICTURE } from './config'\n\nconst UserIcon = ({ image, platform, size }) => {\n return (\n \n \"platform\n \n )\n}\n\nexport default UserIcon\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport NavLink from 'react-router-dom/NavLink'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { HOME_PATH } from '../../../../configs'\nimport { SUPPORT_STATUSES } from './config'\nimport { saveActiveUser } from '../../actions/activeUser'\n\nimport Badge from '../../../../uiKit/Badge/Badge'\nimport { styles } from './styles'\nimport UserNameBlock from '../UserNameBlock/UserNameBlock'\nimport UserIcon from '../../../../uiKit/UserIcon'\n\nconst UserDialogPreview = props => {\n const { classes, match, adminUser, activeUser, user } = props\n\n const isAssigned = user?.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED\n\n const isAssignedToCurrentAdmin =\n user?.supportRequest?.support?.adminId === adminUser?.id &&\n user?.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED\n\n const isUnread = user?.unreadMessages && activeUser?.userId !== user?.userId ? 'unread' : ''\n\n const boldLastMessage = isUnread || (isAssigned && !isAssignedToCurrentAdmin)\n\n const getLastMessage = user => {\n if (user?.formattedChatHistory) {\n const message = JSON.parse(user.formattedChatHistory)\n\n return message.text || (message?.elements?.length && 'Template') || (message?.imageUrl && 'Attachment')\n }\n return ''\n }\n\n const lastMsgText =\n isAssigned && !isAssignedToCurrentAdmin\n ? `Live chat with ${user?.supportRequest?.support?.name}`\n : getLastMessage(user)\n\n const handleClickUserPreview = () => {\n saveActiveUser(user)\n }\n\n return (\n \n
\n \n\n
\n \n\n
\n

{lastMsgText}

\n {isUnread && }\n
\n
\n
\n
\n )\n}\n\nUserDialogPreview.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n adminUser: state.adminUser,\n activeUser: state.activeUser,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(UserDialogPreview)))\n","export const styles = () => ({\n container: {\n height: 66,\n padding: '8px 16px',\n display: 'flex',\n },\n profileImage: {\n height: '50px',\n width: '50px',\n borderRadius: '50%',\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n position: 'relative',\n },\n channelIcon: {\n width: 20,\n height: 20,\n marginLeft: 5,\n position: 'absolute',\n bottom: 0,\n right: 0,\n },\n userInfo: {\n width: 'calc(100% - 50px)',\n height: '100%',\n marginLeft: 15,\n overflow: 'hidden',\n },\n lastMsgTextWrap: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: 'calc(100% - 12px)',\n },\n lastMsgText: {\n fontSize: 12,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 'calc(100% - 30px)',\n margin: 0,\n textDecoration: 'none !important',\n color: '#B0B2C0',\n },\n lastMsgTextUnread: {\n fontSize: 12,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 'calc(100% - 30px)',\n margin: 0,\n textDecoration: 'none !important',\n color: '#616581',\n fontWeight: 'bold',\n },\n activeLink: {\n '& div': {\n backgroundColor: '#eff5ff',\n },\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { Chevron } from '../../../../uiKit/icons/Icons'\nimport UserDialogPreview from '../UserDialogPreview/UserDialogPreview'\n\nimport { styles } from './styles'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst DialogsSection = props => {\n const { classes, title, users, search } = props\n const [collapsed, setCollapsed] = useState(true)\n\n const filterUser = user => {\n if (user) {\n if (isStringEmpty(search)) return true\n return (\n user?.firstName.toLowerCase().includes(search.toLowerCase()) ||\n user?.lastName.toLowerCase().includes(search.toLowerCase())\n )\n }\n return false\n }\n\n return (\n
\n
setCollapsed(!collapsed)}>\n {title}\n {users && !users?.length ? (\n  0\n ) : (\n \n )}\n
\n\n {collapsed && (\n
\n {users &&\n users\n ?.filter(filterUser)\n ?.map((user, index) => (\n \n ))}\n
\n )}\n
\n )\n}\n\nDialogsSection.propTypes = {\n classes: PropTypes.object,\n title: PropTypes.string,\n users: PropTypes.array,\n}\n\nexport default withStyles(styles)(DialogsSection)\n","export const styles = () => ({\n title: {\n height: 32,\n color: '#B0B2C0',\n padding: '8px 12px',\n textTransform: 'uppercase',\n fontSize: 12,\n cursor: 'pointer',\n },\n chevron: {\n marginLeft: '8px',\n maxHeight: '100%',\n transition: '.1s ease-in-out',\n },\n dialogsContainer: {},\n})\n","import { store } from '../../../index'\n\nexport const SAVE_SUPPORT_USERS = 'SAVE_SUPPORT_USERS'\nexport const SAVE_MORE_SUPPORT_USERS = 'SAVE_MORE_SUPPORT_USERS'\nexport const SAVE_CLOSED_SUPPORT_USERS = 'SAVE_CLOSED_SUPPORT_USERS'\nexport const SAVE_MORE_CLOSED_SUPPORT_USERS = 'SAVE_MORE_CLOSED_SUPPORT_USERS'\nexport const UPDATE_SUPPORT_USER_LIST = 'UPDATE_SUPPORT_USER_LIST'\nexport const UPDATE_USER_UNREAD_MESSAGE = 'UPDATE_USER_UNREAD_MESSAGE'\n\nexport const saveSupportUsers = (supportUsers = [], adminUserId) => {\n store.dispatch({\n type: SAVE_SUPPORT_USERS,\n payload: {\n supportUsers,\n adminUserId,\n },\n })\n}\n\nexport const saveMoreSupportUsers = (supportUsers = [], adminUserId) => {\n store.dispatch({\n type: SAVE_MORE_SUPPORT_USERS,\n payload: {\n supportUsers,\n adminUserId,\n },\n })\n}\n\nexport const saveClosedSupportUsers = (supportUsers = []) => {\n store.dispatch({\n type: SAVE_CLOSED_SUPPORT_USERS,\n payload: {\n supportUsers,\n },\n })\n}\n\nexport const saveMoreClosedSupportUsers = supportUsers => {\n store.dispatch({\n type: SAVE_MORE_CLOSED_SUPPORT_USERS,\n payload: {\n supportUsers,\n },\n })\n}\n\nexport const updateSupportUserList = (user, adminUserId) => {\n store.dispatch({\n type: UPDATE_SUPPORT_USER_LIST,\n payload: {\n user,\n adminUserId,\n },\n })\n}\n\nexport const updateUserUnreadMessages = user => {\n store.dispatch({\n type: UPDATE_USER_UNREAD_MESSAGE,\n payload: {\n user,\n },\n })\n}\n","import { useState, useEffect } from 'react'\n\nconst useDebounce = (value, delay) => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n\nexport default useDebounce\n","export const getUrlEnd = () => {\n const parts = window.location.pathname.split('/')\n\n return parts.pop()\n}\n","export const isElementBottom = el =>\n el && el.scrollHeight - el.offsetHeight - el.scrollTop < 1\n","export const isUrlEndsWithSupport = () =>\n window.location.href.endsWith('support')\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport Search from '../Search/Search'\nimport DialogsSection from '../DialogsSection/DialogsSection'\nimport {\n getAllSupportUsers,\n getAssignedSupportUsers,\n getNewRequestSupportUsers,\n getExpiredRequestSupportUsers,\n} from '../../api/users'\nimport { saveMoreSupportUsers, saveSupportUsers } from '../../actions/users'\nimport useDebounce from '../../../../hooks/useDebounce'\nimport { getUrlEnd } from '../../../../helpers/getUrlEnd'\nimport { saveActiveUser } from '../../actions/activeUser'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\n\nimport { isElementBottom } from '../../../../helpers/isElementBottom'\nimport { isUrlEndsWithSupport } from '../../../../helpers/isUrlEndsWithSupport'\n\nimport { styles } from './styles'\n\nconst OpenRequests = props => {\n const {\n classes,\n match,\n assignedToMeUsers,\n newRequestsUsers,\n expiredRequestsUsers,\n assignedRequestsUsers,\n allUsers,\n adminUserId,\n } = props\n const [search, setSearch] = useState('')\n const [loading, setLoading] = useState(true)\n const debouncedSearchTerm = useDebounce(search, 500)\n\n useEffect(() => {\n if (debouncedSearchTerm) {\n Promise.all([\n getNewRequestSupportUsers(match.params.botId, debouncedSearchTerm),\n getExpiredRequestSupportUsers(match.params.botId, debouncedSearchTerm),\n getAssignedSupportUsers(match.params.botId, debouncedSearchTerm),\n getAllSupportUsers(match.params.botId, debouncedSearchTerm),\n ]).then(res => saveSupportUsers(res.flat(), adminUserId))\n } else {\n Promise.all([\n getNewRequestSupportUsers(match.params.botId),\n getExpiredRequestSupportUsers(match.params.botId),\n getAssignedSupportUsers(match.params.botId),\n getAllSupportUsers(match.params.botId),\n ])\n .then(res => {\n if (!isUrlEndsWithSupport() && !allUsers?.length) {\n const userId = getUrlEnd()\n const currentUser = res\n .flat()\n .find(user => user?.userId === Number(userId))\n saveActiveUser(currentUser)\n }\n saveSupportUsers(res.flat(), adminUserId)\n })\n .then(() => setLoading(false))\n }\n }, [debouncedSearchTerm])\n\n const handleScroll = event => {\n if (isElementBottom(event.target)) {\n getAllSupportUsers(\n match.params.botId,\n search && debouncedSearchTerm,\n allUsers.length,\n ).then(users => {\n saveMoreSupportUsers(users, adminUserId)\n })\n }\n }\n\n return (\n <>\n
\n \n
\n {loading ? (\n
\n \n
\n ) : (\n
\n \n\n \n\n \n\n \n\n \n
\n )}\n \n )\n}\n\nOpenRequests.propTypes = {\n classes: PropTypes.object,\n assignedToMeUsers: PropTypes.array,\n newRequestsUsers: PropTypes.array,\n expiredRequestsUsers: PropTypes.array,\n assignedRequestsUsers: PropTypes.array,\n allUsers: PropTypes.array,\n adminUserId: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n assignedToMeUsers: state.supportUsersNew.assignedToMeUsers,\n newRequestsUsers: state.supportUsersNew.newRequestsUsers,\n expiredRequestsUsers: state.supportUsersNew.expiredRequestsUsers,\n assignedRequestsUsers: state.supportUsersNew.assignedRequestsUsers,\n allUsers: state.supportUsersNew.allUsers,\n adminUserId: state.adminUser.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(OpenRequests)),\n)\n","export const styles = () => ({\n sectionWrap: {\n overflowY: 'auto',\n height: 'calc(100% - 127px)',\n },\n loaderWrap: {\n height: 'calc(100% - 127px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n searchContainer: {\n margin: '8px 12px',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { getClosedSupports } from '../../api/users'\nimport {\n saveClosedSupportUsers,\n saveMoreClosedSupportUsers,\n} from '../../actions/users'\nimport UserDialogPreview from '../UserDialogPreview/UserDialogPreview'\nimport { isElementBottom } from '../../../../helpers/isElementBottom'\n\nimport { styles } from './styles'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport Search from '../Search/Search'\nimport useDebounce from '../../../../hooks/useDebounce'\n\nconst SolvedRequests = props => {\n const { classes, match, closedRequestsUsers } = props\n const [loading, setLoading] = useState(true)\n const [search, setSearch] = useState('')\n const debouncedSearchTerm = useDebounce(search, 500)\n\n useEffect(() => {\n if (debouncedSearchTerm) {\n getClosedSupports(match.params.botId, debouncedSearchTerm).then(users => {\n saveClosedSupportUsers(users)\n })\n } else {\n getClosedSupports(match.params.botId)\n .then(users => {\n saveClosedSupportUsers(users)\n })\n .then(() => setLoading(false))\n }\n }, [debouncedSearchTerm])\n\n const handleScroll = event => {\n if (isElementBottom(event.target)) {\n if (search) {\n getClosedSupports(\n match.params.botId,\n debouncedSearchTerm,\n closedRequestsUsers.length,\n ).then(users => {\n saveMoreClosedSupportUsers(users)\n })\n } else {\n getClosedSupports(\n match.params.botId,\n undefined,\n closedRequestsUsers.length,\n ).then(users => {\n saveMoreClosedSupportUsers(users)\n })\n }\n }\n }\n\n return (\n <>\n
\n \n
\n {loading ? (\n
\n \n
\n ) : (\n
\n {closedRequestsUsers?.map(user => (\n \n ))}\n
\n )}\n \n )\n}\n\nSolvedRequests.propTypes = {\n classes: PropTypes.object,\n closedRequestsUsers: PropTypes.array,\n}\n\nconst mapStateToProps = state => ({\n closedRequestsUsers: state.supportUsersNew.closedRequestsUsers,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(SolvedRequests)),\n)\n","export const styles = () => ({\n container: {\n overflowY: 'auto',\n height: 'calc(100% - 126px)',\n },\n loaderWrap: {\n height: 'calc(100% - 127px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n searchContainer: {\n margin: '8px 12px',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\n\nimport TabsWrap from '../TabsWrap/TabsWrap'\nimport OpenRequests from '../OpenRequests/OpenRequests'\nimport SolvedRequests from '../SolvedRequests/SolvedRequests'\n\nimport { OPEN_REQUESTS, SOLVED_REQUESTS } from '../TabsWrap/config'\nimport { styles } from './styles'\n\nconst DialogsContainer = props => {\n const { classes } = props\n const [selectedTab, setSelectedTab] = useState(OPEN_REQUESTS)\n\n return (\n
\n \n {selectedTab === OPEN_REQUESTS && }\n {selectedTab === SOLVED_REQUESTS && }\n
\n )\n}\n\nDialogsContainer.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withRouter(withStyles(styles)(DialogsContainer))\n","export const styles = () => ({\n container: {\n flexBasis: '26%',\n borderRight: '1px solid rgba(53, 64, 82, 0.1)',\n overflow: 'hidden',\n minWidth: 270,\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TreeDotsIcon = () => {\n return (\n \n \n \n \n \n )\n}\n","import { BASE_URL } from '../../../configs'\nimport { alertError, createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\n\nexport function getMessages(chatId, page) {\n const params = new URLSearchParams({\n page,\n size: '20',\n sort: 'id,desc',\n })\n\n return fetch(`${BASE_URL}/support/chat/${chatId}?${params}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() => alertError('Sorry but something going wrong please ping support!', 5000))\n}\n\nexport function closeUserRequest(json) {\n return fetch(`${BASE_URL}/support/backUserToBot`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n }).catch(() => alertError('Sorry but something going wrong please ping support!', 5000))\n}\n\nexport function assignSupportRequest(botId, json) {\n return fetch(`${BASE_URL}/support/assign`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n }).catch(() => alertError('Sorry but something going wrong please ping support!', 5000))\n}\n\nexport function getAdminsList(botId) {\n return fetch(`${BASE_URL}/support/admins/${botId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() => alertError('Sorry but something going wrong please ping support!', 5000))\n}\n\nexport function setMessageRead(chatId, messageId) {\n return fetch(`${BASE_URL}/support/read/user/${chatId}/message/${messageId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n }).catch(() => alertError('Sorry but something going wrong please ping support!', 5000))\n}\n","export const styles = () => ({\n container: {\n display: 'flex',\n border: '1px solid #1658F3',\n borderRadius: 5,\n alignItems: 'center',\n height: 36,\n cursor: 'pointer',\n fontWeight: 'bold',\n },\n closeButton: {\n fontSize: 16,\n padding: '0px 16px',\n color: '#1658F3',\n whiteSpace: 'nowrap',\n border: 'none',\n backgroundColor: '#ffffff',\n fontWeight: 'bold',\n '&:disabled': {\n cursor: 'no-drop',\n },\n },\n iconWrap: {\n borderLeft: '1px solid #1658F3',\n height: '100%',\n width: 36,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n iconWrapDisabled: {\n borderLeft: '1px solid #1658F3',\n height: '100%',\n width: 36,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'no-drop',\n },\n popover: {\n width: 240,\n maxHeight: 180,\n },\n popoverHeader: {\n height: 36,\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n fontSize: 14,\n padding: '0px 12px',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n atomItem: {\n padding: '7px 12px',\n cursor: 'pointer',\n fontSize: 14,\n '&:hover': {\n background: 'rgba(53, 64, 82, 0.1)',\n },\n },\n searchContainer: {\n height: 36,\n overflow: 'hidden',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Popover from '@material-ui/core/Popover'\n\nimport { TreeDotsIcon } from '../../../../uiKit/icons/TreeDotsIcon'\nimport { closeUserRequest } from '../../api/user'\nimport { saveActiveUser } from '../../actions/activeUser'\n\nimport { styles } from './styles'\nimport Search from '../Search/Search'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst CloseRequestButton = props => {\n const { classes, flows, user, isDisconnectedUser } = props\n const [isOpenPopover, setOpenPopover] = useState(false)\n const [target, setTarget] = useState(null)\n const [atomsList, setAtomsList] = useState([])\n const [search, setSearch] = useState('')\n const [loader, setLoader] = useState(false)\n\n useEffect(() => {\n const atoms = []\n\n flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n atoms.push({\n value: atom.name,\n id: atom.id,\n })\n })\n })\n\n setAtomsList(atoms)\n }, [flows])\n\n const handleCloseRequest = atomId => {\n const backToBot = { userId: user.userId }\n const userCopy = Object.assign({}, user)\n\n if (atomId && typeof atomId === 'number') backToBot.atomId = atomId\n\n userCopy.supportRequest = {\n support: {},\n userId: user.userId,\n }\n\n setLoader(true)\n closeUserRequest(backToBot).then(() => {\n setLoader(false)\n saveActiveUser(userCopy)\n })\n }\n\n const handleFilterAtoms = atom => {\n if (isStringEmpty(search)) return true\n return atom?.value.toLowerCase().includes(search.toLowerCase())\n }\n\n return (\n
\n \n Close request\n \n\n {!isDisconnectedUser && (\n setTarget(node)}\n onClick={() => !loader && setOpenPopover(!isOpenPopover)}>\n \n
\n )}\n\n setOpenPopover(!isOpenPopover)}>\n
\n
\n \n
\n {atomsList.filter(handleFilterAtoms).map(atom => (\n handleCloseRequest(atom.id)}>\n {atom.value}\n
\n ))}\n \n \n \n )\n}\n\nCloseRequestButton.propTypes = {\n classes: PropTypes.object,\n flows: PropTypes.object,\n user: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n flows: state.flows,\n user: state.activeUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(CloseRequestButton)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { assignSupportRequest } from '../../api/user'\nimport { saveActiveUser } from '../../actions/activeUser'\nimport { styles } from './styles'\n\nconst AssignToMeButton = props => {\n const { classes, user, activeBot, title, adminUserId } = props\n\n const handleClick = () => {\n const json = {\n supportRequestId: user.supportRequest?.id,\n userId: user.userId,\n adminId: adminUserId,\n }\n const userCopy = Object.assign({}, user)\n\n userCopy.supportRequest = {\n status: 'ASSIGNED',\n support: {\n adminId: adminUserId,\n },\n userId: user.userId,\n }\n\n assignSupportRequest(activeBot.id, json).then(() => {\n saveActiveUser(userCopy)\n })\n }\n\n return (\n
\n {title}\n
\n )\n}\n\nAssignToMeButton.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n activeBot: PropTypes.object,\n adminUserId: PropTypes.number,\n title: PropTypes.string,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n adminUserId: state.adminUser.id,\n user: state.activeUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AssignToMeButton)),\n)\n","export const styles = () => ({\n container: {\n width: 124,\n height: 36,\n backgroundColor: '#1658F3',\n color: '#ffffff',\n borderRadius: 4,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n margin: '0px 12px',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport Popover from '@material-ui/core/Popover'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { assignSupportRequest, getAdminsList } from '../../api/user'\n\nimport { styles } from './styles'\nimport { saveActiveUser } from '../../actions/activeUser'\n\nconst AssignToPopover = props => {\n const { classes, user, match, title, adminUser } = props\n const [isOpenPopover, setOpenPopover] = useState(false)\n const [target, setTarget] = useState(null)\n const [adminsList, setAdminsList] = useState([])\n\n useEffect(() => {\n getAdminsList(match.params.botId).then(admins => {\n if (admins) {\n const filteredAdmins = admins.filter(\n admin => admin.name && admin.id !== adminUser.id,\n )\n setAdminsList(filteredAdmins)\n }\n })\n }, [])\n\n const handleAssign = admin => {\n const json = {\n supportRequestId: user.supportRequest.id,\n userId: user.userId,\n adminId: admin.id,\n }\n const userCopy = Object.assign({}, user)\n\n userCopy.supportRequest = {\n status: 'ASSIGNED',\n support: {\n adminId: admin.id,\n name: admin.name,\n },\n userId: user.userId,\n }\n\n assignSupportRequest(match.params.botId, json).then(() => {\n saveActiveUser(userCopy)\n })\n }\n\n return (\n <>\n setTarget(node)}\n disabled={!adminsList.length}\n onClick={() => setOpenPopover(!isOpenPopover)}>\n {title}\n \n setOpenPopover(!isOpenPopover)}>\n
\n {adminsList\n .filter(admin => admin.name && admin.id !== adminUser.id)\n .map(admin => (\n {\n setOpenPopover(!isOpenPopover)\n handleAssign(admin)\n }}>\n {admin.name}\n
\n ))}\n \n \n \n )\n}\n\nAssignToPopover.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n adminUser: PropTypes.object,\n title: PropTypes.string,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AssignToPopover)),\n)\n","export const styles = () => ({\n button: {\n width: 110,\n height: 36,\n border: '1px solid #1658F3',\n borderRadius: 4,\n color: '#1658F3',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n fontWeight: 'bold',\n marginRight: '12px',\n backgroundColor: '#ffffff',\n whiteSpace: 'nowrap',\n '&:disabled': {\n cursor: 'no-drop',\n },\n },\n popover: {\n width: 240,\n maxHeight: 180,\n },\n adminItem: {\n padding: '7px 12px',\n cursor: 'pointer',\n fontSize: 14,\n '&:hover': {\n background: 'rgba(53, 64, 82, 0.1)',\n },\n },\n})\n","export const shortenUrl = (url, maximumCharactersInUrl) => {\n const { pathname } = new URL(url)\n\n if (!pathname) return url\n return pathname.length > maximumCharactersInUrl\n ? `${pathname.substr(0, maximumCharactersInUrl)}...`\n : pathname\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { CopyIcon } from '../../../../uiKit/icons/Icons'\nimport { shortenUrl } from '../../../../helpers/shortenUrl'\nimport { copyValueToClipboard } from '../../../../helpers/copyValueToClipboard'\n\nconst UserWebsite = props => {\n const { classes, url } = props\n\n return (\n
\n \n {shortenUrl(url)}\n \n copyValueToClipboard(url)}\n className={classes.copyIcon}>\n \n
\n \n )\n}\nUserWebsite.propTypes = {\n classes: PropTypes.object,\n url: PropTypes.string,\n}\n\nexport default withStyles(styles)(UserWebsite)\n","export const styles = () => ({\n link: {\n color: '#1658F3',\n fontWeight: 'normal',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n width: 200,\n whiteSpace: 'nowrap',\n display: 'inline-block',\n },\n copyIcon: {\n display: 'inline-block',\n marginLeft: 6,\n cursor: 'pointer',\n },\n linkWrap: {\n display: 'flex',\n },\n})\n","import { alertSuccess } from '../api'\n\nexport const copyValueToClipboard = value => {\n navigator.clipboard.writeText(value).then(() => alertSuccess('Copied'))\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport InteractionTimer from '../InteractionTimer/InteractionTimer'\nimport UserWebsite from '../UserWebsite/UserWebsite'\n\nimport { styles } from './styles'\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\n\nconst UserName = props => {\n const { classes, user } = props\n const isFromWhatsApp = user?.platform === CHAT_PLATFORM.WHATSAPP\n const userWebsiteLocation = user.messages?.find(m => m.websiteLocation !== null)?.websiteLocation\n\n return (\n
\n
\n {user.firstName} {user.lastName}\n {isFromWhatsApp && user.userMessageDatetime && (\n \n )}\n
\n\n {userWebsiteLocation && }\n
\n )\n}\n\nUserName.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UserName))\n","export const styles = () => ({\n userName: {\n color: '#354052',\n fontSize: 16,\n display: 'flex',\n alignItems: 'center',\n },\n userNameWrap: {\n display: 'flex',\n flexDirection: 'column',\n },\n})\n","export const SUPPORT_STATUSES = {\n OPEN: 'OPEN',\n PENDING: 'PENDING',\n ASSIGNED: 'ASSIGNED',\n CLOSED: 'CLOSED',\n EXPIRED: 'EXPIRED',\n}\n","export const CHAT_STATUS = {\n DISCONNECTED: 'DISCONNECTED',\n SUPPORT: 'SUPPORT',\n ACTIVE: 'ACTIVE',\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport CloseRequestButton from '../CloseRequestButton/CloseRequestButton'\nimport AssignToMeButton from '../AssignToMeButton/AssignToMeButton'\nimport AssignToPopover from '../AssignToPopover/AssignToPopover'\nimport UserName from '../UserName/UserName'\n\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\nimport { SUPPORT_STATUSES } from '../../../../constants/suportStatuses'\nimport { CHAT_STATUS } from '../../../../constants/chatStatus'\nimport { styles } from './styles'\nimport { getMinutesLeft } from '../../../../helpers/getMinutesLeft'\nimport { ROLE } from '../../../../security'\n\nconst ChatHeader = props => {\n const { classes, user, adminUser, match } = props\n\n const isAdmin =\n adminUser.botAccesses.filter(\n ba => ba.botId === Number(match.params.botId),\n )[0].role === ROLE.ADMIN\n\n const isAssignedToMe =\n user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n user.supportRequest?.support?.adminId === adminUser.id\n\n const isAssigned = user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED\n\n const isExpired = user.supportRequest?.status === SUPPORT_STATUSES.EXPIRED\n\n const isOpen = user.supportRequest?.status === SUPPORT_STATUSES.OPEN\n\n const minutesLeft = user && getMinutesLeft(user.userMessageDatetime) < 0\n\n const isDisconnectedUser =\n (user?.platform === CHAT_PLATFORM.WHATSAPP && minutesLeft) ||\n user.chatStatus === CHAT_STATUS.DISCONNECTED\n\n const statusNotification =\n user?.platform === CHAT_PLATFORM.WHATSAPP\n ? \"User didn't interact with the chatbot for 24h. You can’t send a message anymore\"\n : 'User closed the chat and you can’t send a message anymore'\n\n return (\n
\n \n\n
\n {isDisconnectedUser && (\n
{statusNotification}
\n )}\n\n {!isDisconnectedUser && isAssigned && !isAssignedToMe && (\n
\n Assigned to {user?.supportRequest?.support?.name}\n
\n )}\n\n {!isDisconnectedUser && isAssignedToMe && (\n
\n
Assigned to you
\n
\n )}\n\n {!isDisconnectedUser && isAssigned && isAdmin && (\n
\n {!isAssignedToMe && }\n \n
\n )}\n\n {!isDisconnectedUser && !isAssigned && (\n
\n \n \n
\n )}\n\n {(isExpired || isOpen || isAssignedToMe || (isAdmin && isAssigned)) && (\n
\n \n
\n )}\n
\n
\n )\n}\n\nChatHeader.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n adminUser: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(ChatHeader)),\n)\n","export const styles = () => ({\n container: {\n width: '100%',\n height: 72,\n borderBottom: '1px solid #EBEBEF',\n padding: '18px 30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n assignedStatus: {\n color: '#11C314',\n fontSize: 14,\n margin: '0px 16px',\n },\n assignedStatusWrap: {\n display: 'flex',\n alignItems: 'center',\n },\n notification: {\n color: 'rgba(53, 64, 82, 0.7)',\n fontSize: 14,\n margin: '0px 16px',\n },\n blockWrap: {\n display: 'flex',\n alignItems: 'center',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst MessageWrap = props => {\n const { classes, isReceived, timezone, children } = props\n\n return (\n \n {timezone && {timezone}}\n {children}\n \n )\n}\n\nMessageWrap.propTypes = {\n classes: PropTypes.object,\n isReceived: PropTypes.bool,\n timezone: PropTypes.string,\n children: PropTypes.object,\n}\n\nexport default withStyles(styles)(MessageWrap)\n","export const styles = () => ({\n containerReceived: {\n width: '100%',\n margin: '4px 0px',\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n containerSend: {\n width: '100%',\n margin: '4px 0px',\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n timeZone: {\n fontSize: 12,\n color: '#B0B2C0',\n fontWeight: 300,\n margin: '0px 14px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nimport { styles } from './styles'\nimport {CORNFLOWER_BLUE} from '../../../../constants/colors'\n\nconst TextMessage = props => {\n const { classes, message, timezone, isReceived, isRtl, highlight } = props\n\n const style = {\n direction: isRtl && 'rtl',\n border: highlight && '1px solid #1658F3',\n backgroundColor: highlight && CORNFLOWER_BLUE\n }\n\n return (\n \n \n {message.text || message.postback}\n \n \n )\n}\n\nTextMessage.propTypes = {\n classes: PropTypes.object,\n text: PropTypes.string,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n isRtl: PropTypes.bool,\n}\n\nexport default withStyles(styles)(TextMessage)\n","export const styles = () => ({\n chatBubbleReceived: {\n maxWidth: '78%',\n padding: '8px 16px',\n fontSize: 14,\n background: 'rgba(90, 152, 247, 0.08)',\n borderRadius: '10px 10px 10px 2px',\n display: 'inline-block',\n },\n chatBubbleSend: {\n maxWidth: '78%',\n padding: '8px 16px',\n fontSize: 14,\n display: 'inline-block',\n background: '#1658F3',\n color: '#ffffff',\n borderRadius: '10px 10px 2px 10px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst Buttons = props => {\n const { classes, buttons } = props\n\n return (\n
\n {buttons.map((button, index) => (\n \n {button.title}\n
\n ))}\n \n )\n}\n\nButtons.propTypes = {\n classes: PropTypes.object,\n buttons: PropTypes.array,\n}\n\nexport default withStyles(styles)(Buttons)\n","export const styles = () => ({\n wrap: {\n width: 300,\n },\n button: {\n backgroundColor: '#ffffff',\n borderTop: '1px solid #E5E5E5',\n height: 44,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#0560A9',\n fontWeight: 'bold',\n },\n lastButton: {\n backgroundColor: '#ffffff',\n borderTop: '1px solid #E5E5E5',\n height: 44,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#0560A9',\n fontWeight: 'bold',\n borderRadius: '0px 0px 8px 8px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nimport { styles } from './styles'\nimport Buttons from '../Buttons/Buttons'\n\nconst TextMessageButton = props => {\n const { classes, message, timezone, isReceived, isRtl, highlight } = props\n\n return (\n \n
\n \n {message.text || message.postback}\n \n {message?.buttons && !!message?.buttons?.length && }\n
\n
\n )\n}\n\nTextMessageButton.propTypes = {\n classes: PropTypes.object,\n text: PropTypes.string,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n isRtl: PropTypes.bool,\n}\n\nexport default withStyles(styles)(TextMessageButton)\n","export const styles = () => ({\n chatBubble: {\n padding: '8px 16px',\n fontSize: 14,\n background: 'rgba(90, 152, 247, 0.08)',\n display: 'inline-block',\n width: '300px',\n },\n container: {\n border: '1px solid #E5E5E5',\n borderRadius: 8,\n height: 'fit-content',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nimport { styles } from './styles'\n\nconst ImageMessage = props => {\n const { classes, timezone, isReceived, imgUrl, highlight } = props\n\n return (\n \n \n \n )\n}\n\nImageMessage.propTypes = {\n classes: PropTypes.object,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n imgUrl: PropTypes.string,\n}\n\nexport default withStyles(styles)(ImageMessage)\n","export const styles = () => ({\n img: {\n width: 300,\n height: 150,\n borderRadius: '8px',\n backgroundColor: '#fffff',\n margin: '12px 0px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n objectFit: 'contain',\n border: '1px solid #E5E5E5',\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ReactAudioPlayer from 'react-audio-player'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nconst AudioMessage = props => {\n const { timezone, isReceived, url } = props\n\n return (\n \n \n \n )\n}\n\nAudioMessage.propTypes = {\n classes: PropTypes.object,\n isReceived: PropTypes.bool,\n url: PropTypes.string,\n}\n\nexport default AudioMessage\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ReactPlayer from 'react-player'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nconst VideoMessage = props => {\n const { url, timezone, isReceived } = props\n\n return (\n \n
\n \n
\n
\n )\n}\n\nVideoMessage.propTypes = {\n url: PropTypes.string,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n}\n\nexport default VideoMessage\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport Buttons from '../Buttons/Buttons'\nimport { styles } from './styles'\n\nconst GenericMessage = props => {\n const { classes, element, isRtl } = props\n\n return (\n
\n
\n\n \n {element?.title}\n
\n\n {element?.subtitle && (\n \n {element?.subtitle}\n
\n )}\n\n {element?.buttons && !!element?.buttons?.length && }\n \n )\n}\n\nGenericMessage.propTypes = {\n classes: PropTypes.object,\n element: PropTypes.object,\n isRtl: PropTypes.bool,\n}\n\nexport default withStyles(styles)(GenericMessage)\n","export const styles = () => ({\n img: {\n width: 300,\n height: 150,\n borderRadius: '8px 8px 0px 0px',\n backgroundColor: '#949494',\n backgroundPosition: '50% 50%',\n backgroundSize: 'cover',\n },\n text: {\n background: '#FFFFFF',\n borderRadius: '0px 0px 8px 8px',\n padding: '6px 12px 12px',\n fontWeight: 300,\n width: 300,\n },\n textButtons: {\n background: '#FFFFFF',\n padding: '6px 12px 12px',\n fontWeight: 300,\n width: 300,\n },\n subtitle: {\n background: '#FFFFFF',\n borderRadius: '0px 0px 8px 8px',\n padding: '0px 12px 12px',\n fontWeight: 300,\n fontSize: 14,\n width: 300,\n color: '#828282',\n },\n subtitleButtons: {\n background: '#FFFFFF',\n padding: '0px 12px 12px',\n fontWeight: 300,\n fontSize: 14,\n width: 300,\n color: '#828282',\n },\n link: {\n background: '#FFFFFF',\n padding: '4px 12px',\n fontSize: 14,\n width: 300,\n display: 'block',\n },\n container: {\n border: '1px solid #E5E5E5',\n borderRadius: 8,\n height: 'fit-content',\n },\n})\n","export const styles = () => ({\n wrap: {\n background: '#ffffff',\n borderRadius: 23,\n boxShadow: '0px 0px 4px rgba(0, 0, 0, 0.24)',\n width: 36,\n height: 36,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: 2,\n position: 'absolute',\n cursor: 'pointer',\n top: '50%',\n },\n})\n","import React from 'react'\n\nexport class Next extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from '../slider/ArrowIconsStyles'\nimport { Next } from '../slider/Next'\n\nconst NextIcon = props => {\n const { classes, onClick, top } = props\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles)(NextIcon)\n","import React from 'react'\n\nexport class Prev extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from '../slider/ArrowIconsStyles'\nimport { Prev } from '../slider/Prev'\n\nconst PrevIcon = props => {\n const { classes, onClick, top } = props\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles)(PrevIcon)\n","import React, { useRef, useState } from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from './SliderStyles'\nimport NextIcon from '../icons/NextIcon'\nimport PrevIcon from '../icons/PrevIcon'\n\nconst Slider = props => {\n const { classes, children, itemLength } = props\n const [activeIndex, setActiveIndex] = useState(0)\n const scrollEl = useRef(0)\n\n const nextItem = () => {\n setActiveIndex(activeIndex + 1)\n scrollLeft(activeIndex + 1)\n }\n\n const prevItem = () => {\n setActiveIndex(activeIndex - 1)\n scrollLeft(activeIndex - 1)\n }\n\n const scrollLeft = index => {\n scrollEl.current.scrollLeft = 330 * index\n }\n\n return (\n
\n {activeIndex > 0 && }\n
\n {children}\n
\n {activeIndex < itemLength - 1 && }\n
\n )\n}\n\nexport default withStyles(styles)(Slider)\n","export const styles = () => ({\n iconWrap: {\n position: 'relative',\n width: 330,\n height: 'max-content',\n },\n randomWrap: {\n // width: 330,\n scrollBehavior: 'smooth',\n overflowX: 'hidden',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\nimport GenericMessage from '../GenericMessage/GenericMessage'\nimport Slider from '../../../../uiKit/slider/Slider'\n\nimport { styles } from './styles'\n\nconst CarouselMessage = props => {\n const { classes, timezone, isReceived, payload, isRtl, highlight } = props\n\n return (\n \n \n
\n {payload.elements?.map((element, index) => (\n \n ))}\n
\n
\n
\n )\n}\n\nCarouselMessage.propTypes = {\n classes: PropTypes.object,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n isRtl: PropTypes.bool,\n payload: PropTypes.object,\n}\n\nexport default withStyles(styles)(CarouselMessage)\n","export const styles = () => ({\n genericContainer: {\n display: 'flex',\n width: 'max-content',\n margin: '12px 0px',\n borderRadius: 10\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport moment from 'moment'\n\nimport TextMessage from '../TextMessage/TextMessage'\nimport TextMessageButton from '../TextMessageButton/TextMessageButton'\nimport ImageMessage from '../ImageMessage/ImageMessage'\nimport AudioMessage from '../AudioMessage/AudioMessage'\nimport VideoMessage from '../VideoMessage/VideoMessage'\nimport TemplateMessage from '../CarouselMessage/CarouselMessage'\n\nimport { styles } from './styles'\n\nconst Message = props => {\n const { msg, timezone, reverse, highlight } = props\n\n const message = msg?.formattedChatHistory ? JSON.parse(msg.formattedChatHistory) : null\n const timestamp = moment(msg.timestamp).add(timezone, 'hours').format('hh:mm A')\n\n const isTextMessage = ((message?.text && !message?.buttons?.length) || message?.postback) && !message.imageUrl\n const isTextMessageWithButtons = message?.text && !!message?.buttons?.length\n const isImageMessage = message?.imageUrl\n const isAudioMessage = message?.attachments?.length && message.attachments[0].type === 'audio'\n const isVideoMessage = message?.attachments?.length && message.attachments[0].type === 'video'\n const isTemplateMessage = message?.elements?.length\n\n const isRtl = message?.isRtl || msg?.isRtl\n const isReceived = reverse ? !message?.isFromUser : message?.isFromUser\n\n return (\n <>\n {isTextMessage && (\n \n )}\n\n {isTextMessageWithButtons && (\n \n )}\n\n {isImageMessage && (\n \n )}\n\n {isAudioMessage && (\n \n )}\n\n {isVideoMessage && (\n \n )}\n\n {isTemplateMessage && (\n \n )}\n \n )\n}\n\nMessage.propTypes = {\n classes: PropTypes.object,\n timezone: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n timezone: state.activeBot?.timezone,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Message))\n","export const styles = () => ({\n container: {},\n})\n","import React, { memo } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport Message from '../Message/Message'\n\nimport { styles } from './styles'\n\nconst MessageGroup = props => {\n const { classes, messages, date, messageIntoView, messageId, reverse, hash } = props\n\n const setRef = id => {\n return id?.toString() === hash?.substring(1) || id === messageId ? messageIntoView : null\n }\n\n return (\n
\n {messages &&\n messages\n .slice()\n .reverse()\n .filter(msg => msg.timestamp.split('T')[0] === date)\n .map(message => (\n
\n \n
\n ))}\n
\n )\n}\n\nMessageGroup.propTypes = {\n classes: PropTypes.object,\n messages: PropTypes.array,\n date: PropTypes.string,\n}\n\nexport default memo(withStyles(styles)(MessageGroup))\n","export const styles = () => ({\n container: {},\n})\n","import moment from 'moment'\n\nexport const formatDate = date => {\n return `${moment(date)\n .format('MMMM Do')\n .slice(0, -2)\n .toUpperCase()}${moment(date).format('MMMM Do').slice(-2)}`\n}\n","export const isElementTop = el => el && !el.scrollTop\n","/* eslint-disable */\nimport React, { useEffect, useState, useRef } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport MessageGroup from '../MessageGroup/MessageGroup'\n\nimport { getMessages, setMessageRead } from '../../api/user'\nimport { saveSupportUserMessages, saveSupportUserMoreMessages } from '../../actions/activeUser'\n\nimport { styles } from './styles'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport { formatDate } from '../../../../helpers/formatDate/formatDate'\nimport { updateUserUnreadMessages } from '../../actions/users'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { isElementTop } from '../../../../helpers/isElementTop'\n\nconst MessagesWrap = props => {//NOSONAR\n const { classes, user } = props\n const [scrollPosition, setScrollPosition] = useState(null)\n const [scrollToTop, serScrollToTop] = useState(false)\n const [dates, setDates] = useState([])\n const [page, setPage] = useState(0)\n const [hasNext, setHasNext] = useState(true)\n const [loading, setLoading] = useState(true)\n const scrollContainer = useRef(null)\n const messagesEnd = useRef(null)\n const messageIntoView = useRef(null)\n const prevUserMessagesLength = usePrevious(user.messages?.length)\n\n useEffect(() => {\n if (user.chatId) {\n getMessages(user.chatId, 0)\n .then(saveSupportUserMessages)\n .then(() => {\n setLoading(false)\n setPage(1)\n })\n .then(scrollToBottom)\n .catch(() => setLoading(false))\n }\n }, [user.chatId])\n\n useEffect(() => {\n if (scrollToTop && scrollPosition) {\n scrollContainer.current.scrollTop = scrollContainer.current.scrollHeight - scrollPosition\n }\n\n if (user.messages?.length) {\n updateMessageDates()\n updateMessageRead()\n\n if (user.messages?.length - prevUserMessagesLength === 1) {\n scrollToBottom()\n }\n }\n }, [user.messages])\n\n const updateMessageDates = () => {\n const dates = user.messages.map(item => item.timestamp.split('T')[0])\n setDates([...new Set(dates)])\n }\n\n const updateMessageRead = () => {\n const lastMessageId = user?.messages[0].id\n\n if (lastMessageId) {\n setMessageRead(user.chatId, lastMessageId).then(() => updateUserUnreadMessages(user))\n }\n }\n\n const scrollToBottom = () => {\n if (messagesEnd.current) {\n messagesEnd.current.scrollIntoView()\n }\n }\n\n const handleScroll = ({ target }) => {\n if (isElementTop(target) && hasNext) {\n setScrollPosition(scrollContainer.current.scrollHeight)\n serScrollToTop(true)\n getMessages(user.chatId, page)\n .then(saveSupportUserMoreMessages)\n .then(() => {\n setPage(page + 1)\n updateHasNext(data.content.length)\n })\n .then(scrollToBottom)\n .catch(() => setLoading(false))\n }\n }\n\n const updateHasNext = messagesLength => {\n if (messagesLength < 10) {\n setHasNext(false)\n }\n }\n\n const scrollToMessage = () => {\n messageIntoView.current.scrollIntoView()\n }\n\n return (\n <>\n {loading ? (\n
\n \n
\n ) : (\n
\n {dates\n .slice()\n .reverse()\n .map(date => (\n
\n

{formatDate(date)}

\n \n
\n ))}\n
\n
\n )}\n \n )\n}\n\nMessagesWrap.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(MessagesWrap)))\n","export const styles = () => ({\n container: {\n padding: '0px 16px',\n overflow: 'auto',\n height: 'calc(100% - 126px)',\n },\n chatDate: {\n textAlign: 'center',\n color: '#B0B2C0',\n fontSize: 12,\n margin: '24px 0px',\n },\n bottomScrollElem: {\n float: 'left',\n clear: 'both',\n },\n date: {\n textAlign: 'center',\n fontSize: 12,\n fontWeight: 500,\n color: '#3A3F62',\n margin: '16px 0 20px',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n },\n loaderWrap: {\n height: 'calc(100% - 126px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n})\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from '../slider/ArrowIconsStyles'\n\nconst SendIcon = props => {\n const { color } = props\n return (\n \n \n \n )\n}\n\nexport default withStyles(styles)(SendIcon)\n","import { RetryPromiseHook } from './retryCallback.types'\n\nexport const retryPromiseCallback: RetryPromiseHook = (callback, conditionalCallback) => {\n return callback().then(response => {\n if (conditionalCallback(response)) return retryPromiseCallback(callback, conditionalCallback)\n return response\n })\n}\n","import { retryPromiseCallback } from 'helpers/retryCallback/retryCallback'\nimport { updateSupportUser } from '../../../tabs/support/api/users'\nimport { UserDTO } from './types'\n\nexport const useUpdatedSupportUser = user => {\n const doNeedToFetchUserOneMoreTime = ({ userId, chatId }: UserDTO) => {\n return [userId, chatId].some(field => !field)\n }\n\n return retryPromiseCallback(() => updateSupportUser(user), doNeedToFetchUserOneMoreTime)\n}\n","import React from 'react'\nimport { NOTIFICATION_GRANTED } from '../constants/notificationsPermissions'\nimport { SERVER_URL } from '../configs'\nimport { toast } from 'react-toastify'\n\nfunction displayCustom(title, body, userId, botId) {\n if (userId && botId) {\n function openChat() {\n window.open(\n `${SERVER_URL}/admin/bot/${botId}/support/${userId}`,\n '_blank',\n )\n }\n toast.info(\n
\n {title}\n
\n {body}\n
,\n {\n onClick: openChat,\n },\n )\n }\n}\n\nfunction displayNative(title, body, userId, botId) {\n if (Notification.permission === NOTIFICATION_GRANTED) {\n const notification = new Notification(title, { body })\n if (userId && botId) {\n notification.onclick = e => {\n e.preventDefault()\n window.open(\n `${SERVER_URL}/admin/bot/${botId}/support/${userId}`,\n '_blank',\n )\n }\n }\n }\n}\n\nexport default {\n askPermission() {\n Notification.requestPermission()\n },\n\n displayNotification(title, body, options = {}) {\n const { userId, botId } = options\n if (document.hidden) {\n displayNative(title, body, userId, botId)\n } else {\n displayCustom(title, body, userId, botId)\n }\n },\n}\n","export const NOTIFICATION_DEFAULT = 'default'\n\nexport const NOTIFICATION_DENIED = 'denied'\n\nexport const NOTIFICATION_GRANTED = 'granted'\n","import React from 'react'\nimport SockJS from 'sockjs-client'\nimport { Stomp } from '@stomp/stompjs'\nimport * as cookie from 'react-cookies'\n\nimport { BACKEND_URL } from '../configs'\nimport { getUrlEnd } from '../helpers/getUrlEnd'\nimport { isOpenBot } from '../helpers/isOpenBot'\nimport { isSupportTab } from '../helpers/isSupportTab'\n\nimport { useUpdatedSupportUser } from '../hooks/users/useUpdatedSupportUser'\n\nimport { updateSupportUserList } from '../tabs/support/actions/users'\nimport { saveMessage, saveActiveUser } from '../tabs/support/actions/activeUser'\nimport { getSupportRequests } from '../tabs/support/api/support'\nimport NotificationService from '../services/notificationService'\n\nexport const SharedWebsocketContext = React.createContext()\n\nclass WebSockets extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n client: null,\n connected: false,\n }\n }\n\n componentDidMount() {\n this.setupSocketClient()\n }\n\n componentWillUnmount() {\n this.closeConnection()\n }\n\n setupSocketClient = () => {\n const sockJS = new SockJS(BACKEND_URL + '/web?Authorization=' + cookie.load('YWxpYWFkbWlu'))\n const client = Stomp.over(sockJS)\n\n client.reconnect_delay = 5000\n // eslint-disable-next-line\n client.debug = () => {} //NOSONAR\n client.heartbeat = {\n incoming: 10000,\n outgoing: 10000,\n }\n\n client.connect({}, this.onConnectSuccess)\n\n this.setState({\n client,\n })\n }\n\n closeConnection = () => {\n const { client } = this.state\n\n if (client?.connected) {\n client.unsubscribe('/topic/admin.chatStatus')\n client.unsubscribe('/topic/admin.message')\n client.disconnect()\n }\n }\n\n onConnectSuccess = () => {\n this.setState({ connected: true }, this.subscribe)\n }\n\n subscribe = () => {\n this.subscribeNewMessages()\n this.subscribeUserChatStatuses()\n }\n\n subscribeNewMessages = () => {\n const { botId, adminUser } = this.props\n const { client } = this.state\n client.subscribe(`/topic/admin.message.${botId}`, msg => {\n const body = JSON.parse(msg.body)\n const isSelectedBot = isOpenBot() && Number(botId) === body?.botId\n const isCurrentAdmin = body?.adminId === adminUser.id\n\n //display browser notification\n if (!body.postback && isSelectedBot && isCurrentAdmin) {\n if (document.hidden || !isSupportTab()) {\n const message = JSON.parse(body.formattedChatHistory)\n if (message.isFromUser) {\n const title = `Message from: ${body.firstName} ${body.lastName}`\n NotificationService.displayNotification(title, message.text, {\n userId: body.userId,\n botId,\n })\n }\n }\n }\n\n useUpdatedSupportUser(body).then(user => {\n if (user) {\n updateSupportUserList(user, adminUser.id)\n if (Number(getUrlEnd()) === user?.userId) saveMessage(body)\n }\n })\n })\n }\n\n subscribeUserChatStatuses = () => {\n const { botId, adminUser } = this.props\n const { client } = this.state\n\n client.subscribe(`/topic/admin.chatStatus.${botId}`, chatStatus => {\n const user = JSON.parse(chatStatus.body)\n Promise.all([useUpdatedSupportUser(user), getSupportRequests(botId)]).then(res => {\n const copyUser = Object.assign({}, res[0], user)\n updateSupportUserList(copyUser, adminUser.id)\n if (Number(getUrlEnd()) === copyUser?.userId) saveActiveUser(copyUser)\n })\n })\n }\n\n sendMessage = message => {\n this.state.client.send('/app/admin', {}, JSON.stringify(message))\n }\n\n render() {\n return (\n \n {this.props.children}\n \n )\n }\n}\n\nexport default WebSockets\n","export function isOpenBot() {\n return ~window.location.href.indexOf('/bot/')\n}\n","export function isSupportTab() {\n return ~window.location.href.indexOf('/support')\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const AttachmentIcon = () => {\n return (\n \n \n \n )\n}\n","export const styles = () => ({\n svgAttachmentHolder: {\n cursor: 'pointer',\n padding: '14px 24px',\n height: 54,\n position: 'absolute',\n top: 0,\n left: 0,\n },\n uploadInput: {\n display: 'none',\n },\n})\n","import React, { useContext } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { AttachmentIcon } from '../../../../uiKit/icons/AttachmentIcon'\nimport { selectedFile } from '../../../flowBuilder/api/fileService'\n\nimport { styles } from './styles'\nimport { SharedWebsocketContext } from '../../../../contexts/webSockets'\nimport { connect } from 'react-redux'\n\nconst UploadButton = props => {\n const { classes, user, disabled, adminUserId } = props\n const { sendMessage } = useContext(SharedWebsocketContext)\n\n const handleSelectedFile = event => {\n const file = event.target.files[0]\n const formData = new FormData()\n formData.append('file', file)\n\n selectedFile(formData).then(res => {\n const message = {\n adminId: adminUserId,\n recipient: user.userId,\n fileUrl: res.url,\n fileName: file.name,\n }\n sendMessage(message)\n })\n event.target.value = ''\n }\n\n return (\n <>\n \n \n \n )\n}\n\nUploadButton.propTypes = {\n classes: PropTypes.object,\n adminUserId: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUserId: state.adminUser.id,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UploadButton))\n","import { alertError, logoutOnRequestOrResponseJson } from '../../../api'\nimport * as cookie from 'react-cookies'\nimport { BASE_URL } from '../../../configs'\n\nexport function selectedFile(file) {\n return fetch(BASE_URL + '/file', {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() => {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n","import React, { useContext, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport SendIcon from '../../../../uiKit/icons/SendIcon'\nimport { SharedWebsocketContext } from '../../../../contexts/webSockets'\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\nimport { SUPPORT_STATUSES } from '../../../../constants/suportStatuses'\nimport { CHAT_STATUS } from '../../../../constants/chatStatus'\nimport { styles } from './styles'\nimport UploadButton from '../UploadButton/UploadButton'\nimport { assignSupportRequest } from '../../api/user'\nimport { saveActiveUser } from '../../actions/activeUser'\nimport { getMinutesLeft } from '../../../../helpers/getMinutesLeft'\n\nconst ChatInput = props => {//NOSONAR\n const { classes, user, adminUserId, activeBot } = props\n const { sendMessage } = useContext(SharedWebsocketContext)\n const [textMessage, setTextMessage] = useState('')\n const minutesLeft = user && getMinutesLeft(user.userMessageDatetime) < 0\n const isAssignedToMe = adminUserId === user.supportRequest?.support?.adminId\n const disableInput =\n user?.chatStatus === CHAT_STATUS.DISCONNECTED ||\n (user?.platform === CHAT_PLATFORM.WHATSAPP && minutesLeft) ||\n (user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n !isAssignedToMe)\n const isRtl = user?.messages && user?.messages[0]?.isRtl\n\n const handleSendMessage = () => {\n if (disableInput) return\n if (isAssignedToMe) {\n onSendMessage()\n } else {\n const json = {\n supportRequestId: user.supportRequest?.id,\n userId: user.userId,\n adminId: adminUserId,\n }\n\n const userCopy = Object.assign({}, user)\n\n userCopy.supportRequest = {\n status: SUPPORT_STATUSES.ASSIGNED,\n support: {\n adminId: adminUserId,\n },\n userId: user.userId,\n }\n\n assignSupportRequest(activeBot.id, json)\n .then(() => {\n saveActiveUser(userCopy)\n })\n .then(onSendMessage)\n }\n }\n\n const handleKeyPress = event => {\n if (event.key === 'Enter' && textMessage) {\n handleSendMessage()\n }\n }\n\n const onSendMessage = () => {\n const message = {\n adminId: adminUserId,\n text: textMessage,\n recipient: user.userId,\n }\n sendMessage(message)\n setTextMessage('')\n }\n\n return (\n
\n \n setTextMessage(e.target.value)}\n value={textMessage}\n disabled={disableInput}\n placeholder=\"Some message goes here\"\n dir={isRtl ? 'rtl' : 'ltr'}\n onKeyPress={handleKeyPress}\n />\n \n \n \n
\n )\n}\n\nChatInput.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n adminUserId: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUserId: state.adminUser.id,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(ChatInput)),\n)\n","export const styles = () => ({\n container: {\n width: '100%',\n borderTop: '1px solid #EBEBEF',\n position: 'relative',\n },\n input: {\n border: 'none',\n width: '100%',\n padding: '0px 70px',\n fontSize: 14,\n height: 54,\n outline: 'none',\n '&::placeholder': {\n color: 'rgba(53, 64, 82, 0.7)',\n },\n },\n iconWrap: {\n cursor: 'pointer',\n padding: '14px 24px',\n height: 54,\n position: 'absolute',\n top: 0,\n right: 0,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport ChatHeader from '../ChatHeader/ChatHeader'\nimport MessagesWrap from '../MessagesWrap/MessagesWrap'\nimport ChatInput from '../ChatInput/ChatInput'\n\nimport { styles } from './styles'\n\nconst ChatContainer = props => {\n const { classes } = props\n\n return (\n
\n \n \n \n
\n )\n}\n\nChatContainer.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ChatContainer)\n","export const styles = () => ({\n container: {\n flexBasis: '74%',\n minWidth: 670,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst NoChatScreen = props => {\n const { classes } = props\n\n return (\n
\n
\n Select a chat to start a conversation\n
\n
\n )\n}\n\nNoChatScreen.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(NoChatScreen)\n","export const styles = () => ({\n noChatWrap: {\n flexBasis: '74%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n noChat: {\n color: '#B0B2C0',\n maxWidth: 206,\n textAlign: 'center',\n },\n})\n","import React, { Component } from 'react'\nimport { Route } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\n\nimport DialogsContainer from './components/DialogsContainer/DialogsContainer'\nimport ChatContainer from './components/ChatContainer/ChatContainer'\nimport NoChatScreen from './components/NoChatScreen/NoChatScreen'\n\nimport { HOME_PATH } from '../../configs'\nimport { isUrlEndsWithSupport } from '../../helpers/isUrlEndsWithSupport'\nimport { getFlows } from '../flowBuilder/api/flow'\nimport { styles } from './styles'\nimport { saveActiveUser } from './actions/activeUser'\nimport { getBot } from '../home/api/bots'\nimport { useUpdatedSupportUser } from '../../hooks/users/useUpdatedSupportUser'\n\nclass SupportContainer extends Component {\n componentDidMount() {\n getFlows(this.props.match.params.botId)\n getBot(this.props.match.params.botId)\n this.tryToSaveActiveUser()\n }\n\n tryToSaveActiveUser = () => {\n if (!isUrlEndsWithSupport()) {\n const vars = window.location.pathname.split('/')\n const id = vars[vars.length - 1]\n useUpdatedSupportUser({ userId: id }).then(saveActiveUser)\n }\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n\n {isUrlEndsWithSupport() && }\n\n } />\n
\n )\n }\n}\n\nSupportContainer.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(SupportContainer)\n","export const styles = () => ({\n container: {\n height: 'calc(100% - 80px)',\n margin: '40px 40px 40px 0px',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n minWidth: 940,\n display: 'flex',\n overflow: 'hidden',\n },\n})\n","import { store } from '../../../index'\n\nexport const SAVE_BROADCASTS = 'SAVE_BROADCASTS'\n\nexport const saveBroadcasts = broadcasts => {\n store.dispatch({\n type: SAVE_BROADCASTS,\n broadcasts,\n })\n}\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { saveBroadcasts } from '../actions/broadcasts'\nimport { BASE_URL } from '../../../configs'\n\nexport function createBroadcast(broadcast) {\n fetch(BASE_URL + '/broadcast', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(broadcast),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Broadcast is created successfully.')\n loadBroadcasts(broadcast.botId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later', 10000)\n })\n}\n\nexport function loadBroadcasts(botId) {\n fetch(BASE_URL + '/broadcast/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBroadcasts(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n\nexport function cancelBroadcast(broadcastId) {\n fetch(BASE_URL + '/broadcast/' + broadcastId + '/cancel', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBroadcasts(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: '30%',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n padding: theme.spacing.unit * 4,\n overflowY: 'auto',\n borderRadius: 10,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n textAlign: 'center',\n },\n btnContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n flexDirection: 'row',\n },\n statesModal: {\n height: 45,\n padding: '10px 0',\n },\n heading: {\n lineHeight: 'normal',\n fontSize: 18,\n color: '#3A3F62',\n textAlign: 'center',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n flexBasis: '60%',\n },\n progress: {\n margin: theme.spacing.unit * 2,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n userSays: {\n fontSize: 14,\n color: '#1658F3',\n margin: '18px 0',\n },\n confirm: {\n padding: '12px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'inline-flex',\n },\n cancel: {\n padding: '12px 28px',\n border: 0,\n background: 'transparent',\n outlineColor: '#1658F3',\n borderRadius: 10,\n cursor: 'pointer',\n color: '#1658F3',\n margin: '30px auto 0',\n display: 'inline-flex',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n },\n modalHeading: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 600,\n },\n '@global': {\n '.addPhrase::placeholder,.addPhrase': {\n color: '#3A3F62',\n },\n '.Select-placeholder': {\n lineHeight: '43px',\n },\n '.Select-input > input': {\n lineHeight: '28px',\n },\n '.Select-value': {\n paddingTop: 4,\n },\n '.Select-control': {\n height: 45,\n },\n '::-webkit-scrollbar': {\n width: 12,\n },\n\n '::-webkit-scrollbar-track': {\n /*-webkit-box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.3);*/\n borderRadius: 3,\n },\n\n '::-webkit-scrollbar-thumb': {\n borderRadius: 10,\n webkitBoxShadow: 'inset 0 0 6px rgba(24, 24, 24, 0.5)',\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n})\n\nclass ConfirmModal extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {}\n }\n\n render() {\n const { classes, itemId, itemTitle, confirmAction, closeModal } = this.props\n return (\n
\n

Are you sure you want to delete this item?

\n
{itemTitle}
\n
\n {\n confirmAction(itemId)\n closeModal()\n }}>\n Confirm\n \n \n
\n
\n )\n }\n}\n\nConfirmModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(ConfirmModal))\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport Select from 'react-select'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { cancelBroadcast, loadBroadcasts } from '../api/broadcast'\nimport ClearIcon from '@material-ui/icons/Clear'\nimport Modal from '@material-ui/core/Modal'\nimport ConfirmModal from './ConfirmModal'\nimport moment from 'moment/moment'\nimport Pagination from '../../../uiKit/table/Pagination'\nimport Headline from '../../../uiKit/texts/Headline'\nimport NoData from '../../nlp/components/NoNlpData'\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n },\n title: {\n fontSize: 24,\n color: theme.palette.primary.headerText,\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 400,\n },\n broadcastItem: {\n padding: 14,\n fontSize: 14,\n display: 'flex',\n maxHeight: 80,\n fontFamily: 'Lato, sans-serif',\n color: theme.palette.primary.text,\n position: 'relative',\n '&:hover .deleteIcon': {\n display: 'block',\n },\n animationDuration: '0.5s',\n animationName: 'appear',\n },\n name: {\n flexBasis: '20%',\n maxWidth: '20%',\n wordWrap: 'break-word',\n padding: '0 10px',\n display: 'flex',\n alignItems: 'center',\n },\n broadcastTableHeader: {\n fontWeight: 'bold',\n },\n atom: {\n flexBasis: '30%',\n maxWidth: '30%',\n wordWrap: 'break-word',\n padding: '0 10px',\n display: 'flex',\n alignItems: 'center',\n },\n time: {\n flexBasis: '30%',\n color: theme.palette.primary.text,\n display: 'flex',\n alignItems: 'center',\n },\n status: {\n display: 'flex',\n alignItems: 'center',\n padding: '4px 8px',\n backgroundColor: 'red',\n borderRadius: 10,\n fontSize: 12,\n alignSelf: 'center',\n fontFamily: 'Lato, sans-serif',\n color: 'white',\n },\n deleteInt: {\n color: theme.palette.primary.text,\n cursor: 'pointer',\n position: 'absolute',\n display: 'none',\n right: 14,\n top: '50%',\n transform: 'translateY(-50%)',\n },\n desc: {\n lineHeight: 17,\n fontSize: 14,\n color: theme.palette.primary.headerText,\n },\n titleFont: {\n fontSize: '24px',\n fontWeight: 'bold',\n fontFamily: 'Lato',\n color: theme.palette.primary.headerText,\n },\n headerWrap: {\n display: 'flex',\n justifyContent: 'flex-start',\n },\n headerWrapItem: {\n flexBasis: '50%',\n },\n broadcastsHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n addNew: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid ' + theme.palette.pieChartColors.chatbot,\n borderRadius: 10,\n padding: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n maxHeight: 40,\n margin: '50px 20px 20px',\n cursor: 'pointer',\n },\n '@global': {\n '@keyframes appear': {\n from: {\n position: 'relative',\n top: 30,\n opacity: 0,\n },\n to: {\n position: 'relative',\n top: 0,\n opacity: 1,\n },\n },\n },\n})\n\nconst options = [\n {\n label: 'Latest first',\n value: 'Latest first',\n },\n {\n label: 'Active first',\n value: 'Active first',\n },\n]\n\nconst description =\n // eslint-disable-next-line max-len\n 'You have no Broadcasts yet. Add a new Broadcast to be able to send group message notifications to your target audience'\n\nclass NewBroadcastsList extends React.Component {\n closeConfirmModal = () => {\n this.setState({\n open: false,\n modalBroadcastId: null,\n modalBroadcastTitle: '',\n })\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n modalIntentId: 0,\n searchIntent: '',\n selectedOption: options[0],\n modalBroadcastId: null,\n modalBroadcastTitle: '',\n }\n\n loadBroadcasts(props.match.params.botId)\n }\n\n openConfirmModal() {\n this.setState({\n open: true,\n })\n }\n\n handleChangeOption(option) {\n this.setState({\n selectedOption: option,\n })\n }\n\n sortData(date1, date2) {\n if (this.state.selectedOption.value === 'Latest first') {\n return date2.id - date1.id\n } else {\n if (\n (date1.status !== 'Canceled' &&\n date1.status !== 'Done' &&\n date2.status === 'Canceled') ||\n date2.status === 'Done'\n ) {\n if (date2.status === 'Scheduled' && date1.status === 'In Progress') {\n return date2.id - date1.id\n }\n return date1.id - date2.id\n } else if (\n date2.status === 'Scheduled' &&\n date1.status !== 'In Progress'\n ) {\n return date2.id - date1.id\n } else {\n const c = new Date(date1.localDateTime) / 1000\n const d = new Date(date2.localDateTime) / 1000\n return d - c\n }\n }\n }\n\n handleChangeRowsPerPage(value) {\n this.setState({\n rowsPerPage: value,\n })\n }\n\n timeFunc() {\n if (this.props.activeBot.timezone > 0) {\n return `+ ${this.props.activeBot.timezone}`\n } else if (this.props.activeBot.timezone === 0) {\n return ' '\n } else {\n return ` ${this.props.activeBot.timezone}`\n }\n }\n\n handleChangePage(value) {\n this.setState({\n page: value,\n })\n }\n\n formatDatetime(broadcastDatetime) {\n return moment(new Date(broadcastDatetime)).format('DD MMM YYYY HH:mm')\n }\n\n calculateRead(n) {\n return (\n (n.read ? n.read : 0) +\n ' (' +\n (n.read && n.delivered\n ? (n.delivered === 0 ? 0 : (100 * n.read) / n.delivered) === 100\n ? n.delivered === 0\n ? 0\n : (100 * n.read) / n.delivered\n : (n.delivered === 0 ? 0 : (100 * n.read) / n.delivered).toFixed(1)\n : 0) +\n '%)'\n )\n }\n\n getRowStyles = index => {\n if ((index + 1) % 2 === 1) {\n return {\n background: 'rgba(255, 255, 255, 0)',\n }\n }\n return {\n background: 'rgba(90, 152, 247, 0.1)',\n borderRadius: 10,\n }\n }\n\n getTimezone = broadcast => {\n return broadcast.timezone\n ? this.formatDatetime(broadcast.localDateTime)\n : moment(broadcast.localDateTime)\n .utcOffset(this.props.activeBot.timezone * 60 + moment().utcOffset())\n .format('DD MMM YYYY HH:mm')\n }\n\n getTimezoneLabel = timezone => {\n return timezone\n ? ' User timezone'\n : ` Bot timezone (UTC ${this.timeFunc()})`\n }\n\n getStatusColor = status => {\n switch (status) {\n case 'Done':\n return '#11C314'\n case 'Scheduled':\n return '#FFAA47'\n case 'Canceled':\n return '#FF624C'\n case 'In Progress':\n return '#5A98F7'\n default:\n return '#5A98F7'\n }\n }\n\n render() {\n const { classes } = this.props\n const data = this.props.broadcasts\n const { rowsPerPage, page } = this.state\n\n return (\n
\n
\n \n
\n \n + Add Broadcast\n
\n\n {!!data?.length && (\n
\n this.handleChangeOption(value)}\n searchable={true}\n />\n
\n )}\n
\n
\n {!data.length ? (\n \n ) : (\n
\n {data.length ? (\n
\n
\n
\n \n \n Name\n
\n \n Message\n
\n \n Delivered\n
\n \n Read (%)\n
\n \n Time\n
\n this.sortData()}>\n Status\n \n \n {data\n .sort((a, b) => this.sortData(a, b))\n .slice(\n page * rowsPerPage,\n page * rowsPerPage + rowsPerPage,\n )\n .map((broadcast, index) => (\n \n
{broadcast.name}
\n
{broadcast.atom}
\n
\n {broadcast.delivered ? broadcast.delivered : 0}\n
\n
\n {this.calculateRead(broadcast)}\n
\n
\n {this.getTimezone(broadcast)}\n
\n {this.getTimezoneLabel(broadcast.timezone)}\n
\n \n \n {broadcast.status}\n \n \n {(broadcast.status === 'Scheduled' ||\n broadcast.status === 'In Progress') && (\n
\n {\n this.setState(\n {\n modalBroadcastId: broadcast.id,\n modalBroadcastTitle: broadcast.name,\n },\n this.openConfirmModal,\n )\n }}\n />\n
\n )}\n \n ))}\n {data.length !== 0 && (\n \n \n this.handleChangePage(value)\n }\n />\n \n )}\n\n \n \n \n \n \n \n ) : (\n \n )}\n \n )}\n \n )\n }\n}\n\nNewBroadcastsList.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n broadcasts: state.broadcasts,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(NewBroadcastsList)),\n)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport moment from 'moment'\nimport InputHolder from '../../../uiKit/inputs/InputHolder'\nimport Tags from '../../flowBuilder/components/messages/Tags'\nimport { DateTimePicker } from 'material-ui-pickers'\nimport Icon from '@material-ui/core/Icon/Icon'\nimport FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel'\nimport Checkbox from '@material-ui/core/Checkbox/Checkbox'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { createBroadcast } from '../api/broadcast'\nimport RadioGroup from '@material-ui/core/RadioGroup/RadioGroup'\nimport Radio from '@material-ui/core/Radio/Radio'\nimport { CalendarIcon } from '../../../uiKit/icons/Icons'\nimport AtomSelect from '../../../uiKit/AtomSelect/AtomSelect'\n\nconst styles = theme => ({\n menu: {\n display: 'flex',\n justifyContent: 'space-around',\n fontFamily: 'Lato',\n },\n newBroadcast: {\n padding: 0,\n boxShadow: 'none',\n },\n\n leftTabItem: {\n marginTop: 16,\n },\n logicBlock: {\n marginTop: '20px',\n paddingBottom: '25px',\n width: '98%',\n },\n\n description: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n\n select: {\n flexDirection: 'column',\n },\n\n inputHolder: {\n border: '1px solid #C7CAD6 !important',\n width: 'max-content',\n borderRadius: '5px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 400,\n },\n tagsStyle: {\n width: '400px',\n },\n submitButton: {\n marginTop: '24px !important',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n picker: {\n margin: 'auto',\n display: 'block',\n },\n button: {\n display: 'flex',\n justifyContent: 'flex-start',\n marginTop: 30,\n },\n simpleFont: {\n color: '#616581',\n },\n whiteInput: {\n background: '#ffffff',\n fontSize: '14px',\n padding: '0 24px',\n borderRadius: '8px',\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n footer: {\n maxWidth: 400,\n width: '100%'\n },\n headerButton: {\n margin: '5px',\n background: 'linear-gradient(285.2deg, #5A98F7 -35.9%, #1658F3 61.17%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n color: 'white',\n borderRadius: 10,\n height: 45,\n },\n headerAddBroadcast: {\n fontSize: '18px',\n fontWeight: 'bold',\n fontFamily: 'Lato',\n color: theme.palette.primary.headerText,\n margin: 'auto',\n },\n\n titleRadio: {\n fontSize: '14px',\n color: theme.palette.text.header,\n },\n\n '@global': {\n \"[class*='MuiInput-underline']:before \": {\n display: 'none',\n },\n \"[class*='Connect-Broadcasts--whiteInput']\": {\n margin: '0 !important',\n border: 0,\n padding: 0,\n },\n '.label': {\n fontSize: 14,\n color: '#3A3F62',\n },\n '.checkbox-checked': {\n borderRadius: 10,\n },\n '.picker> div> div > div >[class*=\"jss\"]': {\n border: 0,\n },\n '.picker [class*=\"jss\"]::before': {\n content: 'none',\n },\n '.broadcast-rootRadio label': {\n margin: '10px 16px -4px -14px',\n },\n '.broadcast-rootRadio span[class*=\"label\"]': {\n marginLeft: '-3px',\n },\n '.broadcast-rootRadio span': {\n margin: '-10px 0px',\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass BroadcastModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n checked: false,\n sendNow: true,\n ifTimezone: false,\n timezone: null,\n red: false,\n activeBot: {},\n botTimezoneSet: false,\n selectedDate: null,\n loaded: false,\n selectedTags: [],\n }\n\n this.state.selectedDate = !this.state.activeBot.length\n ? moment()\n : moment.utc().utcOffset(this.state.activeBot.timezone)\n }\n\n timeFunc() {\n if (this.props.activeBot.timezone > 0) {\n return `+ ${this.props.activeBot.timezone}`\n }\n if (this.props.activeBot.timezone == 0) {\n return ' '\n } else {\n return `${this.props.activeBot.timezone}`\n }\n }\n\n changeName = e => {\n this.setState({ name: e.target.value })\n }\n\n handleChangeAtom(value) {\n this.state.red\n ? this.setState({\n atom: value,\n red: false,\n })\n : this.setState({\n atom: value,\n })\n }\n\n sendBroadcast = () => {\n if (this.state.atom != null) {\n const {\n atom,\n name,\n activeBot,\n ifTimezone,\n sendNow,\n selectedDate,\n checked,\n selectedTags,\n } = this.state\n let localDateTime\n\n if (sendNow) {\n localDateTime = moment().utc().format('YYYY-MM-DDTHH:mm')\n } else if (ifTimezone) {\n localDateTime = moment(selectedDate).format('YYYY-MM-DDTHH:mm')\n } else {\n localDateTime = moment(selectedDate)\n .utcOffset(-this.props.activeBot.timezone * 60 + moment().utcOffset())\n .format('YYYY-MM-DDTHH:mm')\n }\n\n const broadcast = {\n botId: this.props.activeBot.id,\n atom,\n name,\n timezone: ifTimezone,\n localDateTime,\n tags: selectedTags,\n allOfTags: checked,\n }\n this.setState(\n {\n atom: undefined,\n checked: false,\n name: '',\n selectedDate: moment(moment().utc().utcOffset(activeBot.timezone)),\n sendNow: true,\n ifTimezone: true,\n red: false,\n selectedTags: [],\n },\n () => {\n createBroadcast(broadcast)\n this.props.onClose()\n },\n )\n } else {\n this.setState({\n red: true,\n })\n }\n }\n\n componentDidMount() {\n const { botTimezoneSet } = this.state\n const { activeBot } = this.props\n if (Object.getOwnPropertyNames(activeBot).length && !botTimezoneSet) {\n this.setState({\n selectedDate: moment(\n moment()\n .utc()\n .utcOffset(activeBot.timezone * 60),\n ).format('YYYY-MM-DDTHH:mm'),\n loaded: true,\n botTimezoneSet: true,\n })\n }\n }\n\n componentDidUpdate() {\n const { botTimezoneSet } = this.state\n const { activeBot } = this.props\n if (Object.getOwnPropertyNames(activeBot).length && !botTimezoneSet) {\n this.setState({\n selectedDate: moment(\n moment()\n .utc()\n .utcOffset(activeBot.timezone * 60),\n ).format('YYYY-MM-DDTHH:mm'),\n loaded: true,\n botTimezoneSet: true,\n })\n }\n }\n\n handleCheck = event => {\n this.setState({ checked: event.target.value === 'true' })\n }\n\n handleTagsChanged(value) {\n this.setState({ selectedTags: value })\n }\n\n toggleSendNow = event => {\n const { sendNow, ifTimezone } = this.state\n let currentIfTimezone = ifTimezone\n if (sendNow == false && ifTimezone == true) {\n currentIfTimezone = !ifTimezone\n }\n this.setState({\n sendNow: event.target.value === 'true',\n ifTimezone: currentIfTimezone,\n })\n }\n toggleTimezone = () => {\n this.setState({\n ifTimezone: !this.state.ifTimezone,\n })\n }\n handleDateChange = date => {\n const selectedDate = moment(date)\n this.setState({\n selectedDate,\n })\n }\n\n render() {\n const { classes } = this.props\n const { loaded, selectedDate, name } = this.state\n return (\n
\n
\n \n

Add broadcast

\n
\n
\n
\n
\n

Broadcast name

\n \n
\n \n

\n Choose message for broadcast\n

\n
\n this.handleChangeAtom(label)}/>\n
\n
\n \n

Choose tags

\n this.handleTagsChanged(value)}\n value={this.state.selectedTags}\n disableNew\n style={{\n width: '400px',\n }}\n creatable={false}\n classes={{ select: classes.select }}\n showSwitcher={false}\n />\n
\n {this.state.selectedTags.length > 1 ? (\n \n

Send to

\n \n }\n label=\"Customers that match with only one tag\"\n />\n }\n label=\"Customers that match with all of the tags\"\n />\n \n
\n ) : (\n
\n )}\n\n
\n
\n

Send when

\n \n }\n label=\"Send now\"\n />\n }\n label=\"Schedule date & time\"\n />\n \n
\n
\n {!this.state.sendNow ? (\n
\n
\n \n Set date & time\n \n
\n
\n {!this.state.sendNow && loaded && (\n this.handleDateChange(event)}\n leftArrowIcon={ keyboard_arrow_left }\n rightArrowIcon={ keyboard_arrow_right }\n />\n )}\n
\n \n
\n
\n
\n \n }\n label={`Use user timezone (If disabled, it will use UTC ${this.timeFunc()} timezone)`}\n />\n
\n
\n ) : (\n
\n )}\n
\n \n
\n
\n
\n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n tags: state.tags,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(BroadcastModal),\n ),\n)\n","import React from 'react'\nimport NewBroadcastsList from './components/NewBroadcastsList'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport moment from 'moment'\nimport { loadTags } from '../flowBuilder/api/tag'\nimport { getFlows } from '../flowBuilder/api/flow'\nimport Modal from '../../uiKit/Modal'\nimport BroadcastModal from './components/BroadcastModal'\n\nconst styles = () => ({\n tab: {\n overflowY: 'auto',\n overflowX: 'hidden',\n height: '100%',\n },\n broadcastsList: {\n flexBasis: '100%',\n minWidth: 400,\n paddingRight: '30px',\n },\n paperModal: {\n width: '460px',\n padding: '30px 50px 24px',\n outline: 'none',\n position: 'absolute',\n boxShadow:\n '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: '10px',\n backgroundColor: '#fff',\n },\n})\n\nclass Broadcasts extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n timezone: null,\n activeBot: {},\n selectedDate: null,\n shownDate: null,\n openedBroadcastModal: false,\n }\n\n this.state.selectedDate = !this.state.activeBot.length\n ? moment()\n : moment.utc().utcOffset(this.state.activeBot.timezone)\n this.state.shownDate = !this.state.activeBot.length\n ? moment()\n : moment.utc().utcOffset(this.state.activeBot.timezone)\n }\n\n componentDidMount() {\n loadTags(this.props.match.params.botId)\n getFlows(this.props.match.params.botId)\n }\n\n closeBroadcastModal = () => {\n this.setState({ openedBroadcastModal: false })\n }\n openBroadcastModal = () => {\n this.setState({ openedBroadcastModal: true })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n \n
\n \n \n \n
\n )\n }\n}\n\nBroadcasts.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n tags: state.tags,\n broadcasts: state.broadcasts,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Broadcasts)),\n)\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Input from '../../../../../uiKit/inputs/Input'\nimport { deepCopyFunction } from '../../../../../helpers/deepCopyFunction'\nimport { updateBot } from '../../../../home/api/bots'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\n\nimport { styles } from './styles'\n\nconst NameBlock = ({ classes, activeBot }) => {\n const [botName, setBotName] = useState('')\n\n useEffect(() => {\n setBotName(activeBot.name)\n }, [activeBot])\n\n const handleChangeName = event => {\n setBotName(event.target.value)\n }\n\n const handleUpdate = () => {\n const bot = deepCopyFunction(activeBot)\n bot.name = botName\n\n updateBot(bot)\n }\n\n return (\n
\n Edit chatbot's name\n \n \n
\n )\n}\n\nNameBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(NameBlock))\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n marginTop: 16,\n },\n})\n\nclass Paragraph extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n\nParagraph.propTypes = {\n classes: PropTypes.object,\n style: PropTypes.object,\n}\n\nexport default withRouter(withStyles(styles)(Paragraph))\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport AttributesModal from '../AttributesModal/AttributesModal'\n\nimport { styles } from './styles'\n\nconst AttributeBlock = ({ classes, activeBot }) => {\n const [openAttributeModal, setOpenAttributeModal] = useState(false)\n\n const handleOpenAttributeModal = openAttributeModal => {\n setOpenAttributeModal(openAttributeModal)\n }\n\n return (\n <>\n
\n Chatbot Attributes\n \n Set default values for the attributes. Use them to quickly insert your\n brand's info into a chatbot.\n \n handleOpenAttributeModal(true)}\n />\n
\n\n handleOpenAttributeModal(false)}\n botName={activeBot.name}\n />\n \n )\n}\n\nAttributeBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(AttributeBlock))\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const DownloadIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const UploadIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n\n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { styles } from './styles'\nimport { UploadIcon } from '../icons/UploadIcon'\n\nconst ImportButton = ({ classes, onChange }) => {\n const onInputClick = event => {\n event.target.value = ''\n }\n\n return (\n
\n \n \n
\n )\n}\n\nImportButton.propTypes = {\n classes: PropTypes.object,\n}\nexport default withStyles(styles)(ImportButton)\n","export const styles = () => ({\n input: {\n '& > input': {\n opacity: 0,\n width: 0,\n height: 0,\n position: 'absolute',\n },\n '& > label': {\n cursor: 'pointer',\n fontSize: 14,\n padding: '8px 16px',\n border: '1px solid rgba(22, 88, 243, 1)',\n borderRadius: 4,\n color: 'rgba(22, 88, 243, 1)',\n width: 'fit-content',\n fontWeight: 500,\n backgroundColor: '#ffffff',\n margin: '30px 0px 0px 0px',\n '& > span': {\n margin: '0px 6px 0px 0px',\n },\n },\n },\n})\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n logoutOnRequestOrResponseBlob,\n} from '../../../api'\nimport * as cookie from 'react-cookies'\n\nexport function exportBot(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/export`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n }).then(response => logoutOnRequestOrResponseBlob(response))\n}\n\nexport function uploadBot(botId, file) {\n return fetch(`${BASE_URL}/bot/${botId}/import`, {\n credentials: 'same-origin',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n method: 'POST',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n","export const styles = () => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '24px 0px 0px',\n flexWrap: 'wrap',\n width: 164,\n },\n text: {\n color: 'rgba(53, 64, 82, 1)',\n fontWeight: 700,\n textAlign: 'center',\n },\n subText: {\n color: '#616581',\n textAlign: 'center',\n },\n alert: {\n color: '#FF6666',\n textAlign: 'center',\n },\n body: {\n padding: 30,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n loaderContainer: {\n height: 195,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport Modal from '../../../../../uiKit/Modal'\nimport { uploadBot } from '../../../api/export'\nimport { alertError, alertSuccess } from '../../../../../api'\n\nimport { styles } from './styles'\nimport { getBot } from '../../../../home/api/bots'\nimport LoaderSmall from '../../../../../uiKit/loaders/loaderSmall'\n\nconst UpdateBotModal = ({ classes, open, onClose, activeBot, formData }) => {\n const [loading, setLoading] = useState(false)\n\n const handleUpdate = () => {\n setLoading(true)\n uploadBot(activeBot.id, formData)\n .then(res => {\n setLoading(false)\n onClose()\n if (res?.error?.message) {\n alertError(res?.error?.message)\n } else {\n alertSuccess('Chatbot version is updated successfully.')\n }\n })\n .then(() => {\n getBot(activeBot.id)\n })\n .catch(() => {\n setLoading(false)\n })\n }\n\n const handleClose = () => {\n setLoading(false)\n onClose()\n }\n\n return (\n \n {loading ? (\n
\n \n
\n ) : (\n
\n
\n Are you sure you want to update your content?\n
\n
\n Previous content would be permanently deleted.\n
\n
Create dump before update.
\n
\n \n \n
\n
\n )}\n
\n )\n}\n\nUpdateBotModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UpdateBotModal))\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport moment from 'moment'\n\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport { DownloadIcon } from '../../../../../uiKit/icons/DownloadIcon'\nimport ImportButton from '../../../../../uiKit/ImportButton/ImportButton'\nimport UpdateBotModal from '../UpdateBotModal/UpdateBotModal'\nimport { exportBot } from '../../../api/export'\n\nimport { styles } from './styles'\nimport { alertError, alertSuccess } from '../../../../../api'\nimport LoaderOverlay from '../../../../../uiKit/loaders/loaderOverlay'\n\nconst baseUserImage = '/images/platform/default-user-icon.svg'\n\nconst VersionBlock = ({ classes, activeBot }) => {\n const [openUpdateBotModal, setOpenUpdateBotModal] = useState(false)\n const [formData, setFormData] = useState(null)\n const [loading, setLoading] = useState(false)\n\n const handleExportBot = () => {\n setLoading(true)\n exportBot(activeBot.id)\n .then(blob => {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.style.display = 'none'\n a.href = url\n a.download = `${activeBot.name}_${activeBot?.contentVersion || '1.0'}.zip`\n document.body.appendChild(a)\n a.click()\n window.URL.revokeObjectURL(url)\n alertSuccess('The bot has been exported successfully')\n setLoading(false)\n })\n .catch(() => {\n alertError('An issue has occurred during bot export. Please, ping support.')\n setLoading(false)\n })\n }\n\n const handleUploadBot = event => {\n const file = event.target.files[0]\n\n if (file.type === 'application/zip' || file.type === 'application/x-zip-compressed') {\n const formData = new FormData()\n formData.append('file', file)\n setFormData(formData)\n\n if (event.target.files.length) {\n setOpenUpdateBotModal(true)\n }\n } else {\n alertError('Please, choose .zip file')\n }\n }\n\n const handleUpdateBotModal = openUpdateBotModal => {\n setOpenUpdateBotModal(openUpdateBotModal)\n if (!openUpdateBotModal) {\n setFormData(null)\n }\n }\n\n return (\n <>\n
\n Content version\n Version name:\n
\n {activeBot.name} {activeBot?.contentVersion || '1.0'}\n {loading ? : }\n
\n\n {activeBot?.updatedAt && (\n <>\n Last uploaded: \n
\n {moment(activeBot?.updatedAt)\n .utcOffset(activeBot.timezone * 60 + moment().utcOffset())\n .format('ddd DD MMM, YYYY hh:mm a')}\n
\n \n )}\n\n {activeBot?.updatedByName && (\n <>\n Uploaded by:\n
\n \"user\n
{activeBot?.updatedByName}
\n
\n \n )}\n\n \n
\n\n handleUpdateBotModal(false)} />\n \n )\n}\n\nVersionBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(VersionBlock))\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n text: {\n color: 'rgba(53, 64, 82, 1)',\n fontSize: 18,\n '& > span': {\n cursor: 'pointer',\n margin: '0px 10px',\n },\n },\n userImage: {\n display: 'block',\n width: 32,\n objectFit: 'cover',\n objectPosition: 'top',\n borderRadius: '50%',\n overflow: 'hidden',\n height: 32,\n position: 'relative',\n marginRight: 8,\n border: '1px solid rgba(0, 0, 0, 0.1)',\n },\n userNameContainer: {\n display: 'flex',\n alignItems: 'center',\n marginTop: 8,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport { deleteBot } from '../../../../home/api/bots'\nimport Modal from '../../../../../uiKit/Modal'\n\nimport { styles } from './styles'\n\nconst DeleteBotModal = ({ classes, open, onClose, activeBot }) => {\n return (\n \n \n Are you sure you want to delete a chatbot\n {' ' + activeBot.name}? You\n won't be able to undo this action.\n \n
\n deleteBot(activeBot.id)} title=\"Delete\" />\n \n
\n
\n )\n}\n\nDeleteBotModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(DeleteBotModal))\n","export const styles = () => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '24px 70px',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport DeleteBotModal from '../DeleteBotModal/DeleteBotModal'\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\n\nimport { styles } from './styles'\n\nconst DeleteBotBlock = ({ classes }) => {\n const [openDeleteBotModal, setOpenDeleteBotModal] = useState(false)\n\n const handleOpenDeleteBotModal = openDeleteBotModal => {\n setOpenDeleteBotModal(openDeleteBotModal)\n }\n\n return (\n <>\n
\n Delete Bot\n \n Deleting a bot will destroy the agent with all corresponding data and\n cannot be undone.\n \n handleOpenDeleteBotModal(true)}>\n Delete\n
\n \n\n handleOpenDeleteBotModal(false)}\n />\n \n )\n}\n\nDeleteBotBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(DeleteBotBlock)\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'content-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 28px',\n width: 'max-content',\n fontSize: 14,\n lineHeight: 'normal',\n fontFamily: 'Lato',\n }\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport NameBlock from '../NameBlock/NameBlock'\nimport AttributeBlock from '../AttributeBlock/AttributeBlock'\nimport VersionBlock from '../VersionBlock/VersionBlock'\nimport DeleteBotBlock from '../DeleteBotBlock/DeleteBotBlock'\n\nimport { styles } from './styles'\n\nconst General = ({ classes }) => {\n return (\n
\n \n \n \n \n
\n )\n}\n\nGeneral.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(General)\n","export const styles = () => ({})\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Select from 'react-select'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\n\nclass HoursSpecification extends React.Component {\n render() {\n const { classes, days, type, label, timeList } = this.props\n return (\n
\n this.props.handleSet(type)}\n value={this.props.value}\n checked={this.props.value}\n color=\"primary\"\n />\n }\n label={label.charAt(0).toUpperCase() + label.slice(1)}\n />\n from\n
\n \n time.value ===\n (days && days.startTime != null ? days.startTime : '09:00'),\n )}\n name=\"selected-state\"\n onChange={event =>\n this.props.onChange(event.value, 'startTime', label)\n }\n searchable\n />\n
\n to\n
\n \n time.value ===\n (days && days.endTime != null ? days.endTime : '18:00'),\n )}\n onChange={event =>\n this.props.onChange(event.value, 'endTime', label)\n }\n searchable\n />\n
\n
\n )\n }\n}\n\nHoursSpecification.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(connect(mapStateToProps)(HoursSpecification))\n","export const tomezoneList = [\n { value: -12, label: '(UTC-12:00) Baker Island, Howland Island' },\n { value: -11, label: '(UTC-11:00) Niue, American Samoa' },\n { value: -10, label: '(UTC-10:00) Papeete, Honolulu' },\n { value: -9, label: '(UTC-09:00) French Polynesia' },\n { value: -8, label: '(UTC-08:00) Los Angeles, Vancouver, Tijuana' },\n { value: -7, label: '(UTC-07:00) Phoenix, Calgary, Ciudad Juarez' },\n { value: -6, label: '(UTC-06:00) Chicago, Winnipeg, Mexico City' },\n { value: -5, label: '(UTC-05:00) New York, Toronto, Havana' },\n { value: -4, label: '(UTC-04:00) Santiago, Halifax, Santo Domingo' },\n { value: -3, label: '(UTC-03:00) Buenos Aires, Montevideo, Sao Paulo' },\n { value: -2, label: '(UTC-02:00) South Sandwich Islands' },\n { value: -1, label: '(UTC-01:00) Cape Verde, Azores islands' },\n { value: 0, label: '(UTC+00:00) London, Dublin, Lisbon' },\n { value: 1, label: '(UTC+01:00) Berlin, Paris, Rome' },\n { value: 2, label: '(UTC+02:00) Helsinki, Cairo, Jerusalem' },\n { value: 3, label: '(UTC+03:00) Istanbul, Moscow, Baghdad' },\n { value: 4, label: '(UTC+04:00) Baku, Dubai, Samara' },\n { value: 5, label: '(UTC+05:00) Karachi, Tashkent, Yekaterinburg' },\n { value: 6, label: '(UTC+06:00) Almaty, Dhaka, Omsk' },\n { value: 7, label: '(UTC+07:00) Jakarta, Bangkok, Hanoi' },\n { value: 8, label: '(UTC+08:00) Beijing, Singapore, Kuala Lumpur' },\n { value: 9, label: '(UTC+09:00) Seoul, Tokyo, Yakutsk' },\n { value: 10, label: '(UTC+10:00) Port Moresby, Sydney, Vladivostok' },\n { value: 11, label: '(UTC+11:00) Noumea' },\n { value: 12, label: '(UTC+12:00) Auckland, Suva' },\n { value: 13, label: '(UTC+13:00) Apia' },\n { value: 14, label: '(UTC+14:00) Line Islands' },\n]\nexport const timeList = [\n { value: '00:00', label: '12:00 AM' },\n { value: '00:30', label: '12:30 AM' },\n { value: '01:00', label: '1:00 AM' },\n { value: '01:30', label: '1:30 AM' },\n { value: '02:00', label: '2:00 AM' },\n { value: '02:30', label: '2:30 AM' },\n { value: '03:00', label: '3:00 AM' },\n { value: '03:30', label: '3:30 AM' },\n { value: '04:00', label: '4:00 AM' },\n { value: '04:30', label: '4:30 AM' },\n { value: '05:00', label: '5:00 AM' },\n { value: '05:30', label: '5:30 AM' },\n { value: '06:00', label: '6:00 AM' },\n { value: '06:30', label: '6:30 AM' },\n { value: '07:00', label: '7:00 AM' },\n { value: '07:30', label: '7:30 AM' },\n { value: '08:00', label: '8:00 AM' },\n { value: '08:30', label: '8:30 AM' },\n { value: '09:00', label: '9:00 AM' },\n { value: '09:30', label: '9:30 AM' },\n { value: '10:00', label: '10:00 AM' },\n { value: '10:30', label: '10:30 AM' },\n { value: '11:00', label: '11:00 AM' },\n { value: '11:30', label: '11:30 AM' },\n { value: '12:00', label: '12:00 PM' },\n { value: '12:30', label: '12:30 PM' },\n { value: '13:00', label: '01:00 PM' },\n { value: '13:30', label: '01:30 PM' },\n { value: '14:00', label: '02:00 PM' },\n { value: '14:30', label: '02:30 PM' },\n { value: '15:00', label: '03:00 PM' },\n { value: '15:30', label: '03:30 PM' },\n { value: '16:00', label: '04:00 PM' },\n { value: '16:30', label: '04:30 PM' },\n { value: '17:00', label: '05:00 PM' },\n { value: '17:30', label: '05:30 PM' },\n { value: '18:00', label: '06:00 PM' },\n { value: '18:30', label: '06:30 PM' },\n { value: '19:00', label: '07:00 PM' },\n { value: '19:30', label: '07:30 PM' },\n { value: '20:00', label: '08:00 PM' },\n { value: '20:30', label: '08:30 PM' },\n { value: '21:00', label: '09:00 PM' },\n { value: '21:30', label: '09:30 PM' },\n { value: '22:00', label: '10:00 PM' },\n { value: '22:30', label: '10:30 PM' },\n { value: '23:00', label: '11:00 PM' },\n { value: '23:30', label: '11:30 PM' },\n]\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport Select from 'react-select'\nimport Radio from '@material-ui/core/Radio'\nimport RadioGroup from '@material-ui/core/RadioGroup'\nimport { FormControlLabel } from '@material-ui/core'\nimport { updateBot } from '../../../home/api/bots'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { saveTeamHours } from '../../api/settings'\nimport HoursSpecification from './HoursSpecification'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport { isObjectEmpty } from '../../../../helpers/isObjectEmpty'\nimport Heading from '../../../../uiKit/texts/Heading'\nimport { timeList, tomezoneList } from './hoursOptions'\nimport { alertError } from '../../../../api'\n\nconst styles = theme => ({\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n grayParagraph: {\n fontFamily: 'Lato',\n fontSize: 12,\n color: '#B0B2C0',\n },\n block: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n },\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n width: '400px',\n },\n btn: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid #5A98F7',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: '#5A98F7',\n padding: '8px 16px',\n width: 'max-content',\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 16px',\n width: 'max-content',\n },\n modal: {\n padding: '40px 160px',\n margin: '15% auto' /* 15% from the top and centered */,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n overflowY: 'auto',\n backgroundColor: 'white',\n width: 640,\n },\n dateContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n container: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass Hours extends React.Component {\n state = {\n open: false,\n bot: this.props.activeBot,\n value: false,\n selectValue: this.props.activeBot.timezone,\n supportSettings: {\n weekdays: {\n startTime: '09:00',\n },\n weekends: {},\n enabled: false,\n },\n weekdaysValue: true,\n weekendsValue: false,\n showLoader: true,\n }\n handleOpen = () => {\n this.setState({ open: true })\n }\n handleClose = () => {\n this.setState({ open: false })\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.showLoader && props.activeBot.supportSettings) {\n return {\n supportSettings: JSON.parse(\n JSON.stringify(props.activeBot.supportSettings),\n ),\n weekdaysValue: !!props.activeBot.supportSettings.weekdays,\n weekendsValue: !!props.activeBot.supportSettings.weekends,\n value: props.activeBot.supportSettings.enabled,\n selectedOption: props.activeBot.timezone,\n showLoader: false,\n }\n }\n\n if (\n state.showLoader &&\n !isObjectEmpty(props.activeBot) &&\n !props.activeBot.supportSettings\n ) {\n return {\n showLoader: false,\n selectedOption: props.activeBot.timezone,\n }\n }\n return null\n }\n\n handleChange(value, name) {\n const bot = JSON.parse(JSON.stringify(this.state.bot))\n bot[name] = value\n this.setState({\n bot,\n })\n }\n\n handleSet(name) {\n if (\n (name === 'weekdaysValue' && this.state.weekendsValue) ||\n (name === 'weekendsValue' && this.state.weekdaysValue) ||\n (!this.state.weekendsValue && !this.state.weekdaysValue)\n ) {\n this.setState({\n [name]: !this.state[name],\n })\n }\n }\n\n updateTimezone(value) {\n const bot = JSON.parse(JSON.stringify(this.props.activeBot))\n bot.timezone = value\n updateBot(bot)\n }\n\n updateTime(value, type, days) {\n const supportSettings = JSON.parse(\n JSON.stringify(this.state.supportSettings),\n )\n if (supportSettings[days] == null) {\n supportSettings[days] = {}\n }\n supportSettings[days][type] = value\n this.setState({\n supportSettings,\n })\n }\n\n saveHours() {\n const supportSettings = this.state.supportSettings\n if (!this.state.weekdaysValue) {\n supportSettings.weekdays = null\n } else {\n supportSettings.weekdays = this.hoursConverter(supportSettings.weekdays)\n\n if (\n supportSettings.weekdays.startTime > supportSettings.weekdays.endTime\n ) {\n alertError(\n 'Invalid weekdays hours. \"From time\" should be less than \"to time\".',\n )\n return\n }\n }\n if (!this.state.weekendsValue) {\n supportSettings.weekends = null\n } else {\n supportSettings.weekends = this.hoursConverter(supportSettings.weekends)\n\n if (\n supportSettings.weekends.startTime > supportSettings.weekends.endTime\n ) {\n alertError(\n 'Invalid weekends hours. \"From time\" should be less than \"to time\".',\n )\n return\n }\n }\n supportSettings.enabled = this.state.value\n saveTeamHours(this.props.activeBot.id, supportSettings)\n const bot = JSON.parse(JSON.stringify(this.props.activeBot))\n bot.supportSettings = supportSettings\n updateBot(bot)\n }\n\n hoursConverter = date => {\n let dateCopy = Object.assign({}, date)\n if (date == null) {\n dateCopy = {}\n }\n if (dateCopy.startTime == null) {\n dateCopy.startTime = '09:00'\n }\n if (dateCopy.endTime == null) {\n dateCopy.endTime = '18:00'\n }\n\n return dateCopy\n }\n\n render() {\n const { classes } = this.props\n const radio = (\n \n )\n return (\n
\n {this.state.showLoader ? (\n \n \n
\n ) : (\n
\n \n
\n Team Hours\n

\n Set online working hours for your team of customer supports\n

\n \n Choose a preferable timezone\n

\n
\n opt.value === this.props.activeBot.timezone,\n )}\n name=\"selected-state\"\n onChange={event => this.updateTimezone(event.value)}\n searchable\n />\n
\n
\n \n Schedule working hours\n

\n
\n {\n const values = e.target.value === 'true'\n this.setState({\n value: values,\n weekdaysValue: !this.props.activeBot.supportSettings\n .enabled\n ? true\n : !!this.props.activeBot.supportSettings.weekdays,\n })\n }}>\n \n \n \n }\n />\n
\n {this.state.value && this.state.supportSettings && (\n
\n this.handleSet(value)}\n value={this.state.weekdaysValue}\n type=\"weekdaysValue\"\n label=\"weekdays\"\n onChange={(value, type, days) =>\n this.updateTime(value, type, days)\n }\n />\n this.handleSet(value)}\n value={this.state.weekendsValue}\n type=\"weekendsValue\"\n label=\"weekends\"\n onChange={(value, type, days) =>\n this.updateTime(value, type, days)\n }\n />\n
\n )}\n this.saveHours()}\n title=\"Save\"\n styles={{ marginTop: 8 }}\n />\n
\n
\n

\n Preview of Offline Customer Support Mode\n

\n

\n This flow will be sent to users in case of none of customer\n supports are online. If you want to edit it, go to Flows\n section.\n

\n {/* todo link for flow with underline */}\n \n
\n \n )}\n \n )\n }\n}\n\nHours.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Hours)),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport {\n Checkbox,\n FormControlLabel,\n Popover,\n withStyles,\n} from '@material-ui/core'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\n\nconst styles = theme => ({\n levelItem: {\n padding: 24,\n display: 'flex',\n justifyContent: 'space-between',\n borderTop: '1px solid #EBEBEF',\n },\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#3A3F62',\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 10,\n color: '#B0B2C0',\n marginBottom: 0,\n marginTop: 5,\n },\n submenu: {\n fontSize: 12,\n fontFamily: 'Lato',\n color: '#3A3F62',\n marginBottom: 0,\n marginTop: 2,\n },\n tab: {\n flexBasis: '33%',\n fontSize: 14,\n fontFamily: 'Lato',\n color: '#616581',\n textAlign: 'center',\n padding: '12px 0',\n cursor: 'pointer',\n },\n activeTab: {\n flexBasis: '33%',\n fontSize: 14,\n fontFamily: 'Lato',\n color: '#1658F3',\n textAlign: 'center',\n padding: '12px 0',\n cursor: 'pointer',\n },\n tabs: {\n display: 'flex',\n justifyContent: 'space-around',\n borderBottom: '1px solid #EBEBEF',\n },\n popover: {\n width: 300,\n },\n tabContainer: {\n padding: '16px',\n borderBottom: '1px dashed #EBEBEF',\n },\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n fontWeight: 300,\n },\n})\n\nclass CustomPopover extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: false,\n menuItem: null,\n }\n }\n\n functionValidURL = str => {\n try {\n new URL(str)\n return true\n } catch (_) {\n return false\n }\n }\n\n toggle = value => {\n this.setState({\n open: value,\n })\n }\n\n submitItem = () => {\n const menuItem = this.state.menuItem\n menuItem.titles = this.props.menuItem.titles\n if (menuItem.type === 'web_url' && !this.functionValidURL(menuItem.url)) {\n this.setState({\n invalidUrl: true,\n })\n } else {\n if (this.state.invalidUrl) {\n this.setState({\n invalidUrl: false,\n })\n }\n switch (menuItem.type) {\n case 'web_url': {\n delete menuItem.payload\n delete menuItem.callToActions\n break\n }\n case 'postback': {\n delete menuItem.url\n delete menuItem.callToActions\n break\n }\n }\n this.props.onClose()\n this.props.onUpdate(menuItem)\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.menuItem === null && props.menuItem !== null) {\n return {\n menuItem: props.menuItem,\n }\n }\n }\n\n handleChange = (name, value) => {\n const item = JSON.parse(JSON.stringify(this.state.menuItem))\n item[name] = value\n this.setState({\n menuItem: item,\n })\n }\n\n render() {\n const { classes, open, rtl } = this.props\n const { menuItem, invalidUrl } = this.state\n return (\n {\n this.props.onClose()\n }}\n anchorEl={this.props.anchorEl}\n anchorReference=\"anchorEl\"\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n PaperProps={{\n style: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.222685)',\n borderRadius: 10,\n overflow: 'visible',\n },\n }}>\n
\n
\n {\n this.handleChange('title', event.target.value)\n }}\n handleKeyPress={e => {\n if (e.charCode === 13) {\n this.submitItem()\n }\n }}\n maxLength={30}\n />\n
\n
\n
\n
\n this.handleChange('type', 'postback')}>\n Postback\n
\n this.handleChange('type', 'web_url')}>\n URL\n
\n
\n {menuItem.type === 'postback' && (\n
\n this.handleChange('payload', label)}/>\n
\n )}\n {menuItem.type === 'web_url' && (\n
\n \n this.handleChange('url', event.target.value)\n }\n handleKeyPress={event =>\n this.handleChange('url', event.target.value)\n }\n maxLength={90}\n />\n {invalidUrl && (\n

\n URL is invalid\n

\n )}\n {\n this.handleChange(\n 'enableMessengerExtensions',\n !menuItem.enableMessengerExtensions,\n )\n }}\n value=\"messengerExtensions\"\n color=\"primary\"\n />\n }\n label=\"Open in Messenger\"\n />\n
\n )}\n
\n \n
\n
\n \n \n \n )\n }\n}\n\nCustomPopover.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(CustomPopover),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport CustomPopover from './CustomPopover'\nimport { TrashIcon } from '../../../../uiKit/icons/Icons'\nimport { getBotLanguages } from '../../api/settings'\n\nconst styles = theme => ({\n levelItem: {\n padding: 24,\n display: 'flex',\n justifyContent: 'space-between',\n borderTop: '1px solid #EBEBEF',\n cursor: 'pointer',\n position: 'relative',\n },\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#3A3F62',\n marginRight: 8,\n },\n rtlTitle: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#3A3F62',\n marginRight: 8,\n unicodeBidi: 'bidi-override',\n direction: 'rtl',\n },\n submenu: {\n fontSize: 12,\n fontFamily: 'Lato',\n color: '#3A3F62',\n marginBottom: 0,\n marginTop: 2,\n },\n tab: {\n width: 100,\n fontSize: 14,\n fontFamily: 'Lato',\n color: '#1658F3',\n textAlign: 'center',\n padding: '12px 0',\n },\n tabs: {\n display: 'flex',\n },\n popover: {\n width: 300,\n },\n tabContainer: {\n padding: '24px 16px',\n },\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n fontWeight: 300,\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 10,\n color: '#B0B2C0',\n margin: '5px 0 0',\n overflow: 'hidden',\n },\n '@global': {\n '.editMenu': {\n color: '#3A3F62',\n },\n '.editMenu svg path': {\n stroke: '#3A3F62',\n },\n '.editMenu:hover': {\n color: '#1658F3',\n },\n '.editMenu:hover svg path': {\n stroke: '#1658F3',\n },\n '.item .deleteIcon': {\n display: 'none',\n },\n '.item:hover .deleteIcon': {\n display: 'block',\n position: 'absolute',\n right: -20,\n top: 15,\n },\n },\n})\n\nclass MenuItem extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n rtl: null,\n activeLanguages: null,\n open: false,\n menuItem: null,\n }\n }\n\n componentDidMount() {\n getBotLanguages(this.props.activeBot.id).then(({activeLanguages}) => {\n this.setState({activeLanguages})\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.selectedLanguageOption.value !== this.props.selectedLanguageOption.value || this.state.rtl == null) {\n const rtl = this.isRtl(this.props.selectedLanguageOption, this.state.activeLanguages)\n this.setState({rtl})\n }\n }\n\n isRtl(selectedLanguage, botLanguages) {\n return botLanguages != null && botLanguages.find(language => language.shortName === selectedLanguage.value).isRtl\n }\n\n toggle = value => {\n this.setState({\n open: value,\n })\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.menuItem === null && props.menuItem !== null) {\n return {\n menuItem: props.menuItem,\n open: props.defaultOpen === props.index,\n }\n }\n if (props.defaultOpen === props.index && !state.open) {\n props.setDefault()\n return {\n open: props.defaultOpen === props.index,\n }\n }\n return null\n }\n\n function(obj) {\n let size = 0\n let key\n for (key in obj) {\n if (obj.hasOwnProperty(key)) size++\n }\n return size\n }\n\n render() {\n const { classes, index, menuItem } = this.props\n const { open } = this.state\n return (\n
\n {\n this.itemRef = node\n }}\n onClick={() => {\n this.toggle(true)\n }}>\n
{menuItem.title}
\n {menuItem.type === 'postback' && (\n

{menuItem.payload}

\n )}\n {menuItem.type === 'web_url' && (\n

{menuItem.url}

\n )}\n
\n {\n this.props.deleteItem(index)\n e.stopPropagation()\n }}>\n \n \n
\n
\n {\n this.toggle(false)\n }}\n menuItem={menuItem}\n anchorEl={this.itemRef}\n handleChange={(name, value) => this.handleChange(name, value)}\n onUpdate={menuItem => this.props.onUpdate(menuItem)}\n rtl = {this.state.rtl}\n />\n {/* //TODO check if title has changed */}\n \n )\n }\n}\n\nMenuItem.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(MenuItem),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport MenuItem from './MenuItem'\n\nconst styles = theme => ({\n level: {\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n width: 300,\n height: 'max-content',\n },\n levelHide: {\n width: 300,\n },\n heading: {\n width: '100%',\n padding: '16px 0',\n textAlign: 'center',\n fontWeight: 'bold',\n lineHeight: 'normal',\n fontSize: 14,\n color: '#3A3F62',\n fontFamily: 'Lato',\n },\n addSubmenu: {\n padding: 24,\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#B0B2C0',\n cursor: 'pointer',\n borderTop: '1px dashed #EBEBEF',\n },\n icon: {\n position: 'absolute',\n top: 10,\n left: 24,\n cursor: 'pointer',\n },\n '@global': {\n '.addMenu:hover': {\n color: '#616581',\n },\n },\n})\n\nclass Level extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: null,\n }\n }\n\n updateItem = (item, index) => {\n this.props.updateMenu(item, index)\n }\n\n addItem() {\n this.props.addMenuitem({\n callToActions: [],\n enableMessengerExtensions: false,\n payload: 'Welcome message',\n title: 'Menu Item',\n type: 'postback',\n url: null,\n webViewHeightRatio: null,\n })\n\n setTimeout(() => {\n this.setState({\n open: this.props.item.callToActions.length - 1,\n })\n }, 300)\n }\n\n setDefault = () => {\n this.setState({\n open: null,\n })\n }\n\n render() {\n const { classes, item } = this.props\n const { open } = this.state\n return (\n
\n
\n {item == null ? (\n
\n ) : (\n
\n
{'Menu'}
\n {item.callToActions &&\n item.callToActions.map((callToAction, index) => (\n {\n this.updateItem(item, index)\n }}\n setDefault={this.setDefault}\n index={index}\n deleteItem={index => this.props.deleteItem(index)}\n defaultOpen={open}\n selectedLanguageOption = {this.props.selectedLanguageOption}\n />\n ))}\n {item.callToActions !== undefined && (\n this.addItem()}>\n + Click here to add a menu item\n
\n )}\n
\n )}\n
\n
\n )\n }\n}\n\nLevel.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Level)),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Level from './Level'\nimport {\n updateBotPersistentMenu,\n getBotPersistentMenu,\n} from '../../../home/api/bots'\nimport { setActiveBot } from '../../../home/actions/activeBot'\nimport { getFlows } from '../../../flowBuilder/api/flow'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport Heading from '../../../../uiKit/texts/Heading'\nimport { getBotLanguages } from '../../api/settings'\nimport Select from 'react-select'\n\nconst styles = theme => ({\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n headerSelectorAndButton: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minWidth: '40%',\n height: '100%',\n },\n containerLevels: {\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n },\n})\n\nclass PersistentMenu extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n persistentMenu: null,\n selectedLanguageOption: {\n value: 'EN',\n label: 'English',\n },\n }\n }\n\n componentDidMount() {\n //TODO change get Menu depend's to messenger configs\n if (this.props.flows.length === 0) {\n getFlows(this.props.match.params.botId)\n }\n getBotPersistentMenu(\n this.props.activeBot.id,\n this.state.selectedLanguageOption.value,\n persistentMenu => {\n this.updatePersistentMenu(persistentMenu)\n this.setLanguageOptions(this.props.match.params.botId)\n },\n )\n }\n\n updatePersistentMenu = persistentMenu => {\n const bot = JSON.parse(JSON.stringify(this.props.activeBot))\n bot.persistentMenu = persistentMenu\n this.setState(\n {\n persistentMenu: persistentMenu,\n },\n () => {\n setActiveBot(bot)\n },\n )\n }\n\n setLanguageOptions = botId => {\n getBotLanguages(this.props.activeBot.id).then(botLanguages => {\n if (botLanguages.defaultLanguage) {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n }\n })\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: selectedOption,\n })\n }\n })\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.activeBot.persistentMenu && state.persistentMenu === null) {\n return {\n persistentMenu: JSON.parse(\n JSON.stringify(props.activeBot.persistentMenu),\n ),\n }\n }\n if (!props.activeBot.persistentMenu && state.persistentMenu === null) {\n return {\n persistentMenu: {\n callToActions: [],\n },\n }\n }\n return null\n }\n\n handleUpdatePersistentMenu = value => {\n this.setState({\n persistentMenu: value,\n })\n }\n\n updateMenu = (item, index) => {\n const menu = JSON.parse(JSON.stringify(this.state.persistentMenu))\n menu.callToActions[index] = item\n this.handleUpdatePersistentMenu(menu)\n }\n\n deleteItem = index => {\n const menu = JSON.parse(JSON.stringify(this.state.persistentMenu))\n menu.callToActions.splice(index, 1)\n this.handleUpdatePersistentMenu(menu)\n }\n\n addMenuItem = item => {\n const menu = JSON.parse(JSON.stringify(this.state.persistentMenu))\n menu.callToActions.push(item)\n this.handleUpdatePersistentMenu(menu)\n }\n\n onUpdatePersistentMenu = () => {\n const { persistentMenu } = this.state\n persistentMenu.locale = 'default'\n updateBotPersistentMenu(\n this.props.match.params.botId,\n this.state.selectedLanguageOption.value,\n persistentMenu,\n )\n }\n\n handleSelectedLanguage = languageOption => {\n this.setState(\n {\n selectedLanguageOption: languageOption,\n },\n () => {\n getBotPersistentMenu(\n this.props.activeBot.id,\n this.state.selectedLanguageOption.value,\n this.updatePersistentMenu,\n )\n },\n )\n }\n\n render() {\n const { classes } = this.props\n const { persistentMenu } = this.state\n return (\n
\n
\n
\n Main Menu\n

\n The main menu allows users to access the core functionality of\n your bot (e.g. Customer Support, Help, FAQ and others).\n

\n
\n
\n {persistentMenu != null ? (\n
\n this.addMenuItem(item)}\n updateMenu={(item, index) => this.updateMenu(item, index)}\n deleteItem={index => this.deleteItem(index)}\n selectedLanguageOption = {this.state.selectedLanguageOption}\n />\n
\n ) : (\n \n \n
\n )}\n\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n )\n }\n}\n\nPersistentMenu.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n flows: state.flows,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(PersistentMenu),\n ),\n)\n","/* eslint-disable */\nimport React from 'react'\n\nclass FacebookIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default FacebookIcon\n","/**\n * Created by Admin on 20.03.2018.\n */\nimport React from 'react'\nimport IconButton from '@material-ui/core/IconButton'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport Menu from '@material-ui/core/Menu'\nimport MoreVertIcon from '@material-ui/icons/MoreVert'\n\nconst ITEM_HEIGHT = 48\n\nclass ParamsList extends React.Component {\n state = {\n anchorEl: null,\n }\n\n handleClick = event => {\n this.setState({ anchorEl: event.currentTarget })\n }\n\n handleClose(option) {\n this.props.addParam('' + option + '}}')\n this.setState({ anchorEl: null })\n }\n\n getTopPosition() {\n return -427 + this.props.pos.top + this.props.pos.height / 2 + 'px'\n }\n\n getLeftPosition() {\n return -16 + this.props.pos.left + this.props.pos.width / 2 + 'px'\n }\n\n render() {\n const { anchorEl } = this.state\n\n return (\n
\n \n \n \n this.props.onClose()}\n PaperProps={{\n style: {\n maxHeight: ITEM_HEIGHT * 4.5,\n width: 200,\n },\n }}\n style={{ top: this.getTopPosition(), left: this.getLeftPosition() }}>\n {this.props.options.map(option => (\n this.handleClose(option.name)}>\n {option.name}\n \n ))}\n \n
\n )\n }\n}\n\nexport default ParamsList\n","/**\n * Created by Admin on 19.03.2018.\n */\nimport React from 'react'\n\nimport './Params.css'\nimport ParamsList from './ParamsList'\nimport { connect } from 'react-redux'\n\nclass Params extends React.Component {\n state = {\n show: false,\n }\n\n componentDidMount() {\n const ua = window.navigator.userAgent.toLowerCase()\n const isIE = !!ua.match(/msie|trident\\/7|edge/)\n const isWinPhone = ua.indexOf('windows phone') !== -1\n const isIOS = !isWinPhone && !!ua.match(/ipad|iphone|ipod/)\n\n this.setState({ isIE: isIE })\n\n if (isIOS) {\n this.highlights.css({\n 'padding-left': '+=3px',\n 'padding-right': '+=3px',\n })\n }\n this.highlights.innerHTML = this.applyHighlights(this.textarea.value)\n }\n\n applyHighlights(text) {\n text = text\n .replace(/\\n$/g, '\\n\\n')\n .replace(/{{[^{]*?}}/g, '$&')\n if (this.state.isIE) {\n text = text.replace(/ /g, ' ')\n }\n return text\n }\n\n handleScroll(elem) {\n this.backdrop.scrollTop = elem.scrollTop\n this.backdrop.scrollLeft = elem.scrollLeft\n }\n\n addParam(param) {\n const text = '' + this.props.value\n this.props.onChange(\n text.slice(0, this.state.pos) + param + text.slice(this.state.pos),\n )\n this.setState({ show: false })\n }\n\n componentDidUpdate() {\n this.highlights.innerHTML = this.applyHighlights(this.textarea.value)\n }\n\n render() {\n return (\n
\n {/**/}\n \n {\n this.backdrop = div\n }}>\n {\n this.highlights = div\n }}\n />\n
\n this.props.onChange(event.target.value)}\n onScroll={event => this.handleScroll(event.target)}\n ref={textarea => {\n this.textarea = textarea\n }}\n />\n {this.props.params != null && (\n this.addParam(param)}\n show={this.state.show}\n onClose={() => this.setState({ show: false })}\n pos={this.textarea ? this.textarea.getBoundingClientRect() : {}}\n />\n )}\n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({})\n\nexport default connect(mapStateToProps)(Params)\n","/**\n * Created by Admin on 13.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Params from '../../../../../uiKit/inputs/Params'\n\nconst styles = theme => ({\n paramList: {\n display: 'flex',\n margin: '8px 0 16px',\n },\n param: {\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n borderRadius: 10,\n padding: '8px 14px',\n marginRight: 8,\n fontSize: 14,\n },\n})\n\nconst params = [\n {\n id: -1,\n name: 'user_first_name',\n },\n {\n id: -2,\n name: 'user_last_name',\n },\n {\n id: -3,\n name: 'user_full_name',\n },\n]\n\nconst GreetingText = ({ classes, onChange, text, activeBot }) => (\n
\n
\n {params.map(param => (\n
\n {'{{' + param.name + '}}'}\n
\n ))}\n
\n onChange(value)}\n value={text}\n placeholder=\"Hello, this is a basic example of greeting text of your bot which will be displayed here.\"\n ifGreeting={true}\n bot={activeBot}\n params={params}\n />\n
\n)\n\nGreetingText.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(GreetingText),\n ),\n)\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { updateGreetingText } from '../../../../home/api/bots'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport GreetingText from './GreetingText'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport { setActiveBot } from '../../../../home/actions/activeBot'\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n flexDirection: 'row',\n borderTop: '1px solid #EBEBEB',\n paddingTop: 24,\n justifyContent: 'space-between',\n },\n content: {},\n heading: {\n fontSize: 16,\n color: theme.palette.text.header,\n marginBottom: 8,\n fontFamily: 'Lato, sans-serif',\n lineHeight: 1,\n },\n paragraph: {\n fontFamily: 'Lato, sans-serif',\n fontSize: 14,\n color: theme.palette.primary.text,\n lineHeight: '18px',\n },\n block: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n },\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n width: '400px',\n },\n btn: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid #5A98F7',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: '#5A98F7',\n padding: '8px 16px',\n width: 'max-content',\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 16px',\n width: 'max-content',\n },\n modal: {\n padding: '40px 160px',\n margin: '15% auto' /* 15% from the top and centered */,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n overflowY: 'auto',\n backgroundColor: 'white',\n width: 640,\n },\n img: {\n width: '100%',\n maxWidth: '100%',\n position: 'relative',\n top: 50,\n },\n imgHolder: {\n flexBasis: '30%',\n display: 'flex',\n justifyContent: 'flex-end',\n },\n})\n\nclass Greeting extends React.Component {\n state = {\n changed: false,\n }\n handleOpen = () => this.setState({ open: true })\n handleClose = () => this.setState({ open: false })\n handleChangeGreetingText = value => {\n const bot = JSON.parse(JSON.stringify(this.state.bot))\n bot.greetingText = value\n this.setState({ bot, changed: true })\n }\n handleUpdate = () => {\n const { bot } = this.state\n const { activeBot } = this.props\n\n updateGreetingText(bot.id, bot.greetingText, () => {\n this.setState({ changed: false })\n activeBot.greetingText = bot.greetingText\n setActiveBot(bot)\n })\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (!prevState.changed)\n return {\n bot: nextProps.activeBot,\n }\n return null\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n
\n

Set the Greeting Text

\n \n The greeting text of your bot's Messenger profile allows you to\n specify the message people will see on the welcome screen of your\n bot. You can personalize the greeting text using the person's\n name. You can use the following template strings:\n \n
\n {\n this.handleChangeGreetingText(value)\n }}\n />\n \n
\n
\n \n {/*\"\"*/}\n
\n
\n )\n }\n}\n\nGreeting.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Greeting),\n)\n","import { store } from '../../../index'\n\nexport const SAVE_FACEBOOK_PAGES = 'SAVE_FACEBOOK_PAGES'\n\nexport const saveFacebookPages = facebookPages => {\n store.dispatch({\n type: SAVE_FACEBOOK_PAGES,\n facebookPages,\n })\n}\n","import { saveFacebookPages } from '../actions/settingsPages'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\n\nexport function getFacebookPages(botId, accessToken, callback, token) {\n fetch(\n // eslint-disable-next-line max-len\n `https://graph.facebook.com/v3.1/me?access_token=${accessToken}&fields=accounts{id,access_token,name,picture{url},is_webhooks_subscribed}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(token),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.ok)\n return response.redirected\n ? (window.location.href = response.url)\n : response.json()\n })\n .then(json => {\n saveFacebookPages(json.accounts.data)\n })\n .then(() => {\n if (callback) callback()\n })\n .catch(function(error) {\n alertError('Pages displaying error')\n })\n}\n\nexport function exchangeShortLiveUserTokenToLongLive(accessToken) {\n return fetch(\n `${BASE_URL}/facebook/exchange/token?accessToken=${accessToken}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n ).then(response => {\n if (response.ok)\n return response.redirected\n ? (window.location.href = response.url)\n : response.json()\n })\n}\n\nexport function subscribePage(\n botId,\n id,\n accessToken,\n pageName,\n callback,\n offLoader,\n token,\n) {\n fetch(`${BASE_URL}/facebook/${botId}/subscribePage`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(token),\n method: 'POST',\n body: JSON.stringify({ id, accessToken, pageName }),\n }).then(response => {\n if (response.ok) callback(false)\n else if (response.status === 500) {\n response.json().then(text => alertError(text.message))\n offLoader()\n }\n return response.redirected\n ? (window.location.href = response.url)\n : response\n })\n}\n\nexport function unsubscribePage(\n botId,\n id,\n accessToken,\n callback,\n offLoader,\n token,\n) {\n fetch(`${BASE_URL}/facebook/${botId}/unsubscribePage`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(token),\n method: 'POST',\n body: JSON.stringify({ id, accessToken }),\n }).then(response => {\n if (response.ok) callback(true)\n else if (response.status === 500) {\n offLoader()\n response.json().then(text => alertError(text.message))\n }\n return response.redirected\n ? (window.location.href = response.url)\n : response\n })\n}\n\nexport function getFacebookAppId() {\n return fetch(`${BASE_URL}/configs/facebook`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n }).then(response => logoutOnRequestOrResponseJson(response))\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport {\n getFacebookPages,\n subscribePage,\n unsubscribePage,\n} from '../../../api/facebook'\nimport { alertSuccess } from '../../../../../api'\nimport { setActiveBot } from '../../../../home/actions/activeBot'\nimport LoaderSmall from '../../../../../uiKit/loaders/loaderSmall'\n//TODO: pagination\n// import Pagination from \"../../nlp/Pagination\";\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n pageItem: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottom: '1px solid #EBEBEB',\n padding: '16px 0',\n // '&:first-of-type': {\n // paddingTop: 3 //3px coz it should be 24px according to the design, tab-top itself has 21\n // },\n '&:last-of-type': {\n // borderBottom: 'none',\n // paddingBottom: 21, //uncomment this after adding pagination to the pages\n // paddingBottom: 0\n },\n },\n pageInfo: {\n display: 'flex',\n alignItems: 'center',\n },\n pageImg: {\n width: '40px',\n height: '40px',\n marginRight: '16px',\n borderRadius: 100,\n },\n pageName: {\n color: '#3A3F62',\n fontSize: '14px',\n lineHeight: '17px',\n fontWeight: '500',\n fontFamily: 'Lato, \"sans-serif\"',\n },\n connectedStatus: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#43C692',\n marginRight: '24px',\n },\n connectedAnother: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#3A3F62',\n marginRight: '24px',\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass FacebookPage extends React.Component {\n updateFacebookData = subscribe => {\n const newBot = JSON.parse(JSON.stringify(this.props.activeBot))\n if (!subscribe) {\n newBot.messengerConfigs.pageId = this.props.page.id\n newBot.messengerConfigs.accessToken = this.props.page.access_token\n setActiveBot(newBot)\n }\n if (\n subscribe &&\n this.props.activeBot.messengerConfigs.pageId == this.props.page.id\n ) {\n newBot.messengerConfigs.pageId = null\n newBot.messengerConfigs.accessToken = null\n setActiveBot(newBot)\n }\n getFacebookPages(this.props.activeBot.id, this.props.token, () => {\n this.setState(\n {\n showLoader: false,\n },\n () => {\n alertSuccess(\n `Page ${subscribe ? 'unsubscribed' : 'subscribed'} successfully`,\n )\n },\n )\n })\n }\n\n handleRequest = (subscribe, botId, pageId, pageToken, pageName) => {\n this.setState(\n {\n showLoader: true,\n },\n () => {\n subscribe\n ? subscribePage(\n botId,\n pageId,\n pageToken,\n pageName,\n this.updateFacebookData,\n this.handleLoader,\n )\n : unsubscribePage(\n botId,\n pageId,\n pageToken,\n this.updateFacebookData,\n this.handleLoader,\n )\n },\n )\n }\n\n handleLoader = () => {\n this.setState({\n showLoader: false,\n })\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n showLoader: false,\n }\n }\n\n render() {\n const { classes, page, activeBot, disabled } = this.props\n const { showLoader } = this.state\n return (\n
\n
\n {page.picture && (\n \n )}\n {page.name}\n
\n {showLoader ? (\n \n ) : (\n
\n {page.is_webhooks_subscribed ? (\n
\n {page.id == activeBot.messengerConfigs.pageId ? (\n \n ✓ Connected!\n \n ) : (\n \n Connected to another bot\n \n )}\n \n this.handleRequest(\n false,\n activeBot.id,\n page.id,\n page.access_token,\n )\n }\n />\n
\n ) : (\n
\n {!disabled && (\n {\n e.stopPropagation()\n this.handleRequest(\n true,\n activeBot.id,\n page.id,\n page.access_token,\n page.name,\n )\n }}\n />\n )}\n
\n )}\n
\n )}\n
\n )\n }\n}\n\nFacebookPage.propTypes = {\n classes: PropTypes.object,\n settingsPages: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n settingsPages: state.settingsPages,\n activeBot: state.activeBot,\n token: state.token,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(FacebookPage),\n ),\n)\n","import { store } from '../../../index'\n\nexport const SAVE_FACEBOOK_TOKEN = 'SAVE_FACEBOOK_TOKEN'\n\nexport const saveFacebookToken = token => {\n store.dispatch({\n type: SAVE_FACEBOOK_TOKEN,\n token,\n })\n}\n","import React from 'react'\nimport TabTemplate from '../../../../../uiKit/TabTemplate'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport FacebookIcon from '../../../../../uiKit/icons/FacebookIcon'\nimport FacebookLogin from 'react-facebook-login/dist/facebook-login-render-props'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport Greeting from '../greeting/Greeting'\nimport FacebookPage from './FacebookPage'\nimport {\n exchangeShortLiveUserTokenToLongLive,\n getFacebookAppId,\n getFacebookPages,\n} from '../../../api/facebook'\nimport { getBot } from '../../../../home/api/bots'\nimport Pagination from '../../../../../uiKit/table/Pagination'\nimport { saveFacebookToken } from '../../../actions/facebookToken'\nimport { alertError } from '../../../../../api'\nimport { getFacebookLoggedIn, saveFacebookLoggedIn } from './FacebookConfig'\n\n//TODO: pagination\n// import Pagination from \"../../nlp/Pagination\";\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n pageItem: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottom: '1px solid #EBEBEB',\n padding: '16px 0',\n '&:first-of-type': {\n paddingTop: 3, //3px coz it should be 24px according to the design, tab-top itself has 21\n },\n '&:last-of-type': {\n borderBottom: 'none',\n // paddingBottom: 21, //uncomment this after adding pagination to the pages\n paddingBottom: 0,\n },\n },\n pageInfo: {\n display: 'flex',\n alignItems: 'center',\n },\n pageImg: {\n width: '40px',\n height: '40px',\n marginRight: '16px',\n borderRadius: 100,\n },\n pageName: {\n color: '#3A3F62',\n fontSize: '14px',\n lineHeight: '17px',\n fontWeight: '500',\n fontFamily: 'Lato, \"sans-serif\"',\n },\n connectedStatus: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#43C692',\n marginRight: '24px',\n },\n connectedAnother: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#3A3F62',\n marginRight: '24px',\n },\n wrapPagination: {\n display: 'flex',\n justifyContent: 'flex-end',\n // borderBottom:`1px solid ${theme.palette.primary.grayColor}`\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass Facebook extends React.Component {\n handleChangePage = (event, page) => {\n this.setState({ page })\n }\n\n processFacebookCredentialsAndGetFacebookPages = userFacebookAccessToken => {\n saveFacebookToken(userFacebookAccessToken)\n saveFacebookLoggedIn(true)\n getFacebookPages(this.props.match.params.botId, userFacebookAccessToken)\n }\n\n processUserAccessToken(accessToken) {\n if (accessToken) {\n exchangeShortLiveUserTokenToLongLive(accessToken)\n .then(response => {\n this.processFacebookCredentialsAndGetFacebookPages(\n response.accessToken,\n )\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n }\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n page: 0,\n facebookAppId: null,\n rowsPerPage: 10,\n }\n }\n\n componentDidMount() {\n const facebookLoggedIn = getFacebookLoggedIn()\n getFacebookAppId().then(response => {\n this.setState({\n facebookLoggedIn: facebookLoggedIn,\n facebookAppId: response.appId,\n })\n })\n getBot(this.props.activeBot.id)\n }\n\n render() {\n const {\n classes,\n derivedClasses,\n settingsPages,\n activeBot,\n expanded,\n handleChangeExpansion,\n } = this.props\n const { page, rowsPerPage, facebookAppId } = this.state\n return (\n
\n ,\n description: 'Connect the chatbot to your Facebook page',\n }}\n button={{\n type: 'sm',\n title: 'Create new Facebook page',\n onClick: e => {\n window.open('https://www.facebook.com/pages/creation', '_blank')\n e.stopPropagation()\n },\n }}\n expanded={expanded}\n onChange={handleChangeExpansion}>\n
\n {!settingsPages.facebookPages ? (\n
\n {facebookAppId === null ? null : (\n
\n

\n Sign in to Facebook to be able to connect your chatbot\n

\n
\n \n this.processUserAccessToken(accessToken)\n }\n scope=\"manage_pages,pages_messaging\"\n render={renderProps => (\n \n )}\n />\n
\n
\n )}\n
\n ) : (\n
\n {settingsPages.facebookPages\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map(page => (\n
\n \n
\n ))}\n {settingsPages.facebookPages &&\n settingsPages.facebookPages.length > rowsPerPage && (\n
\n \n
\n )}\n
\n )}\n {settingsPages.facebookPages &&\n activeBot.messengerConfigs.accessToken != null && }\n
\n \n
\n )\n }\n}\n\nFacebook.defaultProps = {\n classes: {},\n}\n\nFacebook.propTypes = {\n classes: PropTypes.object,\n settingsPages: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n settingsPages: state.settingsPages,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Facebook)),\n)\n","export const saveFacebookLoggedIn = loggedIn => {\n localStorage.setItem('loggedIn', loggedIn)\n}\n\nexport const getFacebookLoggedIn = () => {\n return localStorage.getItem('loggedIn')\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Input from '../../../../uiKit/inputs/Input'\nimport { login } from '../../api/dialogflow'\n\nconst styles = theme => ({\n mb16: {\n marginBottom: 16,\n },\n mb32: {\n marginBottom: 32,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato, sans-serif',\n margin: '4px 0 0',\n },\n inputTitle: {\n marginTop: 3,\n },\n errorAlert: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass DialogflowIntegrationTemplate extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n projectId: '',\n tokenSet: false,\n showLoader: false,\n isError: false,\n errorMessage: '',\n dialogflowConfigs: {},\n loginParams: {},\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const projectId = prevState.projectId\n\n if (!prevState.tokenSet && nextProps.activeBot.dialogflowConfigs) {\n const { dialogflowConfigs } = nextProps.activeBot\n const newProjectId = dialogflowConfigs.projectId\n\n if (projectId !== newProjectId) {\n return { dialogflowConfigs, tokenSet: true }\n }\n }\n\n return null\n }\n\n onSubmit = () => {\n const bot = { ...this.props.activeBot }\n login(bot.id, this.state.dialogflowConfigs.projectId)\n }\n\n successCallback = () => {\n this.setState({\n isError: false,\n showLoader: false,\n })\n }\n\n errorCallback = errorMessage => {\n this.setState({\n isError: true,\n errorMessage: errorMessage,\n })\n }\n\n handleChange = (value, name) => {\n const dialogflowConfigs = { ...this.state.dialogflowConfigs }\n dialogflowConfigs[name] = value.trim()\n this.setState({\n dialogflowConfigs: { ...dialogflowConfigs },\n isError: false,\n })\n }\n\n render() {\n const { classes, derivedClasses, buttonStyles } = this.props\n const { isError, errorMessage, dialogflowConfigs } = this.state\n\n return (\n
\n
\n \n this.handleChange(event.target.value, 'projectId')\n }\n />\n

\n Find Google Project ID in DialogFlow Settings page\n

\n {isError &&

{`${errorMessage}`}

}\n
\n
\n
\n \n
\n
\n
\n )\n }\n}\n\nDialogflowIntegrationTemplate.defaultProps = {\n derivedClasses: {},\n loginParams: {},\n classes: {},\n activeBot: {},\n buttonStyles: {},\n}\n\nDialogflowIntegrationTemplate.propTypes = {\n classes: PropTypes.object,\n derivedClasses: PropTypes.object,\n loginParams: PropTypes.object,\n activeBot: PropTypes.object,\n buttonStyles: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(DialogflowIntegrationTemplate),\n ),\n)\n","import { BACKEND_URL, BASE_URL } from '../../../configs'\nimport { createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\n\nexport function login(botId, projectId) {\n fetch(`${BASE_URL}/configs/dialogflow`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(response =>\n window.open(\n `https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${\n BACKEND_URL + '/dialogflow/auth'\n // eslint-disable-next-line max-len\n }&scope=https://www.googleapis.com/auth/cloud-platform+https://www.googleapis.com/auth/dialogflow+https://www.googleapis.com/auth/userinfo.email&response_type=code&client_id=${\n response.clientId\n }&access_type=offline&state=${botId + ',' + projectId}`,\n 'Login with Dialogflow',\n 'width=560,height=600,toolbar=0,menubar=0,location=0',\n ),\n )\n}\n","export const phoneNumberValidation = str =>\n /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/g.test(str)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport Input from '../../../../../uiKit/inputs/Input'\nimport {\n getTwilioCredentials,\n submitTwilioCredentials,\n} from '../../../api/twilioCredetials'\nimport { alertError } from '../../../../../api'\nimport { phoneNumberValidation } from '../../../../../helpers/phoneNumberValidation'\n\nconst styles = theme => ({\n description: {\n fontSize: '14px',\n color: '#616581',\n fontFamily: 'Lato, sans-serif',\n margin: '0 0 8px 0',\n },\n connectionBtn: {\n color: '#1658F3',\n border: '1px solid #1658F3',\n backgroundColor: '#fff',\n borderRadius: '10px',\n padding: '8px 16px',\n cursor: 'pointer',\n },\n statusContent: {\n fontSize: '17px',\n lineHeight: '10px',\n },\n statusBlock: {\n marginBottom: '35px',\n width: '400px',\n },\n popupBtnBlock: {\n display: 'flex',\n alignItems: 'center',\n marginTop: '40px',\n },\n instructionBtn: {\n color: '#1658F3',\n cursor: 'pointer',\n margin: '0 0 0 8px',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n})\n\nconst showConnectionText = connection => {\n return connection ? 'Connected' : 'Not connected'\n}\nconst showConnectionStyle = connection => {\n return { color: connection ? '#11C314' : '#B0B2C0' }\n}\nconst inputStyle = {\n marginBottom: '24px',\n width: '400px',\n}\n\nclass TwilioIntegration extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n twilioCredentials: {\n accountSID: '',\n authToken: '',\n phone: '',\n connected: false,\n },\n error: {\n accountSIDError: false,\n authTokenError: false,\n phoneError: false,\n },\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.twilioCredentials !== prevState.twilioCredentials) {\n return {\n twilioCredentials: nextProps.twilioCredentials,\n }\n }\n\n return null\n }\n\n componentDidMount() {\n const { activeBot } = this.props\n getTwilioCredentials(activeBot.id)\n }\n\n submitCredentials = event => {\n event.preventDefault()\n const { activeBot } = this.props\n const { twilioCredentials } = this.state\n\n const error = {\n accountSIDError: twilioCredentials.accountSID === '',\n authTokenError: twilioCredentials.authToken === '',\n phoneError:\n twilioCredentials.phone === '' ||\n !phoneNumberValidation(twilioCredentials.phone),\n }\n\n if (error.accountSIDError) {\n alertError('Please enter account SID')\n }\n if (error.authTokenError) {\n alertError('Please enter account access token')\n }\n if (error.phoneError && !phoneNumberValidation(twilioCredentials.phone)) {\n alertError('Please enter valid phone number')\n }\n\n if (!error.accountSIDError && !error.authTokenError && !error.phoneError) {\n submitTwilioCredentials(activeBot.id, twilioCredentials)\n }\n\n this.setState({ error })\n }\n\n handleChange = (event, key) => {\n const twilioCredentials = Object.assign(this.state.twilioCredentials)\n\n twilioCredentials[key] = event.target.value\n\n this.setState({ twilioCredentials })\n }\n\n render() {\n const { classes } = this.props\n const { twilioCredentials, error } = this.state\n\n return (\n
\n
\n \n

Status:

\n \n {showConnectionText(twilioCredentials.connected)}\n

\n
\n
\n
\n this.handleChange(value, 'accountSID')}\n />\n this.handleChange(value, 'authToken')}\n />\n this.handleChange(e, 'phone')}\n />\n
\n \n
\n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n twilioCredentials: state.twilioCredentials,\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(TwilioIntegration),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { updateWitAiConfigsRequest } from '../../../home/api/bots'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport { alertSuccess } from '../../../../api'\n\nconst styles = theme => ({\n mb16: {\n marginBottom: 16,\n },\n mb32: {\n marginBottom: 32,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato, sans-serif',\n margin: '4px 0 0',\n },\n inputTitle: {\n marginTop: 3,\n },\n errorAlert: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass WitAiIntegrationTemplate extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isConnected: false,\n showLoader: false,\n isError: false,\n errorMessage: '',\n witAiConfigs: {},\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const isConnected = prevState.isConnected\n\n if (!prevState.isConnected && nextProps.activeBot.witAiConfigs) {\n const { witAiConfigs } = nextProps.activeBot\n const newIsConnected = witAiConfigs.isConnected\n\n if (isConnected !== newIsConnected) {\n return { witAiConfigs, isConnected: newIsConnected }\n }\n }\n\n return null\n }\n\n onSubmit = () => {\n if (this.state.isConnected) {\n alertSuccess('Wit.Ai already connected!')\n } else {\n this.setState({\n showLoader: true,\n })\n\n const bot = { ...this.props.activeBot }\n updateWitAiConfigsRequest(\n bot.id,\n this.successCallback,\n this.errorCallback,\n )\n }\n }\n\n successCallback = () => {\n this.setState({\n isError: false,\n isConnected: true,\n showLoader: false,\n })\n }\n\n errorCallback = errorMessage => {\n this.setState({\n isError: true,\n isConnected: false,\n showLoader: false,\n errorMessage: errorMessage,\n })\n }\n\n handleChange = (value, name) => {\n const witAiConfigs = { ...this.state.witAiConfigs }\n witAiConfigs[name] = value.trim()\n this.setState({\n witAiConfigs: { ...witAiConfigs },\n isError: false,\n })\n }\n\n render() {\n const { classes, derivedClasses, buttonStyles } = this.props\n const { isError, errorMessage, showLoader, isConnected } = this.state\n\n return (\n
\n {showLoader ? (\n \n ) : (\n \n
\n {isError && (\n

{`${errorMessage}`}

\n )}\n
\n
\n \n
\n
\n )}\n \n )\n }\n}\n\nWitAiIntegrationTemplate.defaultProps = {\n derivedClasses: {},\n classes: {},\n activeBot: {},\n buttonStyles: {},\n}\n\nWitAiIntegrationTemplate.propTypes = {\n classes: PropTypes.object,\n derivedClasses: PropTypes.object,\n activeBot: PropTypes.object,\n buttonStyles: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(WitAiIntegrationTemplate),\n ),\n)\n","import { createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\nimport { BASE_URL } from '../../../configs'\n\nasync function updateTelegramCredentials(botId, data) {\n const response = await fetch(`${BASE_URL}/telegram/${botId}/subscribePage`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(data),\n })\n\n return await logoutOnRequestOrResponseJson(response)\n}\nexport { updateTelegramCredentials }\n","import classes from './styles.module.scss'\nimport React, { useEffect, useState, SetStateAction } from 'react'\nimport { connect } from 'react-redux'\n\nimport LoaderOverlay from '../../../../../uiKit/loaders/loaderOverlay'\nimport Input from '../../../../../uiKit/inputs/Input'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport { isStringEmpty } from '../../../../../helpers/isStringEmpty'\nimport { updateTelegramCredentials } from '../../../api/telegram'\nimport { alertSuccess, alertError } from '../../../../../api'\n\ninterface Props {\n activeBot: any\n}\n\nconst Telegram: React.FC = ({ activeBot }) => {\n const [accessToken, setAccessToken] = useState('')\n const [isError, setIsError] = useState(false)\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n setAccessToken(activeBot.telegramConfigs?.accessToken)\n }, [activeBot.telegramConfigs?.accessToken])\n\n const handleSubmit = async() => {\n if (isValidFields()) {\n const data = { accessToken, id: activeBot.id }\n setLoading(true)\n try {\n const response = await updateTelegramCredentials(activeBot.id, data)\n if (response.error?.message) {\n alertError('Something went wrong. Please check Access Token')\n } else {\n alertSuccess('Telegram bot connected successfully')\n }\n } catch (e) {\n setAccessToken('')\n alertError('Failed, try it later')\n }\n setLoading(false)\n }\n }\n\n const handleChange = (event: { target: { value: SetStateAction } }) => {\n setAccessToken(event.target.value)\n }\n\n const isValidFields = () => {\n const error = isStringEmpty(accessToken)\n setIsError(isStringEmpty(accessToken))\n\n return !error\n }\n\n return (\n <>\n
\n \n

\n Guide to retrieve Access Token and create a new bot is{' '}\n \n here\n \n

\n {isError &&

Telegram Access Token cannot be an empty field!

}\n
\n
\n \n
\n {loading && }\n \n )\n}\n\nconst mapStateToProps = (state: { activeBot: any }) => ({\n activeBot: state.activeBot,\n})\n\nexport default connect(mapStateToProps)(Telegram)\n","import { createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\nimport { BASE_URL } from '../../../configs'\n\nasync function updateWhatsApp360DialogConfigs(botId, data) {\n const response = await fetch(`${BASE_URL}/bot/${botId}/dialog360WhatsAppConfig`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(data),\n })\n\n return await logoutOnRequestOrResponseJson(response)\n}\nexport { updateWhatsApp360DialogConfigs }\n","import classes from './styles.module.scss'\nimport React, { SetStateAction, useEffect, useState } from 'react'\nimport { connect } from 'react-redux'\n\nimport Input from '../../../../../uiKit/inputs/Input'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport { isStringEmpty } from '../../../../../helpers/isStringEmpty'\nimport { alertError, alertSuccess } from '../../../../../api'\nimport { updateWhatsApp360DialogConfigs } from '../../../api/whatsApp360Dialog'\n\ninterface Props {\n activeBot: any\n}\n\nconst WhatsApp360Dialog: React.FC = ({ activeBot }) => {\n const [apiKey, setApiKey] = useState('')\n const [phone, setPhone] = useState('')\n const [isApiKeyError, setIsApiKeyError] = useState(false)\n const [isPhoneError, setIsPhoneError] = useState(false)\n\n const numbersOnly = /^[0-9\\b]+$/\n\n useEffect(() => {\n setApiKey(activeBot.dialog360WhatsAppConfigs?.apiKey)\n setPhone(activeBot.dialog360WhatsAppConfigs?.phone)\n }, [activeBot.dialog360WhatsAppConfigs?.apiKey, activeBot.dialog360WhatsAppConfigs?.phone])\n\n const handleSubmit = async() => {\n if (isValidFields()) {\n const data = { apiKey: apiKey, phone: phone }\n\n try {\n const response = await updateWhatsApp360DialogConfigs(activeBot.id, data)\n if (response?.error) {\n alertError(response?.error?.message || 'Failed. Try it later')\n } else {\n alertSuccess('WhatsApp 360Dialog Provider connected successfully')\n }\n } catch (e) {\n setApiKey('')\n setPhone('')\n alertError('Failed, try it later')\n }\n }\n }\n\n const handleApiKeyChange = (event: { target: { value: SetStateAction } }) => {\n setApiKey(event.target.value)\n }\n\n const handlePhoneChange = (event: { target: { value: SetStateAction } }) => {\n if (event.target.value.toString() === '' || numbersOnly.test(event.target.value.toString())) {\n setPhone(event.target.value)\n }\n }\n\n const isValidFields = () => {\n const apiKeyError = isStringEmpty(apiKey)\n setIsApiKeyError(apiKeyError)\n const phoneError = !numbersOnly.test(phone)\n setIsPhoneError(phoneError)\n\n return !(apiKeyError || phoneError)\n }\n\n return (\n <>\n
\n \n

\n Guides to retrieve API Keys for{' '}\n \n production\n {' '}\n and\n \n {' '}\n test\n \n

\n {isApiKeyError &&

API Key cannot be an empty field

}\n \n

\n Your business phone number. Actual sandbox for number could be found{' '}\n \n here\n \n

\n {isPhoneError &&

Phone cannot be an empty field

}\n
\n
\n \n
\n \n )\n}\n\nconst mapStateToProps = (state: { activeBot: any }) => ({\n activeBot: state.activeBot,\n})\n\nexport default connect(mapStateToProps)(WhatsApp360Dialog)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport Facebook from './facebook/Facebook'\nimport TabTemplate from '../../../../uiKit/TabTemplate'\nimport DialogflowIntegrationTemplate from './DialogflowIntegrationTemplate'\nimport TwillioIntegration from './twilioIntegration/TwilioIntegration'\nimport WitAiIntegrationTemplate from './WitAiIntegrationTemplate'\nimport Telegram from './telegram/Telegram'\nimport WhatsApp360Dialog from './dialog360WhatsApp/WhatsApp360Dialog'\n\nconst styles = theme => ({\n heading: {\n fontWeight: 'bold',\n fontSize: '24px',\n color: '#3A3F62',\n fontFamily: 'Lato, \"sans-serif\"',\n margin: '0 0 8px',\n },\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n block: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n },\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n width: '400px',\n },\n btn: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid #5A98F7',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: '#5A98F7',\n padding: '8px 16px',\n width: 'max-content',\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 16px',\n width: 'max-content',\n },\n modal: {\n padding: '40px 160px',\n margin: '15% auto' /* 15% from the top and centered */,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n overflowY: 'auto',\n backgroundColor: 'white',\n width: 640,\n },\n box: {\n display: 'flex',\n width: 664,\n marginTop: 22,\n },\n circle: {\n background: 'rgba(90, 152, 247, 0.2)',\n height: 8,\n width: 12,\n marginTop: 6,\n borderRadius: 8,\n marginRight: 16,\n },\n btnWhite: {\n background: '#ffffff',\n fontSize: '14px',\n fontWeight: '600',\n border: '1px solid #C7CAD6',\n color: '#3A3F62',\n borderRadius: '10px',\n padding: '8px 16px',\n cursor: 'pointer',\n fontFamily: 'Lato, \"sans-serif\"',\n },\n btnSimple: {\n color: '#3A3F62',\n textDecoration: 'underline',\n border: 'none',\n background: 'transparent',\n padding: '0',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600',\n },\n container: {\n marginBottom: '26px',\n },\n itemContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n marginBottom: 100,\n width: 'calc(100% - 148px)', //148px because margin to the edge has to be 200px,\n // outer container has 12px padding, tabs container has 40px right margin\n ['@media (max-width:1380px)']: {\n width: 'calc(100% - 48px)',\n },\n },\n item: {\n backgroundColor: '#ffffff',\n boxShadow: '4px 4px 50px rgba(19, 69, 186, 0.25)',\n borderRadius: '10px',\n padding: '24px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n flexBasis: '30%',\n },\n itemDisabled: {\n opacity: '.6',\n cursor: 'not-allowed',\n },\n itemImg: {\n maxWidth: '48px',\n height: '48px',\n },\n itemTitle: {\n padding: '16px',\n borderBottom: '1px solid #EBEBEF',\n margin: '0 0 16px',\n fontFamily: 'Lato, sans-serif',\n fontSize: '16px',\n fontWeight: '300',\n },\n itemBtn: {\n color: '#1658F3',\n border: '1px solid #1658F3',\n borderRadius: '10px',\n padding: '8px 14px',\n fontSize: '14px',\n fontFamily: 'Lato, sans-serif',\n fontWeight: '300',\n cursor: 'pointer',\n },\n itemBtnDisabled: {\n cursor: 'not-allowed',\n color: '#C7CAD6',\n borderColor: '#C7CAD6',\n },\n topContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n tabInner: {\n minHeight: 350,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n tabInnerContainer: {\n width: '100%',\n },\n tabIcon: {\n maxWidth: 20,\n },\n '@global': {\n '.Select-menu-outer': {\n top: '100%!important',\n bottom: 'auto!important',\n },\n '@media screen and (max-width:1300px)': {\n '.containerForItems': {\n width: 'calc(100%-48px)',\n },\n },\n '.Select-placeholder': {\n lineHeight: '43px',\n },\n '.error .Select-placeholder': {\n color: '#FF624C',\n },\n '.Select-input > input': {\n lineHeight: '28px',\n },\n '.Select-value': {\n paddingTop: 5,\n },\n '.Select-control': {\n height: 45,\n },\n '.drop-up .Select-menu-outer': {\n bottom: '100 !important',\n top: 'auto !important',\n },\n '.drop-up .Select-placeholder': {\n color: '#1658F3',\n },\n '.drop-up .Select-value span': {\n color: '#1658F3 !important',\n },\n '.link:hover': {\n textDecoration: 'none',\n color: '#3A3F62',\n },\n },\n})\n\nclass NewIntegrations extends React.Component {\n handleChangeExpansion = expanded => {\n this.setState({\n expanded: expanded === this.state.expanded ? null : expanded,\n })\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n open: false,\n expanded: null,\n }\n }\n\n render() {\n const { classes } = this.props\n const { expanded } = this.state\n\n return (\n
\n
\n

Integrations

\n
\n

\n Choose a platform you would like to connect your chatbot to\n

\n\n
\n this.handleChangeExpansion('fb')}\n />\n ,\n description: 'Connect the WhatsApp 360Dialog Provider',\n }}\n expanded={expanded === '360dialog'}\n onChange={() => this.handleChangeExpansion('360dialog')}>\n \n \n ,\n description: 'Connect the DialogFlow agent to be able to make your bot smarter by setting the NLP',\n }}\n expanded={expanded === 'df'}\n onChange={() => this.handleChangeExpansion('df')}>\n \n \n ,\n description: 'Connect the WitAi',\n }}\n expanded={expanded === 'witAi'}\n onChange={() => this.handleChangeExpansion('witAi')}>\n \n \n\n ,\n description: 'Connect your Twillio agent to be able to chat with your customers via SMS',\n }}\n expanded={expanded === 'twillio'}\n onChange={() => this.handleChangeExpansion('twillio')}>\n \n \n ,\n description: 'Connect the chatbot to your Telegram page',\n }}\n expanded={expanded === 'telegram'}\n onChange={() => this.handleChangeExpansion('telegram')}>\n \n \n
\n
\n )\n }\n}\n\nNewIntegrations.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles, { withTheme: true })(NewIntegrations)\n","import React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\n\nconst styles = theme => ({\n tableRow: {\n // \"&:hover\": {\n // border: \"0.5px solid #1658F3\",\n // borderRadius: 10,\n // padding: 19,\n // },\n height: 80,\n padding: 20,\n fontSize: 14,\n display: 'flex',\n fontFamily: 'Lato, sans-serif',\n color: '#616581',\n justifyContent: 'space-between',\n },\n})\n\nclass TableRow extends React.Component {\n render() {\n const { classes, style } = this.props\n\n return (\n \n {this.props.children}\n \n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(TableRow)\n","import React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\n\nconst styles = () => ({\n tableCell: {\n flexGrow: 1,\n flexBasis: 0,\n display: 'flex',\n wordBreak: 'break-all',\n alignItems: 'center',\n '&:last-child': {\n maxWidth: 50,\n },\n '&:nth-last-child(2)': {\n maxWidth: 150,\n },\n },\n})\n\nclass TableCell extends React.Component {\n render() {\n const { classes, styles } = this.props\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n\nexport default withStyles(styles)(TableCell)\n","import React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport { withRouter } from 'react-router-dom'\nimport uuid from 'uuid'\nimport ReactTooltip from 'react-tooltip'\n\nconst styles = theme => ({\n tableHeader: {\n borderBottom: '1px solid #EBEBEF',\n // background: '#F7FAFE',\n borderTop: 'none',\n padding: '10px 20px',\n display: 'flex',\n justifyContent: 'space-between',\n },\n titleContainer: {\n flexGrow: 1,\n flexBasis: 0,\n display: 'flex',\n alignItems: 'center',\n maxWidth: 150,\n '&:last-child': {\n maxWidth: 50,\n },\n '&:nth-last-child(2)': {\n // maxWidth: 150,\n },\n },\n title: {\n fontStyle: 'normal',\n fontWeight: 600,\n lineHeight: 'normal',\n fontSize: 14,\n color: '#3A3F62',\n display: 'inline',\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflow: 'visible',\n width: '100%'\n },\n tableCellText: {\n margin: 0,\n maxWidth: 150,\n },\n view: {\n fontSize: '14px',\n textDecoration: 'underline',\n color: '#1658F3',\n cursor: 'pointer',\n margin: 0,\n },\n paper: {\n width: 800,\n padding: '30px 50px 40px',\n },\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n tooltip: {\n maxWidth: '80%',\n width: '200px',\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n },\n})\n\nclass Table extends React.Component {\n state = {\n page: 0,\n open: false,\n rowsPerPage: 10,\n }\n\n render() {\n const { classes, children } = this.props\n const { titles } = this.props\n\n return (\n
\n
\n
\n
\n {titles.map((title, index) => {\n return (\n \n {typeof title === 'string' && (\n
\n {title}\n
\n )}\n {typeof title === 'object' && !title.tooltipText && (\n
\n {title.title}\n
\n )}\n {typeof title === 'object' && title.tooltipText && (\n
\n
\n {title.title}\n
\n \n {title.tooltipText}\n \n \n
\n )}\n
\n )\n })}\n
\n {children}\n
\n {this.props.paginationComponent}\n
\n
\n
\n \n )\n }\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(Table))\n","import React from 'react'\nimport MUIDialog from '@material-ui/core/Dialog'\n\nexport const Dialog = props => {\n return \n}\n","import React from 'react'\nimport MUIDialogTitle from '@material-ui/core/DialogTitle'\n\nexport const DialogTitle = props => {\n return \n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport MUIDialogActions from '@material-ui/core/DialogActions'\n\nimport { styles } from './styles'\n\nconst View = props => {\n const { classes } = props\n\n return \n}\n\nexport const DialogActions = withStyles(styles)(View)\n","export const styles = theme => ({\n root: {\n padding: 24,\n margin: 0,\n },\n})\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport Typography from '@material-ui/core/Typography'\n\nimport { Dialog } from '../../../../uiKit/UI/Dialog'\nimport { DialogTitle } from '../../../../uiKit/UI/DialogTitle'\nimport { DialogActions } from '../../../../uiKit/UI/DialogActions'\n\nconst styles = theme => ({\n paper: {\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n flow: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n button: {\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n color: 'white',\n fontFamily: \"'Lato', sans-serif\",\n '& + button': {\n margin: '0 0 0 10px',\n },\n },\n '@global': {\n \"[class*='MuiDialog-paperWidthSm']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover:hover': {\n background: 'white',\n color: '#1658F3',\n },\n '.buttonHover1:hover': {\n color: 'white',\n background: '#1658F3',\n },\n '.buttonHover1': {\n background: 'white',\n color: '#1658F3',\n },\n },\n})\n\nclass DeleteAccess extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n submit = () => {\n this.props.submit(this.props.id, this.props.inviteAccessId)\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
this.handleOpen()}>\n \n Remove\n \n
\n \n \n \n {\"Are you sure you want to delete access for '\" +\n this.props.email +\n \"'?\"}\n \n \n \n \n Delete\n \n \n Cancel\n \n \n \n
\n )\n }\n}\n\nDeleteAccess.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst DeleteAccessExport = withStyles(styles)(DeleteAccess)\n\nexport default DeleteAccessExport\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport Select from 'react-select'\nimport { shareBot } from '../api/bots'\nimport { loadBotAccessors } from '../../settings/api/settings'\nimport { ROLE_OPTIONS } from '../../../security'\n\nconst styles = theme => ({\n closeContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n },\n statesModal: {\n height: 45,\n padding: '10px 0',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n flexBasis: '60%',\n },\n progress: {\n margin: theme.spacing.unit * 2,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '90%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n enter: {\n width: '10%',\n cursor: 'pointer',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n save: {\n padding: '12px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n modalHeading: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 400,\n marginTop: 24,\n },\n none: {\n display: 'none',\n },\n})\n\nclass ShareModal extends React.Component {\n state = {\n email: '',\n text: '',\n role: ROLE_OPTIONS[0].value,\n }\n\n updateRole(value) {\n this.setState({\n role: value,\n })\n }\n\n checkEmail() {\n let isCorrect = false\n if (\n this.state.email.match(\n '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-][a-zA-Z0-9-.]+[a-zA-Z0-9-]$',\n ) != null\n ) {\n const testArrBegPos = this.state.email.indexOf('@') + 1\n const testArr = this.state.email.slice(\n testArrBegPos,\n this.state.email.length,\n )\n if (!(testArr.includes('..') || !testArr.includes('.'))) isCorrect = true\n }\n\n this.setState({ emailError: !isCorrect })\n return isCorrect\n }\n\n shareBot() {\n if (this.checkEmail()) {\n const access = {\n receiverRole: this.state.role,\n receiverEmail: this.state.email,\n }\n shareBot(this.props.bot.id, access, () => {\n this.props.closeModal()\n loadBotAccessors(this.props.bot.id)\n })\n }\n }\n\n handleChangeInput(e) {\n this.setState({\n email: e.target.value.trim(),\n })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n

Email

\n \n this.handleChangeInput(e)}\n />\n
\n {this.state.emailError && (\n \n Email is not valid\n

\n )}\n

Role

\n opt.value === this.state.role)}\n clearable={false}\n onChange={event => this.updateRole(event.value)}\n searchable={true}\n />\n \n \n )\n }\n}\n\nShareModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(ShareModal))\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport uuid from 'uuid'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport TableRow from '../../../../uiKit/table/TableRow'\nimport TableCell from '../../../../uiKit/table/TableCell'\nimport Table from '../../../../uiKit/table/Table'\nimport Select from 'react-select'\nimport DeleteAccess from './DeleteAccess'\nimport Button from '@material-ui/core/Button'\nimport Modal from '../../../../uiKit/Modal'\nimport { SearchIcon } from '../../../../uiKit/icons/Icons'\nimport ShareModal from '../../../home/components/ShareModal'\nimport {\n loadBotAccessors,\n removeBotAccessor,\n updateBotAccessorRole,\n updateBotAccessorSupportRequestNotifying,\n} from '../../api/settings'\nimport { ROLE_OPTIONS } from '../../../../security'\nimport Heading from '../../../../uiKit/texts/Heading'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\n\nconst baseUserImage = '/images/platform/default-user-icon.svg'\nconst supportRequestNotifyTooltipText =\n 'Send email notifications about new customer support requests.'\nconst styles = theme => ({\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 340,\n },\n input: {\n width: '100%',\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n submitButton: {\n background: 'linear-gradient(285.2deg, #5A98F7 -35.9%, #1658F3 61.17%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n height: 45,\n outline: 'none',\n },\n submitButtonText: {\n color: 'white',\n margin: 0,\n fontWeight: 500,\n fontSize: 16,\n textTransform: 'none',\n fontFamily: 'Lato, sans-serif',\n },\n paper: {\n padding: '30px 50px 24px',\n },\n tableCellData: {\n margin: 'auto 0',\n },\n userImageContainer: {\n height: 40,\n flex: '0 0 40px',\n position: 'relative',\n marginRight: 8,\n },\n userImage: {\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'top',\n borderRadius: '50%',\n overflow: 'hidden',\n },\n userStatus: {\n position: 'absolute',\n boxSizing: 'border-box',\n width: 10,\n height: 10,\n border: '2px solid #ffffff',\n borderRadius: '50%',\n bottom: 0,\n right: 0,\n },\n})\n\nclass Users extends React.Component {\n state = {\n open: false,\n searchUser: '',\n }\n removeAccess = (id, inviteAccessId) => {\n removeBotAccessor(this.props.match.params.botId, id, inviteAccessId)\n }\n closeShareModal = () => {\n this.setState({ open: false })\n }\n\n componentDidMount() {\n loadBotAccessors(this.props.match.params.botId)\n }\n\n handleSearchUser(value) {\n this.setState({ searchUser: value })\n }\n\n updateRole(id, inviteAccessId, newRole) {\n updateBotAccessorRole(\n this.props.match.params.botId,\n id,\n inviteAccessId,\n newRole,\n )\n }\n\n updateSupportNotifying(id, supportRequestNotify) {\n updateBotAccessorSupportRequestNotifying(\n this.props.match.params.botId,\n id,\n supportRequestNotify,\n )\n }\n\n render() {//NOSONAR\n const botAccessors = this.props.botAccessors\n const { classes } = this.props\n return (\n
\n Users\n\n \n
\n
\n this.handleSearchUser(event.target.value)}\n />\n \n
\n
\n this.setState({ open: true })}>\n

Invite new user

\n \n
\n \n {!(botAccessors && botAccessors.length) ? (\n
\n ) : (\n botAccessors\n .sort(ba => (!ba.isInvited ? -1 : 1))\n .filter(\n ba =>\n ba?.name\n ?.toUpperCase()\n ?.indexOf(this.state.searchUser.toUpperCase()) !== -1,\n )\n .map((accessor, index) => (\n \n {console.log(accessor)}\n \n
\n \n \n
\n {accessor.isInvited ? (\n

\n {accessor.name}\n

\n ) : (\n

{accessor.name}

\n )}\n \n \n \n {accessor.email}\n

\n
\n \n \n {accessor.adminId !== this.props.adminUser.id ? (\n access.value === accessor.role,\n )}\n name=\"selected-state\"\n clearable={false}\n onChange={o =>\n this.updateRole(\n accessor.id,\n accessor.inviteAccessId,\n o.value,\n )\n }\n searchable={true}\n />\n ) : (\n

\n {\n ROLE_OPTIONS.find(\n access => access.value === accessor.role,\n ).label\n }\n

\n )}\n
\n \n \n
\n {accessor.isInvited == false ? (\n
\n \n this.updateSupportNotifying(\n accessor.id,\n checked,\n )\n }\n checked={accessor.supportRequestNotify}\n color=\"primary\"\n />\n }\n />\n
\n ) : null}\n
\n \n \n {accessor.adminId !== this.props.adminUser.id ? (\n
\n \n
\n ) : null}\n
\n \n ))\n )}\n \n \n \n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n botAccessors: state.botAccessors,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Users)),\n)\n","export const styles = theme => ({\n wrapper: {},\n headerWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n '& h2': {\n margin: '0',\n fontSize: '24px',\n fontFamily: 'Lato',\n color: theme.palette.primary.headerText,\n },\n },\n addNewLanguageBtn: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid ' + theme.palette.pieChartColors.chatbot,\n borderRadius: 10,\n padding: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n maxHeight: 40,\n marginLeft: '21px',\n cursor: 'pointer',\n },\n evenRow: {\n color: theme.palette.primary.text,\n padding: '24px',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '14px',\n fontFamily: 'Lato',\n },\n notEvenRow: {\n color: theme.palette.primary.text,\n padding: '24px',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '14px',\n fontFamily: 'Lato',\n background: 'rgba(90, 152, 247, 0.1)',\n borderRadius: '10px',\n },\n deleteLanguageBtn: {\n color: theme.palette.alerts.error,\n cursor: 'pointer',\n fontSize: '14px',\n fontFamily: 'Lato',\n },\n newLanguageModalHeader: {\n fontSize: '18px',\n fontWeight: 400,\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n textAlign: 'center',\n },\n newLanguageModalLabel: {\n marginTop: '32px',\n fontSize: '14px',\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n },\n languageError: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n createButton: {\n padding: '12px 28px',\n border: 0,\n background: theme.palette.pieChartColors.chatbot,\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n paper: {\n padding: '30px 50px 24px',\n },\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '16px 70px 24px',\n },\n deleteModalHeader: {\n textAlign: 'center',\n margin: '10px auto 0px',\n fontSize: '14px',\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\n\nconst HeaderView = props => {\n const { classes, onButtonClick, availableLanguagesLength } = props\n return (\n
\n

Languages

\n {availableLanguagesLength > 0 && (\n
\n + Add Language\n
\n )}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(HeaderView)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\n\nconst ActiveLanguagesListView = props => {\n const { children, title } = props\n\n return (\n
\n

{title}

\n
\n {children}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(ActiveLanguagesListView)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Modal from '../../../../uiKit/Modal'\n\nconst RowView = props => {\n const {\n classes,\n language,\n index,\n onLanguageDelete,\n deleteModal,\n setDeleteModal,\n } = props\n const isEven = index % 2 === 0\n\n return (\n
\n

{language.fullName}

\n {!language.isDefault && (\n
\n setDeleteModal(language.shortName)}\n className={classes.deleteLanguageBtn}>\n Delete\n

\n setDeleteModal(null)}>\n

\n Are you sure you want to delete {language.fullName} language?\n

\n
\n {\n onLanguageDelete(language)\n setDeleteModal(false)\n }}\n empty\n title=\"Delete\"\n />\n setDeleteModal(null)}\n title=\"Cancel\"\n />\n
\n \n
\n )}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(RowView)\n","import React from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\nimport { addOptions, removeOptionsFromLanguage } from './config'\nimport { addLanguage } from '../../api/settings'\n\nclass NewLanguageModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n selectedLanguage: null,\n isLanguageSelected: false,\n languageError: false,\n }\n }\n\n handleSelectedLanguage = language => {\n this.setState({\n selectedLanguage: language,\n isLanguageSelected: true,\n languageError: false,\n })\n }\n\n handleLanguageSubmit() {\n this.checkWhetherLanguageSelected()\n if (this.state.isLanguageSelected) {\n const selected = removeOptionsFromLanguage(this.state.selectedLanguage)\n this.props.setActiveLoader(true)\n addLanguage(this.props.activeBot.id, selected.shortName).then(\n response => {\n this.props.setActiveLoader(false)\n if (response.ok) {\n this.props.updateSelectedLanguage(selected)\n }\n },\n )\n this.props.closeAddLanguageModal()\n }\n }\n\n checkWhetherLanguageSelected() {\n if (this.state.selectedLanguage !== null) {\n this.setState({\n isLanguageSelected: true,\n languageError: false,\n })\n } else {\n this.setState({\n isLanguageSelected: false,\n languageError: true,\n })\n }\n }\n\n render() {\n const { selectedLanguage } = this.state\n const { classes, availableLanguages } = this.props\n\n return (\n
\n

Add new language

\n

Language

\n \n {this.state.languageError && (\n

Language is not selected

\n )}\n \n Add\n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(NewLanguageModal),\n)\n","export const addOptions = languages => {\n const formattedLanguages = [...languages]\n return formattedLanguages.map(language => ({\n value: language.shortName,\n label: language.fullName,\n id: language.id,\n shortName: language.shortName,\n fullName: language.fullName,\n }))\n}\n\nexport const removeOptionsFromLanguage = language => {\n return {\n id: language.id,\n shortName: language.shortName,\n fullName: language.fullName,\n }\n}\n\nexport const removeLanguageFromArrayByShortName = (array, shortName) => {\n const newArray = [...array]\n newArray.forEach((language, index) => {\n if (language.shortName === shortName) {\n newArray.splice(index, 1)\n }\n })\n return newArray\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport withStyles from '@material-ui/core/styles/withStyles'\n\nimport { styles } from './languagesStyles'\nimport HeaderView from './HeaderView'\nimport { deleteLanguage, getBotLanguages } from '../../api/settings'\nimport ActiveLanguagesListView from './ActiveLanguagesListView'\nimport RowView from './RowView'\nimport NewLanguageModal from './NewLanguageModal'\nimport Modal from '../../../../uiKit/Modal'\nimport Loader from '../../../../uiKit/loaders/loader'\n\nclass Languages extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n activeLoader: false,\n addLanguageModal: false,\n deleteLanguageModal: null,\n botDefaultLanguage: {},\n botActiveLanguagesList: [],\n botAvailableLanguagesList: [],\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.botActiveLanguagesList &&\n nextProps.botActiveLanguagesList !== prevState.botActiveLanguagesList\n ) {\n return {\n botActiveLanguagesList: nextProps.botActiveLanguagesList,\n }\n }\n return null\n }\n\n componentDidMount() {\n getBotLanguages(this.props.activeBot.id).then(botLanguages => {\n if (botLanguages) {\n const { defaultLanguage, activeLanguages, availableLanguages } =\n botLanguages\n\n this.setState({\n botDefaultLanguage: defaultLanguage,\n botActiveLanguagesList: activeLanguages,\n botAvailableLanguagesList: availableLanguages,\n })\n }\n })\n }\n\n setActiveLoader = active => {\n this.setState({\n activeLoader: active,\n })\n }\n\n setAddLanguageModal = value => {\n this.setState({\n addLanguageModal: value,\n })\n }\n\n setDeleteLanguageModal = value => {\n this.setState({\n deleteLanguageModal: value,\n })\n }\n\n deleteLanguage = language => {\n const { botActiveLanguagesList, botAvailableLanguagesList } = this.state\n const newBotActiveLanguagesList = botActiveLanguagesList.filter(\n lan => lan.shortName !== language.shortName,\n )\n botAvailableLanguagesList.push(language)\n this.setActiveLoader(true)\n\n deleteLanguage(this.props.activeBot.id, language.shortName).then(r => {\n this.setState({\n botActiveLanguagesList: newBotActiveLanguagesList,\n botAvailableLanguagesList: botAvailableLanguagesList,\n activeLoader: false,\n })\n })\n }\n\n addLanguageToBot = language => {\n const { botActiveLanguagesList, botAvailableLanguagesList } = this.state\n const present = botActiveLanguagesList.some(\n lan => lan.shortName === language.shortName,\n )\n\n if (!present) {\n botActiveLanguagesList.push(language)\n const newBotAvailableLanguagesList = botAvailableLanguagesList.filter(\n lan => lan.shortName !== language.shortName\n )\n this.setState({\n botActiveLanguagesList: botActiveLanguagesList,\n botAvailableLanguagesList: newBotAvailableLanguagesList\n })\n }\n }\n\n render() {\n const {\n botActiveLanguagesList,\n botAvailableLanguagesList,\n addLanguageModal,\n deleteLanguageModal,\n } = this.state\n const { classes } = this.props\n\n return (\n \n {this.state.activeLoader ? (\n \n ) : (\n \n this.setAddLanguageModal(true)}\n availableLanguagesLength={\n this.state.botAvailableLanguagesList.length\n }\n />\n \n {botActiveLanguagesList\n .filter(language => language !== null)\n .map((language, index) => (\n \n ))}\n this.setAddLanguageModal(false)}\n style={{ overflowY: 'visible' }}>\n this.setAddLanguageModal(false)}\n updateSelectedLanguage={this.addLanguageToBot}\n setActiveLoader={this.setActiveLoader}\n />\n \n \n \n )}\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Languages),\n)\n","import General from '../tabs/settings/components/general/General/General'\nimport Hours from '../tabs/settings/components/hours/Hours'\nimport NewPersistentMenu from '../tabs/settings/components/persistentMenu/PersistentMenu'\nimport Integrations from '../tabs/settings/components/integrations/NewIntegrations'\nimport Users from '../tabs/settings/components/users/Users'\nimport Languages from '../tabs/settings/components/languages/Languages'\n\nexport const settingsRoutes = [\n {\n path: 'general',\n name: 'General',\n component: General,\n },\n {\n path: 'languages',\n name: 'Languages',\n component: Languages,\n },\n {\n path: 'hours',\n name: 'Team Hours',\n component: Hours,\n },\n {\n path: 'users',\n name: 'Users',\n component: Users,\n },\n {\n path: 'integrations',\n name: 'Integrations',\n component: Integrations,\n },\n {\n path: 'persistent',\n name: 'Main Menu',\n component: NewPersistentMenu,\n },\n]\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { HOME_PATH } from '../../configs'\nimport Headline from '../../uiKit/texts/Headline'\nimport Submenu from '../../uiKit/submenu/Submenu'\nimport { settingsRoutes } from '../../routes/settingsRoutes'\nimport { getBot } from '../home/api/bots'\nimport Loader from '../../uiKit/loaders/loader'\n\nconst styles = theme => ({})\n\nclass Settings extends React.Component {\n componentDidMount() {\n getBot(this.props.match.params.botId)\n }\n\n render() {\n const pathLink = `${HOME_PATH}/bot/${this.props.match.params.botId}/settings`\n const pathRoute = `${HOME_PATH}/bot/:botId/settings/`\n return (\n
\n {this.props.activeBot ? (\n
\n \n \n
\n ) : (\n \n )}\n
\n )\n }\n}\n\nSettings.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Settings)),\n)\n","import React from 'react'\nimport classes from './styles.module.scss'\n\nconst Label = ({children}) => {\n return (\n

{children}

\n )\n}\n\nexport default Label\n","import { store } from '../../../index'\n\nexport const SET_BOT_WIDGET = 'SET_BOT_WIDGET'\nexport const CLEAR_WIDGET_SETTINGS = 'CLEAR_WIDGET_SETTINGS'\n\nexport const setBotWidget = widgetSettings => {\n store.dispatch({\n type: SET_BOT_WIDGET,\n widgetSettings,\n })\n}\n\nexport const clearWidgetSettings = () => {\n store.dispatch({\n type: CLEAR_WIDGET_SETTINGS,\n })\n}\n","import { store } from '../../../index'\n\nexport const SET_WIDGET_DEFAULT_SETTINGS = 'SET_WIDGET_DEFAULT_SETTINGS'\n\nexport const setWidgetDefaultSettings = widgetSettings => {\n store.dispatch({\n type: SET_WIDGET_DEFAULT_SETTINGS,\n widgetSettings,\n })\n}\n","import { setBotWidget } from '../actions/botWidget'\nimport { setWidgetDefaultSettings } from '../actions/widgetDefaultSettings'\nimport { alertError, alertSuccess, createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\nimport { BASE_URL, BACKEND_URL } from '../../../configs'\nimport * as cookie from 'react-cookies'\n\nexport function getWidget(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/widget`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setBotWidget(json.data)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong at getting widget info, please ping support!')\n })\n}\n\nexport function updateWidget(botId, widget) {\n fetch(`${BASE_URL}/bot/${botId}/widget`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n body: JSON.stringify(widget),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setBotWidget(json.data)\n alertSuccess('Widget settings updated', 3000)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong at getting widget info, please ping support!')\n })\n}\n\nexport function getWidgetDefaultSettings(botId) {\n fetch(`${BASE_URL}/bot/${botId}/widget/default-translations`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET'\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setWidgetDefaultSettings(json.data)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong at getting widget info, please ping support!')\n })\n}\n\nexport function handleDrop(file, callback) {\n fetch(`${BASE_URL}/file/widgetLogo`, {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => (response.redirected ? (window.location.href = response.url) : response.text()))\n .then(response => {\n callback(response)\n })\n .catch(error => {\n alertError('Fail. Try it later', 10000)\n })\n}\n\nexport const downloadWidget = botId => {\n window.open(`${BACKEND_URL}/downloadWidget/${botId}`, '_blank')\n}\n","import React, { useState } from 'react'\nimport Dropzone from 'react-dropzone'\n\nimport Label from '../../../../uiKit/texts/Label'\nimport { PhotoIcon } from '../../../../uiKit/icons/Icons'\nimport { PERMISSION_RED } from '../../../../constants/colors'\nimport { handleDrop } from '../../api/widget'\nimport { ONE_MB } from '../../../../constants/dataSize'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n value: string\n onChange: (a: string) => void\n}\n\nconst LogoDropzone: React.FC = ({ value, onChange }) => {\n const [errors, setErrors] = useState([])\n\n const onDrop = (files: any[]) => {\n setErrors([])\n if (files[0].size > ONE_MB) {\n const errors = []\n errors.push('Maximum file size must be less than or equal to 1 Mb.')\n setErrors(errors)\n } else {\n const file = new FormData()\n file.append('file', files[0])\n handleDrop(file, onChange)\n }\n }\n\n return (\n
\n \n \n {value ? (\n \"file\"\n ) : (\n
\n
\n \n
\n

\n Drag and drop or Upload\n

\n

1 MB max .jpeg or .png

\n
\n )}\n \n {!!errors.length &&

{errors[0]}

}\n
\n )\n}\n\nexport default LogoDropzone\n","export const ONE_MB = 1048576\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n },\n red: {\n border: '1px solid #FF624C',\n color: theme.palette.alerts.error,\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 24px',\n maxHeight: 45,\n width: 320,\n },\n inputTitle: {\n fontSize: 14,\n color: theme.palette.primary.headerText,\n fontWeight: 400,\n margin: '24px 0 8px',\n },\n})\n\nclass InputContent extends React.Component {\n render() {\n const { classes, holderStyle, title } = this.props\n return (\n <>\n {title && (\n

\n {title}\n

\n )}\n \n {this.props.children}\n \n \n )\n }\n}\n\nInputContent.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(InputContent))\n","import React, { useEffect, useState } from 'react'\nimport { SketchPicker } from 'react-color'\nimport { Popover } from '@material-ui/core'\n\nimport InputContent from '../../../../uiKit/inputs/InputContent'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n value: string\n onChange: (a: string) => void\n}\n\nconst ColorSelector: React.FC = ({ value, onChange }) => {\n const [color, setColor] = useState('')\n const [anchorEl, setAnchorEl] = useState(null)\n const open = Boolean(anchorEl)\n const id = open ? 'color-popover' : undefined\n\n useEffect(() => {\n setColor(value)\n }, [value])\n\n const handleClose = () => {\n setAnchorEl(null)\n if (value !== color) onChange(color)\n }\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget)\n }\n\n return (\n <>\n \n
\n

{value}

\n
\n
\n \n\n \n setColor(color.hex)} />\n \n \n )\n}\n\nexport default ColorSelector\n","import React, { FC } from 'react'\n\ninterface Props {\n color?: string\n size?: string\n}\n\nexport const CrossIcon: FC = ({ color, size }) => {\n return (\n \n \n \n \n )\n}\n","import SendIcon from '../../../../uiKit/icons/SendIcon'\nimport { CrossIcon } from '../../../../uiKit/icons/CrossIcon'\nimport { Next } from '../../../../uiKit/slider/Next'\nimport { WHITE } from '../../../../constants/colors'\n\nimport classes from './styles.module.scss'\nimport {LanguageConfigsType} from '../../../../models/WidgetSettingsTypes'\nimport React from 'react'\n\ninterface Props {\n languageConfigs: LanguageConfigsType\n}\n\nconst WidgetChatScreen: React.FC = ({ languageConfigs }) => {\n const { imageUrl, color, widgetName, inputPlaceholder } = languageConfigs\n\n return (\n
\n
\n
\n \"logo\"\n

{widgetName}

\n
\n \n
\n
\n
\n

\n Hey there! I'm an Abarth bot and I'm gonna help you to find your perfect car!\n

\n
\n
\n \"logo\"\n

Let's take a short funny quiz to find out what Abarth car are you 😉

\n
\n
\n

\n Let’s start!\n

\n
\n
\n \"logo\"\n

Excited? Me too! So, the first question - what's your mood right now?

\n
\n
\n

\n Exciting!\n

\n

\n Superb!\n

\n

\n Chilling!\n

\n

\n Chilling!\n

\n
\n \n
\n
\n
\n

\n Superb!\n

\n
\n
\n
\n

{inputPlaceholder}

\n \n
\n
\n )\n}\n\nexport default WidgetChatScreen\n","import { isStringEmpty } from '../isStringEmpty'\nimport { OptionItemType } from '../../models/MessageTypes'\n\nexport const setErrors = (\n value: string | number | OptionItemType[] | number[],\n maxLength?: number,\n usedNames?: string[],\n): string[] => {\n const errors = []\n const formatValue = value.toString()\n\n if (Array.isArray(value)) {\n if (!value.length) errors.push('This field can’t be empty')\n } else {\n if (isStringEmpty(formatValue)) {\n errors.push('This field can’t be empty')\n }\n if (maxLength !== undefined && formatValue.length > maxLength) {\n errors.push(`Up to ${maxLength} symbols is allowed`)\n }\n if (usedNames?.length && usedNames.includes(value)) {\n errors.push('This field name should be unique')\n }\n }\n\n return errors\n}\n","export function deepCompare(a, b) {//NOSONAR\n if (typeof a == 'object' && a != null && typeof b == 'object' && b != null) {\n var count = [0, 0]\n for (var key in a) count[0]++\n // eslint-disable-next-line no-redeclare\n for (var key in b) count[1]++\n if (count[0] - count[1] != 0) {\n return false\n }\n // eslint-disable-next-line no-redeclare\n for (var key in a) {\n if (!(key in b) || !deepCompare(a[key], b[key])) {\n return false\n }\n }\n // eslint-disable-next-line no-redeclare\n for (var key in b) {\n if (!(key in a) || !deepCompare(b[key], a[key])) {\n return false\n }\n }\n return true\n } else {\n return a === b\n }\n}\n","import React from 'react'\nimport SwitchM from '@material-ui/core/Switch'\nimport classes from './styles.module.scss'\n\ninterface Props {\n label?: string\n checked: boolean\n onChange: (a: any) => void\n}\n\nconst Switch: React.FC = ({ label, checked, onChange }) => {\n return (\n
\n \n {label &&

{label}

}\n
\n )\n}\n\nexport default Switch\n","import React, { useMemo, useState } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport Input from '../../../../uiKit/inputs/Input'\nimport LaguageSelector from '../../../../uiKit/LaguageSelector/LaguageSelector'\nimport LogoDropzone from '../LogoDropzone'\nimport ColorSelector from '../ColorSelector'\nimport WidgetChatScreen from '../WidgetChatScreen'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\nimport { setErrors } from '../../../../helpers/setErrors/setErrors'\nimport { updateWidget } from '../../api/widget'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { deepCompare } from '../../../../helpers/deepCompare'\n\nimport classes from './styles.module.scss'\nimport { WidgetSettingsType } from '../../../../models/WidgetSettingsTypes'\nimport Switch from '../../../../uiKit/Switch'\n\ninterface Props {\n match: any\n widgetSettings: WidgetSettingsType\n}\n\nconst AppearanceTab: React.FC = ({ match, widgetSettings }) => {\n const [selectedLanguage, setSelectedLanguages] = useState({ label: 'English', value: 'en' })\n const [header, setHeader] = useState(widgetSettings?.languageConfigs[selectedLanguage.value]?.widgetName || '')\n const [inputPlaceholder, setPlaceholder] = useState(\n widgetSettings?.languageConfigs[selectedLanguage.value]?.inputPlaceholder || '',\n )\n const [errorsName, setErrorsName] = useState([])\n const [errorsPlaceholder, setErrorsPlaceholder] = useState([])\n\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n\n const handleUpdateWidgetSettings = (value: string | boolean, field: string) => {\n widgetCopy.languageConfigs[selectedLanguage.value][field] = value\n\n if (!deepCompare(widgetCopy, widgetSettings)) {\n updateWidget(match.params.botId, widgetCopy)\n }\n }\n\n const handleUpdateName = (value: string) => {\n const isValid = validateField(value, setErrorsName)\n\n if (isValid) {\n handleUpdateWidgetSettings(value, 'widgetName')\n }\n }\n\n const handleUpdatePlaceholder = (value: string) => {\n const isValid = validateField(value, setErrorsPlaceholder)\n\n if (isValid) {\n handleUpdateWidgetSettings(value, 'inputPlaceholder')\n }\n }\n\n const handleChangeName = event => {\n validateField(event.target.value, setErrorsName)\n setHeader(event.target.value)\n }\n\n const handlePlaceholder = event => {\n validateField(event.target.value, setErrorsPlaceholder)\n setPlaceholder(event.target.value)\n }\n\n const handleChangeLanguage = language => {\n setSelectedLanguages(language)\n setHeader(widgetSettings?.languageConfigs[language.value]?.widgetName)\n setPlaceholder(widgetSettings?.languageConfigs[language.value]?.inputPlaceholder)\n }\n\n const validateField = (value: string, callback: (a: any) => void) => {\n const errors = setErrors(value, 20)\n callback(errors)\n\n return !errors.length\n }\n\n return (\n
\n
\n Appearance\n \n
\n\n \n Customize widget appearance that will be shown to the user based on his language\n \n\n
\n
\n handleUpdateWidgetSettings(value, 'imageUrl')}\n />\n\n handleUpdateWidgetSettings(value, 'color')}\n />\n\n handleUpdateName(header)}\n onBlur={() => handleUpdateName(header)}\n error={!!errorsName.length}\n errorMessage={errorsName[0]}\n />\n\n handleUpdatePlaceholder(inputPlaceholder)}\n onBlur={() => handleUpdatePlaceholder(inputPlaceholder)}\n error={!!errorsPlaceholder.length}\n errorMessage={errorsPlaceholder[0]}\n />\n\n
\n handleUpdateWidgetSettings(e.target.checked, 'doEnableSoundNotifications')}\n />\n handleUpdateWidgetSettings(e.target.checked, 'doShowPopupMessagePreview')}\n />\n handleUpdateWidgetSettings(e.target.checked, 'doAskForRating')}\n />\n
\n
\n {widgetSettings && (\n \n )}\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(AppearanceTab))\n","import { CrossIcon } from '../../../../uiKit/icons/CrossIcon'\nimport { WHITE } from '../../../../constants/colors'\nimport classes from './styles.module.scss'\nimport {DefaultSettingsType, LanguageConfigsType} from '../../../../models/WidgetSettingsTypes'\nimport React from 'react'\n\ninterface Props {\n languageConfigs: LanguageConfigsType\n defaultSettings: DefaultSettingsType\n}\n\nconst StartWidgetScreen: React.FC = ({ languageConfigs, defaultSettings }) => {\n const {\n imageUrl,\n color,\n welcomeTitle,\n welcomeSubtitle,\n startLabel,\n isLoginNameInputEnabled,\n isLoginEmailInputEnabled,\n } = languageConfigs\n\n return (\n
\n
\n
\n \"logo\"\n
\n

{welcomeTitle}

\n

{welcomeSubtitle}

\n
\n
\n
\n \n
\n
\n
\n
{startLabel}
\n {isLoginNameInputEnabled && (\n
\n
{defaultSettings.nameInputPlaceholder}
\n {isLoginNameInputEnabled && !isLoginEmailInputEnabled && (\n
\n {defaultSettings.startButton}\n
\n )}\n
\n )}\n {isLoginEmailInputEnabled && (\n
\n
{defaultSettings.emailInputPlaceholder}
\n {!isLoginNameInputEnabled && isLoginEmailInputEnabled && (\n
\n {defaultSettings.startButton}\n
\n )}\n
\n )}\n {isLoginNameInputEnabled && isLoginEmailInputEnabled && (\n
\n {defaultSettings.startButton}\n
\n )}\n
\n
\n )\n}\n\nexport default StartWidgetScreen\n","import React, { useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport Heading from '../../../../uiKit/texts/Heading'\nimport Input from '../../../../uiKit/inputs/Input'\nimport LaguageSelector from '../../../../uiKit/LaguageSelector/LaguageSelector'\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport Checkbox from '../../../../uiKit/Checkbox'\nimport StartWidgetScreen from '../StartWidgetScreen'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { updateWidget } from '../../api/widget'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\nimport { setErrors } from '../../../../helpers/setErrors/setErrors'\nimport { deepCompare } from '../../../../helpers/deepCompare'\n\nimport classes from './styles.module.scss'\nimport {DefaultSettingsMapping, WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\n\ninterface Props {\n match: any\n widgetSettings: WidgetSettingsType\n widgetDefaultSettings: DefaultSettingsMapping\n}\n\nconst WelcomeScreenTab: React.FC = ({ match, widgetSettings, widgetDefaultSettings }) => {\n const [selectedLanguage, setSelectedLanguages] = useState({ label: 'English', value: 'en' })\n const [title, setTitle] = useState(widgetSettings?.languageConfigs[selectedLanguage.value]?.welcomeTitle || '')\n const [greetingText, setGreetingText] = useState(\n widgetSettings?.languageConfigs[selectedLanguage.value]?.welcomeSubtitle || '',\n )\n const [startLabel, setStartLabel] = useState(\n widgetSettings?.languageConfigs[selectedLanguage.value]?.startLabel || '',\n )\n const [errorsTitle, setErrorsTitle] = useState([])\n const [errorsGreetingText, setErrorsGreetingText] = useState([])\n const [errorsStartLabel, setErrorsStartLabel] = useState([])\n\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n const isSelectedField =\n widgetSettings?.languageConfigs[selectedLanguage.value]?.isLoginNameInputEnabled ||\n widgetSettings?.languageConfigs[selectedLanguage.value]?.isLoginEmailInputEnabled\n\n const handleUpdateWidgetSettings = (value: string | boolean, field: string) => {\n widgetCopy.languageConfigs[selectedLanguage.value][field] = value\n if (!deepCompare(widgetCopy, widgetSettings)) {\n updateWidget(match.params.botId, widgetCopy)\n }\n }\n\n const handleUpdateTitle = (value: string) => {\n const isValid = validateField(value, setErrorsTitle, 20)\n\n if (isValid) {\n handleUpdateWidgetSettings(value, 'welcomeTitle')\n }\n }\n\n const handleUpdateGreetingText = (value: string) => {\n const isValid = validateField(value, setErrorsGreetingText, 100)\n\n if (isValid) {\n handleUpdateWidgetSettings(value, 'welcomeSubtitle')\n }\n }\n\n const handleUpdateStartLabel = (value: string) => {\n const isValid = validateField(value, setErrorsStartLabel, 50)\n\n if (isValid) {\n handleUpdateWidgetSettings(value, 'startLabel')\n }\n }\n\n const handleChangeLanguage = (language) => {\n setSelectedLanguages(language)\n setStartLabel(widgetSettings?.languageConfigs[language.value]?.startLabel)\n setTitle(widgetSettings?.languageConfigs[language.value]?.welcomeTitle)\n setGreetingText(widgetSettings?.languageConfigs[language.value]?.welcomeSubtitle)\n }\n\n const handleChangeTitle = (event) => {\n validateField(event.target.value, setErrorsTitle, 20)\n setTitle(event.target.value)\n }\n\n const handleChangeSubtitle = (event) => {\n validateField(event.target.value, setErrorsGreetingText, 100)\n setGreetingText(event.target.value)\n }\n\n const handleChangeStartLabel = (event) => {\n validateField(event.target.value, setErrorsStartLabel, 50)\n setStartLabel(event.target.value)\n }\n\n const validateField = (value: string, callback: (a: any) => void, maxLength: number) => {\n const errors = setErrors(value, maxLength)\n callback(errors)\n\n return !errors.length\n }\n\n return (\n
\n
\n Welcome Screen\n \n
\n\n \n Add and customize input fields that will be shown at the first widget screen\n \n\n
\n
\n Choose the input fields to start a chat\n handleUpdateWidgetSettings(value, 'isLoginNameInputEnabled')}\n />\n handleUpdateWidgetSettings(value, 'isLoginEmailInputEnabled')}\n />\n {isSelectedField && (\n <>\n handleUpdateTitle(title)}\n onBlur={() => handleUpdateTitle(title)}\n error={!!errorsTitle.length}\n errorMessage={errorsTitle[0]}\n />\n handleUpdateGreetingText(greetingText)}\n onBlur={() => handleUpdateGreetingText(greetingText)}\n error={!!errorsGreetingText.length}\n errorMessage={errorsGreetingText[0]}\n />\n handleUpdateStartLabel(startLabel)}\n onBlur={() => handleUpdateStartLabel(startLabel)}\n error={!!errorsStartLabel.length}\n errorMessage={errorsStartLabel[0]}\n />\n \n )}\n
\n {isSelectedField && widgetDefaultSettings && (\n \n )}\n
\n
\n )\n}\n\nconst mapStateToProps = (state: {\n widgetSettings: WidgetSettingsType\n widgetDefaultSettings: DefaultSettingsMapping\n}) => ({\n widgetSettings: state.widgetSettings,\n widgetDefaultSettings: state.widgetDefaultSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(WelcomeScreenTab))\n","import React from 'react'\nimport MTPopover from '@material-ui/core/Popover'\n\nconst Popover = ({ children, id, open, anchorEl, onClose }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default Popover\n","/* eslint-disable */\nimport React from 'react'\n\nexport class ThreeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n","import React from 'react'\n\nexport const DeleteIcon = () => {\n return (\n \n {/* eslint-disable-next-line max-len */}\n \n {/* eslint-disable-next-line max-len */}\n \n {/* eslint-disable-next-line max-len */}\n \n \n )\n}\n","import React from 'react'\n\nexport const EditIcon = () => {\n return (\n \n {/* eslint-disable-next-line max-len */}\n \n \n )\n}\n","import React, { useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\nimport Switch from '@material-ui/core/Switch'\nimport { withRouter } from 'react-router-dom'\n\nimport Popover from '../../../../uiKit/Popover'\nimport Table from '../../../../uiKit/table/Table'\nimport TableRow from '../../../../uiKit/table/TableRow'\nimport TableCell from '../../../../uiKit/table/TableCell'\nimport { ThreeIcon } from '../../../../uiKit/icons/ThreeIcon'\nimport { DeleteIcon } from '../../../../uiKit/icons/DeleteIcon'\nimport { EditIcon } from '../../../../uiKit/icons/EditIcon'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { updateWidget } from '../../api/widget'\n\nimport classes from './styles.module.scss'\nimport { GreetingType, WidgetSettingsType } from '../../../../models/WidgetSettingsTypes'\nimport { OptionItemType } from '../../../../models/MessageTypes'\n\nconst titles = [\n { title: 'Greeting name', maxWidth: 270 },\n { title: 'Sent', maxWidth: 120 },\n { title: 'Opened', maxWidth: 120 },\n { title: 'Enable/disable', maxWidth: 120 },\n { title: '', maxWidth: 120 },\n]\n\ninterface Props {\n greetings: GreetingType[]\n widgetSettings: WidgetSettingsType\n selectedLanguage: OptionItemType\n onToggleEditModal: (a: boolean, b: GreetingType) => void\n onToggleDeleteModal: (a: boolean, b: GreetingType) => void\n onToggleEditDefaultModal: (a: boolean, b: GreetingType) => void\n match: any\n}\n\nconst GreetingsTable: React.FC = ({\n greetings,\n widgetSettings,\n selectedLanguage,\n onToggleEditModal,\n onToggleDeleteModal,\n onToggleEditDefaultModal,\n match,\n}) => {\n const [anchorEl, setAnchorEl] = useState(null)\n const [openedPopoverId, setOpenedPopoverId] = useState(null)\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n const open = Boolean(anchorEl)\n const id = open ? 'simple-popover' : undefined\n\n const handleSwitch = (index: number) => {\n widgetCopy.languageConfigs[selectedLanguage.value].greetings[index].enabled =\n !widgetCopy.languageConfigs[selectedLanguage.value].greetings[index].enabled\n updateWidget(match.params.botId, widgetCopy)\n }\n\n const handleOpenPopover = (event: any, index: number) => {\n setOpenedPopoverId(index)\n setAnchorEl(event.currentTarget)\n }\n\n const handleClosePopover = () => {\n setAnchorEl(null)\n setOpenedPopoverId(null)\n }\n\n const handleEditDefaultGreeting = (greeting: GreetingType, index: number) => {\n greeting.index = index\n onToggleEditDefaultModal(true, greeting)\n handleClosePopover()\n }\n\n const handleEditGreeting = (greeting: GreetingType, index: number) => {\n greeting.index = index\n onToggleEditModal(true, greeting)\n handleClosePopover()\n }\n\n const handleDeleteGreeting = (greeting: GreetingType, index: number) => {\n greeting.index = index\n onToggleDeleteModal(true, greeting)\n handleClosePopover()\n }\n\n return (\n \n {greetings?.map((greeting: GreetingType, index: number) => (\n \n {greeting.name}\n {!greeting.isDefault && greeting.sent}\n {!greeting.isDefault && greeting.opened}\n \n {!greeting.isDefault && (\n handleSwitch(index)} />\n )}\n \n \n {!greeting.isDefault ? (\n
handleOpenPopover(event, index)}>\n \n
\n ) : (\n
handleEditDefaultGreeting(greeting, index)}>\n Edit\n
\n )}\n
\n \n
\n
handleEditGreeting(greeting, index)}>\n Edit\n
\n
handleDeleteGreeting(greeting, index)}>\n Delete\n
\n
\n
\n
\n ))}\n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(GreetingsTable))\n","import Modal from '@material-ui/core/Modal'\nimport { connect } from 'react-redux'\nimport React, { ReactEventHandler, useMemo } from 'react'\nimport { withRouter } from 'react-router-dom'\n\nimport { CrossIcon } from '../../../../uiKit/icons/CrossIcon'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { updateWidget } from '../../api/widget'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\n\nimport classes from './styles.module.scss'\nimport {OptionItemType} from '../../../../models/MessageTypes'\nimport {GreetingType, WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\n\ninterface Props {\n match: any\n open: boolean\n selectedLanguage: OptionItemType\n widgetSettings: WidgetSettingsType\n selectedGreeting: GreetingType\n onClose: ReactEventHandler\n}\n\nconst DeleteGreetingModal: React.FC = ({\n match,\n open,\n selectedGreeting,\n widgetSettings,\n selectedLanguage,\n onClose,\n}) => {\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n\n const handleDelete = (event: any) => {\n widgetCopy.languageConfigs[selectedLanguage.value].greetings.splice(selectedGreeting.index, 1)\n updateWidget(match.params.botId, widgetCopy)\n onClose(event)\n }\n\n return (\n \n
\n

Are you sure you want to delete {selectedGreeting.name} greeting?

\n
\n \n
\n
\n
\n Delete\n
\n \n
\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(DeleteGreetingModal))\n","import React, { ReactElement } from 'react'\nimport Modal from '@material-ui/core/Modal'\nimport SubmitButton from '../buttons/SubmitButton'\nimport { CrossIcon } from '../icons/CrossIcon'\nimport { SPUN_PEARL_GREY } from '../../constants/colors'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n open: boolean\n onClose: any\n onSave: any\n title: string\n children: ReactElement\n customFooter?: ReactElement\n}\n\nconst ModalTemplate: React.FC = ({ open, onClose, onSave, title, children, customFooter }) => {\n return (\n \n
\n
\n

{title}

\n
\n \n
\n
\n {children}\n
\n
\n \n `\n
\n {customFooter}\n
\n
\n
\n )\n}\n\nexport default ModalTemplate\n","import React, { useEffect, useState } from 'react'\nimport Input from '../inputs/Input'\nimport { ZERO_KEY, NINE_KEY, BACKSPACE_KEY, DELETE_KEY } from '../../constants/keyCodes'\n\nimport classes from './styles.module.scss'\n\nconst options = [\n {\n label: '5s',\n value: 5,\n },\n {\n label: '10s',\n value: 10,\n },\n {\n label: '15s',\n value: 15,\n },\n]\n\nconst RadioButtonGroup = ({ title, value, errors, onChange, onBlur }) => {\n const [selectCustom, setSelectCustom] = useState(false)\n\n useEffect(() => {\n if (![5, 10, 15].includes(value)) setSelectCustom(true)\n }, [value])\n\n const handleChange = (value: string | number) => {\n setSelectCustom(false)\n onChange(value)\n }\n\n const handleSelectCustom = () => {\n setSelectCustom(true)\n onChange('')\n }\n\n const handleKeyDown = (event: any) => {\n if (\n (event.keyCode >= ZERO_KEY && event.keyCode <= NINE_KEY) ||\n [BACKSPACE_KEY, DELETE_KEY].includes(event.keyCode)\n ) {\n return event\n } else {\n event.preventDefault()\n }\n }\n\n return (\n <>\n {title &&

{title}

}\n
\n {options.map(option => (\n handleChange(option.value)}>\n {option.label}\n
\n ))}\n
\n Custom\n
\n
\n\n {selectCustom && (\n onChange(event.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={onBlur}\n />\n )}\n \n )\n}\nexport default RadioButtonGroup\n","import React, { ReactEventHandler, useEffect, useMemo, useState } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport ModalTemplate from '../../../../uiKit/ModalTemplate'\nimport Input from '../../../../uiKit/inputs/Input'\nimport RadioButtonGroup from '../../../../uiKit/RadioButtonGroup'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { updateWidget } from '../../api/widget'\nimport { setErrors } from '../../../../helpers/setErrors/setErrors'\n\nimport classes from './styles.module.scss'\nimport {OptionItemType} from '../../../../models/MessageTypes'\nimport {GreetingType, WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\n\ninterface Props {\n match: any\n open: boolean\n selectedLanguage: OptionItemType\n widgetSettings: WidgetSettingsType\n selectedGreeting: GreetingType\n onClose: ReactEventHandler\n}\n\nconst EditDefaultModal: React.FC = ({\n open,\n selectedGreeting,\n widgetSettings,\n selectedLanguage,\n match,\n onClose,\n}) => {\n const [greetingText, setGreetingText] = useState('')\n const [delaySeconds, setDelaySeconds] = useState('')\n const [errorsGreetingText, setErrorsGreetingText] = useState([])\n const [errorsDelaySeconds, setErrorsDelaySeconds] = useState([])\n\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n const greetingCopy = useMemo(() => deepCopyFunction(selectedGreeting), [selectedGreeting])\n\n useEffect(() => {\n setGreetingText(selectedGreeting?.greetingText)\n setErrorsGreetingText([])\n }, [selectedGreeting?.greetingText])\n\n useEffect(() => {\n setDelaySeconds(selectedGreeting?.delaySeconds)\n setErrorsDelaySeconds([])\n }, [selectedGreeting?.delaySeconds])\n\n const validateGreetingText = (value: string) => {\n const errors = setErrors(value)\n setErrorsGreetingText(errors)\n\n return !errors.length\n }\n\n const validateDelayTime = (value: string | number) => {\n const errors = setErrors(value)\n setErrorsDelaySeconds(errors)\n\n return !errors.length\n }\n\n const handleSubmit = (event: any) => {\n const isValidGreetingText = validateGreetingText(greetingText)\n const isValidDelayTime = validateDelayTime(delaySeconds)\n\n if (isValidGreetingText && isValidDelayTime) {\n greetingCopy.delaySeconds = Number(delaySeconds)\n greetingCopy.greetingText = greetingText\n\n widgetCopy.languageConfigs[selectedLanguage.value].greetings[greetingCopy.index] = greetingCopy\n updateWidget(match.params.botId, widgetCopy)\n onClose(event)\n }\n }\n\n return (\n \n
\n setGreetingText(event.target.value)}\n onBlur={() => validateGreetingText(greetingText)}\n />\n validateDelayTime(delaySeconds)}\n errors={errorsDelaySeconds}\n />\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(EditDefaultModal))\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport Input from '../../../../uiKit/inputs/Input'\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport ConditionExpression from '../../../flowBuilder/components/ConditionExpression/ConditionExpression'\nimport { generateId } from '../../../../helpers/generateId'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { setErrors } from '../../../../helpers/setErrors/setErrors'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { GreetingType } from '../../../../models/WidgetSettingsTypes'\nimport { ExpressionType } from '../../../../models/MessageTypes'\n\ninterface Props {\n greeting: GreetingType\n onChange: (a: GreetingType) => void\n saveTime: Date\n}\n\nconst GeneralTab: React.FC = ({ greeting, onChange, saveTime }) => {\n const [errorsName, setErrorsName] = useState([])\n const greetingCopy = useMemo(() => deepCopyFunction(greeting), [greeting])\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n validateName(greeting.name)\n }\n }, [saveTime])\n\n const handleUpdateName = (value: string) => {\n validateName(value)\n greetingCopy.name = value\n onChange(greetingCopy)\n }\n\n const handleUpdateConjunction = (e: any) => {\n greetingCopy.condition.conjunction = e.value\n onChange(greetingCopy)\n }\n\n const handleDeleteExpression = (index: number) => {\n greetingCopy.condition.expressions.splice(index, 1)\n onChange(greetingCopy)\n }\n\n const handleUpdateExpression = (expression: ExpressionType, index: number) => {\n greetingCopy.condition.expressions[index] = expression\n onChange(greetingCopy)\n }\n\n const handleAddExpression = () => {\n greetingCopy.condition.expressions.push({\n attribute: null,\n operator: 'IS',\n value: '',\n id: generateId(),\n })\n\n onChange(greetingCopy)\n }\n\n const validateName = (value: string) => {\n const errors = setErrors(value, 20)\n setErrorsName(errors)\n\n return !errors.length\n }\n\n return (\n <>\n handleUpdateName(event.target.value)}\n onBlur={() => validateName(greeting.name)}\n error={!!errorsName.length}\n errorMessage={errorsName[0]}\n />\n\n Condition\n\n {greeting?.condition?.expressions?.map((expression, index) => (\n handleDeleteExpression(index)}\n onUpdate={(expression: ExpressionType) => handleUpdateExpression(expression, index)}\n onAdd={handleAddExpression}\n saveTime={saveTime}\n />\n ))}\n \n )\n}\n\nexport default GeneralTab\n","import React, { useEffect, useMemo, useState } from 'react'\n\nimport Input from '../../../../uiKit/inputs/Input'\nimport RadioButtonGroup from '../../../../uiKit/RadioButtonGroup'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { setErrors } from '../../../../helpers/setErrors/setErrors'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { GreetingType } from '../../../../models/WidgetSettingsTypes'\nimport { OptionItemType } from '../../../../models/MessageTypes'\n\ninterface Props {\n greeting: GreetingType\n onChange: (a: GreetingType) => void\n saveTime: Date\n}\n\nconst CustomizationTab: React.FC = ({ greeting, onChange, saveTime }) => {\n const [errorsGreetingText, setErrorsGreetingText] = useState([])\n const [errorsDelaySeconds, setErrorsDelaySeconds] = useState([])\n const [atomSelectTouched, setAtomSelectTouched] = useState(false)\n\n const greetingCopy = useMemo(() => deepCopyFunction(greeting), [greeting])\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n validateGreetingText(greeting.greetingText)\n validateDelayTime(greeting.delaySeconds)\n setAtomSelectTouched(true)\n }\n }, [saveTime])\n\n const handleUpdateGreetingText = (value: string) => {\n greetingCopy.greetingText = value\n onChange(greetingCopy)\n }\n\n const handleUpdateDelaySeconds = (value: string) => {\n greetingCopy.delaySeconds = value\n onChange(greetingCopy)\n }\n\n const handleUpdateStartAtom = ({ value }: OptionItemType) => {\n greetingCopy.startAtomId = value\n onChange(greetingCopy)\n }\n\n const validateGreetingText = (value: string) => {\n const errors = setErrors(value)\n setErrorsGreetingText(errors)\n\n return !errors.length\n }\n\n const validateDelayTime = (value: string | number) => {\n const errors = setErrors(value)\n setErrorsDelaySeconds(errors)\n\n return !errors.length\n }\n\n return (\n <>\n handleUpdateGreetingText(event.target.value)}\n onBlur={() => validateGreetingText(greeting.greetingText)}\n error={!!errorsGreetingText.length}\n errorMessage={errorsGreetingText[0]}\n />\n validateDelayTime(greeting.delaySeconds)}\n errors={errorsDelaySeconds}\n />\n Start atom\n \n \n )\n}\n\nexport default CustomizationTab\n","import { isStringEmpty } from './isStringEmpty'\n\nexport const validateStringLength = (string, length) => {\n return !isStringEmpty(string) && string.length <= length\n}\n","import React, { ReactEventHandler, useEffect, useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport GeneralTab from '../GeneralTab'\nimport CustomizationTab from '../CustomizationTab'\nimport ModalTemplate from '../../../../uiKit/ModalTemplate'\nimport { getAttributes } from '../../../settings/api/attributes'\nimport { getFlows } from '../../../flowBuilder/api/flow'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { updateWidget } from '../../api/widget'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\nimport { expressionValidation } from '../../../../helpers/expressionValidation'\nimport { validateStringLength } from '../../../../helpers/validateStringLength'\n\nimport classes from './styles.module.scss'\nimport {GreetingType, WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\nimport {OptionItemType} from '../../../../models/MessageTypes'\n\ntype TabType = 'General' | 'Customization'\n\nconst tabs: TabType[] = ['General', 'Customization']\n\nconst greetingData: GreetingType = {\n name: '',\n greetingText: '',\n delaySeconds: 5,\n startAtomId: null,\n opened: 0,\n sent: 0,\n enabled: true,\n condition: {\n conjunction: 'AND',\n expressions: [\n {\n operator: 'IS',\n value: '',\n attribute: null,\n },\n ],\n },\n}\n\ninterface Props {\n match: any\n open: boolean\n selectedLanguage: OptionItemType\n widgetSettings: WidgetSettingsType\n onClose: ReactEventHandler\n}\n\nconst AddGreetingModal: React.FC = ({ open, selectedLanguage, match, widgetSettings, onClose }) => {\n const [selectedTab, setSelectedTab] = useState(tabs[0])\n const [greeting, setGreeting] = useState(greetingData)\n const [saveTime, setSaveTime] = useState(new Date())\n\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n\n useEffect(() => {\n getAttributes(match.params.botId, selectedLanguage?.value)\n getFlows(match.params.botId)\n }, [])\n\n useEffect(() => {\n setGreeting(greetingData)\n setSelectedTab(tabs[0])\n }, [open])\n\n const handleUpdateGreeting = (newGreeting: GreetingType) => {\n setGreeting(newGreeting)\n }\n\n const handleSave = (event: any) => {\n const error = validateGreeting()\n setSaveTime(new Date())\n\n if (!error) {\n greeting.delaySeconds = Number(greeting.delaySeconds)\n widgetCopy.languageConfigs[selectedLanguage.value].greetings.push(greeting)\n updateWidget(match.params.botId, widgetCopy)\n onClose(event)\n }\n }\n\n const validateGreeting = () => {\n const { name, greetingText, startAtomId, delaySeconds, condition } = greeting\n const errorAtGeneral = !validateStringLength(name, 20) || condition.expressions.some(expressionValidation)\n const errorAtCustomization = isStringEmpty(greetingText) || !startAtomId || !delaySeconds\n\n if (errorAtGeneral && !errorAtCustomization) {\n setSelectedTab(tabs[0])\n } else if (!errorAtGeneral && errorAtCustomization) {\n setSelectedTab(tabs[1])\n }\n\n return errorAtGeneral || errorAtCustomization\n }\n\n return (\n \n
\n
\n {tabs.map((tab, index) => (\n setSelectedTab(tab)}>\n {tab}\n
\n ))}\n
\n
\n {selectedTab === tabs[0] && (\n \n )}\n {selectedTab === tabs[1] && (\n \n )}\n
\n \n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(AddGreetingModal))\n","import React, { ReactEventHandler, useEffect, useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport GeneralTab from '../GeneralTab'\nimport CustomizationTab from '../CustomizationTab'\nimport { getAttributes } from '../../../settings/api/attributes'\nimport { getFlows } from '../../../flowBuilder/api/flow'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { updateWidget } from '../../api/widget'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\nimport { validateStringLength } from '../../../../helpers/validateStringLength'\nimport { expressionValidation } from '../../../../helpers/expressionValidation'\nimport ModalTemplate from '../../../../uiKit/ModalTemplate'\n\nimport classes from './styles.module.scss'\nimport {OptionItemType} from '../../../../models/MessageTypes'\nimport {GreetingType, WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\n\ntype TabType = 'General' | 'Customization'\nconst tabs: TabType[] = ['General', 'Customization']\n\ninterface Props {\n match: any\n open: boolean\n selectedLanguage: OptionItemType\n widgetSettings: WidgetSettingsType\n selectedGreeting: GreetingType\n onClose: ReactEventHandler\n}\n\nconst EditGreetingModal: React.FC = ({\n open,\n selectedGreeting,\n selectedLanguage,\n onClose,\n match,\n widgetSettings,\n}) => {\n const [selectedTab, setSelectedTab] = useState(tabs[0])\n const [greeting, setGreeting] = useState(selectedGreeting)\n const [saveTime, setSaveTime] = useState(new Date())\n\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n\n useEffect(() => {\n getAttributes(match.params.botId, selectedLanguage?.value)\n getFlows(match.params.botId)\n }, [])\n\n useEffect(() => {\n setGreeting(selectedGreeting)\n setSelectedTab(tabs[0])\n }, [open])\n\n const handleUpdateGreeting = (newGreeting: GreetingType) => {\n setGreeting(newGreeting)\n }\n\n const handleSave = (event: any) => {\n const error = validateGreeting()\n setSaveTime(new Date())\n if (!error) {\n greeting.delaySeconds = Number(greeting.delaySeconds)\n widgetCopy.languageConfigs[selectedLanguage.value].greetings[selectedGreeting.index] = greeting\n updateWidget(match.params.botId, widgetCopy)\n onClose(event)\n }\n }\n\n const validateGreeting = () => {\n const { name, greetingText, startAtomId, delaySeconds, condition } = greeting\n const errorAtGeneral = !validateStringLength(name, 20) || condition.expressions.some(expressionValidation)\n const errorAtCustomization = isStringEmpty(greetingText) || !startAtomId || isStringEmpty('' + delaySeconds)\n\n if (errorAtGeneral && !errorAtCustomization) {\n setSelectedTab(tabs[0])\n } else if (!errorAtGeneral && errorAtCustomization) {\n setSelectedTab(tabs[1])\n }\n\n return errorAtGeneral || errorAtCustomization\n }\n\n return (\n \n
\n
\n {tabs.map((tab, index) => (\n setSelectedTab(tab)}>\n {tab}\n
\n ))}\n
\n
\n {selectedTab === tabs[0] && (\n \n )}\n {selectedTab === tabs[1] && (\n \n )}\n
\n \n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(EditGreetingModal))\n","// @ts-nocheck\nimport React, { useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport LaguageSelector from '../../../../uiKit/LaguageSelector/LaguageSelector'\nimport SecondaryButton from '../../../../uiKit/buttons/SecondaryButton/SecondaryButton'\nimport GreetingsTable from '../GreetingsTable'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\nimport DeleteGreetingModal from '../DeleteGreetingModal'\nimport EditDefaultModal from '../EditDefaultModal'\nimport AddGreetingModal from '../AddGreetingModal'\nimport EditGreetingModal from '../EditGreetingModal'\n\nimport classes from './styles.module.scss'\nimport {GreetingType, WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\n\ninterface Props {\n widgetSettings: WidgetSettingsType\n}\n\nconst GreetingTab: React.FC = ({ widgetSettings }) => {\n const [selectedLanguage, setSelectedLanguages] = useState({ label: 'English', value: 'en' })\n const [selectedGreeting, setSelectedGreeting] = useState(null)\n\n const [openDeleteModal, setOpenDeleteModal] = useState(false)\n const [openAddModal, setOpenAddModal] = useState(false)\n const [openEditModal, setEditDeleteModal] = useState(false)\n const [openEditDefaultModal, setEditDefaultDeleteModal] = useState(false)\n\n const greetings = useMemo(\n () => widgetSettings?.languageConfigs[selectedLanguage.value]?.greetings,\n [widgetSettings?.languageConfigs[selectedLanguage.value]?.greetings],\n )\n\n const handleToggleAddGreetingModal = (open: boolean) => {\n setOpenAddModal(open)\n }\n\n const handleToggleEditGreetingModal = (open: boolean, selectedGreeting: GreetingType) => {\n setSelectedGreeting(selectedGreeting)\n setEditDeleteModal(open)\n }\n\n const handleToggleEditDefaultGreetingModal = (open: boolean, selectedGreeting: GreetingType) => {\n setSelectedGreeting(selectedGreeting)\n setEditDefaultDeleteModal(open)\n }\n\n const handleToggleDeleteGreetingModal = (open: boolean, selectedGreeting: GreetingType) => {\n setSelectedGreeting(selectedGreeting)\n setOpenDeleteModal(open)\n }\n\n return (\n
\n
\n Greeting\n \n
\n\n \n Customize greeting message that will pop up automatically to the user based on his language\n \n\n
\n handleToggleAddGreetingModal(true)} />\n\n \n\n {openDeleteModal && (\n handleToggleDeleteGreetingModal(false, null)}\n />\n )}\n\n {openEditDefaultModal && (\n handleToggleEditDefaultGreetingModal(false, null)}\n />\n )}\n\n {openEditModal && (\n handleToggleEditGreetingModal(false, null)}\n />\n )}\n\n {openAddModal && (\n handleToggleAddGreetingModal(false)}\n />\n )}\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default connect(mapStateToProps)(GreetingTab)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { CloseIcon, PenIcon } from '../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n input: {\n outline: 'none',\n width: '100%',\n padding: '14px 24px',\n borderRadius: 10,\n fontSize: '14px',\n lineHeight: '19px',\n color: theme.palette.primary.text,\n border: '1px solid transparent',\n backgroundColor: 'transparent',\n maxHeight: 45,\n '&:hover': {\n color: theme.palette.primary.dark,\n },\n '&:focus': {\n color: theme.palette.primary.main,\n border: '1px solid #C7CAD6',\n backgroundColor: '#ffffff',\n },\n },\n alert: {\n color: theme.palette.alerts.error,\n marginBottom: '0px',\n fontSize: 12,\n },\n error: {\n border: `1px solid ${theme.palette.alerts.error}`,\n color: theme.palette.alerts.error,\n outline: 'none',\n width: '100%',\n padding: '14px 24px',\n borderRadius: 10,\n fontSize: '14px',\n lineHeight: '19px',\n maxHeight: 45,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n disabled: {\n border: '1px solid white',\n marginRight: 10,\n maxHeight: 45,\n },\n iconsHolder: {\n display: 'none',\n },\n none: {\n display: 'none',\n },\n editUrl: {\n display: 'none',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 5px',\n },\n wrapper: {\n display: 'flex',\n flexAlign: 'center',\n },\n webUrls: {\n fontSize: 14,\n color: theme.palette.primary.main,\n cursor: 'pointer',\n '&:hover .iconsHolder': {\n display: 'flex',\n },\n },\n '@global': {\n '.iconsHolder': {\n display: 'none',\n },\n },\n})\n\nclass Url extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n text: null,\n }\n }\n\n deleteWebUrl(index, e) {\n const id = this.props.index\n this.props.deleteWebUrl(id, e)\n }\n\n handleText(value) {\n this.setState({\n text: value,\n })\n }\n\n componentDidMount() {\n this.setState({\n text: this.props.url,\n })\n }\n\n render() {\n const { classes, url, index, focus } = this.props\n const { text } = this.state\n return (\n
\n \n
\n this.props.editWebUrl(index, this.state.text)}\n onFocus={() => {\n if (!focus) {\n this.props.modifyInput(this.props.index)\n if (!text) this.handleText(url)\n }\n }}\n onChange={event => this.handleText(event.target.value)}\n onKeyPress={e => {\n if (e.charCode === 13)\n this.props.editWebUrl(index, this.state.text)\n }}\n value={text}\n className={classes.input}\n defaultValue={url}\n />\n
\n\n
\n {\n this.props.modifyInput(this.props.index)\n }}>\n \n
\n {\n this.deleteWebUrl(e, index)\n }}>\n \n
\n \n \n {this.props.error && (\n

\n {`Url '${this.props.invalidValue}' is invalid`}\n

\n )}\n \n )\n }\n}\n\nUrl.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Url))\n","export const urlValidation = str =>\n /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~%:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/.test(\n str,\n )\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport uuidv1 from 'uuid/v1'\nimport { EnterIcon } from '../../../uiKit/icons/Icons'\nimport Url from './Url'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { urlValidation } from '../../../helpers/urlValidation'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: theme.palette.primary.text,\n '&::placeholder': {\n color: theme.palette.primary.grayColor,\n },\n },\n red: {\n border: '1px solid #FF624C',\n color: '#FF624C',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 20px',\n maxHeight: 45,\n minWidth: '100%',\n },\n disabled: {\n border: '1px solid white',\n marginRight: 10,\n maxHeight: 45,\n },\n userSays: {\n fontSize: 14,\n color: '#1658F3',\n margin: '18px 0',\n },\n none: {\n display: 'none',\n },\n alert: {\n color: '#FF624C',\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass Urls extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n errorIndex: null,\n editInput: null,\n showNotification: false,\n invalidValue: null,\n valid: false,\n }\n }\n\n uniqueFind = (i, value) =>\n i.trim().toUpperCase() === value.trim().toUpperCase()\n\n checkIfUrlUnique = (item, text, current) => {\n const value = text.trim().toUpperCase()\n return (\n item.trim().toUpperCase() === value &&\n value !== current.trim().toUpperCase()\n )\n }\n\n editWebUrl(id, value) {\n const webUrls = [...this.props.websiteUrl]\n if (\n !urlValidation(value) ||\n webUrls.some(i => this.checkIfUrlUnique(i, value, webUrls[id]))\n ) {\n this.setState({\n invalidValue: value,\n errorIndex: id,\n })\n } else {\n if (this.state.errorIndex !== null) {\n this.setState({\n errorIndex: null,\n })\n }\n webUrls[id] = value\n this.modifyInput(null, this.props.handleChange(webUrls))\n }\n }\n\n deleteWebUrl(index) {\n const newWebsiteUrl = [...this.props.websiteUrl]\n newWebsiteUrl.splice(index, 1)\n this.modifyInput(null, this.props.handleChange(newWebsiteUrl))\n }\n\n handleChangeInput(e) {\n this.setState({\n valid: !isStringEmpty(e.target.value),\n text: e.target.value,\n })\n }\n\n pushUrl(websiteUrl) {\n const urls = [...this.props.websiteUrl]\n urls.push(websiteUrl)\n this.setState(\n {\n text: '',\n showInvalid: false,\n showNotification: false,\n valid: false,\n },\n this.props.handleChange(urls),\n )\n }\n\n addUrl = () => {\n const { text } = this.state\n if (isStringEmpty(text)) return\n if (!urlValidation(text)) {\n this.setState({\n invalidValue: text,\n showInvalid: true,\n showNotification: false,\n })\n return\n }\n if (!this.checkUnique(text)) {\n this.pushUrl(text)\n } else {\n this.setState({\n invalidValue: text,\n showInvalid: false,\n showNotification: true,\n })\n }\n }\n\n checkUnique(value) {\n if (this.props.websiteUrl.length === 0) return false\n return this.props.websiteUrl.some(i => this.uniqueFind(i, value))\n }\n\n modifyInput(id, callback) {\n this.setState(\n {\n editInput: id,\n errorIndex: null,\n },\n () => {\n callback && callback()\n },\n )\n }\n\n render() {\n const { classes, websiteUrl } = this.props\n const { valid, invalidValue } = this.state\n return (\n
\n
\n {\n if (\n (event.type === 'keypress' && event.charCode === 13) ||\n event.type === 'click'\n ) {\n this.addUrl()\n }\n }}\n onChange={event => this.handleChangeInput(event)}\n />\n {\n this.addUrl(e)\n }}\n className={`${classes.enter} enter`}>\n \n
\n
\n {this.state.showNotification && (\n

\n {`Website with url '${invalidValue}' already added`}\n

\n )}\n {this.state.showInvalid && (\n

{`Url '${invalidValue}' is invalid`}

\n )}\n \n {websiteUrl &&\n websiteUrl.map((url, id) => (\n this.modifyInput(id)}\n editWebUrl={(id, value) => this.editWebUrl(id, value)}\n deleteWebUrl={(id, e) => this.deleteWebUrl(id, e)}\n index={id}\n invalidValue={invalidValue}\n error={id === this.state.errorIndex}\n />\n ))}\n \n \n )\n }\n}\n\nUrls.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Urls))\n","import { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { BACKEND_URL, SERVER_URL } from '../../../../configs'\nimport { alertSuccess } from '../../../../api'\n\nimport classes from './styles.module.scss'\nimport {WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\nimport React from 'react'\n\ninterface Props {\n widgetSettings: WidgetSettingsType\n activeBot: any\n}\n\nconst CopySnippet: React.FC = ({ widgetSettings, activeBot }) => {\n // eslint-disable-next-line max-len\n const scriptSnipped = ``\n\n const handleCopyToClipboard = () => {\n navigator.clipboard.writeText(scriptSnipped)\n alertSuccess('Copied!')\n }\n\n return (\n
\n Copy widget code snippet to clipboard\n
\n        {``}\n      
\n \n
\n )\n}\n\nconst mapStateToProps = (state: { activeBot: any; widgetSettings: WidgetSettingsType }) => ({\n activeBot: state.activeBot,\n widgetSettings: state.widgetSettings,\n})\n\nexport default withRouter(connect(mapStateToProps)(CopySnippet))\n","import AppearanceTab from '../tabs/widget/components/AppearanceTab'\nimport WelcomeScreen from '../tabs/widget/components/WelcomeScreenTab'\nimport Greeting from '../tabs/widget/components/GreetingTab'\nimport Integration from '../tabs/widget/components/IntegrationTab'\n\nexport const widgetRoutes = [\n {\n path: 'appearance',\n name: 'Appearance',\n component: AppearanceTab,\n },\n {\n path: 'welcomeScreen',\n name: 'Welcome screen',\n component: WelcomeScreen,\n },\n {\n path: 'greeting',\n name: 'Greeting',\n component: Greeting,\n },\n {\n path: 'integration',\n name: 'Integration',\n component: Integration,\n }\n]\n","import React, { useMemo } from 'react'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../uiKit/texts/Paragraph'\nimport Urls from '../../components/Urls'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\nimport { updateWidget } from '../../api/widget'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport CopySnippet from '../CopySnippet'\n\nimport classes from './styles.module.scss'\nimport {WidgetSettingsType} from '../../../../models/WidgetSettingsTypes'\n\ninterface Props {\n match: any\n widgetSettings: WidgetSettingsType\n}\n\nconst IntegrationTab: React.FC = ({ match, widgetSettings }) => {\n const widgetCopy = useMemo(() => deepCopyFunction(widgetSettings), [widgetSettings])\n\n const handleUpdateWidgetSettings = (value:string, field:string) => {\n widgetCopy[field] = value\n updateWidget(match.params.botId, widgetCopy)\n }\n\n return (\n
\n
\n Integration\n
\n\n Connect your chatbot to the website you own\n\n
\n Provide your website URL\n handleUpdateWidgetSettings(value, 'websiteUrls')}\n websiteUrl={widgetSettings?.websiteUrls}\n />\n \n
\n
\n )\n}\n\nconst mapStateToProps = (state: { widgetSettings: WidgetSettingsType }) => ({\n widgetSettings: state.widgetSettings,\n})\n\nexport default connect(mapStateToProps)(IntegrationTab)\n","import React, { useEffect, useState } from 'react'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport Headline from '../../uiKit/texts/Headline'\nimport Submenu from '../../uiKit/submenu/Submenu'\nimport LoaderScreen from '../../uiKit/loaders/loaderScreen'\nimport { widgetRoutes } from '../../routes/widgetRoutes'\nimport { HOME_PATH } from '../../configs'\nimport { getWidget, getWidgetDefaultSettings } from './api/widget'\n\ninterface Props {\n activeBot: any\n match: any\n}\n\nconst WidgetContainer: React.FC = ({ activeBot, match }) => {\n const [loader, setLoader] = useState(true)\n const pathLink = `${HOME_PATH}/bot/${activeBot?.id}/widget`\n const pathRoute = `${HOME_PATH}/bot/:botId/widget/`\n\n useEffect(() => {\n getWidgetDefaultSettings(match.params.botId)\n getWidget(match.params.botId).then(() => setLoader(false))\n }, [])\n\n return (\n <>\n {loader ? (\n \n ) : (\n <>\n \n \n \n )}\n \n )\n}\n\nconst mapStateToProps = (state: { activeBot: any }) => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(connect(mapStateToProps)(WidgetContainer))\n","export const initialColors = [\n '#9bb3e4',\n '#9bb3e4',\n '#9bb3e4',\n '#9bb3e4',\n '#9bb3e4',\n]\n\nexport const initialDataSet = {\n labels: ['5 stars', '4 stars', '3 stars', '2 stars', '1 star'],\n datasets: [\n {\n backgroundColor: initialColors,\n borderColor: '#366ac9',\n borderWidth: 1,\n hoverBackgroundColor: initialColors,\n hoverBorderColor: '#366ac9',\n data: null\n },\n ],\n}\n\nexport const chartOptions = {\n maintainAspectRatio: false,\n animation: { duration: 0 },\n hover: { animationDuration: 0 },\n responsiveAnimationDuration: 0,\n legend: { display: false },\n scales: {\n xAxes: [\n {\n gridLines: {\n display: false,\n },\n ticks: {\n beginAtZero: true,\n min: 0,\n },\n },\n ],\n },\n onClick: null\n}\n","import React, { FC, useEffect, useMemo, useState } from 'react'\nimport { HorizontalBar } from 'react-chartjs-2'\n\nimport { initialColors, initialDataSet, chartOptions } from '../../constants/chartConfigs'\nimport { DANUBE_BLUE, DULL_LAVANDER_BLUE } from '../../../../constants/colors'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n data: any\n handleSelectedBar: (a: number | null) => void\n selectedBar: number | null\n}\n\nconst Chart: FC = ({ data, handleSelectedBar, selectedBar }) => {\n const [dataSet, setDataSet] = useState(Object.assign({}, initialDataSet))\n const options = useMemo(() => Object.assign({}, chartOptions), [])\n\n useEffect(() => {\n const dataSetCopy = Object.assign({}, dataSet)\n dataSetCopy.datasets[0].data = Object.values(data).reverse()\n\n setDataSet(dataSetCopy)\n }, [data])\n\n options.onClick = function(evt: any, element: any[]) {\n if (element.length > 0) {\n const copyDataSet = Object.assign({}, dataSet)\n const formedIndex = Math.abs(5 - element[0]._index)\n\n copyDataSet.datasets[0].backgroundColor = [...initialColors]\n copyDataSet.datasets[0].hoverBackgroundColor = [...initialColors]\n\n if (selectedBar === formedIndex) {\n copyDataSet.datasets[0].backgroundColor[element[0]._index] = DULL_LAVANDER_BLUE\n copyDataSet.datasets[0].hoverBackgroundColor[element[0]._index] = DULL_LAVANDER_BLUE\n handleSelectedBar(null)\n } else {\n copyDataSet.datasets[0].backgroundColor[element[0]._index] = DANUBE_BLUE\n copyDataSet.datasets[0].hoverBackgroundColor[element[0]._index] = DANUBE_BLUE\n handleSelectedBar(formedIndex)\n }\n\n setDataSet(copyDataSet)\n }\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default Chart\n","import { store } from '../../../index'\n\nexport const SET_ANALYTICS = 'SET_ANALYTICS'\nexport const SET_COMMENTS = 'SET_COMMENTS'\nexport const SET_MORE_COMMENTS = 'SET_MORE_COMMENTS'\n\nexport const setAnalytics = analytics =>\n store.dispatch({\n type: SET_ANALYTICS,\n payload: analytics,\n })\n\nexport const setComments = comments =>\n store.dispatch({\n type: SET_COMMENTS,\n payload: comments,\n })\n\nexport const setMoreComments = comments =>\n store.dispatch({\n type: SET_MORE_COMMENTS,\n payload: comments,\n })\n","import { BACKEND_URL } from '../../../configs'\nimport { alertError, createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\nimport { setAnalytics, setComments, setMoreComments } from '../actions/analytics'\n\nexport function getRatingDistribution({botId, from, to}) {\n const URL = `${BACKEND_URL}/bot/${botId}/analytics/feedback/ratingDistribution?from=${from}&to=${to}`\n\n return fetch(URL, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(res => setAnalytics(res))\n .catch(() => alertError('Fail. Try it later'))\n}\n\nexport function getComments({botId, from, to, page, size, sortBy, sortDirection, score}) {\n const params = new URLSearchParams({\n from,\n to,\n page: page || 0,\n size: size || 10,\n sortBy: sortBy || 'date',\n sortDirection: sortDirection || 'desc',\n })\n\n let URL = `${BACKEND_URL}/bot/${botId}/analytics/feedback/comments?${params}`\n\n if (score) URL = URL.addQueryStringParameter('score', score)\n\n return fetch(URL, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(res => setComments(res))\n .catch(() => alertError('Fail. Try it later'))\n}\n\nexport function getMoreComments({botId, from, to, page, size, sortBy, sortDirection, score}) {\n const params = new URLSearchParams({\n from,\n to,\n page,\n size,\n sortBy,\n sortDirection,\n })\n\n let URL = `${BACKEND_URL}/bot/${botId}/analytics/feedback/comments?${params}`\n\n if (score) URL = URL.addQueryStringParameter('score', score)\n\n return fetch(URL, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(res => setMoreComments(res))\n .catch(() => alertError('Fail. Try it later'))\n}\n","export const SIZE = 10\n\nexport const saveSortDirection = sortDirection => {\n localStorage.setItem('sortDirection', sortDirection)\n}\n\nexport const saveSortBy = sortBy => {\n localStorage.setItem('sortBy', sortBy)\n}\n\nexport const getSortingParams = () => {\n return {\n sortDirectionSaved: localStorage.getItem('sortDirection'),\n sortBySaved: localStorage.getItem('sortBy'),\n }\n}\n","/* eslint-disable */\nimport React from 'react'\n\nclass CheckIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport default CheckIcon\n","import React, { FC } from 'react'\n\nimport CheckIcon from '../../../../uiKit/icons/CheckIcon'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n label: string\n showCheck: boolean\n onClick: any\n}\n\nconst PopoverItem: FC = ({ label, showCheck, onClick }) => (\n
\n {showCheck && } {label}\n
\n)\n\nexport default PopoverItem\n","export const ANCHOR_ORIGIN = {\n vertical: 'bottom',\n horizontal: 'right',\n}\n\nexport const TRANSFORM_ORIGIN = {\n vertical: 'top',\n horizontal: 'right',\n}\n\nexport const SORT_DATE = {\n label: 'Date',\n value: 'date',\n}\n\nexport const SORT_SCORE = {\n label: 'Rate',\n value: 'score',\n}\n\nexport const DIRECTION_ASC = {\n label: 'Ascending',\n value: 'asc',\n}\n\nexport const DIRECTION_DESK = {\n label: 'Descending',\n value: 'desc',\n}\n","import React, { FC, Fragment, useState } from 'react'\nimport Popover from '@material-ui/core/Popover'\n\nimport { CalendarIcon } from '../../../../uiKit/icons/Icons'\nimport PopoverItem from '../PopoverItem'\nimport { DIRECTION_ASC, DIRECTION_DESK, SORT_DATE, SORT_SCORE } from '../../constants/commentsFilterOptions'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n sortDirection: string\n setSortDirection: (a: string) => void\n sortBy: string\n setSortBy: (a: string) => void\n}\n\nconst CommentsFilter: FC = ({ sortDirection, setSortDirection, sortBy, setSortBy }) => {\n const [target, setTarget] = useState(null)\n const [isOpenPopover, setOpenPopover] = useState(false)\n const sortLabel = sortBy === 'score' ? 'Rate' : 'Date'\n\n return (\n \n
setOpenPopover(true)} ref={node => setTarget(node)}>\n \n \n {' '}\n Sort by: {sortLabel}\n
\n setOpenPopover(!isOpenPopover)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}>\n setSortBy(SORT_DATE.value)}\n />\n setSortBy(SORT_SCORE.value)}\n />\n\n
\n\n setSortDirection(DIRECTION_ASC.value)}\n />\n setSortDirection(DIRECTION_DESK.value)}\n />\n \n \n )\n}\n\nexport default CommentsFilter\n","/* eslint-disable */\nimport React from 'react'\n\nexport class ThreeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n","import React, { FC, Fragment, useState } from 'react'\nimport { connect } from 'react-redux'\nimport Popover from '@material-ui/core/Popover'\n\nimport { ThreeIcon } from '../../../../uiKit/icons/TreeDots'\nimport { HOME_PATH } from '../../../../configs'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n botId: number\n userId: string\n messageId: string\n}\n\nconst PopoverSupport: FC = ({ botId, userId, messageId }) => {\n const [target, setTarget] = useState(null)\n const [isOpenPopover, setOpenPopover] = useState(false)\n\n const redirectToChat = () => {\n const link = `${HOME_PATH}/bot/${botId}/support/${userId}#${messageId}`\n window.open(link, '_blank')\n setOpenPopover(false)\n }\n\n return (\n \n
setOpenPopover(true)} style={{ cursor: 'pointer' }} ref={node => setTarget(node)}>\n \n
\n setOpenPopover(!isOpenPopover)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}>\n
\n Go to chat\n
\n \n
\n )\n}\n\nconst mapStateToProps = (state: { activeBot: { id: any } }) => ({\n botId: state.activeBot?.id,\n})\n\nexport default connect(mapStateToProps)(PopoverSupport)\n","import React, { FC, useMemo } from 'react'\nimport moment from 'moment'\n\nimport PopoverSupport from '../PopoverSupport'\n\nimport classes from './styles.module.scss'\nimport {FeedbackType} from '../../../../models/AnalyticsType'\n\ninterface Props {\n data: FeedbackType\n}\n\nconst Comment: FC = ({data}) => {\n const date = useMemo(() => moment(data.date).format('MMM DD, YYYY'), [data])\n\n return (\n
\n
\n
\n

\n {data.firstName} {data.lastName} {date}\n

\n \n
\n
{'★'.repeat(data.score)}
\n
{data.comment}
\n
\n
\n )\n}\n\nexport default Comment\n","import React, { FC, useState, useEffect } from 'react'\nimport { connect } from 'react-redux'\n\nimport { getComments, getMoreComments } from '../../api/analytics'\nimport { getSortingParams, saveSortBy, saveSortDirection, SIZE } from '../../constants/commentsListConfig'\nimport CommentsFilter from '../CommentsFilter'\nimport Comment from '../Comment'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport { isElementBottom } from '../../../../helpers/isElementBottom'\n\nimport classes from './styles.module.scss'\nimport {AllAnalyticsType, CommentsType} from '../../../../models/AnalyticsType'\n\ninterface Props {\n comments: CommentsType\n botId: any\n fromDate: string\n toDate: string\n selectedBar: number\n}\n\nconst CommentsList: FC = ({ comments, botId, fromDate, toDate, selectedBar }) => {\n const { sortDirectionSaved, sortBySaved } = getSortingParams()\n const [sortDirection, setSortDirection] = useState(sortDirectionSaved || 'desc')\n const [sortBy, setSortBy] = useState(sortBySaved || 'date')\n const [page, setPage] = useState(0)\n const [loading, setLoader] = useState(false)\n\n useEffect(() => {\n clearState()\n if (fromDate && toDate && botId) {\n getComments({ botId, from: fromDate, to: toDate, page, size: SIZE, sortBy, sortDirection, score: selectedBar })\n }\n }, [sortBy, sortDirection, fromDate, toDate, selectedBar, botId])\n\n const handleScroll = ({ target }: any) => {\n if (isElementBottom(target) && comments.hasNext) {\n if (loading) setLoader(true)\n getMoreComments({\n botId,\n page,\n sortBy,\n from: fromDate,\n to: toDate,\n size: SIZE,\n sortDirection,\n score: selectedBar,\n })\n .then(() => setPage(page + 1))\n .then(() => setLoader(false))\n }\n }\n\n const handleSortBy = (sortBy: string) => {\n saveSortBy(sortBy)\n setSortBy(sortBy)\n }\n\n const handleSortDirection = (sortDirection: string) => {\n saveSortDirection(sortDirection)\n setSortDirection(sortDirection)\n }\n\n const clearState = () => {\n setPage(0)\n }\n\n return (\n
\n
\n \n
\n {loading ? (\n
\n \n
\n ) : (\n
\n {comments?.feedbacks?.map(comment => (\n \n ))}\n
\n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { analytics: AllAnalyticsType; activeBot: { id: number } }) => ({\n comments: state.analytics.comments,\n botId: state.activeBot?.id,\n})\n\nexport default connect(mapStateToProps)(CommentsList)\n","import React, { FC, useMemo } from 'react'\nimport { connect } from 'react-redux'\n\nimport classes from './styles.module.scss'\nimport {AllAnalyticsType, AnalyticsType} from '../../../../models/AnalyticsType'\n\ninterface Props {\n analytics: AnalyticsType\n}\n\nconst AnalyticsHeader: FC = ({ analytics }) => {\n const score = useMemo(() => Math.round(analytics?.averageScore * 10) / 10, [analytics?.averageScore])\n\n return (\n
\n

Ratings and Reviews

\n\n
\n

\n Average rating\n \n {score}/5 ★ \n \n

\n

\n Ratings\n {analytics?.totalFeedbacks}\n

\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { analytics: AllAnalyticsType }) => ({\n analytics: state.analytics.analytics,\n})\n\nexport default connect(mapStateToProps)(AnalyticsHeader)\n","import React, { FC, useState } from 'react'\nimport { connect } from 'react-redux'\n\nimport Chart from '../Chart'\nimport CommentsList from '../CommentsList'\nimport AnalyticsHeader from '../AnalyticsHeader'\nimport NoChartData from '../../../../uiKit/NoChartData'\n\nimport classes from './styles.module.scss'\nimport {AllAnalyticsType, AnalyticsType} from '../../../../models/AnalyticsType'\n\ninterface Props {\n analytics: AnalyticsType\n fromDate: string\n toDate: string\n}\n\nconst AnalyticsWrap: FC = ({ analytics, fromDate, toDate }) => {\n const [selectedBar, setSelectedBar] = useState(null)\n\n return (\n
\n \n\n
\n {analytics?.totalFeedbacks ? (\n <>\n {analytics?.distribution && (\n \n )}\n \n \n ) : (\n \n )}\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { analytics: AllAnalyticsType }) => ({\n analytics: state.analytics.analytics,\n})\n\nexport default connect(mapStateToProps)(AnalyticsWrap)\n","import React, { FC } from 'react'\n\nimport Tooltip from '../../../../uiKit/TooltipInfo/Tooltip'\nimport SecondaryButton from '../../../../uiKit/buttons/SecondaryButton/SecondaryButton'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n onOpen: () => void\n}\n\nconst tooltipText =\n // eslint-disable-next-line max-len\n 'Funnels show how successfully users are navigating a defined flow. A funnel is a series of steps (received atoms) a user completes while interacting with the bot.'\n\nconst FunnelsHeader: FC = ({ onOpen }) => {\n return (\n
\n

\n Funnels\n \n

\n \n
\n )\n}\n\nexport default FunnelsHeader\n","export const titles = [\n { title: 'Funnel name', maxWidth: 270 },\n { title: 'Number of steps', maxWidth: 120 },\n { title: 'Total conversations', maxWidth: 130 },\n { title: 'Completion rate', maxWidth: 120 },\n { title: '', maxWidth: 120 },\n { title: '', maxWidth: 20 },\n]\n","import { connect } from 'react-redux'\nimport React, { FC, useState } from 'react'\nimport { RouteComponentProps, withRouter } from 'react-router-dom'\n\nimport Table from '../../../../uiKit/table/Table'\nimport TableRow from '../../../../uiKit/table/TableRow'\nimport TableCell from '../../../../uiKit/table/TableCell'\nimport { ThreeIcon } from '../../../../uiKit/icons/ThreeIcon'\nimport { EditIcon } from '../../../../uiKit/icons/EditIcon'\nimport { DeleteIcon } from '../../../../uiKit/icons/DeleteIcon'\nimport { CopyIcon } from '../../../../uiKit/icons/Icons'\nimport Popover from '../../../../uiKit/Popover'\nimport { titles } from '../../constants/tableTitles'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { HOME_PATH } from '../../../../configs'\n\nimport classes from './styles.module.scss'\nimport { FunnelType } from '../../../../models/FunnelTypes'\n\ninterface Props extends RouteComponentProps {\n funnels: FunnelType[]\n onSelect: (a: boolean, b: FunnelType) => void\n onOpenDeleteModal: (a: boolean, b: FunnelType) => void\n history: any\n match: any\n}\n\nconst FunnelsTable: FC = ({ funnels, onSelect, onOpenDeleteModal, history, match }) => {\n const [anchorEl, setAnchorEl] = useState(null)\n const [openedPopoverId, setOpenedPopoverId] = useState(null)\n const open = Boolean(anchorEl)\n const id = open ? 'simple-popover' : undefined\n\n const handleOpenPopover = (event: any, index: number) => {\n setOpenedPopoverId(index)\n setAnchorEl(event.currentTarget)\n }\n\n const handleClosePopover = () => {\n setAnchorEl(null)\n setOpenedPopoverId(null)\n }\n\n const handleEdit = (funnel: FunnelType) => {\n onSelect(true, funnel)\n handleClosePopover()\n }\n\n const handleCopy = (funnel: FunnelType) => {\n const copyFunnel = deepCopyFunction(funnel)\n copyFunnel.isCopy = true\n copyFunnel.name = `Copy of ${copyFunnel.name}`\n copyFunnel.id = null\n onSelect(true, copyFunnel)\n handleClosePopover()\n }\n\n const handleDelete = (funnel: FunnelType) => {\n onOpenDeleteModal(true, funnel)\n handleClosePopover()\n }\n\n const handleDetails = (funnel: FunnelType) => {\n history.push(`${HOME_PATH}/bot/${match.params.botId}/analytics/${funnel.id}`)\n }\n\n return (\n \n {funnels?.map((funnel: FunnelType, index: number) => (\n \n {funnel.name}\n {funnel.steps?.length}\n {funnel.totalConversations}\n {funnel.completionPercentage} %\n \n
handleDetails(funnel)}>\n Show more\n
\n
\n \n
handleOpenPopover(event, index)}>\n \n
\n
\n\n \n
\n
handleEdit(funnel)}>\n Edit\n
\n
handleCopy(funnel)}>\n Copy\n
\n
handleDelete(funnel)}>\n Delete\n
\n
\n
\n
\n ))}\n
\n )\n}\n\nconst mapStateToProps = (state: { funnels: FunnelType[] }) => ({\n funnels: state.funnels,\n})\n\nexport default connect(mapStateToProps)(withRouter(FunnelsTable))\n","import classes from './styles.module.scss'\nimport React, { FC } from 'react'\n\ninterface Props {\n margin?: number\n}\n\nconst Divider: FC = ({ margin }) => {\n return
\n}\n\nexport default Divider\n","export const customStyles = {\n control: (provided, state) => {\n const error = state.selectProps.error\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 6px',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n multiValue: provided => ({\n ...provided,\n borderRadius: 4,\n backgroundColor: '#5A98F7',\n '& > div': {\n color: '#ffffff',\n },\n '& > div: hover': {\n backgroundColor: '#5A98F7',\n color: '#ffffff',\n }\n }),\n}\n","import React, { useEffect, useMemo, useState } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\n\nimport { customStyles } from './styles'\nimport classes from './styles.module.scss'\nimport {OptionItemType} from '../../models/MessageTypes'\n\ninterface Props {\n title?: string\n flows: any\n values: string[] | number[]\n error?: boolean\n errorMessage?: string\n onFocus?(event): void\n onChange(value: OptionItemType): void\n}\n\nconst AtomMultiSelect: React.FC = ({\n error,\n errorMessage,\n title,\n flows,\n values,\n onFocus,\n onChange,\n}) => {\n const [options, setOptions]: [OptionItemType[], any] = useState([])\n\n const atomValues = useMemo(() => {\n return values.map(value => options.find(({ value: val, label }) => val == value || label == value))\n }, [values, options])\n\n useEffect(() => {\n if (flows) {\n const options: OptionItemType[] = []\n\n flows.forEach(({ atoms }: any) => {\n if (atoms) {\n atoms.forEach(({ name, id }: any) => {\n options.push({ label: name, value: id })\n })\n }\n })\n\n setOptions(options)\n }\n }, [flows])\n\n const handleChange = value => {\n onChange(value)\n }\n\n return (\n <>\n {title &&

{title}

}\n \n {errorMessage &&

{errorMessage}

}\n \n )\n}\n\nconst mapStateToProps = (state: { flows: any }) => ({\n flows: state.flows,\n})\n\nexport default connect(mapStateToProps)(AtomMultiSelect)\n","import React, { FC } from 'react'\n\nimport SecondaryButton from '../../../../uiKit/buttons/SecondaryButton/SecondaryButton'\nimport Label from '../../../../uiKit/texts/Label'\n\nimport classes from './styles.module.scss'\n\ninterface Props {\n onClick: () => void\n showButton: boolean\n}\n\nconst FunnelModalFooter: FC = ({ onClick, showButton }) => {\n return (\n
\n {showButton && }\n \n
\n )\n}\n\nexport default FunnelModalFooter\n","export const funnelData = {\n name: '',\n steps: [\n {\n atomIds: [],\n stepNumber: 1,\n },\n {\n atomIds: [],\n stepNumber: 2,\n },\n ],\n}\n\nexport const newStep = {\n atomIds: [],\n}\n","import { createJsonHeaders, logoutOnRequestOrResponseJson } from '../api'\n\nasync function _apiMethod(method: string, url: string, body?: any) {\n const options: RequestInit = {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: method,\n }\n\n if (body) {\n options.body = JSON.stringify(body)\n }\n\n return fetch(url, options)\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(response => {\n if (response?.data) {\n return response.data\n }\n\n if (response?.error) {\n throw response?.error\n }\n })\n}\n\nclass Api {\n async get(url: string) {\n return _apiMethod('GET', url)\n }\n\n async post(url: string, body?: any) {\n return _apiMethod('POST', url, body)\n }\n\n async put(url: string, body?: any) {\n return _apiMethod('PUT', url, body)\n }\n\n async patch(url: string, body?: any) {\n return _apiMethod('PATCH', url, body)\n }\n\n async delete(url: string, body?: any) {\n return _apiMethod('DELETE', url, body)\n }\n}\n\nexport default new Api()\n","import { store } from '../../../index'\n\nexport const SET_FUNNELS = 'SET_FUNNELS'\nexport const ADD_FUNNEL = 'ADD_FUNNEL'\nexport const UPDATE_FUNNEL = 'UPDATE_FUNNEL'\nexport const DELETE_FUNNEL = 'DELETE_FUNNEL'\nexport const CLEAR_FUNNELS_STATE = 'CLEAR_FUNNELS_STATE'\n\nexport const setFunnels = funnels => {\n store.dispatch({\n type: SET_FUNNELS,\n payload: {\n funnels,\n },\n })\n}\n\nexport const addFunnels = funnel => {\n store.dispatch({\n type: ADD_FUNNEL,\n payload: {\n funnel,\n },\n })\n}\n\nexport const updateFunnelAction = funnel => {\n store.dispatch({\n type: UPDATE_FUNNEL,\n payload: {\n funnel,\n },\n })\n}\n\nexport const deleteFunnelAction = funnelId => {\n store.dispatch({\n type: DELETE_FUNNEL,\n payload: {\n funnelId,\n },\n })\n}\n\nexport const clearFunnelsState = () => {\n store.dispatch({\n type: CLEAR_FUNNELS_STATE\n })\n}\n","import { store } from '../../../index'\n\nexport const SET_FUNNEL = 'SET_FUNNEL'\nexport const CLEAR_STATE = 'CLEAR_STATE'\n\nexport const setFunnel = funnel => {\n store.dispatch({\n type: SET_FUNNEL,\n payload: {\n funnel,\n },\n })\n}\n\nexport const clearFunnelState = () => {\n store.dispatch({\n type: CLEAR_STATE\n })\n}\n","import { BASE_URL } from '../../../configs'\nimport api from '../../../services/api'\nimport { addFunnels, deleteFunnelAction, setFunnels, updateFunnelAction } from '../actions/funnels'\nimport { alertError, alertSuccess } from '../../../api'\nimport { setFunnel } from '../actions/funnel'\n\nasync function getFunnels({ botId, from, to }) {\n try {\n const data = await api.get(`${BASE_URL}/bot/${botId}/analytics/funnels?from=${from}&to=${to}`)\n\n if (data) {\n setFunnels(data)\n }\n } catch (error) {\n alertError(error.message)\n }\n}\n\nasync function addFunnel({ botId, funnel, from, to }) {\n try {\n const newFunnel = await api.post(`${BASE_URL}/bot/${botId}/analytics/funnels`, funnel)\n const data = await api.get(`${BASE_URL}/bot/${botId}/analytics/funnels/${newFunnel.id}?from=${from}&to=${to}`)\n\n if (data) {\n addFunnels(data)\n alertSuccess('Funnel is created successfully')\n }\n } catch (error) {\n alertError(error.message)\n }\n}\n\nasync function updateFunnel({ botId, funnel, from, to }) {\n try {\n const newFunnel = await api.patch(`${BASE_URL}/bot/${botId}/analytics/funnels`, funnel)\n const data = await api.get(`${BASE_URL}/bot/${botId}/analytics/funnels/${newFunnel.id}?from=${from}&to=${to}`)\n\n if (data) {\n updateFunnelAction(data)\n alertSuccess('Funnel is updated successfully')\n }\n } catch (error) {\n alertError(error.message)\n }\n}\n\nasync function deleteFunnel({ botId, funnelId }) {\n try {\n await api.delete(`${BASE_URL}/bot/${botId}/analytics/funnels/${funnelId}`)\n deleteFunnelAction(funnelId)\n alertSuccess('Funnel is deleted successfully')\n } catch (error) {\n alertError(error.message)\n }\n}\n\nasync function getFunnel({ botId, from, to, funnelId }) {\n try {\n const data = await api.get(`${BASE_URL}/bot/${botId}/analytics/funnels/${funnelId}?from=${from}&to=${to}`)\n setFunnel(data)\n return data\n } catch (error) {\n alertError(error.message)\n }\n}\n\nasync function getConversations({ botId, funnelId, stepNumber, from, to, page, filter }) {\n try {\n const params = new URLSearchParams({\n from,\n to,\n stepNumber,\n filter,\n size: '1',\n page: page || '0',\n sort: 'date',\n })\n return await api.get(`${BASE_URL}/bot/${botId}/analytics/funnels/${funnelId}/conversations?${params}`)\n } catch (error) {\n alertError(error.message)\n }\n}\n\nasync function getConversation({ botId, conversationId, page }) {\n try {\n const params = new URLSearchParams({\n page,\n size: '20',\n sort: 'id,desc',\n })\n return await api.get(`${BASE_URL}/bot/${botId}/conversations/${conversationId}?${params}`)\n } catch (error) {\n alertError(error.message)\n }\n}\n\nexport { getFunnels, addFunnel, updateFunnel, deleteFunnel, getFunnel, getConversations, getConversation }\n","import React, { FC, useMemo, useRef, useState } from 'react'\nimport { connect } from 'react-redux'\n\nimport ModalTemplate from '../../../../uiKit/ModalTemplate'\nimport Input from '../../../../uiKit/inputs/Input'\nimport Divider from '../../../../uiKit/Divider'\nimport { TrashIcon } from '../../../../uiKit/icons/Icons'\nimport { setErrors } from '../../../../helpers/setErrors/setErrors'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AtomMultiSelect from '../../../../uiKit/AtomMultiSelect/AtomMultiSelect'\nimport FunnelModalFooter from '../FunnelModalFooter'\nimport { funnelData, newStep } from '../../constants/elements'\nimport { addFunnel, updateFunnel } from '../../api/funnels'\n\nimport classes from './styles.module.scss'\nimport { useStateCallback } from '../../../../hooks/useStateCallback'\nimport { FunnelType } from '../../../../models/FunnelTypes'\nimport { OptionItemType } from '../../../../models/MessageTypes'\n\ninterface Props {\n open: boolean\n onClose: () => void\n botId: number\n fromDate: string\n toDate: string\n selectedFunnel: FunnelType\n funnels: FunnelType[]\n scrollToBottom: () => void\n}\n\nconst FunnelModal: FC = ({\n open,\n onClose,\n botId,\n selectedFunnel,\n funnels,\n fromDate,\n toDate,\n scrollToBottom,\n}) => {//NOSONAR\n const [errorsName, setErrorsName] = useState([])\n const [errorsSteps, setErrorsSteps] = useState([])\n const [funnel, setFunnel] = useStateCallback(selectedFunnel || funnelData)\n const containerEndRef = useRef(null)\n\n const funnelCopy = useMemo(() => deepCopyFunction(funnel), [funnel])\n const errorsStepsCopy = useMemo(() => deepCopyFunction(errorsSteps), [errorsSteps])\n\n const handleUpdateName = (value: string) => {\n validateName(value)\n funnelCopy.name = value\n setFunnel(funnelCopy)\n }\n\n const handleUpdateStep = (value: OptionItemType[], index: number) => {\n validateSteps(value, index)\n funnelCopy.steps[index].atomIds = value.map(({ value }) => value)\n setFunnel(funnelCopy)\n }\n\n const handleAddStep = () => {\n funnelCopy.steps.push(deepCopyFunction(newStep))\n setFunnel(funnelCopy, handleScrollToBottom)\n }\n\n const handleScrollToBottom = () => {\n if (containerEndRef.current) {\n containerEndRef.current.scrollIntoView()\n }\n }\n\n const handleDeleteStep = (index: number) => {\n funnelCopy.steps.splice(index, 1)\n errorsStepsCopy.splice(index, 1)\n\n setErrorsSteps(errorsStepsCopy)\n setFunnel(funnelCopy)\n }\n\n const handleSave = () => {\n const error = validateFunnel()\n\n if (!error) {\n funnelCopy.steps = funnel.steps.map((step, index) => {\n step.stepNumber = index + 1\n return step\n })\n funnelCopy.botId = botId\n if (selectedFunnel && !selectedFunnel.isCopy) {\n updateFunnel({ botId, funnel: funnelCopy, from: fromDate, to: toDate })\n } else {\n addFunnel({ botId, funnel: funnelCopy, from: fromDate, to: toDate }).then(() => scrollToBottom())\n }\n onClose()\n }\n }\n\n const validateName = (value: string) => {\n // @ts-ignore\n const usedNames = funnels?.filter(({ id }) => id !== funnel?.id)?.map(({ name }) => name)\n const errors = setErrors(value, 50, usedNames)\n setErrorsName(errors)\n\n return !errors.length\n }\n\n const validateSteps = (value: OptionItemType[] | number[], index: number) => {\n errorsStepsCopy[index] = setErrors(value)\n setErrorsSteps(errorsStepsCopy)\n\n return !errorsStepsCopy.filter((arr: string[]) => arr?.length)?.length\n }\n\n const validateFunnel = () => {\n const nameError = validateName(funnel.name)\n const stepsError = funnel.steps.reduce((total, { atomIds }, index) => validateSteps(atomIds, index), false)\n\n return !nameError || !stepsError\n }\n\n return (\n }>\n
\n handleUpdateName(event.target.value)}\n error={!!errorsName.length}\n inputTitleStyles={{ margin: '0px 0px 8px' }}\n errorMessage={errorsName[0]}\n />\n\n \n\n {funnel.steps.map((step, index) => (\n
\n handleUpdateStep(value, index)}\n values={step.atomIds}\n title={`Step ${index + 1}`}\n error={!!errorsSteps[index]?.length}\n errorMessage={!!errorsSteps[index]?.length && errorsSteps[index][0]}\n />\n {index > 1 && (\n
handleDeleteStep(index)}>\n \n
\n )}\n
\n ))}\n
\n
\n \n )\n}\n\nconst mapStateToProps = (state: { activeBot: { id: any }; funnels: FunnelType[] }) => ({\n botId: state.activeBot?.id,\n funnels: state.funnels,\n})\n\nexport default connect(mapStateToProps)(FunnelModal)\n","import {useCallback, useEffect, useRef, useState} from 'react'\n\nexport function useStateCallback(initialState) {\n const [state, setState] = useState(initialState)\n const cbRef = useRef(null)\n\n const setStateCallback = useCallback((state, cb) => {\n cbRef.current = cb\n setState(state)\n }, [])\n\n useEffect(() => {\n if (cbRef.current) {\n cbRef.current(state)\n cbRef.current = null\n }\n }, [state])\n\n return [state, setStateCallback]\n}\n","import Modal from '@material-ui/core/Modal'\nimport { connect } from 'react-redux'\nimport React, { FC, ReactEventHandler } from 'react'\n\nimport { CrossIcon } from '../../../../uiKit/icons/CrossIcon'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\n\nimport classes from './styles.module.scss'\nimport { deleteFunnel } from '../../api/funnels'\nimport {FunnelType} from '../../../../models/FunnelTypes'\n\ninterface Props {\n botId: any\n open: boolean\n selectedFunnel: FunnelType\n onClose: ReactEventHandler\n}\n\nconst DeleteModal: FC = ({ botId, open, selectedFunnel, onClose }) => {\n const handleDelete = (event: any) => {\n deleteFunnel({botId, funnelId: selectedFunnel.id})\n onClose(event)\n }\n\n return (\n \n
\n

Are you sure you want to delete {selectedFunnel.name} funnel?

\n
\n \n
\n
\n
\n Delete\n
\n \n
\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { activeBot: { id: any } }) => ({\n botId: state.activeBot?.id,\n})\n\nexport default connect(mapStateToProps)(DeleteModal)\n","import React, { FC, useState } from 'react'\nimport { connect } from 'react-redux'\n\nimport FunnelsHeader from '../FunnelsHeader'\nimport FunnelsTable from '../FunnelsTable'\nimport FunnelModal from '../FunnelModal'\nimport DeleteModal from '../DeleteModal'\nimport NoChartData from '../../../../uiKit/NoChartData'\n\nimport classes from './styles.module.scss'\nimport {FunnelType} from '../../../../models/FunnelTypes'\n\ninterface Props {\n funnels: FunnelType[]\n fromDate: string\n toDate: string\n scrollToBottom: () => void\n}\n\nconst FunnelsWrap: FC = ({ funnels, fromDate, toDate, scrollToBottom }) => {\n const [openAddModal, setOpenAddModal] = useState(false)\n const [openDeleteModal, setOpenDeleteModal] = useState(false)\n const [selectedFunnel, setFunnel] = useState(null)\n\n const handleToggleDeleteModal = (open: boolean, selectedFunnel: null) => {\n setFunnel(selectedFunnel)\n setOpenDeleteModal(open)\n }\n\n const handleToggleFunnelModal = (open: boolean, selectedFunnel: FunnelType) => {\n setFunnel(selectedFunnel)\n setOpenAddModal(open)\n }\n\n return (\n
\n setOpenAddModal(true)} />\n
\n {funnels?.length ? (\n \n ) : (\n \n )}\n
\n\n {openAddModal && (\n handleToggleFunnelModal(false, null)}\n selectedFunnel={selectedFunnel}\n fromDate={fromDate}\n toDate={toDate}\n scrollToBottom={scrollToBottom}\n />\n )}\n\n {openDeleteModal && (\n handleToggleDeleteModal(false, null)}\n />\n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { funnels: FunnelType[] }) => ({\n funnels: state.funnels,\n})\n\nexport default connect(mapStateToProps)(FunnelsWrap)\n","import React, { FC, useEffect, useRef, useState } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport HeadlineWrapWithDateControl from '../../../../uiKit/HeadlineWrapWithDateControl'\nimport AnalyticsWrap from '../AnalyticsWrap'\nimport FunnelsWrap from '../FunnelsWrap'\n\nimport { getRatingDistribution, getComments } from '../../api/analytics'\nimport { getFunnels } from '../../api/funnels'\nimport { getBot } from '../../../home/api/bots'\nimport { getFlows } from '../../../flowBuilder/api/flow'\n\nimport classes from './styles.module.scss'\nimport LoaderScreen from '../../../../uiKit/loaders/loaderScreen'\nimport { clearFunnelsState } from '../../actions/funnels'\nimport {AllAnalyticsType} from '../../../../models/AnalyticsType'\nimport {FunnelType} from '../../../../models/FunnelTypes'\n\ninterface Props {\n match: any\n analytics: AllAnalyticsType\n funnels: FunnelType[]\n}\n\nconst Analytics: FC = ({ match, analytics, funnels }) => {\n const [fromDate, setFromDate] = useState(null)\n const [toDate, setToDate] = useState(null)\n const [loader, setLoader] = useState(true)\n const containerEndRef = useRef(null)\n const containerRef = useRef(null)\n\n useEffect(() => {\n containerRef.current.scrollTo(0, 0)\n }, [])\n\n useEffect(() => {\n if (analytics?.analytics !== null) {\n setLoader(false)\n }\n }, [analytics, funnels])\n\n useEffect(() => {\n getBot(match.params.botId)\n getFlows(match.params.botId)\n return clearFunnelsState\n }, [])\n\n const handleScrollToBottom = () => {\n if (containerEndRef.current) {\n containerEndRef.current.scrollIntoView()\n }\n }\n\n return (\n
\n \n {loader ? (\n \n ) : (\n <>\n \n\n \n \n )}\n
\n
\n )\n}\n\nconst mapStateToProps = (state: { analytics: AllAnalyticsType; funnels: FunnelType[] }) => ({\n analytics: state.analytics,\n funnels: state.funnels,\n})\n\nexport default withRouter(connect(mapStateToProps)(Analytics))\n","import React, { FC } from 'react'\nimport ReactTooltip from 'react-tooltip'\nimport classes from './styles.module.scss'\n\ninterface Props {\n id: string\n place?: string\n}\n\nconst Tooltip: FC = ({ children, id, place }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default Tooltip\n","import React, { FC, useMemo } from 'react'\nimport { RouteComponentProps, withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { ColumnChart } from 'react-chartkick'\nimport 'chartjs-plugin-labels'\n\nimport Tooltip from '../../../../uiKit/Tooltip'\nimport NoChartData from '../../../../uiKit/NoChartData'\n\nimport classes from './styles.module.scss'\nimport { FunnelStepType, FunnelType } from '../../../../models/FunnelTypes'\n\ninterface Props extends RouteComponentProps {\n funnel: FunnelType\n atoms: any[]\n onSelect: (a: number) => void\n}\n\nconst CompletionRateChart: FC = ({ funnel, atoms, onSelect }) => {\n const data = useMemo(getData, [funnel])\n const libraryOptions = useMemo(getLibraryOptions, [funnel, atoms])\n const isData = useMemo(\n () => data?.reduce((sum, [, conversationPercentage]) => sum + conversationPercentage, 0),\n [data],\n )\n\n function getData() {\n return funnel?.steps?.map(({ stepNumber, conversationPercentage }) => [stepNumber, conversationPercentage])\n }\n\n function getLibraryOptions() {\n return {\n layout: {\n padding: {\n top: 20,\n },\n },\n style: {\n borderColor: '#1658F3',\n backgroundColor: '#1658F3',\n },\n tooltips: {\n callbacks: {\n label: (tooltipItem: { label: number }) => {\n const userCount = funnel?.steps?.find(\n ({ stepNumber }: FunnelStepType) => stepNumber == tooltipItem.label,\n )?.conversationCount\n return `${userCount} conversations`\n },\n title: () => '',\n },\n },\n scales: {\n xAxes: [\n {\n barPercentage: funnel?.steps?.length * 0.1,\n display: false,\n },\n ],\n yAxes: [\n {\n ticks: {\n callback: (value: string) => `${value} %`,\n },\n },\n ],\n },\n plugins: {\n labels: {\n render: ({ value }: any) => `${value} %`,\n },\n },\n }\n }\n\n const getAtomNames = (atomIds: number[]) => {\n return atomIds?.map(atomId => atoms?.find(({ id }) => id === atomId)?.name || '')?.join(' | ')\n }\n\n return (\n
\n {isData ? (\n <>\n \n\n
\n {funnel?.steps?.map(({ atomIds, stepNumber }) => (\n <>\n
\n {atoms.find(({ id }) => id === atomIds[0])?.name}\n
\n \n Step {stepNumber}: {getAtomNames(atomIds)}\n \n \n ))}\n
\n\n
\n {funnel?.steps?.map(({ stepNumber, conversationCount }) => (\n
onSelect(stepNumber)}>\n {conversationCount ? 'View transcripts' : ''}\n
\n ))}\n
\n \n ) : (\n \n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { funnel: FunnelType; atoms: any[] }) => ({\n funnel: state.funnel,\n atoms: state.atoms,\n})\n\nexport default connect(mapStateToProps)(withRouter(CompletionRateChart))\n","export const styles = () => ({\n arrow: {\n marginLeft: 10,\n width: 20,\n display: 'inline-block',\n },\n})\n\nexport const customStyles = {\n control: (provided, state) => ({\n ...provided,\n width: 210,\n border: 'none',\n outline: 'none',\n boxShadow: 'none',\n backgroundColor: 'transparent',\n cursor: 'pointer',\n '& > div': {\n justifyContent: 'center',\n },\n '&:hover': {\n border: 'none',\n boxShadow: 'none',\n },\n }),\n indicatorSeparator: (provided, state) => ({\n ...provided,\n backgroundColor: 'transparent',\n }),\n singleValue: (provided, state) => ({\n ...provided,\n color: '#1658F3',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n color: '#1658F3',\n display: 'none',\n cursor: 'pointer',\n '&:hover': {\n color: '#1658F3',\n },\n }),\n menu: (provided, state) => ({\n ...provided,\n top: 24,\n }),\n}\n","import React, { useMemo, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { customStyles, styles } from './styles'\nimport Select, { components } from 'react-select'\nimport { LanguageArrowDown } from '../../../../uiKit/icons/LanguageArrowDown'\nimport { LanguageArrowUp } from '../../../../uiKit/icons/LanguageArrowUp'\n\nconst Index = props => {\n const { onChange, value, classes } = props\n const [isOpen, setIsOpen] = useState(false)\n const options = useMemo(\n () => [\n {\n value: 'ALL',\n label: 'All conversations',\n },\n {\n value: 'COMPLETED_NEXT_STEP',\n label: 'Completed next step',\n },\n {\n value: 'DROP_OFF',\n label: 'Dropped off this step',\n },\n ],\n [],\n )\n\n const SingleValue = props => {\n return (\n \n {props.children}\n {isOpen ? : }\n \n )\n }\n\n return (\n setIsOpen(true)}\n onMenuClose={() => setIsOpen(false)}\n />\n )\n}\n\nIndex.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(Index)\n","import React, { useEffect, useRef, useState } from 'react'\nimport { LeftArrowIcon, RightArrowIcon } from '../../uiKit/icons/Icons'\n\nimport classes from './styles.module.scss'\n\nconst Pagination = ({ page, count, onChange }) => {\n const [value, setValue] = useState(null)\n const inputRef = useRef(null)\n\n useEffect(() => setValue(page), [page])\n\n const handleChangeLeft = () => {\n if (page !== 1) {\n onChange(page - 1)\n }\n }\n\n const handleChangeRight = () => {\n if (page < count) {\n onChange(page + 1)\n }\n }\n\n const handleChange = event => {\n const value = Number(event.target.value) || ''\n if (value || value === '') {\n setValue(value)\n inputRef.current.style.width = value.toString().length + 1 + 'em'\n if (value) {\n onChange(value)\n }\n }\n }\n\n const handleBlur = () => {\n setValue(page)\n }\n\n const handleInput = event => {\n if (Number(event.target.value) > count) {\n event.target.value = value\n }\n }\n\n return (\n
\n
\n \n
\n
\n \n
of {count}
\n
\n
\n \n
\n
\n )\n}\n\nexport default Pagination\n","import React from 'react'\n\nexport const ExternalLinkIcon = () => {\n return (\n \n {/* eslint-disable-next-line max-len */}\n \n \n \n \n )\n}\n","import React, { FC } from 'react'\nimport { connect } from 'react-redux'\n\nimport UserIcon from '../../../../uiKit/UserIcon'\nimport { ExternalLinkIcon } from '../../../../uiKit/icons/ExternalLinkIcon'\nimport { HOME_PATH } from '../../../../configs'\n\nimport classes from './styles.module.scss'\nimport {ConversationType} from '../../../../models/FunnelTypes'\n\ninterface Props {\n conversation: ConversationType\n botId: number\n}\n\nconst UserInfo: FC = ({ conversation, botId }) => {\n const handleOpenLink = () => {\n const link = `${HOME_PATH}/bot/${botId}/support/${conversation.userId}#${conversation.messageId}`\n window.open(link, '_blank')\n }\n\n return (\n
\n \n
\n {conversation?.firstName} {conversation?.lastName}\n
\n
\n \n
\n
\n )\n}\n\nconst mapStateToProps = (state: { activeBot: { id: any } }) => ({\n botId: state.activeBot?.id\n})\n\nexport default connect(mapStateToProps)(UserInfo)\n","import React, { FC, useMemo } from 'react'\nimport { connect } from 'react-redux'\n\nimport { CrossIcon } from '../../../../uiKit/icons/CrossIcon'\nimport { SPUN_PEARL_GREY } from '../../../../constants/colors'\nimport Tooltip from '../../../../uiKit/Tooltip'\n\nimport classes from './styles.module.scss'\nimport {FunnelType} from '../../../../models/FunnelTypes'\n\nconst tooltipId = 'atomNames-TooltipInfo'\n\ninterface Props {\n onClose: any\n atoms: any[]\n selectedStepNumber: number\n funnel: FunnelType\n}\n\nconst TranscriptsHeader: FC = ({ onClose, atoms, selectedStepNumber, funnel }) => {\n const step = useMemo(() => {\n return funnel?.steps?.find(({ stepNumber }) => stepNumber === selectedStepNumber)\n }, [funnel, selectedStepNumber])\n\n const atomNames = useMemo(() => {\n return (\n step?.atomIds?.map(atomId => {\n return atoms?.find(({ id }) => id === atomId)?.name || ''\n }) || []\n )\n }, [funnel, atoms, selectedStepNumber])\n\n return (\n
\n
\n \n \n \n Transcripts\n
\n
\n Step {step?.stepNumber}: {atomNames[0]}\n
\n \n Step {step?.stepNumber}: {atomNames.join(' | ')}\n \n
\n )\n}\n\nconst mapStateToProps = (state: { funnel: FunnelType; atoms: any; activeBot: { id: any } }) => ({\n funnel: state.funnel,\n atoms: state.atoms,\n botId: state.activeBot.id,\n})\n\nexport default connect(mapStateToProps)(TranscriptsHeader)\n","import React, { FC, useEffect, useRef, useState } from 'react'\nimport { RouteComponentProps, withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { formatDate } from '../../../../helpers/formatDate/formatDate'\nimport MessageGroup from '../../../support/components/MessageGroup/MessageGroup'\nimport { getConversation } from '../../api/funnels'\nimport { isElementTop } from '../../../../helpers/isElementTop'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\n\nimport classes from './styles.module.scss'\nimport {ConversationType, MessageType} from '../../../../models/FunnelTypes'\n\ninterface Props extends RouteComponentProps {\n botId: number\n conversation: ConversationType\n}\n\nconst Messages: FC = ({ botId, conversation }) => {//NOSONAR\n const [messages, setMessages] = useState([])\n const [dates, setDates] = useState([])\n const [page, setPage] = useState(0)\n const [hasNext, setHasNext] = useState(true)\n const [scrollPosition, setScrollPosition] = useState(null)\n const [scrollToTop, serScrollToTop] = useState(false)\n const [loader, setLoader] = useState(true)\n const scrollContainer = useRef(null)\n const messageIntoView = useRef(null)\n\n useEffect(() => {\n const { messageId } = conversation\n\n if (scrollToTop && scrollPosition) {\n scrollContainer.current.scrollTop = scrollContainer.current.scrollHeight - scrollPosition\n }\n\n if (messages?.length) {\n updateMessageDates()\n }\n\n if (!messages.find(({ id }) => id === messageId) && hasNext) {\n getMessages().then(() => {\n setTimeout(() => {\n messageIntoView?.current?.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }, 0)\n })\n } else {\n if (loader === true) setLoader(false)\n }\n }, [messages])\n\n const updateMessageDates = () => {\n const dates = messages.map(item => item.timestamp.split('T')[0])\n setDates([...new Set(dates)])\n }\n\n const handleScroll = ({ target }: any) => {\n if (isElementTop(target) && hasNext) {\n setScrollPosition(scrollContainer.current.scrollHeight)\n serScrollToTop(true)\n getMessages()\n }\n }\n\n const getMessages = () => {\n const { conversationId } = conversation\n\n return getConversation({ botId, conversationId, page }).then(data => {\n setPage(page + 1)\n setMessages([...messages, ...data.content])\n updateHasNext(data.content.length)\n })\n }\n\n const updateHasNext = messagesLength => {\n if (messagesLength < 10) {\n setHasNext(false)\n }\n }\n\n return (\n
\n {loader ? (\n
\n \n
\n ) : (\n dates\n .slice()\n .reverse()\n .map((date: any) => (\n
\n

{formatDate(date)}

\n \n
\n ))\n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { activeBot: { id: any } }) => ({\n botId: state.activeBot?.id,\n})\n\nexport default connect(mapStateToProps)(withRouter(Messages))\n","import React, { FC, useEffect, useMemo, useState } from 'react'\nimport { connect } from 'react-redux'\n\nimport ConversationsSelector from '../ConversationsSelector'\nimport Pagination from '../../../../uiKit/Pagination'\nimport { getConversations } from '../../api/funnels'\nimport UserInfo from '../UserInfo'\nimport TranscriptsHeader from '../TranscriptsHeader'\nimport Messages from '../Messages'\n\nimport classes from './styles.module.scss'\nimport NoChartData from '../../../../uiKit/NoChartData'\nimport {FunnelType} from '../../../../models/FunnelTypes'\n\ninterface Props {\n selectedStepNumber: number\n funnel: FunnelType\n onClose: () => void\n botId: number\n fromDate: string\n toDate: string\n}\n\nconst Transcripts: FC = ({ selectedStepNumber, funnel, onClose, botId, fromDate, toDate }) => {\n const [filter, setFilter] = useState({ value: 'ALL', label: 'All conversations' })\n const [page, setPage] = useState(1)\n const [count, setCount] = useState(0)\n const [conversation, setConversation] = useState(null)\n const [showConversation, setShowConversation] = useState(false)\n const isLast = useMemo(() => funnel.steps.length === selectedStepNumber, [funnel, selectedStepNumber])\n\n useEffect(() => {\n setConversation(null)\n setShowConversation(false)\n setFilter({ value: 'ALL', label: 'All conversations' })\n }, [selectedStepNumber])\n\n useEffect(() => {\n handleChangePage(1)\n }, [filter])\n\n const handleChangePage = (page: number) => {\n setPage(page)\n updateConversation(page)\n }\n\n const updateConversation = async(page: number) => {\n setShowConversation(false)\n\n const conversation = await getConversations({\n funnelId: funnel.id,\n stepNumber: selectedStepNumber,\n from: fromDate,\n to: toDate,\n botId,\n page: page - 1,\n filter: filter.value,\n })\n\n if (conversation?.totalConversations) {\n setConversation(conversation.conversations[0])\n setShowConversation(true)\n }\n setCount(conversation.totalConversations)\n }\n\n return (\n
\n \n
\n {isLast === false && }\n \n
\n {showConversation && (\n <>\n \n {conversation && }\n \n )}\n {count === 0 && (\n \n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { funnel: FunnelType; activeBot: { id: any } }) => ({\n funnel: state.funnel,\n botId: state.activeBot.id,\n})\n\nexport default connect(mapStateToProps)(Transcripts)\n","import React, { FC, useEffect, useState } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { clearFunnelState } from '../../actions/funnel'\nimport LoaderScreen from '../../../../uiKit/loaders/loaderScreen'\nimport CompletionRateChart from '../CompletionRateChart'\nimport ChartContainer from '../../../../uiKit/ChartContainer'\nimport { getFlows } from '../../../flowBuilder/api/flow'\nimport { getFunnel } from '../../api/funnels'\nimport { getBot } from '../../../home/api/bots'\nimport Transcripts from '../Transcripts'\nimport HeadlineWrapWithDateControl from '../../../../uiKit/HeadlineWrapWithDateControl'\n\nimport classes from './styles.module.scss'\nimport {FunnelType} from '../../../../models/FunnelTypes'\n\ninterface Props {\n funnel: FunnelType\n match: any\n}\n\nconst tooltipText = 'Step completion rate shows a percentage of users who entered the flow and received this step atom.'\n\nconst Funnel: FC = ({ match, funnel }) => {\n const [selectedStepNumber, setSelectedStep] = useState(false)\n const [fromDate, setFromDate] = useState(null)\n const [toDate, setToDate] = useState(null)\n const [loader, setLoader] = useState(true)\n\n const loadData = [\n {\n request: getFunnel,\n params: { funnelId: match.params.funnelId },\n },\n ]\n\n useEffect(() => {\n if (funnel !== null) {\n setLoader(false)\n }\n }, [funnel])\n\n useEffect(() => {\n getBot(match.params.botId)\n getFlows(match.params.botId)\n return clearFunnelState\n }, [])\n\n return (\n
\n
\n \n {loader ? (\n \n ) : (\n \n \n \n )}\n
\n\n {selectedStepNumber && (\n setSelectedStep(false)}\n fromDate={fromDate}\n toDate={toDate}\n />\n )}\n
\n )\n}\n\nconst mapStateToProps = (state: { funnel: FunnelType }) => ({\n funnel: state.funnel,\n})\n\nexport default withRouter(connect(mapStateToProps)(Funnel))\n","import React from 'react'\nimport { Route, Switch } from 'react-router-dom'\n\nimport Analytics from './components/Analytics'\nimport Funnel from './components/Funnel'\nimport { HOME_PATH } from '../../configs'\n\nconst AnalyticsContainer = () => {\n const pathRoute = `${HOME_PATH}/bot/:botId/analytics`\n\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nexport default AnalyticsContainer\n","export const ComponentNames = Object.freeze({\n Analytics: 'Analytics',\n Flows: 'Flows',\n Dashboard: 'Dashboard',\n NLP: 'NLP',\n Support: 'Support',\n Broadcasts: 'Broadcasts',\n Widget: 'Widget',\n BotSettings: 'Bot Settings',\n})\n","import React from 'react'\n\nimport {\n BroadcastIcon,\n DashboardIcon,\n FlowsIcon,\n NlpIcon,\n SettingsIcon,\n SupportIcon,\n WidgetIcon,\n AnalyticsIcon,\n} from '../uiKit/icons/Icons'\n\nimport Dashboard from '../tabs/dashboard/Dashboard'\nimport Builder from '../tabs/flowBuilder/Builder'\nimport NLP from '../tabs/nlp/NLP'\nimport ChatContainer from '../tabs/support/SupportContainer'\nimport Broadcasts from '../tabs/broadcast/Broadcasts'\nimport Settings from '../tabs/settings/Settings'\nimport WidgetContainer from '../tabs/widget/WidgetContainer'\nimport AnalyticsContainer from '../tabs/analytics/AnalyticsContainer'\n\nimport { ComponentNames } from '../constants/componentNames'\n\nexport const mainRoutes = [\n {\n path: 'dashboard',\n icon: ,\n name: ComponentNames.Dashboard,\n component: Dashboard,\n },\n {\n path: 'analytics',\n icon: ,\n name: 'Analytics',\n component: AnalyticsContainer,\n },\n {\n path: 'flows',\n icon: ,\n name: ComponentNames.Flows,\n component: Builder,\n },\n {\n path: 'nlp',\n icon: ,\n name: ComponentNames.NLP,\n component: NLP,\n },\n {\n path: 'support',\n icon: ,\n name: ComponentNames.Support,\n component: ChatContainer,\n },\n {\n path: 'broadcast',\n icon: ,\n name: ComponentNames.Broadcasts,\n component: Broadcasts,\n },\n {\n path: 'widget',\n icon: ,\n name: ComponentNames.Widget,\n component: WidgetContainer,\n },\n {\n path: 'settings',\n icon: ,\n name: ComponentNames.BotSettings,\n component: Settings,\n },\n]\n","import React from 'react'\nimport { Icon404 } from '../../uiKit/icons/Icons'\nimport { Redirect, withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles/index'\nimport { HOME_PATH } from '../../configs'\nimport { styles } from './styles'\n\nclass PermissionDenied extends React.Component {\n state = {\n redirect: false,\n }\n\n render() {\n if (this.state.redirect) {\n return (\n \n )\n }\n\n const { classes } = this.props\n return (\n
\n
\n
\n \n
\n
\n

Page not found...

\n

\n We're unable to find a page you're looking for. Please go back to\n the Dashboard.\n

\n
\n this.setState({ redirect: true })}>\n Back to Dashboard\n \n
\n
\n )\n }\n}\n\nexport default withRouter(withStyles(styles)(PermissionDenied))\n","export const styles = () => ({\n heading: {\n fontSize: 36,\n color: '#3A3F62',\n marginTop: 64,\n },\n paragraph: {\n fontSize: 14,\n textAlign: 'center',\n color: '#616581',\n margin: '16px auto 24px',\n },\n main: {\n display: 'flex',\n justifyContent: 'center',\n height: '100vh',\n flexDirection: 'column',\n width: '100%',\n alignItems: 'center',\n },\n back: {\n padding: '13px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const RobotIcon = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport { HOME_PATH } from '../../configs'\n\nimport { RobotIcon } from '../../uiKit/icons/Robot'\n\nimport { styles } from './styles'\n\nconst ErrorScreen = props => {\n const { classes, activeBot } = props\n\n const handleClick = () => {\n window.location.href = `${HOME_PATH}/bot/${activeBot.id}/dashboard`\n }\n\n return (\n
\n \n

Whoops!

\n

Something went wrong

\n

\n If this problem persists, please contact our Support Team.\n

\n \n
\n )\n}\n\nErrorScreen.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({ activeBot: state.activeBot })\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(ErrorScreen)),\n)\n","export const styles = () => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n marginRight: 40,\n },\n title: {\n fontSize: 36,\n color: '#3A3F62',\n fontWeight: 700,\n margin: '64px 0px 8px',\n },\n subtitle: {\n fontSize: 18,\n color: '#354052',\n fontWeight: 400,\n margin: '0px 0px 16px',\n },\n text: {\n color: 'rgb(53,64,82,0.7)',\n fontSize: 14,\n margin: '0px 0px 24px',\n },\n button: {\n padding: '13px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n})\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport * as Sentry from '@sentry/browser'\n\nimport ErrorScreen from '../ErrorScreen/ErrorScreen'\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n hasError: false,\n }\n }\n\n static getDerivedStateFromError() {\n return { hasError: true }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.location.pathname !== prevProps.location.pathname) {\n this.setState({ hasError: false })\n }\n }\n\n componentDidCatch(error, errorInfo) {\n Sentry.captureException(error)\n }\n\n render() {\n if (this.state.hasError) {\n return \n }\n\n return this.props.children\n }\n}\n\nexport default withRouter(ErrorBoundary)\n","import { store } from '../../../index'\n\nexport const SAVE_ACCOUNT_SETTINGS = 'SAVE_ACCOUNT_SETTINGS'\n\nexport const saveAccountSettings = accountSettings =>\n store.dispatch({\n type: SAVE_ACCOUNT_SETTINGS,\n accountSettings,\n })\n","import { BASE_URL } from '../../../configs'\n\nimport { saveAccountSettings } from '../actions/account'\nimport {\n createJsonHeaders,\n alertError,\n alertSuccess,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport * as cookie from 'react-cookies'\n\nexport const getAccountSettings = adminId => {\n return fetch(`${BASE_URL}/admin/settings/${adminId}`, {\n method: 'GET',\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n })\n .then(response => {\n if (!response.ok) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n return\n }\n\n return response.json()\n })\n .then(response => saveAccountSettings(response))\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport const updateAccountSettings = (adminId, body) => {\n return fetch(`${BASE_URL}/admin/settings/${adminId}`, {\n method: 'PUT',\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n body: JSON.stringify(body),\n })\n .then(response => {\n if (!response.ok) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n return\n }\n alertSuccess(\"User's settings has been successfully updated.\", 3000)\n\n return response.json()\n })\n .then(response => saveAccountSettings(response))\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport const dropImage = files => {\n const file = new FormData()\n file.append('file', files[0])\n return fetch(BASE_URL + '/file', {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(function(error) {\n alertError('Fail. Try it later', 10000)\n })\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport { NavLink } from 'react-router-dom'\nimport {\n Button,\n MenuItem,\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuList,\n Switch,\n} from '@material-ui/core'\n\nimport { access } from '../../../../security'\n\nimport { DownArrowIcon } from '../../../../uiKit/icons/Icons'\n\nimport { getAccountSettings, updateAccountSettings } from '../../api/account'\nimport { loadBotAccessors } from '../../../settings/api/settings'\nimport { logout } from '../../../authorization/actions/security'\n\nconst imgContainerStyles = {\n position: 'relative',\n}\n\nconst statusStyles = {\n position: 'absolute',\n boxSizing: 'border-box',\n width: 10,\n height: 10,\n border: '2px solid #ffffff',\n borderRadius: '50%',\n bottom: 0,\n}\n\nconst baseImage = '/images/platform/default-user-icon.svg'\n\nexport const UserMenu = props => {//NOSONAR\n const [open, setOpen] = useState(false)\n const [adminId, setAdminId] = useState(props.adminUser && props.adminUser.id)\n const anchorRef = useRef(null)\n const getImage = props?.accountSettings?.imageUrl || baseImage\n const activeColor = props?.accountSettings?.active ? '#11C314' : '#969DA8'\n const isLoader = props?.accountSettings\n\n useEffect(() => {\n if (!props.adminUser) {\n access.loadRole()\n return\n }\n\n if (!props.accountSettings || props.accountSettings.length === 0) {\n getAccountSettings(props.adminUser.id)\n }\n }, [])\n\n useEffect(() => {\n if (adminId === (props.adminUser && props.adminUser.id)) {\n return\n }\n\n if (props.adminUser && props.adminUser.id) {\n getAccountSettings(props.adminUser.id)\n setAdminId(props.adminUser.id)\n }\n }, [JSON.stringify(props.adminUser)])\n\n const handleToggle = () => {\n setOpen(!open)\n }\n\n const handleClose = event => {\n // if (anchorRef.current && anchorRef.current.contains(event.target)) {\n // return;\n // }\n\n setOpen(false)\n }\n\n const handleLogout = () => {\n logout()\n handleClose()\n }\n\n const handleChangeStatus = () => {\n updateAccountSettings(props.adminUser.id, {\n ...props.accountSettings,\n active: !props.accountSettings.active,\n }).then(() => {\n if (props.botId) {\n loadBotAccessors(props.botId)\n }\n })\n }\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open)\n\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n // anchorRef.current.focus();\n }\n\n prevOpen.current = open\n }, [open])\n\n return (\n <>\n {isLoader && (\n
\n \n \n
\n \n \n
\n {props.accountSettings &&

{props.accountSettings.name}

}\n \n \n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n I am available\n \n \n {props.location.pathname !== '/account-settings' &&\n props.redirectToAccountSettings && (\n \n Account Settings\n \n )}\n\n {props.location.pathname !== '/account-settings' &&\n !props.redirectToAccountSettings && (\n \n \n Account Settings\n \n \n )}\n \n Log out\n \n \n \n \n )}\n \n
\n
\n )}\n \n )\n}\n","import { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\n\nimport { styles } from './styles'\nimport { UserMenu as View } from './UserMenu'\nimport { connect } from 'react-redux'\n\nconst mapStateToProps = state => ({\n adminUser: state.adminUser,\n accountSettings: state.account,\n})\n\nexport const UserMenu = withRouter(\n withStyles(styles)(connect(mapStateToProps)(View)),\n)\n","export const styles = theme => ({\n root: {\n display: 'flex',\n position: 'relative',\n },\n button: {\n height: '100%',\n padding: '0 10px',\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 'bold',\n textTransform: 'none',\n fontFamily: \"'Lato', sans-serif\",\n\n '& p': {\n margin: 0,\n },\n },\n paper: {\n marginRight: 0,\n },\n popper: {\n right: '0 !important',\n left: 'auto !important',\n top: '58px !important',\n },\n userImg: {\n display: 'block',\n width: 32,\n height: 32,\n borderRadius: '50%',\n marginRight: 5,\n },\n list: {\n padding: 0,\n },\n listItem: {\n padding: '8px 12px',\n color: '#354052',\n fontSize: 14,\n lineHeight: 20,\n\n '& a': {\n color: 'inherit',\n textDecoration: 'none',\n\n '&:hover': {\n textDecoration: 'none',\n },\n },\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const ArrowLeft = () => {\n return (\n \n \n \n \n )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport List from '@material-ui/core/List'\nimport Typography from '@material-ui/core/Typography'\nimport Divider from '@material-ui/core/Divider'\nimport { BrowserRouter, NavLink, Redirect, Route, Switch, withRouter } from 'react-router-dom'\nimport { Button } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport { getBot } from '../../tabs/home/api/bots'\nimport { HOME_PATH, BACKEND_URL } from '../../configs'\nimport { getSupportRequests } from '../../tabs/support/api/support'\nimport { hasPermissionForBot } from '../../security'\nimport { mainRoutes } from '../../routes/mainRoutes'\nimport PermissionDenied from '../404/404'\nimport Loader from '../../uiKit/loaders/loader'\nimport WebSockets from '../../contexts/webSockets'\nimport { clearOldBot } from '../../tabs/home/actions/activeBot'\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary'\nimport { UserMenu } from '../../tabs/account/components/UserMenu'\nimport { clearAttributes } from '../../tabs/settings/actions/attributes'\nimport { clearWidgetSettings } from '../../tabs/widget/actions/botWidget'\nimport { ArrowLeft } from '../../uiKit/icons/ArrowLeft'\n\nimport { styles } from './styles'\n\nclass MainMenu extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n open: false,\n redirectToBots: false,\n activeBot: null,\n ifCreateSocket: false,\n redirectToAccountSettings: false,\n }\n }\n\n componentDidMount() {\n getBot(this.props.match.params.botId)\n getSupportRequests(this.props.match.params.botId)\n }\n\n componentWillUnmount() {\n clearOldBot()\n clearAttributes()\n clearWidgetSettings()\n }\n\n redirectToBots() {\n this.setState({ redirectToBots: true })\n }\n\n redirectToAccountSettings = () => {\n this.setState({ redirectToAccountSettings: true })\n }\n\n render() {\n if (this.state.redirectToBots) {\n return \n }\n\n if (this.state.redirectToAccountSettings) {\n return (\n \n )\n }\n\n const { classes, activeBot, supportRequests } = this.props\n const pathLink = `${HOME_PATH}/bot/${this.props.match.params.botId}/`\n const pathRoute = `${HOME_PATH}/bot/:botId/`\n const isFunnel = window.location.href.match(/analytics\\/\\d/g)\n\n return (\n
\n {this.props.adminUser ? (\n \n \n
\n \n \n {isFunnel ? (\n \n

\n Back to Analytics\n

\n
\n ) : (\n

this.redirectToBots()} className={classes.homeButton}>\n Home\n

\n )}\n {this.props.activeBot && (\n \n {this.props.activeBot.name}\n \n )}\n
\n {activeBot && activeBot.messengerConfigs && activeBot.messengerConfigs.pageId && (\n \n \n

Test in Messenger

\n \n \n )}\n {activeBot && (\n \n \n

Test widget

\n \n \n )}\n\n \n
\n
\n
\n
\n \n {mainRoutes.map(\n route =>\n hasPermissionForBot(this.props.match.params.botId, route.path) && (\n \n {route.path === 'support' && supportRequests ? (\n
{supportRequests}
\n ) : null}\n {route.icon}\n

{route.name}

\n \n ),\n )}\n
\n
\n \n
\n \n \n {mainRoutes.map(\n route =>\n hasPermissionForBot(this.props.match.params.botId, route.path) && (\n \n ),\n )}\n } />\n \n \n
\n
\n
\n
\n ) : (\n \n )}\n
\n )\n }\n}\n\nMainMenu.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n supportRequests: state.supportRequests,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(withStyles(styles, { withTheme: true })(connect(mapStateToProps)(MainMenu)))\n","export const styles = theme => ({\n root: {\n flexGrow: 1,\n zIndex: 1,\n overflow: 'hidden',\n position: 'relative',\n display: 'flex',\n marginTop: '0',\n height: '100vh',\n background: theme.palette.primary.background,\n },\n appFrame: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n flex: {\n flex: 1,\n },\n appBar: {\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n background: 'none',\n boxShadow: 'none',\n },\n appBarShift: {\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginLeft: 12,\n marginRight: 36,\n },\n hide: {\n display: 'none',\n },\n Toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '0 16px 0 116px',\n zIndex: 0,\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n fontFamily: 'Lato, sans-serif',\n ...theme.mixins.toolbar,\n },\n content: {\n width: 800,\n flexGrow: 1,\n backgroundColor: theme.palette.primary.background,\n paddingLeft: 40,\n // paddingRight: 12,\n marginTop: 65,\n overflowY: 'auto',\n },\n icon: {\n color: 'grey',\n },\n list: {\n width: 100,\n overflowY: 'auto',\n height: '100%',\n paddingTop: 64,\n },\n item: {\n paddingLeft: 16,\n },\n supportAmount: {\n top: 8,\n right: 30,\n borderRadius: 100,\n backgroundColor: theme.palette.alerts.error,\n fontSize: '12px',\n height: 20,\n width: 20,\n color: '#ffffff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n menuWrap: {\n background: 'linear-gradient(359.25deg, #5A98F7 49.98%, #1658F3 149.98%)',\n boxShadow: '0px 2px 23px rgba(0, 0, 0, 0.0593014)',\n zIndex: 9999,\n },\n listItem: {\n color: 'white',\n marginTop: 8,\n marginBottom: 8,\n fontSize: 12,\n },\n title: {\n fontWeight: 'bold',\n lineHeight: 'normal',\n fontSize: 16,\n color: '#3A3F62',\n },\n link: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: 75,\n paddingTop: 10,\n position: 'relative',\n '&:hover': {\n background: 'rgba(19,69,186,0.5)',\n transition: '0.3s all ease-in',\n '& svg path': {\n stroke: '#ffffff',\n background: 'rgba(19,69,186,0.5)',\n transition: '0.3s all ease-in',\n },\n },\n },\n activeLink: {\n background: 'rgba(19,69,186,0.5)',\n '& svg path': {\n stroke: '#ffffff',\n },\n },\n backToAnalytics: {\n fontFamily: 'Lato, sans-serif',\n padding: '0',\n margin: '0 24px 0 0',\n cursor: 'pointer',\n fontWeight: 400,\n color: '#1658F3',\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n },\n homeButton: {\n fontFamily: 'Lato, sans-serif',\n padding: '0',\n margin: '0 24px 0 0',\n cursor: 'pointer',\n fontWeight: 400,\n color: '#1658F3',\n },\n testButton: {\n color: 'white',\n margin: 0,\n fontWeight: 500,\n fontSize: 16,\n textTransform: 'none',\n fontFamily: 'Lato, sans-serif',\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { cloneBot, createNewBotAPI } from '../api/bots'\nimport { connect } from 'react-redux'\n\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\nimport Input from '../../../uiKit/inputs/Input'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n group: {\n marginLeft: 10,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato',\n marginBottom: 0,\n },\n root: {\n width: '100%',\n marginTop: 16,\n '& span': {\n fontSize: 14,\n color: '#616581',\n fontFamily: 'Lato',\n },\n '& label': {\n margin: '-4px 16px -4px -14px',\n },\n '& span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '&>div>label>span[class*=\"checked\"]>span>svg': {\n color: '#1658F3',\n },\n '& span svg': {\n color: '#D7D8DF',\n },\n '& span svg path': {\n stroke: '1px solid #D7D8DF',\n },\n },\n borderLine: {\n borderBottom: '1px solid #EBEBEF',\n lineHeight: 0,\n margin: '24px 0 0',\n },\n modalHeading: {\n fontSize: '14px',\n lineHeight: '17px',\n fontFamily: 'Lato, \"sans-serif\"',\n color: '#3A3F62',\n margin: '24px 0 4px',\n },\n error: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n buttonHolder: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginTop: 32,\n },\n})\n\nclass NewBotModal extends React.Component {\n checkInputFields = () => {\n let botError = false\n let botErrorType = 0\n let botErrorText = ''\n const { name, clientToken, developerToken } = this.state\n\n if (isStringEmpty(name)) {\n botError = true\n botErrorText = \"Name field can't be empty!\"\n } else if (this.checkBotName()) {\n botError = true\n botErrorText = 'Chatbot with such name already exists!'\n } else if (this.state.withDialogFlow === 'true') {\n if (isStringEmpty(clientToken)) {\n botError = true\n botErrorType = 1\n botErrorText = 'DialogFlow client token cannot be an empty field!'\n } else if (isStringEmpty(developerToken)) {\n botError = true\n botErrorType = 2\n botErrorText = 'DialogFlow developer token cannot be an empty field!'\n }\n }\n this.setState({\n botError,\n botErrorType,\n botErrorText,\n })\n return !botError\n }\n\n toggleLoader = () => {\n this.setState({ showLoader: !this.state.showLoader })\n }\n errorHandler = text => {\n this.setState({\n botError: true,\n botErrorText: text,\n showLoader: false,\n })\n }\n checkBotName = () => {\n return this.props.bots.find(\n bot =>\n bot.name.trim().toUpperCase() === this.state.name.trim().toUpperCase(),\n )\n }\n\n constructor(props) {\n super(props)\n this.state = {\n name: props.botName,\n botError: false,\n botErrorText: '',\n withDialogFlow: 'false',\n clientToken: '',\n developerToken: '',\n showLoader: false,\n buttonName: props.buttonName,\n }\n }\n\n onSubmit() {\n if (this.checkInputFields()) {\n const bot = {\n name: this.state.name,\n dialogflowDevToken: this.state.developerToken,\n dialogflowClientToken: this.state.clientToken,\n }\n this.toggleLoader()\n if (this.props.new) {\n createNewBotAPI(\n bot,\n () => this.props.onClose(),\n text => this.errorHandler(text),\n )\n } else {\n cloneBot(\n this.props.botId,\n bot,\n () => this.props.onClose(),\n text => this.errorHandler(text),\n )\n }\n }\n }\n\n handleChangeType(withDialogFlow) {\n const newState = { withDialogFlow }\n if (withDialogFlow === 'false') {\n newState.clientToken = ''\n newState.developerToken = ''\n newState.botError = false\n }\n this.setState({ ...newState })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n \n this.setState({\n name: event.target.value,\n botError: isStringEmpty(event.target.value),\n })\n }\n />\n\n {this.state.botError && (\n

{this.state.botErrorText}

\n )}\n
\n this.onSubmit()}\n />\n
\n \n
\n )\n }\n}\n\nNewBotModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n bots: state.bots,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(NewBotModal),\n)\n","import React from 'react'\nimport { Popover, withStyles } from '@material-ui/core'\nimport { HOME_PATH } from '../../../configs'\nimport { NavLink, withRouter } from 'react-router-dom'\nimport { ThreeIcon } from '../../../uiKit/icons/Icons'\nimport { connect } from 'react-redux'\nimport ShareModal from './ShareModal'\nimport { hasPermissionForBot } from '../../../security'\nimport CloneModal from './NewBotModal'\nimport Modal from '../../../uiKit/Modal'\n\nconst styles = theme => ({\n '@global': {\n '.class*=[MuiListItem-button]:hover': {\n background: 'none',\n },\n '.rootElement > * ': {\n border: '1px solid #D7D8DF',\n boxShadow: '0px 1px 5px rgba(19, 69, 186, 0.241904)',\n borderRadius: 10,\n },\n '.icon:hover path': {\n stroke: 'rgb(58, 63, 98)',\n },\n },\n popover: {\n width: 145,\n height: 62,\n },\n button: {\n fontSize: 14,\n color: '#3A3F62',\n display: 'flex',\n alignItems: 'center',\n padding: '11px 24px',\n height: '50%',\n '&:hover': {\n background: 'rgba(90, 152, 247, 0.1)',\n },\n },\n container: {\n backgroundColor: theme.palette.background.paper,\n display: 'flex',\n flexWrap: 'wrap',\n padding: '40px',\n },\n bot: {\n width: '250px',\n maxWidth: '250px',\n boxSizing: 'border-box',\n height: '170px',\n flex: 'auto',\n margin: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n color: '#3A3F62!important',\n backgroundColor: '#ffffff',\n borderRadius: 10,\n fontSize: '16px',\n fontFamily: 'Lato, sans-serif',\n fontWeight: 'bold',\n display: 'flex !important',\n justifyContent: 'flex-start',\n padding: '24px !important',\n },\n menuButton: {\n marginLeft: -12,\n marginRight: 20,\n },\n})\n\nclass BotPlate extends React.Component {\n closeModal = () => {\n this.setState({\n openModal: false,\n openModalClone: false,\n })\n }\n\n toggle = value => {\n this.setState({\n open: value,\n })\n }\n\n constructor(props) {\n super(props)\n this.state = {\n totalUsers: 0,\n newUserToday: 0,\n open: false,\n openModal: false,\n openModalClone: false,\n }\n }\n\n render() {\n const { classes, bot } = this.props\n return (\n
\n this.props.switchBot(bot)}>\n
\n
\n
\n \n {bot.name}\n

\n
\n
\n
\n \n {hasPermissionForBot(bot.id, 'shareBot') && (\n {\n this.anchorEl = node\n }}\n onClick={() => {\n this.toggle(true)\n }}>\n \n
\n )}\n {\n this.toggle(false)\n }}>\n
\n {\n this.setState({\n openModal: true,\n open: false,\n })\n }}\n className={classes.button}>\n Share\n
\n {\n this.setState({\n openModalClone: true,\n open: false,\n })\n }}\n className={classes.button}>\n Clone\n
\n
\n \n\n \n \n \n\n \n \n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(BotPlate)),\n)\n","/**\n * Created by Admin on 20.02.2018.\n */\nimport React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Modal from '../../../uiKit/Modal'\nimport { PlusIcon } from '../../../uiKit/icons/Icons'\nimport NewBotModal from './NewBotModal'\n\nconst styles = theme => ({\n item: {\n width: '250px',\n height: '170px',\n background: 'linear-gradient(325.02deg, #5A98F7 0%, #1658F3 100%)',\n margin: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n fontFamily: 'Lato, sans-serif',\n fontWeight: 'bold',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexFlow: 'column nowrap',\n cursor: 'pointer',\n },\n itemText: {\n margin: 0,\n maxWidth: '100%',\n color: theme.palette.primary.contrastText,\n },\n})\n\nclass CreateNewBot extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n
\n \n
\n

Create a new bot

\n
\n\n \n \n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n bots: state.bots,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(CreateNewBot)),\n)\n","import { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport { styles } from './styles'\nimport { HomeHeader as View } from './HomeHeader'\n\nconst mapStateToProps = state => ({\n accountSettings: state.account,\n})\n\nexport const HomeHeader = withStyles(styles)(connect(mapStateToProps)(View))\n","export const styles = theme => ({\n header: {\n height: 80,\n width: '100%',\n background: theme.palette.primary.contrastText,\n zIndex: 2,\n position: 'fixed',\n top: 0,\n left: 0,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n fontFamily: \"'Lato', sans-serif\",\n },\n headerInner: {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 20px',\n justifyContent: 'space-between',\n },\n title: {\n color: theme.palette.primary.headerText,\n fontSize: '16px',\n fontWeight: 'bold',\n lineHeight: '120%',\n margin: 0,\n },\n titleCenter: {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n color: theme.palette.primary.headerText,\n fontSize: '16px',\n fontWeight: 'bold',\n lineHeight: '120%',\n },\n button: {\n height: '100%',\n padding: '0 10px',\n fontSize: 16,\n color: '#1658F3',\n fontWeight: 'bold',\n textTransform: 'none',\n fontFamily: \"'Lato', sans-serif\",\n textDecoration: 'none',\n\n '& svg': {\n marginRight: 4,\n },\n },\n})\n","import React from 'react'\nimport { NavLink } from 'react-router-dom'\n\nimport { UserMenu } from '../UserMenu'\nimport { LeftArrowIcon } from '../../../../uiKit/icons/Icons'\nimport { Button } from '@material-ui/core'\n\nexport const HomeHeader = props => {\n const isLoader = props.accountSettings\n\n return (\n
\n \n {props.backButton && (\n \n \n \n )}\n {isLoader && (\n \n {props.title}\n \n )}\n \n
\n
\n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Headline from '../../../uiKit/texts/Headline'\nimport { HomeHeader } from '../../account/components/HomeHeader'\n\nconst styles = theme => ({\n flex: {\n marginLeft: '30px',\n flex: 1,\n },\n header: {\n height: 80,\n width: '100%',\n background: theme.palette.primary.contrastText,\n zIndex: 2,\n position: 'fixed',\n top: 0,\n left: 0,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n fontFamily: \"'Lato', sans-serif\",\n },\n headerInner: {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 20px',\n justifyContent: 'flex-end',\n },\n title: {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n color: theme.palette.primary.headerText,\n fontSize: '16px',\n fontWeight: 'bold',\n lineHeight: '120%',\n },\n container: {\n backgroundColor: theme.palette.primary.background,\n display: 'flex',\n flexDirection: 'column',\n padding: '80px 40px 40px',\n minHeight: '100vh',\n },\n content: {\n display: 'flex',\n flexWrap: 'wrap',\n height: '100%',\n },\n '@media (max-width: 991px)': {\n container: {\n padding: '90px 20px 20px !important',\n },\n },\n '@global': {\n '::-webkit-scrollbar': {\n width: 12,\n },\n\n '::-webkit-scrollbar-track': {\n borderRadius: 3,\n },\n\n '::-webkit-scrollbar-thumb': {\n borderRadius: 10,\n webkitBoxShadow: 'inset 0 0 6px rgba(24, 24, 24, 0.5)',\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n})\n\nclass Bots extends React.Component {\n state = {}\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n
\n \n
{this.props.children}
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(Bots)\n","/**\n * Created by Admin on 20.02.2018.\n */\nimport React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { clearAtom } from '../flowBuilder/actions/atom'\nimport { setActiveBot } from './actions/activeBot'\nimport { getBots } from './api/bots'\nimport BotPlate from './components/BotPlate'\nimport CreateNewBot from './components/CreateNewBot'\nimport Bots from './components/Bots'\n\nconst styles = theme => ({})\n\nclass Home extends React.Component {\n state = {\n open: true,\n }\n\n componentWillMount() {\n getBots()\n }\n\n handleChange(event, name) {\n this.setState({\n [name]: event.target.value,\n })\n }\n\n switchBot(bot) {\n setActiveBot(bot)\n clearAtom(0)\n }\n\n render() {\n const { bots } = this.props\n return (\n \n \n {bots.map(bot => (\n \n ))}\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n bots: state.bots,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Home),\n)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { showSnackBar } from '../../tabs/home/actions/snackBar'\nimport { Snackbar, withStyles } from '@material-ui/core'\n\nconst styles = theme => ({\n bodyProps: {\n width: '100%',\n height: 35,\n overflow: 'hidden',\n },\n snackBar: {\n padding: 0,\n display: 'flex',\n justifyContent: 'center',\n boxShadow: 'none',\n },\n message: {\n fontSize: 12,\n fontFamily: 'Lato',\n },\n success: {\n background: theme.palette.alerts.success,\n },\n error: {\n background: theme.palette.alerts.error,\n },\n})\n\nclass Notification extends Component {\n handleClose = (event, reason) => {\n if (\n reason === 'timeout' ||\n (reason === 'clickaway' && !this.props.snackBar.duration)\n ) {\n showSnackBar({\n open: false,\n })\n }\n }\n\n render() {\n const { snackBar, classes } = this.props\n return (\n
\n {snackBar.open && (\n \n {snackBar.text}\n \n }\n />\n )}\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n snackBar: state.snackBar,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Notification))\n","import React, { Component } from 'react'\nimport { Redirect } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = () => ({\n main: {\n width: '100%',\n minHeight: '100vh',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '32px',\n backgroundColor: '#F7FAFE',\n textAlign: 'center',\n },\n imageNotFound: {\n width: '150px',\n height: '150px',\n },\n titleClass: {\n fontSize: '36px',\n lineHeight: 1,\n color: '#3A3F62',\n margin: '64px 0 16px',\n fontWeight: 'bold',\n },\n paragraphClass: {\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 'normal',\n margin: 0,\n color: '#616581',\n },\n\n backToDashboardButton: {\n height: '54px',\n borderRadius: '10px',\n border: 'none',\n fontWeight: 300,\n lineHeight: 'normal',\n fontSize: '16px',\n textAlign: 'center',\n padding: '0 25px',\n color: '#FFF',\n cursor: 'pointer',\n background: '#1658F3',\n boxShadow: '0 3px 9px rgba(19, 69, 186, 0.206267)',\n margin: '32px 0 0',\n '&:hover': {\n transform: 'scale(1.05)',\n transition: '.1s ease-in-out',\n },\n },\n})\n\nclass Unavailable extends Component {\n constructor(props) {\n super(props)\n this.state = {\n redirectToAdmin: false,\n }\n }\n\n handleGoDashboard = () => {\n this.setState({ redirectToAdmin: true })\n }\n\n render() {\n const { classes } = this.props\n if (this.state.redirectToAdmin) {\n return \n }\n return (\n
\n \n\n

\n Sorry, this link is not available anymore\n

\n\n {this.props.linkExpired !== true && (\n

\n You've already been invited to the BotsCrew Enterprise Platform.\n Enjoy!\n

\n )}\n\n \n Back to Dashboard\n \n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(Unavailable)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { SERVER_URL } from '../../../configs'\n\nclass MobileSupport extends React.Component {\n async componentDidMount() {\n const html = await fetch(\n `${SERVER_URL}${this.props.match.url}${this.props.location.search}`,\n ).then(response => {\n return response.text()\n })\n window.document.write(html)\n }\n\n render() {\n return null\n }\n}\n\nexport default withRouter(MobileSupport)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { Redirect } from 'react-router-dom'\nimport { BACKEND_URL } from '../../../configs'\nimport cookie from 'react-cookies'\nimport { authenticate } from '../actions/security'\nimport Unavailable from '../../../containers/Unavailable/Unavailable'\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst styles = theme => ({\n loader: {\n display: 'flex',\n width: '100%',\n minHeight: '100vh',\n justifyContent: 'center',\n alignItems: 'center',\n },\n})\n\nclass EmailConfirmation extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n confirmed: false,\n invalidLink: false,\n }\n }\n\n componentDidMount() {\n this.getConfirmationStatus()\n }\n\n getConfirmationStatus() {\n const token = this.parseQueryParams(this.props.location.search).get('t') // Get token from query parameter 't'\n fetch(`${BACKEND_URL}/signUp/confirmEmail/${token}`, {\n method: 'POST',\n }).then(response => {\n if (response.ok) {\n response.json().then(body => {\n if (body.success) {\n // On success, save the token and authenticate a user\n cookie.save('YWxpYWFkbWlu', token, { path: '/' })\n authenticate(token)\n this.setState({\n confirmed: true,\n })\n } else {\n // On failure\n this.setState({\n invalidLink: true,\n })\n }\n })\n }\n })\n }\n\n parseQueryParams(location) {\n return new Map(\n location\n .slice(1)\n .split('&')\n .map(param => param.split('=')),\n )\n }\n\n render() {\n const { classes } = this.props\n const { confirmed, invalidLink } = this.state\n if (confirmed) {\n // If confirmed, then redirect to home page\n return \n } else if (invalidLink) {\n // Otherwise, show that link is expired\n return \n } else {\n // Show loader while the data is coming from backend\n return (\n
\n \n
\n )\n }\n }\n}\n\nEmailConfirmation.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(EmailConfirmation),\n)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst styles = () => ({\n main: {\n padding: '50px 60px',\n background: '#F7FAFE',\n width: '100%',\n height: '100vh',\n },\n container: {\n background: '#ffffff',\n borderRadius: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n width: '512px',\n height: '274px',\n margin: '0 auto',\n display: 'flex',\n padding: '15px',\n },\n innerContainer: {\n margin: 'auto',\n textAlign: 'center',\n },\n font: {\n fontFamily: 'Lato',\n fontStyle: 'normal',\n },\n title: {\n fontWeight: 'bold',\n lineHeight: 'normal',\n fontSize: '36px',\n color: '#3A3F62',\n },\n text: {\n fontWeight: 'normal',\n lineHeight: '25px',\n fontSize: '16px',\n color: '#727689',\n },\n emailText: {\n fontWeight: 'bold',\n lineHeight: '28px',\n fontSize: '18px',\n color: '#1658F3',\n },\n})\n\nclass AfterSignUp extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n let email\n if (this.props.location.state) {\n email = this.props.location.state.email\n }\n const { classes } = this.props\n return (\n
\n
\n
\n

\n You're almost done!\n

\n

\n We've sent a confirmation email\n {email && (\n \n {' '}\n to\n \n {' '}\n {email}\n \n \n )}\n
\n Please check your inbox and finish the registration.\n

\n
\n
\n
\n )\n }\n}\n\nAfterSignUp.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(AfterSignUp))\n","import styled from 'styled-components'\nimport { Slide, ToastContainer } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\n\nexport const StyledToastContainer = styled(ToastContainer).attrs({\n position: 'top-right',\n transition: Slide,\n draggable: true,\n newestOnTop: true,\n hideProgressBar: true,\n})`\n .Toastify__toast {\n border-radius: 10px;\n top: 4em;\n background-color: #5a98f7;\n padding: 14px 18px;\n }\n .Toastify__toast-body {\n font-size: 16px;\n font-family: Lato, sans-serif;\n }\n`\n","import { withStyles } from '@material-ui/core'\n\nimport { styles } from './styles'\n\nimport { UserImageDropzone as View } from './UserImageDropzone'\n\nexport const UserImageDropzone = withStyles(styles)(View)\n","export const styles = () => ({\n image: {\n display: 'block',\n width: '100%',\n height: '100%',\n margin: 'auto',\n objectFit: 'cover',\n objectPosition: 'top',\n },\n dropzone: {\n display: 'flex',\n position: 'relative',\n width: 120,\n height: 120,\n borderRadius: '50%',\n overflow: 'hidden',\n cursor: 'pointer',\n },\n hoverBlock: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n position: 'absolute',\n width: '100%',\n height: '100%',\n background:\n 'linear-gradient(0deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), url(.png)',\n color: '#ffffff',\n textAlign: 'center',\n opacity: 0,\n transition: 'opacity .2s ease-out',\n\n '& p': {\n margin: '4px 0 0',\n fontSize: 14,\n lineHeight: '120%',\n },\n\n '&:hover': {\n opacity: 1,\n },\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport Dropzone from 'react-dropzone'\n\nimport { dropImage } from '../../api/account'\n\nimport { EditIcon } from '../../../../uiKit/icons/Icons'\n\nimport LoaderOverlay from '../../../../uiKit/loaders/loaderOverlay'\nimport { acceptedFormat, baseSupportImage } from './config'\n\nexport const UserImageDropzone = props => {\n const { classes } = props\n const [attachmentImage, setAttachmentImage] = useState(props.imageUrl)\n const [isLoading, setIsLoading] = useState(false)\n\n const getImg = attachmentImage ? attachmentImage : baseSupportImage\n\n useEffect(() => {\n if (!attachmentImage) {\n return\n }\n\n props.setFormValue(attachmentImage)\n }, [attachmentImage])\n\n useEffect(() => {\n setAttachmentImage(props.imageUrl)\n }, [props.imageUrl])\n\n const handleDropImage = async files => {\n setIsLoading(true)\n props.handleDisableBtn(true)\n\n await dropImage(files).then(response => setAttachmentImage(response?.url))\n\n props.handleDisableBtn(false)\n setIsLoading(false)\n }\n\n return (\n \n {isLoading && }\n {!isLoading && \"file\"}\n
\n \n

Please choose a square photo

\n
\n \n )\n}\n","export const acceptedFormat = 'image/jpeg, image/png'\nexport const baseSupportImage = './images/platform/default-user-icon.svg'\n","import { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport { styles } from './styles'\nimport { AccountSettingsForm as View } from './AccountSettingsForm'\n\nconst mapStateToProps = state => ({\n adminUser: state.adminUser,\n accountSettings: state.account,\n})\n\nexport const AccountSettingsForm = withStyles(styles)(\n connect(mapStateToProps)(View),\n)\n","import { EditIcon } from '../../../../uiKit/icons/Icons'\n\nexport const styles = theme => ({\n container: {\n backgroundColor: theme.palette.primary.background,\n display: 'flex',\n flexDirection: 'column',\n padding: '80px 40px 40px',\n minHeight: '100vh',\n position: 'relative',\n },\n title: {\n color: '#354052',\n margin: '40px 0',\n fontSize: 36,\n fontWeight: 700,\n lineHeight: '43px',\n },\n img: {\n display: 'block',\n width: 120,\n height: 120,\n borderRadius: '50%',\n cursor: 'pointer',\n },\n form: {\n '& label': {\n margin: 0,\n },\n },\n errorMessage: {\n color: '#FF0000',\n },\n formImgItem: {\n position: 'relative',\n\n '&:after': {\n content: EditIcon,\n display: 'block',\n width: '100%',\n height: '100%',\n },\n },\n formItem: {\n marginTop: 16,\n\n '& label': {\n width: '100%',\n margin: '0 0 8px',\n },\n '& input': {\n width: 320,\n },\n \"& input[type='text']\": {\n background: '#FFFFFF',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n padding: '8px 12px',\n },\n \"& input[type='email']\": {\n border: 0,\n background: 'none',\n padding: 0,\n outline: 'none',\n cursor: 'default',\n },\n },\n btnHolder: {\n marginTop: 40,\n },\n loaderWrap: {\n height: 'calc(100vh - 80px)',\n },\n})\n","import React, { useState } from 'react'\nimport { useForm, Controller } from 'react-hook-form/dist/index.ie11'\n\nimport { updateAccountSettings } from '../../api/account'\n\nimport { UserImageDropzone } from '../UserImageDropzone'\n\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Loader from '../../../../uiKit/loaders/loader'\n\nexport const AccountSettingsForm = props => {\n const { register, handleSubmit, errors, control } = useForm()\n const [isDisabledBtn, setIsDisabledBtn] = useState(false)\n const { classes } = props\n const loading = !props.accountSettings\n\n const onSubmit = data => {\n const prevData = props.accountSettings\n\n updateAccountSettings(props.adminUser.id, {\n ...prevData,\n ...data,\n })\n }\n\n const handleDisableBtn = value => setIsDisabledBtn(value)\n\n return (\n <>\n {loading ? (\n
\n \n
\n ) : (\n
\n

Account Settings

\n
\n
\n (\n \n )}\n />\n
\n
\n \n \n {errors.name && (\n
\n

This field is required

\n
\n )}\n
\n
\n \n \n
\n
\n \n
\n
\n
\n )}\n \n )\n}\n","import React from 'react'\n\nimport { HomeHeader } from './components/HomeHeader'\nimport { AccountSettingsForm } from './components/AccountSettingsForm'\n\nexport const AccountContainer = props => {\n const backUrl =\n props.location && props.location.state && props.location.state.from\n\n return (\n \n \n \n \n )\n}\n","import React, { Component } from 'react'\nimport Login from '../tabs/authorization/component/Login'\nimport { connect } from 'react-redux'\nimport 'react-notifications/lib/notifications.css'\nimport { withStyles } from '@material-ui/core'\nimport 'react-s-alert/dist/s-alert-default.css'\nimport 'react-s-alert/dist/s-alert-css-effects/slide.css'\nimport Menu from './Menu/Menu'\nimport { BrowserRouter, Redirect, Route, Switch, withRouter } from 'react-router-dom'\nimport Bots from '../tabs/home/Home'\nimport { HOME_PATH } from '../configs'\nimport NotificationSnackbar from '../uiKit/Notification/Notification'\nimport Unavailable from './Unavailable/Unavailable'\nimport MobileSupport from '../tabs/home/components/MobileSupport'\nimport EmailConfirmation from '../tabs/authorization/component/EmailConfirmation'\nimport AfterSignUp from '../tabs/authorization/component/AfterSignUp'\nimport { NOTIFICATION_DEFAULT } from '../constants/notificationsPermissions'\nimport NotificationService from '../services/notificationService'\nimport { StyledToastContainer } from '../uiKit/StyledToastContainer'\nimport { AccountContainer } from '../tabs/account/AccountContainer'\n\nconst styles = () => ({\n app: {\n width: '100%',\n },\n})\n\nclass App extends Component {\n askForNotification() {\n if (typeof Notification !== 'undefined' && Notification.permission === NOTIFICATION_DEFAULT) {\n NotificationService.askPermission()\n }\n }\n\n render() {\n this.askForNotification()\n const { classes, security } = this.props\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n } />\n \n \n\n \n \n \n \n \n \n \n
\n )\n }\n}\n\nconst PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => (\n \n (isAuthenticated ? (\n \n ) : (\n \n ))\n }\n />\n)\n\nconst mapStateToProps = state => ({\n security: state.security,\n adminUser: state.adminUser,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(App)))\n","import { SET_ANALYTICS, SET_COMMENTS, SET_MORE_COMMENTS } from '../actions/analytics'\n\nconst initialState = {\n analytics: null,\n comments: null,\n}\n\nconst analytics = (state = initialState, { type, payload }) => {\n switch (type) {\n case SET_ANALYTICS:\n return {\n ...state,\n analytics: {\n ...payload,\n },\n }\n\n case SET_COMMENTS:\n return {\n ...state,\n comments: {\n ...payload,\n },\n }\n\n case SET_MORE_COMMENTS:\n return {\n ...state,\n comments: {\n ...payload,\n feedbacks: [...state.comments.feedbacks, ...payload.feedbacks]\n },\n }\n\n default:\n return state\n }\n}\n\nexport default analytics\n","import {ADD_FUNNEL, DELETE_FUNNEL, SET_FUNNELS, UPDATE_FUNNEL, CLEAR_FUNNELS_STATE} from '../actions/funnels'\n\nconst funnels = (state = [], {type, payload}) => {\n switch (type) {\n case SET_FUNNELS:\n return payload.funnels || []\n case ADD_FUNNEL:\n return [...state, payload.funnel]\n case UPDATE_FUNNEL:\n return [...state].map(funnel => {\n if (funnel.id === payload.funnel.id) funnel = payload.funnel\n return funnel\n })\n case DELETE_FUNNEL:\n return [...state].filter(({id}) => id !== payload.funnelId)\n case CLEAR_FUNNELS_STATE:\n return []\n default:\n return state\n }\n}\n\nexport default funnels\n","import { SET_FUNNEL, CLEAR_STATE } from '../actions/funnel'\n\nconst funnels = (state = null, { payload, type }) => {\n switch (type) {\n case SET_FUNNEL:\n return payload.funnel\n case CLEAR_STATE:\n return null\n default:\n return state\n }\n}\n\nexport default funnels\n","import { IS_AUTHENTICATED, IS_NOT_AUTHENTICATED } from '../actions/security'\nimport { access } from '../../../security'\n\nconst security = (state = { token: null, authenticated: false }, action) => {\n switch (action.type) {\n case IS_AUTHENTICATED:\n access.loadRole()\n return action.security\n case IS_NOT_AUTHENTICATED:\n return action.security\n default:\n return state\n }\n}\n\nexport default security\n","import { SAVE_ADMIN_USER } from '../actions/adminUser'\n\nconst adminUser = (state = null, action) => {\n if (action.type === SAVE_ADMIN_USER) {\n return action.adminUser\n } else {\n return state\n }\n}\n\nexport default adminUser\n","import { SAVE_BROADCASTS } from '../actions/broadcasts'\n\nconst broadcasts = (state = [], action) => {\n if (action.type === SAVE_BROADCASTS) {\n return action.broadcasts\n } else {\n return state\n }\n}\n\nexport default broadcasts\n","import { SAVE_SUPPORT_STATISTICS } from '../actions/supportStatistics'\n\nconst supportStatistics = (state = null, action) => {\n if (action.type === SAVE_SUPPORT_STATISTICS) {\n return action.stats\n } else {\n return state\n }\n}\n\nexport default supportStatistics\n","import { SAVE_USERS_STATISTICS } from '../actions/usersStatistics'\n\nconst usersStatistics = (state = null, action) => {\n if (action.type === SAVE_USERS_STATISTICS) {\n return action.stats\n } else {\n return state\n }\n}\n\nexport default usersStatistics\n","import { SAVE_POPULAR_HOURS_STATISTICS } from '../actions/popularHoursStatistics'\n\nconst popularHoursStatistics = (state = null, action) => {\n if (action.type === SAVE_POPULAR_HOURS_STATISTICS) {\n return action.stats\n } else {\n return state\n }\n}\n\nexport default popularHoursStatistics\n","import { ADD_NEW_FLOW, SAVE_FLOWS } from '../actions/flows'\n\nconst flows = (state = [], action) => {\n let flows\n switch (action.type) {\n case SAVE_FLOWS:\n return action.flows\n case ADD_NEW_FLOW:\n flows = [...state]\n flows.push(action.flow)\n return flows\n default:\n return state\n }\n}\n\nexport default flows\n","import { CLEAR_ATOM, SAVE_ATOM } from '../actions/atom'\n\nconst atom = (state = [], action) => {\n switch (action.type) {\n case SAVE_ATOM:\n return action.atom\n case CLEAR_ATOM:\n return null\n default:\n return state\n }\n}\n\nexport default atom\n","import { SAVE_ATOMS } from '../actions/atoms'\n\nconst _getAtoms = flows => {\n return flows.reduce((sum, flow) => [...sum, ...flow.atoms], [])\n}\n\nconst atoms = (state = [], { type, payload }) => {\n if (type === SAVE_ATOMS) {\n return _getAtoms(payload.flows)\n } else {\n return state\n }\n}\n\nexport default atoms\n","import { ADD_NEW_TAG, SAVE_TAGS } from '../actions/tags'\n\nconst tags = (state = [], action) => {\n let tags\n switch (action.type) {\n case SAVE_TAGS:\n return action.tags\n case ADD_NEW_TAG:\n tags = [...state]\n tags.push(action.tag)\n return tags\n default:\n return state\n }\n}\n\nexport default tags\n","import { SET_SEARCH_ATOMS } from '../actions/searchAtoms'\n\nconst convertSearchAtoms = searchAtoms => {\n return searchAtoms.reduce((flowsMap, atom) => {\n if (!flowsMap[atom.flowId]) {\n flowsMap[atom.flowId] = []\n }\n flowsMap[atom.flowId].push(atom)\n return flowsMap\n }, {})\n}\n\nconst searchAtoms = (state = {}, action) => {\n if (action.type === SET_SEARCH_ATOMS) {\n return convertSearchAtoms(action.searchAtoms)\n } else {\n return state\n }\n}\n\nexport default searchAtoms\n","/**\n * Created by Admin on 02.02.2018.\n */\n\nimport { SAVE_BOTS } from '../actions/bots'\nimport { access } from '../../../security'\n\nconst bots = (state = [], action) => {\n switch (action.type) {\n case SAVE_BOTS:\n access.loadRole()\n return action.bots\n default:\n return state\n }\n}\n\nexport default bots\n","/**\n * Created by Admin on 02.02.2018.\n */\nimport {\n CLEAR_STATE,\n SET_ACTIVE_BOT,\n SET_DIALOG_FLOW,\n} from '../actions/activeBot'\n\nconst activeBot = (state = null, action) => {\n let newBot\n switch (action.type) {\n case SET_ACTIVE_BOT:\n return action.activeBot\n case SET_DIALOG_FLOW:\n newBot = JSON.parse(JSON.stringify(state))\n newBot.dialogflowConfigs = action.dialogflowConfigs\n return newBot\n case CLEAR_STATE:\n return null\n default:\n return state\n }\n}\n\nexport default activeBot\n","/**\n * Created by Admin on 21.03.2018.\n */\nimport { SHOW_SNACKBAR } from '../actions/snackBar'\n\nconst snackBar = (state = { open: false }, action) => {\n if (action.type === SHOW_SNACKBAR) {\n return action.snackBar\n } else {\n return state\n }\n}\n\nexport default snackBar\n","import {\n ADD_INTENT,\n CLEAR_INTENTS,\n DELETE_INTENT,\n SAVE_INTENTS,\n UPDATE_INTENT,\n} from '../actions/intents'\n\nconst intents = (state = [], action) => {\n let intents\n switch (action.type) {\n case SAVE_INTENTS:\n return action.intents\n case ADD_INTENT:\n intents = [...state, action.intent].sort(\n (a, b) => a.name.toLowerCase() >= b.name.toLowerCase(),\n )\n return intents\n case UPDATE_INTENT:\n intents = [...state]\n intents.forEach((element, index) => {\n if (element.id === action.intent.id) {\n intents[index] = action.intent\n }\n })\n return intents.sort(\n (a, b) => a.name.toLowerCase() >= b.name.toLowerCase(),\n )\n case DELETE_INTENT:\n intents = [...state]\n return intents.filter(x => {\n return x.id !== action.intentId\n })\n case CLEAR_INTENTS:\n return null\n default:\n return state\n }\n}\n\nexport default intents\n","import {\n SAVE_INTENTS_SIZE,\n ADD_INTENT_SIZE,\n UPDATE_INTENTS_SIZE,\n} from '../actions/intentsSize'\n\nconst intentsSize = (state = [], action) => {\n let intentsSize\n switch (action.type) {\n case SAVE_INTENTS_SIZE:\n return action.intentsSize\n case ADD_INTENT_SIZE:\n intentsSize = action.intentsSize + 1\n return intentsSize\n case UPDATE_INTENTS_SIZE:\n intentsSize = action.intentsSize - 1\n return intentsSize\n default:\n return state\n }\n}\n\nexport default intentsSize\n","import {\n SAVE_CONTEXTS_SIZE,\n ADD_CONTEXTS_SIZE,\n UPDATE_CONTEXTS_SIZE,\n} from '../actions/contextSize'\n\nconst contextSize = (state = [], action) => {\n let contextSize\n switch (action.type) {\n case SAVE_CONTEXTS_SIZE:\n return action.contextSize\n case ADD_CONTEXTS_SIZE:\n contextSize = action.contextSize + 1\n return contextSize\n case UPDATE_CONTEXTS_SIZE:\n contextSize = action.contextSize - 1\n return contextSize\n default:\n return state\n }\n}\n\nexport default contextSize\n","import {\n ADD_CONTEXT,\n DELETE_CONTEXT,\n SAVE_CONTEXTS,\n UPDATE_CONTEXT,\n CLEAR_CONTEXTS,\n} from '../actions/contexts'\n\nconst contexts = (state = null, action) => {\n switch (action.type) {\n case SAVE_CONTEXTS:\n return action.contexts.reverse()\n case ADD_CONTEXT:\n const context = [...state]\n context.unshift(action.context)\n return context\n case UPDATE_CONTEXT:\n const contexts = [...state]\n contexts.forEach((element, index) => {\n if (element.id === action.context.id) {\n contexts[index] = action.context\n }\n })\n return contexts\n case DELETE_CONTEXT:\n return [...state].filter(x => {\n return x.id !== action.contextId\n })\n case CLEAR_CONTEXTS:\n return null\n default:\n return state\n }\n}\n\nexport default contexts\n","import {\n SAVE_NLP_REQUESTS,\n UPDATE_NLP_REQUEST,\n CLEAR_NLP_REQUESTS,\n} from '../actions/nlpRequests'\n\nconst nlpRequests = (state = null, action) => {\n switch (action.type) {\n case SAVE_NLP_REQUESTS:\n return action.requests\n\n case UPDATE_NLP_REQUEST:\n const nlpRequests = JSON.parse(JSON.stringify(state))\n nlpRequests.data.forEach((element, index) => {\n if (element.id === action.request.id) {\n nlpRequests.data[index] = action.request\n }\n })\n nlpRequests.data.filter(x => !x.trained)\n return nlpRequests\n\n case CLEAR_NLP_REQUESTS:\n return null\n\n default:\n return state\n }\n}\n\nexport default nlpRequests\n","import { SAVE_BOT_ACCESSORS } from '../actions/botAccessors'\n\nconst botAccessors = (state = [], action) => {\n switch (action.type) {\n case SAVE_BOT_ACCESSORS:\n return action.botAccessors\n default:\n return state\n }\n}\n\nexport default botAccessors\n","import { SAVE_FACEBOOK_TOKEN } from '../actions/facebookToken'\n\nconst token = (state = [], action) => {\n switch (action.type) {\n case SAVE_FACEBOOK_TOKEN:\n return action.token\n default:\n return state\n }\n}\n\nexport default token\n","import { SAVE_FACEBOOK_PAGES } from '../actions/settingsPages'\n\n/* eslint-disable */\nconst settingsPages = (state = {}, action) => {\n switch (action.type) {\n case SAVE_FACEBOOK_PAGES:\n return { facebookPages: action.facebookPages }\n\n default:\n return state\n }\n}\n\nexport default settingsPages\n","import { GET_TWILIO_CREDENTIALS } from '../actions/twilioCredentials'\n\nconst twilioCredentials = (state = {}, action) => {\n switch (action.type) {\n case GET_TWILIO_CREDENTIALS:\n return action.twilioCredentials\n\n default:\n return state\n }\n}\n\nexport default twilioCredentials\n","import { SAVE_SUPPORT_REQUESTS } from '../actions/supportRequest'\n\nconst supportRequests = (state = null, action) => {\n if (action.type === SAVE_SUPPORT_REQUESTS) {\n return action.requests\n } else {\n return state\n }\n}\n\nexport default supportRequests\n","import {\n SAVE_SUPPORT_USERS,\n SAVE_MORE_SUPPORT_USERS,\n SAVE_CLOSED_SUPPORT_USERS,\n SAVE_MORE_CLOSED_SUPPORT_USERS,\n UPDATE_SUPPORT_USER_LIST,\n UPDATE_USER_UNREAD_MESSAGE,\n} from '../actions/users'\n\nimport { SUPPORT_STATUSES } from '../../../constants/suportStatuses'\n\nconst initialState = {\n assignedToMeUsers: [],\n newRequestsUsers: [],\n expiredRequestsUsers: [],\n assignedRequestsUsers: [],\n allUsers: [],\n closedRequestsUsers: [],\n}\n\nconst _filterAssignedToMeUsers = payload => {\n return payload.supportUsers.filter(user => {\n return (\n user?.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n user?.supportRequest?.support?.adminId === payload.adminUserId\n )\n })\n}\n\nconst _filterNewRequestsUsers = payload => {\n return payload.supportUsers.filter(user => {\n return user?.supportRequest?.status === SUPPORT_STATUSES.OPEN\n })\n}\n\nconst _filterExpiredRequestsUsers = payload => {\n return payload.supportUsers.filter(user => {\n return user?.supportRequest?.status === SUPPORT_STATUSES.EXPIRED\n })\n}\n\nconst _filterAssignedRequestsUsers = payload => {\n return payload.supportUsers.filter(user => {\n return (\n user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n user.supportRequest?.support?.adminId !== payload.adminUserId\n )\n })\n}\n\nconst _filterAllUsers = payload => {\n return payload.supportUsers.filter(user => {\n return (\n user.supportRequest?.status !== SUPPORT_STATUSES.ASSIGNED &&\n user.supportRequest?.status !== SUPPORT_STATUSES.EXPIRED &&\n user.supportRequest?.status !== SUPPORT_STATUSES.OPEN\n )\n })\n}\n\nconst _updateUserAssignedToMe = (state, payload) => {\n const rule =\n payload.user.supportRequest?.status !== SUPPORT_STATUSES.ASSIGNED ||\n payload.user.supportRequest?.support?.adminId !== payload.adminUserId\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUserExpired = (state, payload) => {\n const rule = payload.user.supportRequest?.status !== SUPPORT_STATUSES.EXPIRED\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUserAssigned = (state, payload) => {\n const rule =\n payload.user.supportRequest?.status !== SUPPORT_STATUSES.ASSIGNED ||\n (payload.user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n payload.user.supportRequest?.support?.adminId === payload.adminUserId)\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUserNew = (state, payload) => {\n const rule = payload.user.supportRequest?.status !== SUPPORT_STATUSES.OPEN\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateAllUser = (state, payload) => {\n const rule =\n payload.user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED ||\n payload.user.supportRequest?.status === SUPPORT_STATUSES.EXPIRED ||\n payload.user.supportRequest?.status === SUPPORT_STATUSES.OPEN\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUser = (state, payload, rule) => {\n const isNewUser = !state.find(user => user?.userId === payload.user?.userId)\n\n if (rule && isNewUser) return state\n\n if (rule && !isNewUser)\n return state.filter(user => user.userId !== payload.user.userId)\n\n return isNewUser\n ? [payload.user, ...state]\n : state.map(user => {\n if (user.userId === payload.user?.userId) {\n user = Object.assign({}, user, payload.user)\n }\n return user\n })\n}\n\nconst _updateUserUnreadMessages = (state, payload) => {\n return state.map(user => {\n if (user?.userId === payload.user?.userId && user?.unreadMessages) {\n payload.user.unreadMessage = false\n payload.user.unreadMessages = 0\n payload.user.lastMessage = user.lastMessage\n payload.user.formattedChatHistory = user.formattedChatHistory\n return payload.user\n }\n return user\n })\n}\n\nconst supportUsersNew = (state = initialState, { type, payload }) => {\n switch (type) {\n case SAVE_SUPPORT_USERS:\n return {\n ...state,\n assignedToMeUsers: _filterAssignedToMeUsers(payload),\n newRequestsUsers: _filterNewRequestsUsers(payload),\n expiredRequestsUsers: _filterExpiredRequestsUsers(payload),\n assignedRequestsUsers: _filterAssignedRequestsUsers(payload),\n allUsers: _filterAllUsers(payload),\n }\n\n case SAVE_MORE_SUPPORT_USERS:\n return {\n ...state,\n assignedToMeUsers: [\n ...state.assignedToMeUsers,\n ..._filterAssignedToMeUsers(payload),\n ],\n newRequestsUsers: [\n ...state.newRequestsUsers,\n ..._filterNewRequestsUsers(payload),\n ],\n expiredRequestsUsers: [\n ...state.expiredRequestsUsers,\n ..._filterExpiredRequestsUsers(payload),\n ],\n assignedRequestsUsers: [\n ...state.assignedRequestsUsers,\n ..._filterAssignedRequestsUsers(payload),\n ],\n allUsers: [...state.allUsers, ..._filterAllUsers(payload)],\n }\n\n case UPDATE_SUPPORT_USER_LIST:\n return {\n ...state,\n assignedToMeUsers: _updateUserAssignedToMe(\n state.assignedToMeUsers,\n payload,\n ),\n expiredRequestsUsers: _updateUserExpired(\n state.expiredRequestsUsers,\n payload,\n ),\n assignedRequestsUsers: _updateUserAssigned(\n state.assignedRequestsUsers,\n payload,\n ),\n newRequestsUsers: _updateUserNew(state.newRequestsUsers, payload),\n allUsers: _updateAllUser(state.allUsers, payload),\n }\n\n case UPDATE_USER_UNREAD_MESSAGE:\n return {\n ...state,\n assignedToMeUsers: _updateUserUnreadMessages(\n state.assignedToMeUsers,\n payload,\n ),\n expiredRequestsUsers: _updateUserUnreadMessages(\n state.expiredRequestsUsers,\n payload,\n ),\n assignedRequestsUsers: _updateUserUnreadMessages(\n state.assignedRequestsUsers,\n payload,\n ),\n allUsers: _updateUserUnreadMessages(state.allUsers, payload),\n newRequestsUsers: _updateUserUnreadMessages(\n state.newRequestsUsers,\n payload,\n ),\n }\n\n case SAVE_CLOSED_SUPPORT_USERS:\n return {\n ...state,\n closedRequestsUsers: payload.supportUsers,\n }\n\n case SAVE_MORE_CLOSED_SUPPORT_USERS:\n return {\n state,\n closedRequestsUsers: [\n ...state.closedRequestsUsers,\n ...payload.supportUsers,\n ],\n }\n\n default:\n return state\n }\n}\n\nexport default supportUsersNew\n","import {\n SAVE_MESSAGE,\n SAVE_ACTIVE_SUPPORT_USER,\n SAVE_SUPPORT_USER_MESSAGES,\n SAVE_SUPPORT_USER_MORE_MESSAGES,\n} from '../actions/activeUser'\n\nconst initialState = {\n botActive: null,\n chatId: null,\n chatStatus: null,\n firstName: null,\n lastMessage: null,\n lastName: null,\n messageDatetime: null,\n openedAt: null,\n platform: null,\n postback: null,\n profilePic: null,\n supportRequest: null,\n unreadMessage: null,\n unreadMessages: null,\n userId: null,\n userMessageDatetime: null,\n messages: [],\n}\n\nconst activeUser = (state = initialState, { type, payload }) => {\n switch (type) {\n case SAVE_ACTIVE_SUPPORT_USER:\n return {\n ...state,\n ...payload.activeUser,\n messages: state.messages,\n }\n\n case SAVE_SUPPORT_USER_MESSAGES:\n return {\n ...state,\n messages: payload.messages,\n }\n\n case SAVE_SUPPORT_USER_MORE_MESSAGES:\n return {\n ...state,\n messages: [...state.messages, ...payload.messages]\n }\n\n case SAVE_MESSAGE:\n return {\n ...state,\n messages: [payload.message, ...state.messages],\n }\n\n default:\n return state\n }\n}\n\nexport default activeUser\n","import { SET_BOT_WIDGET, CLEAR_WIDGET_SETTINGS } from '../actions/botWidget'\n\nconst widgetSettings = (state = null, { widgetSettings, type }) => {\n switch (type) {\n case SET_BOT_WIDGET:\n return { ...widgetSettings }\n case CLEAR_WIDGET_SETTINGS:\n return null\n default:\n return state\n }\n}\n\nexport default widgetSettings\n","import { SET_WIDGET_DEFAULT_SETTINGS } from '../actions/widgetDefaultSettings'\n\nconst widgetDefaultSettings = (state = null, { widgetSettings, type }) => {\n switch (type) {\n case SET_WIDGET_DEFAULT_SETTINGS:\n return { ...widgetSettings }\n default:\n return state\n }\n}\n\nexport default widgetDefaultSettings\n","import { SAVE_ACCOUNT_SETTINGS } from '../actions/account'\n\nconst accountSettings = (state = null, action) => {\n switch (action.type) {\n case SAVE_ACCOUNT_SETTINGS:\n return action.accountSettings\n default:\n return state\n }\n}\n\nexport default accountSettings\n","import {\n SET_ATTRIBUTES,\n ADD_ATTRIBUTE,\n CLEAR_ATTRIBUTES,\n} from '../actions/attributes'\n\nconst attributes = (state = [], { type, payload }) => {\n switch (type) {\n case SET_ATTRIBUTES:\n return [...payload.attributes]\n case ADD_ATTRIBUTE:\n return [...state, payload.attribute]\n case CLEAR_ATTRIBUTES:\n return []\n default:\n return state\n }\n}\n\nexport default attributes\n","import { combineReducers } from 'redux'\n\nimport analytics from '../tabs/analytics/reducers/analytics'\nimport funnels from '../tabs/analytics/reducers/funnels'\nimport funnel from '../tabs/analytics/reducers/funnel'\n\nimport security from '../tabs/authorization/reducers/security'\nimport adminUser from '../tabs/authorization/reducers/adminUser'\n\nimport broadcasts from '../tabs/broadcast/reducers/broadcasts'\n\nimport supportStatistics from '../tabs/dashboard/reducers/supportStatistics'\nimport usersStatistics from '../tabs/dashboard/reducers/usersStatistics'\nimport popularHoursStatistics from '../tabs/dashboard/reducers/popularHoursStatistics'\n\nimport flows from '../tabs/flowBuilder/reducers/flows'\nimport atom from '../tabs/flowBuilder/reducers/atom'\nimport atoms from '../tabs/flowBuilder/reducers/atoms'\nimport tags from '../tabs/flowBuilder/reducers/tags'\nimport searchAtoms from '../tabs/flowBuilder/reducers/searchAtoms'\n\nimport bots from '../tabs/home/reducers/bots'\nimport activeBot from '../tabs/home/reducers/activeBot'\nimport snackBar from '../tabs/home/reducers/snackBar'\n\nimport intents from '../tabs/nlp/reducers/intents'\nimport intentsSize from '../tabs/nlp/reducers/intentsSize'\nimport contextSize from '../tabs/nlp/reducers/contextSize'\nimport contexts from '../tabs/nlp/reducers/contexts'\nimport nlpRequests from '../tabs/nlp/reducers/nlpRequests'\n\nimport botAccessors from '../tabs/settings/reducers/botAccessors'\nimport token from '../tabs/settings/reducers/facebookToken'\nimport settingsPages from '../tabs/settings/reducers/settingsPages'\nimport twilioCredentials from '../tabs/settings/reducers/twilioCredentials'\n\nimport supportRequests from '../tabs/support/reducers/supportRequests'\nimport supportUsersNew from '../tabs/support/reducers/users'\nimport activeUser from '../tabs/support/reducers/activeUser'\n\nimport widgetSettings from '../tabs/widget/reducers/widgetSettings'\nimport widgetDefaultSettings from '../tabs/widget/reducers/widgetDefaultSettings'\n\nimport account from '../tabs/account/reducers/account'\nimport attributes from '../tabs/settings/reducers/attributes.js'\n\n// -- APPEND IMPORT HERE --\nconst Reducers = combineReducers({\n security,\n flows,\n bots,\n activeBot,\n atom,\n broadcasts,\n activeUser,\n intents,\n intentsSize,\n contextSize,\n contexts,\n nlpRequests,\n snackBar,\n atoms,\n widgetSettings,\n supportRequests,\n adminUser,\n botAccessors,\n tags,\n settingsPages,\n token,\n supportStatistics,\n usersStatistics,\n popularHoursStatistics,\n analytics,\n searchAtoms,\n twilioCredentials,\n supportUsersNew,\n account,\n attributes,\n widgetDefaultSettings,\n funnels,\n funnel\n// -- APPEND FILE HERE --\n})\n\nexport default Reducers\n","import { createMuiTheme } from '@material-ui/core/'\n\nexport const theme = createMuiTheme({\n palette: {\n primary: {\n light: '#5A98F7',\n medium: '#1146C2',\n main: '#1658F3',\n dark: '#1345BA',\n grayColor: '#D7D8DF',\n text: '#616581',\n contrastText: '#fff',\n azure: '#8EB0F8',\n iconsGray: '#D7D8DF',\n semiAzure: '#D5E5FD',\n headerText: '#3A3F62',\n background: '#F7FAFE',\n },\n text: {\n header: '#3A3F62',\n gray: '#B0B2C0',\n },\n secondary: {\n light: '#ff7961',\n main: '#f44336',\n dark: '#ba000d',\n contrastText: '#000',\n },\n default: {\n gray: '#C7CAD6',\n },\n alerts: {\n success: '#11C314',\n error: '#FF624C',\n },\n pieChartColors: {\n chatbot: '#1658F3',\n support: '#F3B116',\n },\n },\n})\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { BrowserRouter, Route } from 'react-router-dom'\nimport { createBrowserHistory } from 'history'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\nimport './containers/index.css'\nimport App from './containers/App'\nimport reducer from './reducers/index'\nimport { MuiThemeProvider } from '@material-ui/core/'\nimport { MuiPickersUtilsProvider } from 'material-ui-pickers'\nimport DateFnsUtils from 'material-ui-pickers/utils/date-fns-utils'\nimport * as Sentry from '@sentry/react'\nimport { Integrations } from '@sentry/tracing'\nimport { theme } from './constants/theme'\n// eslint-disable-next-line no-unused-vars\nimport * as globalHelpers from './helpers/index'\n\nconst sentryReduxEnhancer = Sentry.createReduxEnhancer({})\nexport const store = createStore(reducer, sentryReduxEnhancer)\nconst history = createBrowserHistory()\n\nSentry.init({\n dsn: process.env.SENTRY_DSN,\n integrations: [\n new Integrations.BrowserTracing({\n routingInstrumentation: Sentry.reactRouterV4Instrumentation(history),\n }),\n ],\n tracesSampleRate: 1.0,\n})\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n\n document.getElementById('root') || document.createElement('div'),\n)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__5S5Ag\",\"containerLoader\":\"styles_containerLoader__3kEmu\",\"charts\":\"styles_charts__2evO_\",\"chart\":\"styles_chart__1oM-z\",\"DateControl\":\"styles_DateControl__tILUv\",\"chartFull\":\"styles_chartFull__1rEOV\",\"row\":\"styles_row__MjfoD\",\"flexBlock\":\"styles_flexBlock__13bVf\",\"flexBlockColumn\":\"styles_flexBlockColumn__GW8J8\",\"extendedChartBlock\":\"styles_extendedChartBlock__1-UPM\",\"extendedRightBlock\":\"styles_extendedRightBlock__3rshW\",\"namedCountersBlock\":\"styles_namedCountersBlock__wzKqL\",\"channelsCircleChartBlock\":\"styles_channelsCircleChartBlock__4GJqW\",\"chartsColumn\":\"styles_chartsColumn__3l5LL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2W1dU\",\"header\":\"styles_header__35vFa\",\"tabs\":\"styles_tabs__9Wg21\",\"tab\":\"styles_tab__1TwPI\",\"activeTab\":\"styles_activeTab__Ze38F\",\"button\":\"styles_button__y8Qqk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputWrap\":\"styles_inputWrap__3o5H0\",\"description\":\"styles_description__2N6-L\",\"errorAlert\":\"styles_errorAlert__2Oqgx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__r9ZIP\",\"header\":\"styles_header__19RTk\",\"closeButton\":\"styles_closeButton__3xbPG\",\"title\":\"styles_title__38nJ7\",\"footer\":\"styles_footer__8CQNW\",\"buttons\":\"styles_buttons__25iXf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputTitle\":\"styles_inputTitle__1m9-D\",\"container\":\"styles_container__2weFE\",\"option\":\"styles_option__7hZcB\",\"optionActive\":\"styles_optionActive__2qOsj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__z_Egd\",\"button\":\"styles_button__2JV5C\",\"input\":\"styles_input__1-Nqb\",\"inputHolder\":\"styles_inputHolder__3KDeK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"gradientBarWrapper\":\"styles_gradientBarWrapper__1Hv4G\",\"gradientBar\":\"styles_gradientBar__3mP-7\",\"gradientBarColumn\":\"styles_gradientBarColumn__3zvkM\",\"gradientBarItem\":\"styles_gradientBarItem__1q6jG\",\"gradientBarItemText\":\"styles_gradientBarItemText__3bt-V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2e_rx\",\"editLink\":\"styles_editLink__3MM0m\",\"iconsWrap\":\"styles_iconsWrap__JWWaD\",\"input\":\"styles_input__1u3uO\",\"parameter\":\"styles_parameter__RqYfD\",\"linkEdited\":\"styles_linkEdited__3kyXj\",\"icon\":\"styles_icon__1lSWi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__L63zz\",\"body\":\"styles_body__1DRG3\",\"label\":\"styles_label__DG7HP\",\"inputsWrap\":\"styles_inputsWrap__10IG3\",\"inputWrap\":\"styles_inputWrap__3Jl37\",\"deleteTemplate\":\"styles_deleteTemplate__2VSxl\",\"deleteIcon\":\"styles_deleteIcon__3jYdU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__26nRJ\",\"header\":\"styles_header__1HJNH\",\"body\":\"styles_body__pvU1Y\",\"form\":\"styles_form__3W_kE\",\"paragraph\":\"styles_paragraph__11_-X\",\"switchersContainer\":\"styles_switchersContainer__M3nxv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3vAJt\",\"title\":\"styles_title__1I8Ls\",\"closeButton\":\"styles_closeButton__ILZU4\",\"deleteButton\":\"styles_deleteButton__eg4EW\",\"buttonsWrap\":\"styles_buttonsWrap__13RVj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1aPLi\",\"nameContainer\":\"styles_nameContainer__FVWRi\",\"nameWrap\":\"styles_nameWrap___W9EV\",\"score\":\"styles_score__1rXDV\",\"comment\":\"styles_comment__29hc3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"styles_button__2hGL0\",\"editButton\":\"styles_editButton__3QCD7\",\"deleteButton\":\"styles_deleteButton__1DsCd\",\"link\":\"styles_link__UsuX2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1W65X\",\"title\":\"styles_title__wMyjQ\",\"closeButton\":\"styles_closeButton__WD2JP\",\"deleteButton\":\"styles_deleteButton__2INOh\",\"buttonsWrap\":\"styles_buttonsWrap__1AKUg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__20wuJ\",\"row\":\"styles_row__1-mTF\",\"link\":\"styles_link__1YdkH\",\"atomName\":\"styles_atomName__3hnrE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"styles_header__3x6ZB\",\"button\":\"styles_button__uDFNQ\",\"title\":\"styles_title__3xc43\",\"stepName\":\"styles_stepName__3nrrR\",\"titleWrap\":\"styles_titleWrap__WMDeD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1Hw_R\",\"header\":\"styles_header__WJA6x\",\"body\":\"styles_body__3QVZJ\",\"deleteTemplate\":\"styles_deleteTemplate__3pjvT\",\"deleteIcon\":\"styles_deleteIcon__3exle\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3e4SY\",\"iconWrap\":\"styles_iconWrap__1ExlX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3uKnY\",\"iconWrap\":\"styles_iconWrap__3tY2m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputWrap\":\"styles_inputWrap__3HgUj\",\"description\":\"styles_description__2ATu7\",\"errorAlert\":\"styles_errorAlert__1fqwU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"styles_button__2PW_Y\",\"editButton\":\"styles_editButton__c4_ew\",\"deleteButton\":\"styles_deleteButton__3tbcW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"body\":\"styles_body__2pdiX\",\"tab\":\"styles_tab__qKrWJ\",\"activeTab\":\"styles_activeTab__8I-2_\",\"tabs\":\"styles_tabs__MAWUW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"body\":\"styles_body__3Hp7D\",\"tab\":\"styles_tab__aQhmx\",\"activeTab\":\"styles_activeTab__OSLQf\",\"tabs\":\"styles_tabs__2bQOv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2QcbN\",\"header\":\"styles_header__1fdwk\",\"selectButton\":\"styles_selectButton__ZnZzH\",\"commentsContainer\":\"styles_commentsContainer__eUuds\",\"loaderContainer\":\"styles_loaderContainer__1Tyz9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"styles_header__3HXte\",\"title\":\"styles_title__36L-j\",\"rateWrap\":\"styles_rateWrap__2IvOz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"counter\":\"styles_counter__11pkW\",\"value\":\"styles_value__1ZQ5c\",\"title\":\"styles_title__3aoIn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addButton\":\"styles_addButton__1_qGG\",\"container\":\"styles_container__G4IgL\",\"labels\":\"styles_labels__3DiTb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__17p5l\",\"inputContainer\":\"styles_inputContainer__9nGlb\",\"inputWrap\":\"styles_inputWrap__1-Xvn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"styles_input__35shF\",\"color\":\"styles_color__3xOTB\",\"value\":\"styles_value__2B4po\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"styles_header__s6JeD\",\"body\":\"styles_body__3Se9X\",\"form\":\"styles_form__c9jEg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2o_Kw\",\"header\":\"styles_header__2Do3z\",\"body\":\"styles_body__3tAkZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1ddA-\",\"header\":\"styles_header__2fNza\",\"body\":\"styles_body__1fhs4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectButton\":\"styles_selectButton__1Kxdj\",\"popover\":\"styles_popover__39Jkw\",\"divider\":\"styles_divider__2BHGc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2uwFP\",\"iconWrap\":\"styles_iconWrap__2aKs1\",\"stepWrap\":\"styles_stepWrap__VpSMa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3CogM\",\"title\":\"styles_title__2fzMW\",\"button\":\"styles_button__3Gtou\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2t0jb\",\"date\":\"styles_date__2xYDi\",\"bottomScrollElem\":\"styles_bottomScrollElem__3zALM\",\"loaderContainer\":\"styles_loaderContainer__cxNcL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1wxlA\",\"chartContainer\":\"styles_chartContainer__1z2YI\",\"chartContainerSelected\":\"styles_chartContainerSelected__BDPSj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__19QGg\",\"text\":\"styles_text__WubUC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkboxes\":\"styles_checkboxes__2RnNI\",\"container\":\"styles_container__2sgyS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3C5At\",\"checkmark\":\"styles_checkmark__2g8yv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"gridItem\":\"styles_gridItem__2fDgk\",\"tooltip\":\"styles_tooltip__25PRg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"styles_input__3JaEl\",\"dateRangePickerContainer\":\"styles_dateRangePickerContainer__18jWL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3v7ki\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"styles_header__1RPb_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"profileImage\":\"styles_profileImage__1bvXA\",\"channelIcon\":\"styles_channelIcon__h0tm-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__Agc7X\",\"inputTitle\":\"styles_inputTitle__1k2OG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterItem\":\"styles_filterItem__1v68Y\",\"popover\":\"styles_popover__OmehJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1nT0G\",\"chartWrap\":\"styles_chartWrap__pJMlW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"styles_header__bP4a4\",\"title\":\"styles_title__1knNC\",\"rateWrap\":\"styles_rateWrap__2NyjH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"styles_title__1eZCm\",\"errorMessage\":\"styles_errorMessage__3_F4s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3DxvN\",\"tableWrap\":\"styles_tableWrap__K9o6h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2hkzB\",\"containerLoader\":\"styles_containerLoader__1wzil\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2spWo\",\"navigationContainer\":\"styles_navigationContainer__3vcvO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__e0aZV\",\"header\":\"styles_header__1op8t\",\"footer\":\"styles_footer__1kie0\",\"body\":\"styles_body__1s10k\",\"logo\":\"styles_logo__2OGMG\",\"nameWrap\":\"styles_nameWrap__2m4dX\",\"name\":\"styles_name__3pzpU\",\"inputPlaceholder\":\"styles_inputPlaceholder__Hg4Po\",\"messageLogo\":\"styles_messageLogo__3qOhG\",\"row\":\"styles_row__3jHEc\",\"message1\":\"styles_message1__lFrcp\",\"message2\":\"styles_message2__3ts9Z\",\"quickReply\":\"styles_quickReply__24s8d\",\"arrow\":\"styles_arrow__2p7vr\",\"reply\":\"styles_reply__3ud_h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__1XSeP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3wx1A\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"styles_button__1I3kT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__12BeE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3dlVA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__21HZr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"styles_tooltip__1L4pX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"styles_input__3Uyrw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"styles_button__3WtkH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3HNKn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"styles_label__1FIZJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__v6esi\",\"header\":\"styles_header__TD_Yv\",\"closeButton\":\"styles_closeButton__14eX8\",\"title\":\"styles_title__W-xi9\",\"body\":\"styles_body__2b2x5\",\"footer\":\"styles_footer__2Bu5T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"snippet\":\"styles_snippet__2xgRv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__Oy0pw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterItem\":\"styles_filterItem__3rINm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"divider\":\"styles_divider__111e5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__27GIP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"styles_tooltip__gl9mD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__3hz2n\",\"header\":\"styles_header__2NOJq\",\"logo\":\"styles_logo__1QoT3\",\"nameWrap\":\"styles_nameWrap__3oAm_\",\"titleWrap\":\"styles_titleWrap__2B41a\",\"title\":\"styles_title__13O05\",\"greetingText\":\"styles_greetingText__21Tyt\",\"body\":\"styles_body__279f-\",\"label\":\"styles_label__DHW7J\",\"inputWrap\":\"styles_inputWrap__3iJqf\",\"input\":\"styles_input__1ZNUD\",\"button\":\"styles_button__C56a9\",\"buttonInput\":\"styles_buttonInput__1MQqv\",\"iconWrap\":\"styles_iconWrap__2BWla\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"styles_container__2stFP\",\"header\":\"styles_header__f3DGF\",\"text\":\"styles_text__30XYu\",\"statsText\":\"styles_statsText__2W19b\",\"statsNumber\":\"styles_statsNumber__1Fn_9\",\"title\":\"styles_title__1cHmR\",\"titleWrapper\":\"styles_titleWrapper__2oa1j\",\"button\":\"styles_button__34q6M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrap\":\"styles_wrap__3G2MH\",\"container\":\"styles_container__73rbl\",\"image\":\"styles_image__2Iaos\",\"iconWrap\":\"styles_iconWrap__3U__X\",\"label\":\"styles_label__3iTYF\",\"uploadContainer\":\"styles_uploadContainer__1SnQa\",\"description\":\"styles_description__SEtja\",\"errorMessage\":\"styles_errorMessage__2J_el\"};"],"sourceRoot":""}