@burgan-tech/morph-touch-runtime 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/burgan-tech-morph-touch-runtime-0.0.4.tgz +0 -0
- package/{touch → morph-touch}/Functions/check-livekit-room-access.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/check-livekit-room-access.http +1 -1
- package/{touch → morph-touch}/Functions/get-absence-entry.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/get-advisor-stats.1.0.0.json +2 -2
- package/morph-touch/Functions/get-available-slots.1.0.0.json +30 -0
- package/{touch → morph-touch}/Functions/get-available-slots.http +4 -2
- package/morph-touch/Functions/get-chat-rooms.1.0.0.json +28 -0
- package/{touch → morph-touch}/Functions/get-chat-rooms.http +2 -2
- package/{touch → morph-touch}/Functions/get-customer-info.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/get-matrix-sync.1.0.0.json +2 -2
- package/morph-touch/Functions/get-rezervations.1.0.0.json +26 -0
- package/{touch → morph-touch}/Functions/get-rezervations.http +2 -2
- package/{touch → morph-touch}/Functions/get-room-messages.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/get-room-messages.http +1 -1
- package/{touch → morph-touch}/Functions/rezervation-transfer.http +1 -1
- package/{touch → morph-touch}/Functions/send-room-message.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/src/GetAvailableSlotsMapping.csx +125 -1
- package/{touch → morph-touch}/Functions/src/GetChatRoomsMapping.csx +6 -7
- package/{touch → morph-touch}/Functions/src/GetRezervationsMapping.csx +12 -5
- package/{touch → morph-touch}/Schemas/absence-entry.1.0.0.json +3 -3
- package/{touch → morph-touch}/Schemas/advisor-chat-rooms.1.0.0.json +2 -2
- package/{touch → morph-touch}/Schemas/chat-room.1.0.0.json +2 -2
- package/morph-touch/Schemas/chat-room.1.1.0.json +132 -0
- package/morph-touch/Schemas/chat-room.1.2.0.json +174 -0
- package/{touch → morph-touch}/Schemas/notification-sender.1.0.0.json +2 -2
- package/{touch → morph-touch}/Schemas/portfolio-manager.1.0.0.json +2 -2
- package/{touch → morph-touch}/Schemas/rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/cancel-absence-entry-for-rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/check-already-completed-chat-room.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-duplicate-portfolio-manager.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-duplicate-rezervation.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-existing-permanent-chat-room.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-randevu-time.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/create-permanent-chat-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/determine-transfer-type.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/enrich-rezervations-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/execute-permanent-chatroom-update.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/execute-rez-chatroom-transfer.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/execute-rezervation-transfer.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/fetch-absence-entries-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-advisors-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-permanent-chatrooms-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-rez-chatrooms-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-rezervations-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-absence-entry-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-available-slots-http.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/get-available-slots.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-chat-room-data-for-rezervation.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-chat-token.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-matrix-room-messages.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-matrix-sync.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-rezervation-data-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-rezervation-state-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-rezervations-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-user-info-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-video-call-url.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/invite-user-to-rezervation-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/join-chat-room-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/join-matrix-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/join-user-to-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-invited-user.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-rezervation-update.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-target-advisor-for-transfer.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-update-body-for-randevu-update.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-video-call-urls.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/query-chat-room-instances.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/remove-member-from-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/send-matrix-room-message.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/send-push-notification.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/send-sms-notification.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/set-chat-room-status-active.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/set-chat-room-status-deactive.1.0.0.json +1 -1
- package/morph-touch/Tasks/set-matrix-room-history-visibility.1.0.0.json +26 -0
- package/{touch → morph-touch}/Tasks/set-previous-advisor.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/set-user-from-headers-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/start-absence-entry-for-rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-chat-room-for-rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-notification-sender.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-permanent-chat-room.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-transfer-from-absence-entry.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-video-call.1.0.0.json +2 -2
- package/morph-touch/Tasks/summarize-chat-openai.1.0.0.json +27 -0
- package/morph-touch/Tasks/test-get-rezervation-count-by-advisor.1.0.0.json +22 -0
- package/morph-touch/Tasks/test-get-rezervation-instances-after-date.1.0.0.json +24 -0
- package/{touch → morph-touch}/Tasks/trigger-chat-room-deactivate.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-chat-room-transfer.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-chat-room-update.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-add-invited-participant.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-apply-update.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-to-in-meet.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-video-call-update.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/validate-date-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/validate-slot-for-rezervation.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/validate-transfer-availability.1.0.0.json +3 -3
- package/{touch → morph-touch}/Workflows/absence-entry.http +21 -21
- package/{touch → morph-touch}/Workflows/absence-entry.json +3 -3
- package/{touch → morph-touch}/Workflows/add-participant-to-rezervation.http +3 -3
- package/{touch → morph-touch}/Workflows/add-participant-to-rezervation.json +23 -24
- package/{touch → morph-touch}/Workflows/chat-room.http +10 -8
- package/{touch → morph-touch}/Workflows/chat-room.json +37 -24
- package/{touch → morph-touch}/Workflows/investment-advisor.json +2 -2
- package/{touch → morph-touch}/Workflows/notification-sender.http +13 -13
- package/{touch → morph-touch}/Workflows/notification-sender.json +5 -5
- package/{touch → morph-touch}/Workflows/portfolio-manager.json +2 -2
- package/{touch → morph-touch}/Workflows/randevu-update.http +6 -6
- package/{touch → morph-touch}/Workflows/rezervation-start.json +16 -16
- package/{touch → morph-touch}/Workflows/rezervation-transfer.json +125 -22
- package/{touch → morph-touch}/Workflows/rezervation-update.http +6 -6
- package/{touch → morph-touch}/Workflows/rezervation-update.json +19 -19
- package/{touch → morph-touch}/Workflows/rezervation.http +6 -6
- package/{touch → morph-touch}/Workflows/rezervation.json +121 -180
- package/{touch → morph-touch}/Workflows/src/CancelAbsenceEntryForRezervationMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/CancelAbsenceForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/ChatRoomRemoveMapping.csx +22 -1
- package/{touch → morph-touch}/Workflows/src/ChatRoomTransferInviteMapping.csx +21 -0
- package/{touch → morph-touch}/Workflows/src/ChatRoomUpdateMapping.csx +21 -0
- package/{touch → morph-touch}/Workflows/src/CreateAbsenceEntryForRezervationMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/CreateAbsenceForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/CreateChatRoomForRezervationMapping.csx +12 -2
- package/{touch → morph-touch}/Workflows/src/CreatePermanentChatRoomMapping.csx +50 -9
- package/morph-touch/Workflows/src/DeactivatePermanentChatRoomFromTransferMapping.csx +133 -0
- package/{touch → morph-touch}/Workflows/src/EnrichRezervationsForTransferMapping.csx +16 -3
- package/{touch → morph-touch}/Workflows/src/ExecutePermanentChatRoomUpdateMapping.csx +23 -18
- package/{touch → morph-touch}/Workflows/src/ExecuteRezChatRoomTransferMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/ExecuteTransferMapping.csx +15 -12
- package/{touch → morph-touch}/Workflows/src/FetchAdvisorsForTransferMapping.csx +55 -7
- package/{touch → morph-touch}/Workflows/src/FetchPermanentChatRoomsMapping.csx +65 -2
- package/morph-touch/Workflows/src/FetchRoomMessagesForSummaryMapping.csx +182 -0
- package/{touch → morph-touch}/Workflows/src/GetChatRoomDataForRezervationMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/GetRezervationDataForAddParticipantMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/GetRezervationDataForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/GetRezervationDataMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/GetRezervationStateForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/GetRezervationStateMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/InvitedUserNotAllowedRule.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/JoinUserToRoomMapping.csx +22 -1
- package/morph-touch/Workflows/src/NoOpGetInstancesTestMapping.csx +19 -0
- package/morph-touch/Workflows/src/PermanentProcessNextTerminationRule.csx +51 -0
- package/{touch → morph-touch}/Workflows/src/SendPushNotificationMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/SendSmsNotificationMapping.csx +1 -1
- package/morph-touch/Workflows/src/SendSummaryToNewRoomMapping.csx +178 -0
- package/morph-touch/Workflows/src/SetRoomHistoryVisibilityMapping.csx +109 -0
- package/{touch → morph-touch}/Workflows/src/StartChatRoomForRezervationMapping.csx +4 -3
- package/{touch → morph-touch}/Workflows/src/StartGetChatTokenForRezervationMapping.csx +1 -1
- package/morph-touch/Workflows/src/StartNewPermanentChatRoomFromTransferMapping.csx +197 -0
- package/{touch → morph-touch}/Workflows/src/StartNotificationForAdvisorMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/StartNotificationForRezervationFromUserInfoMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/StartNotificationForUserMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/StartPermanentChatRoomMapping.csx +5 -2
- package/{touch → morph-touch}/Workflows/src/StartTransferFromAbsenceEntryMapping.csx +6 -14
- package/{touch → morph-touch}/Workflows/src/StateInMeetRule.csx +1 -1
- package/morph-touch/Workflows/src/SummarizeChatWithOpenAIMapping.csx +172 -0
- package/{touch → morph-touch}/Workflows/src/TriggerChatRoomDeactivateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerChatRoomTransferMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerChatRoomUpdateMapping.csx +3 -3
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationAddInvitedParticipantMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationApplyUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationToInMeetMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationVideoCallUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/ValidateSlotForRandevuUpdateMapping.csx +29 -1
- package/{touch → morph-touch}/Workflows/src/ValidateSlotForRezervationMapping.csx +29 -1
- package/{touch → morph-touch}/Workflows/src/ValidateTransferMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/start-chat.json +6 -6
- package/{touch → morph-touch}/Workflows/start-video-call.http +3 -3
- package/{touch → morph-touch}/Workflows/start-video-call.json +4 -4
- package/package.json +1 -1
- package/vnext.config.json +6 -6
- package/burgan-tech-morph-touch-runtime-0.0.3.tgz +0 -0
- package/touch/Functions/get-available-slots.1.0.0.json +0 -30
- package/touch/Functions/get-chat-rooms.1.0.0.json +0 -28
- package/touch/Functions/get-rezervations.1.0.0.json +0 -26
- /package/{touch → morph-touch}/Extensions/.gitkeep +0 -0
- /package/{touch → morph-touch}/Functions/.gitkeep +0 -0
- /package/{touch → morph-touch}/Functions/src/CheckLivekitRoomAccessMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetAbsenceEntryMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetAdvisorStatsMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetCustomerInfoMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetMatrixSyncMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetRoomMessagesMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/SendCancelNotificationMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/SendRoomMessageMapping.csx +0 -0
- /package/{touch → morph-touch}/Schemas/.gitkeep +0 -0
- /package/{touch → morph-touch}/Tasks/.gitkeep +0 -0
- /package/{touch → morph-touch}/Views/.gitkeep +0 -0
- /package/{touch → morph-touch}/Workflows/.gitkeep +0 -0
- /package/{touch → morph-touch}/Workflows/src/AllChatRoomsSuccessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/AlwaysTrueRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/AnyChatRoomFailedRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/AutoProcessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/BuildRezChatRoomPlanMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CanStartRezervationTimerMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CanStartTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ChatRoomCreatedFailedRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ChatRoomCreatedSuccessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ChatRoomTransferRemoveMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckAlreadyCompletedChatRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckDuplicatePortfolioManagerMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckDuplicateRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckExistingPermanentChatRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckRandevuTimeMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckRezervationStateActiveOrInMeetRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CustomerControlToEndRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/DetermineTransferTypeMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/FetchAbsenceEntriesForTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/FetchRezervationsForTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/GetChatTokenMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/GetUserInfoForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/GetVideoCallUrlMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/HasChangedAdvisorRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/HasChatIntegrationRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/HasExistingPermanentRoomRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InviteAdvisorForRandevuUpdateMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InviteNewAdvisorToRezervationRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InviteNewParticipantToRandevuRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InvitedUserMergeMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InvitedUserNotInMeetRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/IsNotfSentRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinChatRoomForAddParticipantMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinChatRoomForRandevuStartMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinChatRoomForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinMatrixRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/LoginForAddParticipantChatMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/LoginForRandevuStartChatMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/MergeRezervationUpdateMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/MergeTargetAdvisorForTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/MergeUpdateBodyForRandevuUpdateMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NoExistingPermanentRoomRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationCompleteAlwaysRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationCompleteFromPendingRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationCompleteFromSmsRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationPushFromPendingRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationPushFromSmsRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationSmsPendingRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/PermanentDoneRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/PermanentProcessNextRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/RezChatRoomProcessNextRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/RezChatRoomsDoneRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetChatRoomStatusActiveMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetChatRoomStatusDeactiveMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetPreviousAdvisorMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetUserFromHeadersForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SlotAvailableRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SlotUnavailableRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallCustomerSubFlowMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallForInvitedParticipantMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallForRandevuStartMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallStaffSubFlowMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateActiveForUpdateRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateActiveRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateNotActiveForUpdateRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateNotActiveOrInMeetRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StatusCustomerEnterRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StatusStaffEnterRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SyncWorkingHoursRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TokenSuccessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TransferAllDoneRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TransferHasInvalidRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TransferProcessNextRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ValidateDateForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/VideoCallUrlUpdateMergeMapping.csx +0 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Linq;
|
|
4
|
+
using System.Threading.Tasks;
|
|
5
|
+
using BBT.Workflow.Scripting;
|
|
6
|
+
using BBT.Workflow.Definitions;
|
|
7
|
+
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Mapping for summarize-chat-openai HttpTask (Type 6) in the termination transfer loop.
|
|
10
|
+
/// Reads lastRoomMessages from instance data, sends them to OpenAI Chat Completions API,
|
|
11
|
+
/// and stores the summary in chatSummary.
|
|
12
|
+
/// Skips gracefully if no messages or on error -- transfer is never blocked.
|
|
13
|
+
/// </summary>
|
|
14
|
+
public class SummarizeChatWithOpenAIMapping : ScriptBase, IMapping
|
|
15
|
+
{
|
|
16
|
+
private const string SystemPrompt =
|
|
17
|
+
"Asagidaki musteri-danisman sohbet gecmisini Turkce olarak 3-5 cumle ile ozetle. " +
|
|
18
|
+
"Onemli konulari, kararlari ve aksiyonlari vurgula. " +
|
|
19
|
+
"Kisisel verileri (TC kimlik, hesap numarasi vb.) ozetleme.";
|
|
20
|
+
|
|
21
|
+
public async Task<ScriptResponse> InputHandler(WorkflowTask task, ScriptContext context)
|
|
22
|
+
{
|
|
23
|
+
var httpTask = task as HttpTask;
|
|
24
|
+
if (httpTask == null)
|
|
25
|
+
throw new InvalidOperationException("Task must be an HttpTask");
|
|
26
|
+
|
|
27
|
+
var data = context.Instance?.Data;
|
|
28
|
+
if (data == null)
|
|
29
|
+
return new ScriptResponse { Data = new { skipped = true, reason = "no-instance-data" } };
|
|
30
|
+
|
|
31
|
+
bool messagesOk = false;
|
|
32
|
+
if (HasProperty(data, "lastRoomMessagesSuccess"))
|
|
33
|
+
bool.TryParse(data.lastRoomMessagesSuccess?.ToString(), out messagesOk);
|
|
34
|
+
|
|
35
|
+
if (!messagesOk || !HasProperty(data, "lastRoomMessages") || data.lastRoomMessages == null)
|
|
36
|
+
return new ScriptResponse { Data = new { skipped = true, reason = "no-messages" } };
|
|
37
|
+
|
|
38
|
+
var msgs = data.lastRoomMessages as IEnumerable<object>;
|
|
39
|
+
if (msgs == null || !msgs.Any())
|
|
40
|
+
return new ScriptResponse { Data = new { skipped = true, reason = "empty-messages" } };
|
|
41
|
+
|
|
42
|
+
var combined = string.Join("\n", msgs.Select(m => m?.ToString() ?? ""));
|
|
43
|
+
if (string.IsNullOrWhiteSpace(combined))
|
|
44
|
+
return new ScriptResponse { Data = new { skipped = true, reason = "blank-messages" } };
|
|
45
|
+
|
|
46
|
+
var apiKey = await GetSecretAsync("vnext-secret", "workflow-secret", "OpenAIApiKey");
|
|
47
|
+
if (string.IsNullOrWhiteSpace(apiKey))
|
|
48
|
+
return new ScriptResponse { Data = new { skipped = true, reason = "no-OpenAIApiKey" } };
|
|
49
|
+
|
|
50
|
+
httpTask.SetUrl("https://api.openai.com/v1/chat/completions");
|
|
51
|
+
httpTask.SetHeaders(new Dictionary<string, string>
|
|
52
|
+
{
|
|
53
|
+
["Content-Type"] = "application/json",
|
|
54
|
+
["Accept"] = "application/json",
|
|
55
|
+
["Authorization"] = "Bearer " + apiKey.Trim()
|
|
56
|
+
});
|
|
57
|
+
httpTask.SetBody(new
|
|
58
|
+
{
|
|
59
|
+
model = "gpt-4o-mini",
|
|
60
|
+
messages = new object[]
|
|
61
|
+
{
|
|
62
|
+
new { role = "system", content = SystemPrompt },
|
|
63
|
+
new { role = "user", content = combined }
|
|
64
|
+
},
|
|
65
|
+
max_tokens = 500,
|
|
66
|
+
temperature = 0.3
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
return new ScriptResponse();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public Task<ScriptResponse> OutputHandler(ScriptContext context)
|
|
73
|
+
{
|
|
74
|
+
var data = context.Instance?.Data;
|
|
75
|
+
var result = new Dictionary<string, object>();
|
|
76
|
+
CopyAllFields(result, data);
|
|
77
|
+
|
|
78
|
+
try
|
|
79
|
+
{
|
|
80
|
+
var response = context.Body;
|
|
81
|
+
var bodyData = response?.data;
|
|
82
|
+
|
|
83
|
+
if (bodyData == null)
|
|
84
|
+
{
|
|
85
|
+
result["chatSummary"] = null;
|
|
86
|
+
result["chatSummarySuccess"] = false;
|
|
87
|
+
return Task.FromResult(new ScriptResponse { Data = result });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
string errType = GetString(bodyData, "error");
|
|
91
|
+
if (!string.IsNullOrEmpty(errType) && HasProperty(bodyData, "message"))
|
|
92
|
+
{
|
|
93
|
+
result["chatSummary"] = null;
|
|
94
|
+
result["chatSummarySuccess"] = false;
|
|
95
|
+
return Task.FromResult(new ScriptResponse { Data = result });
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
string summary = null;
|
|
99
|
+
if (HasProperty(bodyData, "choices") && bodyData.choices != null)
|
|
100
|
+
{
|
|
101
|
+
foreach (var choice in bodyData.choices)
|
|
102
|
+
{
|
|
103
|
+
var message = choice?.message;
|
|
104
|
+
if (message != null)
|
|
105
|
+
{
|
|
106
|
+
summary = GetString(message, "content");
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
result["chatSummary"] = summary;
|
|
113
|
+
result["chatSummarySuccess"] = !string.IsNullOrWhiteSpace(summary);
|
|
114
|
+
}
|
|
115
|
+
catch
|
|
116
|
+
{
|
|
117
|
+
result["chatSummary"] = null;
|
|
118
|
+
result["chatSummarySuccess"] = false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return Task.FromResult(new ScriptResponse { Data = result });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
private string GetString(dynamic obj, string name)
|
|
125
|
+
{
|
|
126
|
+
if (obj == null) return null;
|
|
127
|
+
try
|
|
128
|
+
{
|
|
129
|
+
if (HasProperty(obj, name))
|
|
130
|
+
{
|
|
131
|
+
var v = GetPropertyValue(obj, name);
|
|
132
|
+
return v?.ToString()?.Trim();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch { }
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
private void CopyAllFields(Dictionary<string, object> result, dynamic data)
|
|
140
|
+
{
|
|
141
|
+
CopyIfPresent(result, data, "transferPlan");
|
|
142
|
+
CopyIfPresent(result, data, "validationResult");
|
|
143
|
+
CopyIfPresent(result, data, "sourceAdvisorId");
|
|
144
|
+
CopyIfPresent(result, data, "advisorType");
|
|
145
|
+
CopyIfPresent(result, data, "startDate");
|
|
146
|
+
CopyIfPresent(result, data, "endDate");
|
|
147
|
+
CopyIfPresent(result, data, "transferType");
|
|
148
|
+
CopyIfPresent(result, data, "enrichedRezervations");
|
|
149
|
+
CopyIfPresent(result, data, "rezChatRoomPlan");
|
|
150
|
+
CopyIfPresent(result, data, "permanentRoomPlan");
|
|
151
|
+
CopyIfPresent(result, data, "permanentChatRooms");
|
|
152
|
+
CopyIfPresent(result, data, "permanentProcessedIndex");
|
|
153
|
+
CopyIfPresent(result, data, "lastPermanentDeactivateSuccess");
|
|
154
|
+
CopyIfPresent(result, data, "lastDeactivatedRoomId");
|
|
155
|
+
CopyIfPresent(result, data, "lastRoomMessages");
|
|
156
|
+
CopyIfPresent(result, data, "lastRoomMessagesSuccess");
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private void CopyIfPresent(Dictionary<string, object> target, dynamic source, string name)
|
|
160
|
+
{
|
|
161
|
+
if (source == null) return;
|
|
162
|
+
try
|
|
163
|
+
{
|
|
164
|
+
if (HasProperty(source, name))
|
|
165
|
+
{
|
|
166
|
+
var v = GetPropertyValue(source, name);
|
|
167
|
+
if (v != null) target[name] = v;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -32,7 +32,7 @@ public class TriggerChatRoomDeactivateMapping : ScriptBase, IMapping
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
triggerTask.SetDomain("touch");
|
|
35
|
+
triggerTask.SetDomain("morph-touch");
|
|
36
36
|
triggerTask.SetFlow("chat-room");
|
|
37
37
|
triggerTask.SetKey(existingChatRoomInstanceKey.Trim());
|
|
38
38
|
triggerTask.SetTransitionName("deactivate");
|
|
@@ -45,7 +45,7 @@ public class TriggerChatRoomTransferMapping : ScriptBase, IMapping
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
triggerTask.SetDomain("touch");
|
|
48
|
+
triggerTask.SetDomain("morph-touch");
|
|
49
49
|
triggerTask.SetFlow("chat-room");
|
|
50
50
|
triggerTask.SetKey(existingChatRoomInstanceKey.Trim());
|
|
51
51
|
triggerTask.SetTransitionName("transfer");
|
|
@@ -6,7 +6,7 @@ using BBT.Workflow.Definitions;
|
|
|
6
6
|
|
|
7
7
|
/// <summary>
|
|
8
8
|
/// Mapping for trigger-chat-room-update DirectTriggerTask.
|
|
9
|
-
/// Triggers update transition on chat-room instance (add member). Key =
|
|
9
|
+
/// Triggers update transition on chat-room instance (add member). Key = NormalizeForKey(randevuKey), Body = { newMemberId }.
|
|
10
10
|
/// </summary>
|
|
11
11
|
public class TriggerChatRoomUpdateMapping : ScriptBase, IMapping
|
|
12
12
|
{
|
|
@@ -44,8 +44,8 @@ public class TriggerChatRoomUpdateMapping : ScriptBase, IMapping
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
var chatRoomKey =
|
|
48
|
-
triggerTask.SetDomain("touch");
|
|
47
|
+
var chatRoomKey = NormalizeForKey(randevuKey);
|
|
48
|
+
triggerTask.SetDomain("morph-touch");
|
|
49
49
|
triggerTask.SetFlow("chat-room");
|
|
50
50
|
triggerTask.SetKey(chatRoomKey);
|
|
51
51
|
triggerTask.SetTransitionName("update");
|
package/{touch → morph-touch}/Workflows/src/TriggerRezervationAddInvitedParticipantMapping.csx
RENAMED
|
@@ -43,7 +43,7 @@ public class TriggerRezervationAddInvitedParticipantMapping : ScriptBase, IMappi
|
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
triggerTask.SetDomain("touch");
|
|
46
|
+
triggerTask.SetDomain("morph-touch");
|
|
47
47
|
triggerTask.SetFlow("rezervation");
|
|
48
48
|
triggerTask.SetKey(randevuKey);
|
|
49
49
|
triggerTask.SetTransitionName("add-invited-participant");
|
|
@@ -26,7 +26,7 @@ public class TriggerRezervationApplyUpdateMapping : ScriptBase, IMapping
|
|
|
26
26
|
var absenceEntryKey = GetString(data, "absenceEntryKey");
|
|
27
27
|
var originalAdvisor = GetString(data, "originalAdvisor");
|
|
28
28
|
|
|
29
|
-
triggerTask.SetDomain("touch");
|
|
29
|
+
triggerTask.SetDomain("morph-touch");
|
|
30
30
|
triggerTask.SetFlow("rezervation");
|
|
31
31
|
triggerTask.SetKey(randevuKey);
|
|
32
32
|
triggerTask.SetTransitionName("apply-update");
|
|
@@ -20,7 +20,7 @@ public class TriggerRezervationToInMeetMapping : ScriptBase, IMapping
|
|
|
20
20
|
if (string.IsNullOrWhiteSpace(randevuKey))
|
|
21
21
|
throw new InvalidOperationException("randevuKey is required");
|
|
22
22
|
|
|
23
|
-
triggerTask.SetDomain("touch");
|
|
23
|
+
triggerTask.SetDomain("morph-touch");
|
|
24
24
|
triggerTask.SetFlow("rezervation");
|
|
25
25
|
triggerTask.SetKey(randevuKey);
|
|
26
26
|
triggerTask.SetTransitionName("to-in-meet");
|
|
@@ -47,7 +47,7 @@ public class TriggerRezervationVideoCallUpdateMapping : ScriptBase, IMapping
|
|
|
47
47
|
{ "videoCallUrlToAdd", videoCallUrlToAdd }
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
triggerTask.SetDomain("touch");
|
|
50
|
+
triggerTask.SetDomain("morph-touch");
|
|
51
51
|
triggerTask.SetFlow("rezervation");
|
|
52
52
|
triggerTask.SetKey(roomName);
|
|
53
53
|
triggerTask.SetTransitionName("video-call-url-update");
|
|
@@ -118,7 +118,10 @@ public class ValidateSlotForRandevuUpdateMapping : ScriptBase, IMapping
|
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
var
|
|
121
|
+
var tz = ResolveBusinessTimeZone();
|
|
122
|
+
var localStart = ConvertToTimeZone(startDt, startDateTimeStr, tz);
|
|
123
|
+
var localEnd = ConvertToTimeZone(endDt, endDateTimeStr, tz);
|
|
124
|
+
var requestedSlot = localStart.ToString("HH:mm") + "-" + localEnd.ToString("HH:mm");
|
|
122
125
|
bool available = false;
|
|
123
126
|
string responseKey = null;
|
|
124
127
|
|
|
@@ -194,6 +197,31 @@ public class ValidateSlotForRandevuUpdateMapping : ScriptBase, IMapping
|
|
|
194
197
|
}
|
|
195
198
|
}
|
|
196
199
|
|
|
200
|
+
private TimeZoneInfo ResolveBusinessTimeZone()
|
|
201
|
+
{
|
|
202
|
+
var id = GetConfigValue("Appointments:TimeZone") ?? GetConfigValue("APPOINTMENT_TIMEZONE");
|
|
203
|
+
if (string.IsNullOrWhiteSpace(id))
|
|
204
|
+
id = "Europe/Istanbul";
|
|
205
|
+
|
|
206
|
+
try { return TimeZoneInfo.FindSystemTimeZoneById(id.Trim()); } catch { }
|
|
207
|
+
try { return TimeZoneInfo.FindSystemTimeZoneById("Turkey Standard Time"); } catch { }
|
|
208
|
+
return TimeZoneInfo.CreateCustomTimeZone("TRT", TimeSpan.FromHours(3), "TRT (UTC+3)", "TRT (UTC+3)");
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private static DateTime ConvertToTimeZone(DateTime dt, string original, TimeZoneInfo tz)
|
|
212
|
+
{
|
|
213
|
+
if (dt.Kind == DateTimeKind.Utc)
|
|
214
|
+
return TimeZoneInfo.ConvertTimeFromUtc(dt, tz);
|
|
215
|
+
|
|
216
|
+
if (DateTimeOffset.TryParse(original, out var dto))
|
|
217
|
+
{
|
|
218
|
+
var utc = dto.UtcDateTime;
|
|
219
|
+
return TimeZoneInfo.ConvertTimeFromUtc(utc, tz);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
return dt;
|
|
223
|
+
}
|
|
224
|
+
|
|
197
225
|
private string GetString(dynamic obj, string name)
|
|
198
226
|
{
|
|
199
227
|
if (obj == null) return null;
|
|
@@ -134,7 +134,10 @@ public class ValidateSlotForRezervationMapping : ScriptBase, IMapping
|
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
var
|
|
137
|
+
var tz = ResolveBusinessTimeZone();
|
|
138
|
+
var localStart = ConvertToTimeZone(startDt, startDateTimeStr, tz);
|
|
139
|
+
var localEnd = ConvertToTimeZone(endDt, endDateTimeStr, tz);
|
|
140
|
+
var requestedSlot = localStart.ToString("HH:mm") + "-" + localEnd.ToString("HH:mm");
|
|
138
141
|
|
|
139
142
|
bool available = false;
|
|
140
143
|
string responseKey = null;
|
|
@@ -229,6 +232,31 @@ public class ValidateSlotForRezervationMapping : ScriptBase, IMapping
|
|
|
229
232
|
}
|
|
230
233
|
}
|
|
231
234
|
|
|
235
|
+
private TimeZoneInfo ResolveBusinessTimeZone()
|
|
236
|
+
{
|
|
237
|
+
var id = GetConfigValue("Appointments:TimeZone") ?? GetConfigValue("APPOINTMENT_TIMEZONE");
|
|
238
|
+
if (string.IsNullOrWhiteSpace(id))
|
|
239
|
+
id = "Europe/Istanbul";
|
|
240
|
+
|
|
241
|
+
try { return TimeZoneInfo.FindSystemTimeZoneById(id.Trim()); } catch { }
|
|
242
|
+
try { return TimeZoneInfo.FindSystemTimeZoneById("Turkey Standard Time"); } catch { }
|
|
243
|
+
return TimeZoneInfo.CreateCustomTimeZone("TRT", TimeSpan.FromHours(3), "TRT (UTC+3)", "TRT (UTC+3)");
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
private static DateTime ConvertToTimeZone(DateTime dt, string original, TimeZoneInfo tz)
|
|
247
|
+
{
|
|
248
|
+
if (dt.Kind == DateTimeKind.Utc)
|
|
249
|
+
return TimeZoneInfo.ConvertTimeFromUtc(dt, tz);
|
|
250
|
+
|
|
251
|
+
if (DateTimeOffset.TryParse(original, out var dto))
|
|
252
|
+
{
|
|
253
|
+
var utc = dto.UtcDateTime;
|
|
254
|
+
return TimeZoneInfo.ConvertTimeFromUtc(utc, tz);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return dt;
|
|
258
|
+
}
|
|
259
|
+
|
|
232
260
|
private string GetString(dynamic obj, string name)
|
|
233
261
|
{
|
|
234
262
|
if (obj == null) return null;
|
|
@@ -47,8 +47,8 @@ public class ValidateTransferMapping : ScriptBase, IMapping
|
|
|
47
47
|
"{\"currentState\":{\"eq\":\"in-meet\"}}" +
|
|
48
48
|
"]}",
|
|
49
49
|
"{\"status\":{\"eq\":\"A\"}}",
|
|
50
|
-
"{\"attributes\":{\"startDateTime\":{\"
|
|
51
|
-
"{\"attributes\":{\"endDateTime\":{\"
|
|
50
|
+
"{\"attributes\":{\"startDateTime\":{\"dgt\":\"" + startDate + "\"}}}",
|
|
51
|
+
"{\"attributes\":{\"endDateTime\":{\"dlt\":\"" + endDate + "\"}}}"
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
var filterJson = "{\"and\":[" + string.Join(",", conditions) + "]}";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "start-chat",
|
|
3
3
|
"flow": "sys-flows",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "2.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
{
|
|
43
43
|
"order": 1,
|
|
44
44
|
"task": {
|
|
45
|
-
"domain": "touch",
|
|
45
|
+
"domain": "morph-touch",
|
|
46
46
|
"flow": "sys-tasks",
|
|
47
47
|
"key": "check-existing-permanent-chat-room",
|
|
48
48
|
"version": "1.0.0"
|
|
@@ -113,14 +113,14 @@
|
|
|
113
113
|
{
|
|
114
114
|
"order": 1,
|
|
115
115
|
"task": {
|
|
116
|
-
"domain": "touch",
|
|
116
|
+
"domain": "morph-touch",
|
|
117
117
|
"flow": "sys-tasks",
|
|
118
118
|
"key": "trigger-chat-room-transfer",
|
|
119
119
|
"version": "1.0.0"
|
|
120
120
|
},
|
|
121
121
|
"mapping": {
|
|
122
122
|
"location": "./src/TriggerChatRoomTransferMapping.csx",
|
|
123
|
-
"code": "
|
|
123
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgdHJpZ2dlci1jaGF0LXJvb20tdHJhbnNmZXIgRGlyZWN0VHJpZ2dlclRhc2suCi8vLyBUcmlnZ2VycyB0cmFuc2ZlciB0cmFuc2l0aW9uIG9uIGNoYXQtcm9vbSBpbnN0YW5jZS4gVXNlcyBleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkgYW5kIG5ld0Fkdmlzb3JJZCBmcm9tIHN0YXJ0LWNoYXQgaW5zdGFuY2UgZGF0YS4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFRyaWdnZXJDaGF0Um9vbVRyYW5zZmVyTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgdHJpZ2dlclRhc2sgPSB0YXNrIGFzIERpcmVjdFRyaWdnZXJUYXNrOwogICAgICAgIGlmICh0cmlnZ2VyVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGEgRGlyZWN0VHJpZ2dlclRhc2siKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIHZhciBleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkgPSBHZXRTdHJpbmcoZGF0YSwgImV4aXN0aW5nQ2hhdFJvb21JbnN0YW5jZUtleSIpOwogICAgICAgIHZhciBuZXdBZHZpc29ySWQgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3JJZCIpOwoKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImNoYXQtcm9vbS10cmFuc2Zlci1za2lwcGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7ICJ0cmFuc2ZlclRyaWdnZXJlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICAgICAgICAgeyAicmVhc29uIiwgIm1pc3NpbmctZXhpc3RpbmdDaGF0Um9vbUluc3RhbmNlS2V5IiB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShuZXdBZHZpc29ySWQpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImNoYXQtcm9vbS10cmFuc2Zlci1za2lwcGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7ICJ0cmFuc2ZlclRyaWdnZXJlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICAgICAgICAgeyAicmVhc29uIiwgIm1pc3NpbmctbmV3QWR2aXNvcklkIiB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgdHJpZ2dlclRhc2suU2V0RG9tYWluKCJtb3JwaC10b3VjaCIpOwogICAgICAgIHRyaWdnZXJUYXNrLlNldEZsb3coImNoYXQtcm9vbSIpOwogICAgICAgIHRyaWdnZXJUYXNrLlNldEtleShleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkuVHJpbSgpKTsKICAgICAgICB0cmlnZ2VyVGFzay5TZXRUcmFuc2l0aW9uTmFtZSgidHJhbnNmZXIiKTsKICAgICAgICB0cmlnZ2VyVGFzay5TZXRCb2R5KG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PgogICAgICAgIHsKICAgICAgICAgICAgeyAibmV3QWR2aXNvcklkIiwgbmV3QWR2aXNvcklkLlRyaW0oKSB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgewogICAgICAgICAgICBEYXRhID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHsgeyAidHJhbnNmZXJUcmlnZ2VyZWQiLCB0cnVlIH0gfQogICAgICAgIH0pOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICBpZiAoY29udGV4dC5Cb2R5Py5pc1N1Y2Nlc3MgIT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJjaGF0LXJvb20tdHJhbnNmZXItZmFpbGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGNvbnRleHQuQm9keT8uZXJyb3JNZXNzYWdlPy5Ub1N0cmluZygpID8/ICJDaGF0IHJvb20gdHJhbnNmZXIgZmFpbGVkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
]
|
|
@@ -148,14 +148,14 @@
|
|
|
148
148
|
{
|
|
149
149
|
"order": 1,
|
|
150
150
|
"task": {
|
|
151
|
-
"domain": "touch",
|
|
151
|
+
"domain": "morph-touch",
|
|
152
152
|
"flow": "sys-tasks",
|
|
153
153
|
"key": "start-permanent-chat-room",
|
|
154
154
|
"version": "1.0.0"
|
|
155
155
|
},
|
|
156
156
|
"mapping": {
|
|
157
157
|
"location": "./src/StartPermanentChatRoomMapping.csx",
|
|
158
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBNYXBwaW5nIGZvciBzdGFydC1wZXJtYW5lbnQtY2hhdC1yb29tIFN0YXJ0VGFzayAoVHlwZSAxMSkuCi8vLyBTdGFydHMgY2hhdC1yb29tIGZsb3cgYXMgc3ViZmxvdyB3aXRoIGJvZHk6IHVzZXIsIGFkdmlzb3JUeXBlLCBhZHZpc29ySWQgZnJvbSBJbnN0YW5jZURhdGEsIHJvb21UeXBlICJwZXJtYW5lbnQiLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgU3RhcnRQZXJtYW5lbnRDaGF0Um9vbU1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHN0YXJ0VGFzayA9IHRhc2sgYXMgU3RhcnRUYXNrOwogICAgICAgIGlmIChzdGFydFRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIFN0YXJ0VGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/
|
|
158
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBNYXBwaW5nIGZvciBzdGFydC1wZXJtYW5lbnQtY2hhdC1yb29tIFN0YXJ0VGFzayAoVHlwZSAxMSkuCi8vLyBTdGFydHMgY2hhdC1yb29tIGZsb3cgYXMgc3ViZmxvdyB3aXRoIGJvZHk6IHVzZXIsIGFkdmlzb3JUeXBlLCBhZHZpc29ySWQgZnJvbSBJbnN0YW5jZURhdGEsIHJvb21UeXBlICJwZXJtYW5lbnQiLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgU3RhcnRQZXJtYW5lbnRDaGF0Um9vbU1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHN0YXJ0VGFzayA9IHRhc2sgYXMgU3RhcnRUYXNrOwogICAgICAgIGlmIChzdGFydFRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIFN0YXJ0VGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkluc3RhbmNlIGRhdGEgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIHVzZXIgPSBHZXRTdHJpbmcoZGF0YSwgInVzZXIiKTsKICAgICAgICB2YXIgYWR2aXNvclR5cGUgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3JUeXBlIik7CiAgICAgICAgdmFyIGFkdmlzb3JJZCA9IEdldFN0cmluZyhkYXRhLCAiYWR2aXNvcklkIik7CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigidXNlciBpcyByZXF1aXJlZCIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGFkdmlzb3JJZCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJhZHZpc29ySWQgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoYWR2aXNvclR5cGUpKQogICAgICAgICAgICBhZHZpc29yVHlwZSA9ICJJQSI7CgogICAgICAgIHZhciBrZXlPdmVycmlkZSA9IEdldFN0cmluZyhkYXRhLCAiY2hhdFJvb21JbnN0YW5jZUtleSIpOwogICAgICAgIHZhciBjaGF0Um9vbUtleSA9ICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGtleU92ZXJyaWRlKQogICAgICAgICAgICA/IGtleU92ZXJyaWRlLlRyaW0oKQogICAgICAgICAgICA6IE5vcm1hbGl6ZUZvcktleSh1c2VyKSArICItIiArIE5vcm1hbGl6ZUZvcktleShhZHZpc29yVHlwZSk7CgogICAgICAgIHN0YXJ0VGFzay5TZXREb21haW4oIm1vcnBoLXRvdWNoIik7CiAgICAgICAgc3RhcnRUYXNrLlNldEZsb3coImNoYXQtcm9vbSIpOwogICAgICAgIHN0YXJ0VGFzay5TZXRLZXkoY2hhdFJvb21LZXkpOwogICAgICAgIHN0YXJ0VGFzay5TZXRTeW5jKHRydWUpOwogICAgICAgIHN0YXJ0VGFzay5TZXRCb2R5KG5ldwogICAgICAgIHsKICAgICAgICAgICAgdXNlciwKICAgICAgICAgICAgYWR2aXNvclR5cGUsCiAgICAgICAgICAgIGFkdmlzb3JJZCwKICAgICAgICAgICAgcm9vbVR5cGUgPSAicGVybWFuZW50IgogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBjaGF0Um9vbUluc3RhbmNlS2V5ID0gY2hhdFJvb21LZXkgfSB9KTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CiAgICAgICAgaWYgKGNvbnRleHQuQm9keT8uaXNTdWNjZXNzID09IHRydWUpCiAgICAgICAgewogICAgICAgICAgICB2YXIga2V5ID0gR2V0U3RyaW5nKGNvbnRleHQuQm9keSwgImtleSIpID8/IEdldFN0cmluZyhjb250ZXh0LkJvZHk/LmRhdGEgPz8gY29udGV4dC5Cb2R5Py5EYXRhLCAia2V5Iik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGtleSkpCiAgICAgICAgICAgICAgICBrZXkgPSBHZXRTdHJpbmcoY29udGV4dC5JbnN0YW5jZT8uRGF0YSwgImNoYXRSb29tSW5zdGFuY2VLZXkiKTsKICAgICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IG5ldyB7IGNoYXRSb29tSW5zdGFuY2VLZXkgPSBrZXkgfTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGF0Um9vbUluc3RhbmNlS2V5ID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgZXJyb3IgPSBjb250ZXh0LkJvZHk/LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSA/PyAiRmFpbGVkIHRvIHN0YXJ0IHBlcm1hbmVudCBjaGF0LXJvb20iCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQocmVzcG9uc2UpOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpPy5UcmltKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgTm9ybWFsaXplRm9yS2V5KHN0cmluZyB2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkodmFsdWUpKSByZXR1cm4gdmFsdWUgPz8gIiI7CiAgICAgICAgcmV0dXJuIHZhbHVlLlJlcGxhY2UoIjoiLCAiLSIpLlJlcGxhY2UoIiAiLCAiLSIpLlJlcGxhY2UoIkAiLCAiLSIpOwogICAgfQp9Cg=="
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
]
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
@baseUrl = http://localhost:4201
|
|
16
16
|
@apiVersion = 1
|
|
17
|
-
@domain = touch
|
|
17
|
+
@domain = morph-touch
|
|
18
18
|
@workflow = start-video-call
|
|
19
19
|
|
|
20
20
|
###############################################################################
|
|
@@ -41,7 +41,7 @@ X-Request-Id: {{$guid}}
|
|
|
41
41
|
"roomName": "{{rezervationKey}}",
|
|
42
42
|
"status": "staff-enter",
|
|
43
43
|
"user": "core.user.user-001",
|
|
44
|
-
"advisor": "touch.portfolio-manager.pm-001"
|
|
44
|
+
"advisor": "morph-touch.portfolio-manager.pm-001"
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -60,7 +60,7 @@ X-Request-Id: {{$guid}}
|
|
|
60
60
|
"roomName": "{{rezervationKey}}",
|
|
61
61
|
"status": "customer-enter",
|
|
62
62
|
"user": "core.user.user-001",
|
|
63
|
-
"advisor": "touch.portfolio-manager.pm-001"
|
|
63
|
+
"advisor": "morph-touch.portfolio-manager.pm-001"
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "start-video-call",
|
|
3
3
|
"flow": "sys-flows",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "2.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
{
|
|
120
120
|
"order": 1,
|
|
121
121
|
"task": {
|
|
122
|
-
"domain": "touch",
|
|
122
|
+
"domain": "morph-touch",
|
|
123
123
|
"flow": "sys-tasks",
|
|
124
124
|
"key": "get-video-call-url",
|
|
125
125
|
"version": "1.0.0"
|
|
@@ -187,14 +187,14 @@
|
|
|
187
187
|
{
|
|
188
188
|
"order": 1,
|
|
189
189
|
"task": {
|
|
190
|
-
"domain": "touch",
|
|
190
|
+
"domain": "morph-touch",
|
|
191
191
|
"flow": "sys-tasks",
|
|
192
192
|
"key": "trigger-rezervation-video-call-update",
|
|
193
193
|
"version": "1.0.0"
|
|
194
194
|
},
|
|
195
195
|
"mapping": {
|
|
196
196
|
"location": "./src/TriggerRezervationVideoCallUpdateMapping.csx",
|
|
197
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgdHJpZ2dlci1yZXplcnZhdGlvbi12aWRlby1jYWxsLXVwZGF0ZSBEaXJlY3RUcmlnZ2VyVGFzayAoVHlwZSAxMikuCi8vLyBUcmlnZ2VycyB2aWRlby1jYWxsLXVybC11cGRhdGUgdHJhbnNpdGlvbiBvbiBwYXJlbnQgcmV6ZXJ2YXRpb24gd2l0aCB2aWRlb0NhbGxVcmwgYW5kIEluc3RhbmNlRGF0YS4KLy8vIFBhcmVudCBrZXkgPSByb29tTmFtZSBmcm9tIHN1YmZsb3cgaW5zdGFuY2UgKHBhc3NlZCBmcm9tIHBhcmVudCB3aGVuIHN1YmZsb3cgc3RhcnRlZCkuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBUcmlnZ2VyUmV6ZXJ2YXRpb25WaWRlb0NhbGxVcGRhdGVNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciB0cmlnZ2VyVGFzayA9IHRhc2sgYXMgRGlyZWN0VHJpZ2dlclRhc2s7CiAgICAgICAgaWYgKHRyaWdnZXJUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEaXJlY3RUcmlnZ2VyVGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJvb21OYW1lID0gZGF0YT8ucm9vbU5hbWU/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICB2YXIgdmlkZW9DYWxsVXJsID0gZGF0YT8udmlkZW9DYWxsVXJsPy5Ub1N0cmluZygpPy5UcmltKCk7CiAgICAgICAgdmFyIGdldFRva2VuU3VjY2VzcyA9IGRhdGE/LmdldFRva2VuU3VjY2VzcyA/PyBmYWxzZTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJvb21OYW1lKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7ICJ1cGRhdGVUcmlnZ2VyZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgICAgICAgIHsgInJlYXNvbiIsICJtaXNzaW5nLXJvb21OYW1lIiB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXR1cyA9IGRhdGE/LnN0YXR1cz8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHZhciBpc1N0YWZmID0gc3RhdHVzID09ICJzdGFmZi1lbnRlciI7CiAgICAgICAgdmFyIHBhcnRpY2lwYW50SWQgPSBpc1N0YWZmID8gKGRhdGE/LmFkdmlzb3I/LlRvU3RyaW5nKCk/LlRyaW0oKSA/PyAiYWR2aXNvciIpIDogKGRhdGE/LnVzZXI/LlRvU3RyaW5nKCk/LlRyaW0oKSA/PyAidXNlciIpOwogICAgICAgIHZhciB2aWRlb0NhbGxVcmxUb0FkZCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiB7IHsgcGFydGljaXBhbnRJZCwgdmlkZW9DYWxsVXJsID8/IHN0cmluZy5FbXB0eSB9IH07CgogICAgICAgIHZhciBib2R5ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+
|
|
197
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgdHJpZ2dlci1yZXplcnZhdGlvbi12aWRlby1jYWxsLXVwZGF0ZSBEaXJlY3RUcmlnZ2VyVGFzayAoVHlwZSAxMikuCi8vLyBUcmlnZ2VycyB2aWRlby1jYWxsLXVybC11cGRhdGUgdHJhbnNpdGlvbiBvbiBwYXJlbnQgcmV6ZXJ2YXRpb24gd2l0aCB2aWRlb0NhbGxVcmwgYW5kIEluc3RhbmNlRGF0YS4KLy8vIFBhcmVudCBrZXkgPSByb29tTmFtZSBmcm9tIHN1YmZsb3cgaW5zdGFuY2UgKHBhc3NlZCBmcm9tIHBhcmVudCB3aGVuIHN1YmZsb3cgc3RhcnRlZCkuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBUcmlnZ2VyUmV6ZXJ2YXRpb25WaWRlb0NhbGxVcGRhdGVNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciB0cmlnZ2VyVGFzayA9IHRhc2sgYXMgRGlyZWN0VHJpZ2dlclRhc2s7CiAgICAgICAgaWYgKHRyaWdnZXJUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEaXJlY3RUcmlnZ2VyVGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJvb21OYW1lID0gZGF0YT8ucm9vbU5hbWU/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICB2YXIgdmlkZW9DYWxsVXJsID0gZGF0YT8udmlkZW9DYWxsVXJsPy5Ub1N0cmluZygpPy5UcmltKCk7CiAgICAgICAgdmFyIGdldFRva2VuU3VjY2VzcyA9IGRhdGE/LmdldFRva2VuU3VjY2VzcyA/PyBmYWxzZTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJvb21OYW1lKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7ICJ1cGRhdGVUcmlnZ2VyZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgICAgICAgIHsgInJlYXNvbiIsICJtaXNzaW5nLXJvb21OYW1lIiB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXR1cyA9IGRhdGE/LnN0YXR1cz8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHZhciBpc1N0YWZmID0gc3RhdHVzID09ICJzdGFmZi1lbnRlciI7CiAgICAgICAgdmFyIHBhcnRpY2lwYW50SWQgPSBpc1N0YWZmID8gKGRhdGE/LmFkdmlzb3I/LlRvU3RyaW5nKCk/LlRyaW0oKSA/PyAiYWR2aXNvciIpIDogKGRhdGE/LnVzZXI/LlRvU3RyaW5nKCk/LlRyaW0oKSA/PyAidXNlciIpOwogICAgICAgIHZhciB2aWRlb0NhbGxVcmxUb0FkZCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiB7IHsgcGFydGljaXBhbnRJZCwgdmlkZW9DYWxsVXJsID8/IHN0cmluZy5FbXB0eSB9IH07CgogICAgICAgIHZhciBib2R5ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+CiAgICAgICAgewogICAgICAgICAgICB7ICJnZXRUb2tlblN1Y2Nlc3MiLCBnZXRUb2tlblN1Y2Nlc3MgfSwKICAgICAgICAgICAgeyAicm9vbU5hbWUiLCByb29tTmFtZSB9LAogICAgICAgICAgICB7ICJzdGF0dXMiLCBkYXRhPy5zdGF0dXMgfSwKICAgICAgICAgICAgeyAidmlkZW9DYWxsVXJsVG9BZGQiLCB2aWRlb0NhbGxVcmxUb0FkZCB9CiAgICAgICAgfTsKCiAgICAgICAgdHJpZ2dlclRhc2suU2V0RG9tYWluKCJtb3JwaC10b3VjaCIpOwogICAgICAgIHRyaWdnZXJUYXNrLlNldEZsb3coInJlemVydmF0aW9uIik7CiAgICAgICAgdHJpZ2dlclRhc2suU2V0S2V5KHJvb21OYW1lKTsKICAgICAgICB0cmlnZ2VyVGFzay5TZXRUcmFuc2l0aW9uTmFtZSgidmlkZW8tY2FsbC11cmwtdXBkYXRlIik7CiAgICAgICAgdHJpZ2dlclRhc2suU2V0Qm9keShib2R5KTsKCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICB7CiAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4geyB7ICJ1cGRhdGVUcmlnZ2VyZWQiLCB0cnVlIH0gfQogICAgICAgIH0pOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KfQoK"
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
]
|
package/package.json
CHANGED
package/vnext.config.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.0.
|
|
3
|
-
"description": "touch Domain Definition Configuration",
|
|
4
|
-
"domain": "touch",
|
|
5
|
-
"runtimeVersion": "0.0.
|
|
2
|
+
"version": "0.0.4",
|
|
3
|
+
"description": "morph-touch Domain Definition Configuration",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
|
+
"runtimeVersion": "0.0.41",
|
|
6
6
|
"schemaVersion": "0.0.38",
|
|
7
7
|
"paths": {
|
|
8
8
|
"componentsRoot": "touch",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"extensions": [],
|
|
23
23
|
"visibility": "public",
|
|
24
24
|
"metadata": {
|
|
25
|
-
"description": "Exported components for touch domain",
|
|
25
|
+
"description": "Exported components for morph-touch domain",
|
|
26
26
|
"maintainer": "vNext Team",
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"keywords": [
|
|
29
|
-
"touch",
|
|
29
|
+
"morph-touch",
|
|
30
30
|
"vnext",
|
|
31
31
|
"workflow",
|
|
32
32
|
"domain"
|
|
Binary file
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"key": "get-available-slots",
|
|
3
|
-
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"flowVersion": "1.0.0",
|
|
7
|
-
"tags": [
|
|
8
|
-
"appointments",
|
|
9
|
-
"availability",
|
|
10
|
-
"slots",
|
|
11
|
-
"advisor",
|
|
12
|
-
"calendar"
|
|
13
|
-
],
|
|
14
|
-
"attributes": {
|
|
15
|
-
"scope": "I",
|
|
16
|
-
"task": {
|
|
17
|
-
"order": 1,
|
|
18
|
-
"task": {
|
|
19
|
-
"key": "get-available-slots-task",
|
|
20
|
-
"domain": "touch",
|
|
21
|
-
"version": "1.0.0",
|
|
22
|
-
"flow": "sys-tasks"
|
|
23
|
-
},
|
|
24
|
-
"mapping": {
|
|
25
|
-
"location": "./src/GetAvailableSlotsMapping.csx",
|
|
26
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgR2V0QXZhaWxhYmxlU2xvdHNUYXNrIChEYXByU2VydmljZVRhc2sgLSBUeXBlIDMpCi8vLyBRdWVyaWVzIGFic2VuY2UtZW50cnkgd29ya2Zsb3cgKHN0YXRlOiBjb21wbGV0ZSkgdmlhIERhcHIgc2VydmljZSBpbnZvY2F0aW9uIHRvIGdldAovLy8gcHVibGljIGhvbGlkYXlzLCB3b3JraW5nIGhvdXJzIGNoYW5nZXMsIGFuZCBwZXJzb25hbCBsZWF2ZXMuCi8vLyBUaGVuIGNhbGN1bGF0ZXMgYXZhaWxhYmxlIGFwcG9pbnRtZW50IHNsb3RzIGZvciB0aGUgZ2l2ZW4gYWR2aXNvciBhbmQgZGF0ZS4KLy8vCi8vLyBXb3JraW5nIGhvdXJzIHByaW9yaXR5OiBhZHZpc29yLXNwZWNpZmljID4gY29tcGFueS13aWRlIChhZHZpc29yPW51bGwpID4gbm8gaG91cnMKLy8vIEhhbGYtZGF5IHB1YmxpYyBob2xpZGF5cyBvbmx5IGJsb2NrIHRoZSBob2xpZGF5IGhvdXJzLCBub3QgdGhlIGVudGlyZSBkYXkuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBHZXRBdmFpbGFibGVTbG90c01hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgaWYgKHNlcnZpY2VUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEYXByU2VydmljZVRhc2siKTsKCiAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhcHBJZCkpCiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldEFwcElkKGFwcElkKTsKCiAgICAgICAgdmFyIGFkdmlzb3JJZCA9IGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzP1siYWR2aXNvcklkIl0/LlRvU3RyaW5nKCk7CiAgICAgICAgdmFyIGRhdGUgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bImRhdGUiXT8uVG9TdHJpbmcoKTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3JJZCkgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZSkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAiYWR2aXNvcklkIGFuZCBkYXRlIGFyZSByZXF1aXJlZCIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gIlZBTElEQVRJT05fRVJST1IiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlcXVlc3RlZERhdGUgPSBEYXRlVGltZS5QYXJzZShkYXRlKTsKICAgICAgICBpZiAocmVxdWVzdGVkRGF0ZS5EYXRlIDwgRGF0ZVRpbWUuVXRjTm93LkRhdGUpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiRGF0ZSBjYW5ub3QgYmUgaW4gdGhlIHBhc3QuIiwgImRhdGUiKTsKCiAgICAgICAgdmFyIGZpbHRlckpzb24gPQogICAgICAgICAgICAie1wiYW5kXCI6WyIgKwogICAgICAgICAgICAie1wib3JcIjpbe1wiY3VycmVudFN0YXRlXCI6e1wiZXFcIjpcImNvbXBsZXRlXCJ9fSx7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiY29tcGxldGUtd2l0aC10cmFuc2ZlclwifX1dfSwiICsKICAgICAgICAgICAgIntcIm9yXCI6WyIgKwogICAgICAgICAgICAgICAgIntcImF0dHJpYnV0ZXNcIjp7XCJhZHZpc29yXCI6e1wiZXFcIjpcIiIgKyBhZHZpc29ySWQgKyAiXCJ9fX0sIiArCiAgICAgICAgICAgICAgICAie1wiYXR0cmlidXRlc1wiOntcImFic2VuY2VUeXBlXCI6e1wiZXFcIjpcInB1YmxpYy1ob2xpZGF5XCJ9fX0sIiArCiAgICAgICAgICAgICAgICAie1wiYXR0cmlidXRlc1wiOntcImFic2VuY2VUeXBlXCI6e1wiZXFcIjpcIndvcmtpbmctaG91cnMtY2hhbmdlXCJ9fX0iICsKICAgICAgICAgICAgIl19IiArCiAgICAgICAgICAgICJdfSI7CgogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgICJwYWdlU2l6ZT0xMDAiLAogICAgICAgICAgICAkImZpbHRlcj17ZmlsdGVySnNvbn0iCiAgICAgICAgfTsKCiAgICAgICAgc2VydmljZVRhc2suU2V0UXVlcnlTdHJpbmcoc3RyaW5nLkpvaW4oIiYiLCBxdWVyeVBhcmFtcykpOwoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgYWR2aXNvcklkID0gY29udGV4dC5RdWVyeVBhcmFtZXRlcnM/WyJhZHZpc29ySWQiXT8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgdmFyIGRhdGVTdHIgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bImRhdGUiXT8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gR2V0QXBwb2ludG1lbnREdXJhdGlvbihjb250ZXh0KTsKCiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29ySWQpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGRhdGVTdHIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9ICJ2YWxpZGF0aW9uLWVycm9yIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJhZHZpc29ySWQgYW5kIGRhdGUgYXJlIHJlcXVpcmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gIlZBTElEQVRJT05fRVJST1IiLAogICAgICAgICAgICAgICAgICAgICAgICBhZHZpc29ySWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgPSBkYXRlU3RyCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByZXF1ZXN0ZWREYXRlID0gRGF0ZVRpbWUuUGFyc2UoZGF0ZVN0cik7CiAgICAgICAgICAgIHZhciBkYXlPZldlZWsgPSByZXF1ZXN0ZWREYXRlLkRheU9mV2Vlay5Ub1N0cmluZygpLlRvTG93ZXIoKTsKCiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGNvbnRleHQuQm9keTsKCiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzID09IGZhbHNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgZXJyb3JUeXBlID0gQ2xhc3NpZnlTZXJ2aWNlRXJyb3IocmVzcG9uc2U/LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSA/PyAiIik7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9ICJzZXJ2aWNlLWVycm9yIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJGYWlsZWQgdG8gZmV0Y2ggYWJzZW5jZSBlbnRyaWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gIlNFUlZJQ0VfRVJST1IiLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGUgPSBlcnJvclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvck1lc3NhZ2U/LlRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvID0gbmV3CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcElkID0gcmVzcG9uc2U/Lm1ldGFkYXRhPy5hcHBJZD8uVG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZE5hbWUgPSByZXNwb25zZT8ubWV0YWRhdGE/Lm1ldGhvZE5hbWU/LlRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwVmVyYiA9IHJlc3BvbnNlPy5tZXRhZGF0YT8uaHR0cFZlcmI/LlRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgVGFncyA9IG5ld1tdIHsgImFwcG9pbnRtZW50cyIsICJlcnJvciIgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSByZXNwb25zZT8uZGF0YTsKICAgICAgICAgICAgdmFyIGl0ZW1zID0gcmVzcG9uc2VEYXRhPy5pdGVtczsKCiAgICAgICAgICAgIHZhciBpbnN0YW5jZXMgPSBuZXcgTGlzdDxkeW5hbWljPigpOwogICAgICAgICAgICBpZiAoaXRlbXMgIT0gbnVsbCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGl0ZW0gaW4gaXRlbXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VzLkFkZChpdGVtKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHB1YmxpY0hvbGlkYXlzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKICAgICAgICAgICAgdmFyIGFkdmlzb3JXb3JraW5nSG91cnMgPSBuZXcgTGlzdDxkeW5hbWljPigpOwogICAgICAgICAgICB2YXIgY29tcGFueVdvcmtpbmdIb3VycyA9IG5ldyBMaXN0PGR5bmFtaWM+KCk7CiAgICAgICAgICAgIHZhciBwZXJzb25hbExlYXZlcyA9IG5ldyBMaXN0PGR5bmFtaWM+KCk7CgogICAgICAgICAgICBmb3JlYWNoICh2YXIgaW5zdGFuY2UgaW4gaW5zdGFuY2VzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlcyA9IGluc3RhbmNlPy5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICAgICAgdmFyIGFic2VuY2VUeXBlID0gYXR0cmlidXRlcz8uYWJzZW5jZVR5cGU/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB2YXIgYWR2aXNvciA9IEhhc1Byb3BlcnR5KGF0dHJpYnV0ZXMsICJhZHZpc29yIikgPyBhdHRyaWJ1dGVzPy5hZHZpc29yPy5Ub1N0cmluZygpIDogbnVsbDsKCiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFic2VuY2VUeXBlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNhc2UgInB1YmxpYy1ob2xpZGF5IjoKICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljSG9saWRheXMuQWRkKGluc3RhbmNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAid29ya2luZy1ob3Vycy1jaGFuZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3IpICYmIGFkdmlzb3IgPT0gYWR2aXNvcklkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2aXNvcldvcmtpbmdIb3Vycy5BZGQoaW5zdGFuY2UpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnlXb3JraW5nSG91cnMuQWRkKGluc3RhbmNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicGVyc29uYWwtbGVhdmUiIHdoZW4gYWR2aXNvciA9PSBhZHZpc29ySWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsTGVhdmVzLkFkZChpbnN0YW5jZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInJlemVydmF0aW9uIiB3aGVuIGFkdmlzb3IgPT0gYWR2aXNvcklkOgogICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbExlYXZlcy5BZGQoaW5zdGFuY2UpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHVuYXZhaWxhYmxlUmFuZ2VzID0gR2V0VW5hdmFpbGFibGVSYW5nZXMocGVyc29uYWxMZWF2ZXMsIHJlcXVlc3RlZERhdGUpOwoKICAgICAgICAgICAgLy8gSGFsZi1kYXkgLyBmdWxsLWRheSBwdWJsaWMgaG9saWRheSBoYW5kbGluZwogICAgICAgICAgICB2YXIgaG9saWRheVJhbmdlcyA9IEdldEhvbGlkYXlSYW5nZXMocHVibGljSG9saWRheXMsIHJlcXVlc3RlZERhdGUpOwogICAgICAgICAgICBpZiAoaG9saWRheVJhbmdlcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoaG9saWRheVJhbmdlcy5Db3VudCA9PSAxCiAgICAgICAgICAgICAgICAgICAgJiYgaG9saWRheVJhbmdlc1swXS5JdGVtMSA9PSBUaW1lU3Bhbi5aZXJvCiAgICAgICAgICAgICAgICAgICAgJiYgaG9saWRheVJhbmdlc1swXS5JdGVtMiA+PSBuZXcgVGltZVNwYW4oMjMsIDU5LCAwKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ID0gInB1YmxpYy1ob2xpZGF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IGF2YWlsYWJsZVNsb3RzID0gbmV3IExpc3Q8c3RyaW5nPigpIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJhcHBvaW50bWVudHMiLCAiaG9saWRheSIgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUmFuZ2VzLkFkZFJhbmdlKGhvbGlkYXlSYW5nZXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBXb3JraW5nIGhvdXJzIHByaW9yaXR5OiBhZHZpc29yLXNwZWNpZmljID4gY29tcGFueS13aWRlCiAgICAgICAgICAgIHZhciB3b3JraW5nSG91cnMgPSBHZXRXb3JraW5nSG91cnNGb3JEYXkoYWR2aXNvcldvcmtpbmdIb3VycywgZGF5T2ZXZWVrKTsKICAgICAgICAgICAgaWYgKHdvcmtpbmdIb3VycyA9PSBudWxsIHx8IHdvcmtpbmdIb3Vycy5Db3VudCA9PSAwKQogICAgICAgICAgICAgICAgd29ya2luZ0hvdXJzID0gR2V0V29ya2luZ0hvdXJzRm9yRGF5KGNvbXBhbnlXb3JraW5nSG91cnMsIGRheU9mV2Vlayk7CgogICAgICAgICAgICBpZiAod29ya2luZ0hvdXJzID09IG51bGwgfHwgd29ya2luZ0hvdXJzLkNvdW50ID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0gIm5vLXdvcmtpbmctaG91cnMiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBhdmFpbGFibGVTbG90cyA9IG5ldyBMaXN0PHN0cmluZz4oKSB9LAogICAgICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJhcHBvaW50bWVudHMiLCAiY2xvc2VkIiB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVNsb3RzID0gQ2FsY3VsYXRlQXZhaWxhYmxlU2xvdHMod29ya2luZ0hvdXJzLCB1bmF2YWlsYWJsZVJhbmdlcywgZHVyYXRpb24pOwoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImF2YWlsYWJsZS1zbG90cy1zdWNjZXNzIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBhdmFpbGFibGVTbG90cyB9LAogICAgICAgICAgICAgICAgVGFncyA9IG5ld1tdIHsgImFwcG9pbnRtZW50cyIsICJhdmFpbGFiaWxpdHkiLCAic3VjY2VzcyIgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJvdXRwdXQtZXJyb3IiLAogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVycm9yID0gIkludGVybmFsIHByb2Nlc3NpbmcgZXJyb3IiLAogICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSA9ICJQUk9DRVNTSU5HX0VSUk9SIiwKICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gZXguTWVzc2FnZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJhcHBvaW50bWVudHMiLCAiZXJyb3IiIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgICNyZWdpb24gSGVscGVyIE1ldGhvZHMKCiAgICBwcml2YXRlIHN0cmluZyBDbGFzc2lmeVNlcnZpY2VFcnJvcihzdHJpbmcgZXJyb3JNZXNzYWdlKQogICAgewogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoInRpbWVvdXQiLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgcmV0dXJuICJ0aW1lb3V0IjsKICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLkNvbnRhaW5zKCJ1bmF1dGhvcml6ZWQiLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgcmV0dXJuICJhdXRoZW50aWNhdGlvbiI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygiZm9yYmlkZGVuIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAiYXV0aG9yaXphdGlvbiI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygibm90IGZvdW5kIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAibm90LWZvdW5kIjsKICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLkNvbnRhaW5zKCJzZXJ2aWNlIHVuYXZhaWxhYmxlIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAic2VydmljZS11bmF2YWlsYWJsZSI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygiY29ubmVjdGlvbiIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gImNvbm5lY3Rpb24tZXJyb3IiOwoKICAgICAgICByZXR1cm4gImdlbmVyYWwtZXJyb3IiOwogICAgfQoKICAgIHByaXZhdGUgaW50IEdldEFwcG9pbnRtZW50RHVyYXRpb24oU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIGNvbnN0IGludCBkZWZhdWx0RHVyYXRpb24gPSAzMDsKCiAgICAgICAgaWYgKGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzICE9IG51bGwgJiYgSGFzUHJvcGVydHkoY29udGV4dC5RdWVyeVBhcmFtZXRlcnMsICJkdXJhdGlvbiIpKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGR1cmF0aW9uUGFyYW0gPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVyc1siZHVyYXRpb24iXTsKICAgICAgICAgICAgaW50IHF1ZXJ5RHVyYXRpb24gPSAwOwogICAgICAgICAgICBpZiAoZHVyYXRpb25QYXJhbSAhPSBudWxsICYmIGludC5UcnlQYXJzZShkdXJhdGlvblBhcmFtLlRvU3RyaW5nKCksIG91dCBxdWVyeUR1cmF0aW9uKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5RHVyYXRpb247CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBjb25maWdEdXJhdGlvbiA9IEdldENvbmZpZ1ZhbHVlKCJBcHBvaW50bWVudHM6RGVmYXVsdER1cmF0aW9uIik7CiAgICAgICAgaW50IGNvbmZpZ0R1cmF0aW9uVmFsdWUgPSAwOwogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoY29uZmlnRHVyYXRpb24pICYmIGludC5UcnlQYXJzZShjb25maWdEdXJhdGlvbiwgb3V0IGNvbmZpZ0R1cmF0aW9uVmFsdWUpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ0R1cmF0aW9uVmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZGVmYXVsdER1cmF0aW9uOwogICAgfQoKICAgICNlbmRyZWdpb24KCiAgICAjcmVnaW9uIEJ1c2luZXNzIExvZ2ljIE1ldGhvZHMKCiAgICAvLy8gPHN1bW1hcnk+CiAgICAvLy8gUmV0dXJucyB1bmF2YWlsYWJsZSB0aW1lIHJhbmdlcyBmb3IgcHVibGljIGhvbGlkYXlzIG9uIHRoZSByZXF1ZXN0ZWQgZGF0ZS4KICAgIC8vLyBudWxsID0gbm8gaG9saWRheSBvbiB0aGlzIGRhdGUuCiAgICAvLy8gRnVsbC1kYXkgaG9saWRheTogc2luZ2xlIHJhbmdlIDAwOjAwLTIzOjU5LgogICAgLy8vIEhhbGYtZGF5IGhvbGlkYXk6IHBhcnRpYWwgcmFuZ2UgKGUuZy4sIDAwOjAwLTEzOjAwKS4KICAgIC8vLyA8L3N1bW1hcnk+CiAgICBwcml2YXRlIExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4gR2V0SG9saWRheVJhbmdlcyhMaXN0PGR5bmFtaWM+IGhvbGlkYXlzLCBEYXRlVGltZSBkYXRlKQogICAgewogICAgICAgIHZhciByYW5nZXMgPSBuZXcgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PigpOwogICAgICAgIGJvb2wgaGFzSG9saWRheSA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICh2YXIgaG9saWRheSBpbiBob2xpZGF5cykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBob2xpZGF5RGF0YSA9IGhvbGlkYXk/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGlmIChob2xpZGF5RGF0YSA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgIHN0cmluZyBzdGFydERhdGVUaW1lU3RyID0gbnVsbDsKICAgICAgICAgICAgc3RyaW5nIGVuZERhdGVUaW1lU3RyID0gbnVsbDsKCiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShob2xpZGF5RGF0YSwgInN0YXJ0RGF0ZVRpbWUiKSAmJiBob2xpZGF5RGF0YS5zdGFydERhdGVUaW1lICE9IG51bGwpCiAgICAgICAgICAgICAgICBzdGFydERhdGVUaW1lU3RyID0gaG9saWRheURhdGEuc3RhcnREYXRlVGltZS5Ub1N0cmluZygpOwoKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGhvbGlkYXlEYXRhLCAiZW5kRGF0ZVRpbWUiKSAmJiBob2xpZGF5RGF0YS5lbmREYXRlVGltZSAhPSBudWxsKQogICAgICAgICAgICAgICAgZW5kRGF0ZVRpbWVTdHIgPSBob2xpZGF5RGF0YS5lbmREYXRlVGltZS5Ub1N0cmluZygpOwoKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZVRpbWUgPSBEYXRlVGltZS5QYXJzZShzdGFydERhdGVUaW1lU3RyKTsKICAgICAgICAgICAgdmFyIGVuZERhdGVUaW1lID0gRGF0ZVRpbWUuUGFyc2UoZW5kRGF0ZVRpbWVTdHIpOwoKICAgICAgICAgICAgaWYgKGRhdGUuRGF0ZSA8IHN0YXJ0RGF0ZVRpbWUuRGF0ZSB8fCBkYXRlLkRhdGUgPiBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBoYXNIb2xpZGF5ID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChzdGFydERhdGVUaW1lLkRhdGUgIT0gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGRhdGUuRGF0ZSA9PSBzdGFydERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0ZS5EYXRlID09IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoVGltZVNwYW4uWmVybywgZW5kRGF0ZVRpbWUuVGltZU9mRGF5KSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoVGltZVNwYW4uWmVybywgbmV3IFRpbWVTcGFuKDIzLCA1OSwgNTkpKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByYW5nZXMuQWRkKFR1cGxlLkNyZWF0ZShzdGFydERhdGVUaW1lLlRpbWVPZkRheSwgZW5kRGF0ZVRpbWUuVGltZU9mRGF5KSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBoYXNIb2xpZGF5ID8gcmFuZ2VzIDogbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIExpc3Q8b2JqZWN0PiBHZXRXb3JraW5nSG91cnNGb3JEYXkoTGlzdDxkeW5hbWljPiB3b3JraW5nSG91cnNDaGFuZ2VzLCBzdHJpbmcgZGF5T2ZXZWVrKQogICAgewogICAgICAgIGZvcmVhY2ggKHZhciBjaGFuZ2UgaW4gd29ya2luZ0hvdXJzQ2hhbmdlcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBjaGFuZ2VEYXRhID0gY2hhbmdlPy5hdHRyaWJ1dGVzOwogICAgICAgICAgICBpZiAoY2hhbmdlRGF0YSA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciBjdXN0b21XSCA9IGNoYW5nZURhdGE/LmN1c3RvbVdvcmtpbmdIb3VyczsKICAgICAgICAgICAgaWYgKGN1c3RvbVdIID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIGRheUhvdXJzID0gR2V0RGF5SG91cnNGcm9tQ3VzdG9tKGN1c3RvbVdILCBkYXlPZldlZWspOwogICAgICAgICAgICBpZiAoZGF5SG91cnMgIT0gbnVsbCkgcmV0dXJuIGRheUhvdXJzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBMaXN0PG9iamVjdD4gR2V0RGF5SG91cnNGcm9tQ3VzdG9tKGR5bmFtaWMgY3VzdG9tV0gsIHN0cmluZyBkYXlPZldlZWspCiAgICB7CiAgICAgICAgZHluYW1pYyBkYXlIb3VycyA9IG51bGw7CiAgICAgICAgc3dpdGNoIChkYXlPZldlZWspCiAgICAgICAgewogICAgICAgICAgICBjYXNlICJtb25kYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy5tb25kYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJ0dWVzZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8udHVlc2RheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIndlZG5lc2RheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LndlZG5lc2RheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRodXJzZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8udGh1cnNkYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJmcmlkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy5mcmlkYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJzYXR1cmRheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LnNhdHVyZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAic3VuZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8uc3VuZGF5OyBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmIChkYXlIb3VycyA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMaXN0PG9iamVjdD4oKTsKICAgICAgICBmb3JlYWNoICh2YXIgcmFuZ2UgaW4gZGF5SG91cnMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgc3RhcnQgPSByYW5nZT8uc3RhcnQ/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIHZhciBlbmQgPSByYW5nZT8uZW5kPy5Ub1N0cmluZygpOwogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0KSAmJiAhc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmVzdWx0LkFkZChuZXcgeyBzdGFydCwgZW5kIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQuQ291bnQgPiAwID8gcmVzdWx0IDogbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4gR2V0VW5hdmFpbGFibGVSYW5nZXMoTGlzdDxkeW5hbWljPiBwZXJzb25hbExlYXZlcywgRGF0ZVRpbWUgZGF0ZSkKICAgIHsKICAgICAgICB2YXIgcmFuZ2VzID0gbmV3IExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4oKTsKCiAgICAgICAgZm9yZWFjaCAodmFyIGxlYXZlIGluIHBlcnNvbmFsTGVhdmVzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGxlYXZlRGF0YSA9IGxlYXZlPy5hdHRyaWJ1dGVzOwogICAgICAgICAgICBpZiAobGVhdmVEYXRhID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgc3RyaW5nIHN0YXJ0RGF0ZVRpbWVTdHIgPSBudWxsOwogICAgICAgICAgICBzdHJpbmcgZW5kRGF0ZVRpbWVTdHIgPSBudWxsOwoKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGxlYXZlRGF0YSwgInN0YXJ0RGF0ZVRpbWUiKSAmJiBsZWF2ZURhdGEuc3RhcnREYXRlVGltZSAhPSBudWxsKQogICAgICAgICAgICAgICAgc3RhcnREYXRlVGltZVN0ciA9IGxlYXZlRGF0YS5zdGFydERhdGVUaW1lLlRvU3RyaW5nKCk7CgogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkobGVhdmVEYXRhLCAiZW5kRGF0ZVRpbWUiKSAmJiBsZWF2ZURhdGEuZW5kRGF0ZVRpbWUgIT0gbnVsbCkKICAgICAgICAgICAgICAgIGVuZERhdGVUaW1lU3RyID0gbGVhdmVEYXRhLmVuZERhdGVUaW1lLlRvU3RyaW5nKCk7CgogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnREYXRlVGltZVN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZVRpbWVTdHIpKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICB2YXIgc3RhcnREYXRlVGltZSA9IERhdGVUaW1lLlBhcnNlKHN0YXJ0RGF0ZVRpbWVTdHIpOwogICAgICAgICAgICB2YXIgZW5kRGF0ZVRpbWUgPSBEYXRlVGltZS5QYXJzZShlbmREYXRlVGltZVN0cik7CgogICAgICAgICAgICBpZiAoZGF0ZS5EYXRlIDwgc3RhcnREYXRlVGltZS5EYXRlIHx8IGRhdGUuRGF0ZSA+IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGlmIChzdGFydERhdGVUaW1lLkRhdGUgIT0gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGRhdGUuRGF0ZSA9PSBzdGFydERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0ZS5EYXRlID09IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoVGltZVNwYW4uWmVybywgZW5kRGF0ZVRpbWUuVGltZU9mRGF5KSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoVGltZVNwYW4uWmVybywgbmV3IFRpbWVTcGFuKDIzLCA1OSwgNTkpKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByYW5nZXMuQWRkKFR1cGxlLkNyZWF0ZShzdGFydERhdGVUaW1lLlRpbWVPZkRheSwgZW5kRGF0ZVRpbWUuVGltZU9mRGF5KSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiByYW5nZXM7CiAgICB9CgogICAgcHJpdmF0ZSBMaXN0PHN0cmluZz4gQ2FsY3VsYXRlQXZhaWxhYmxlU2xvdHMoTGlzdDxvYmplY3Q+IHdvcmtpbmdIb3VycywgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PiB1bmF2YWlsYWJsZVJhbmdlcywgaW50IGR1cmF0aW9uTWludXRlcykKICAgIHsKICAgICAgICB2YXIgc2xvdHMgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CiAgICAgICAgdmFyIGR1cmF0aW9uID0gVGltZVNwYW4uRnJvbU1pbnV0ZXMoZHVyYXRpb25NaW51dGVzKTsKCiAgICAgICAgZm9yZWFjaCAodmFyIHdoIGluIHdvcmtpbmdIb3VycykKICAgICAgICB7CiAgICAgICAgICAgIGR5bmFtaWMgd2hEeW4gPSB3aDsKICAgICAgICAgICAgdmFyIHN0YXJ0U3RyID0gd2hEeW4/LnN0YXJ0Py5Ub1N0cmluZygpOwogICAgICAgICAgICB2YXIgZW5kU3RyID0gd2hEeW4/LmVuZD8uVG9TdHJpbmcoKTsKCiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydFN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIHdoU3RhcnQgPSBUaW1lU3Bhbi5QYXJzZShzdGFydFN0cik7CiAgICAgICAgICAgIHZhciB3aEVuZCA9IFRpbWVTcGFuLlBhcnNlKGVuZFN0cik7CgogICAgICAgICAgICBpZiAod2hTdGFydCA9PSB3aEVuZCkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSB3aFN0YXJ0OwogICAgICAgICAgICB3aGlsZSAoY3VycmVudCArIGR1cmF0aW9uIDw9IHdoRW5kKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgc2xvdFN0YXJ0ID0gY3VycmVudDsKICAgICAgICAgICAgICAgIHZhciBzbG90RW5kID0gY3VycmVudCArIGR1cmF0aW9uOwoKICAgICAgICAgICAgICAgIGJvb2wgaXNBdmFpbGFibGUgPSB0cnVlOwogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHVyIGluIHVuYXZhaWxhYmxlUmFuZ2VzKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChzbG90U3RhcnQgPCB1ci5JdGVtMiAmJiBzbG90RW5kID4gdXIuSXRlbTEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpc0F2YWlsYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzQXZhaWxhYmxlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNsb3RzLkFkZCgkIntzbG90U3RhcnQ6aGhcXDptbX0te3Nsb3RFbmQ6aGhcXDptbX0iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudCArIGR1cmF0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2xvdHM7CiAgICB9CgogICAgI2VuZHJlZ2lvbgp9Cg=="
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|