@projectcor/maia-components 2.11.10 → 2.11.11-1

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.
Files changed (70) hide show
  1. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +69 -0
  2. package/lib/components/atoms/ChatClientSelector/index.js +2 -0
  3. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +9 -0
  4. package/lib/components/atoms/ChatDisclaimerMessage/index.js +2 -0
  5. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +6 -0
  6. package/lib/components/atoms/Chip/Chip.js +4 -3
  7. package/lib/components/atoms/Chip/styles.js +3 -3
  8. package/lib/components/atoms/EntitySelector/EntitySelector.js +181 -0
  9. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +57 -0
  10. package/lib/components/atoms/EntitySelector/index.js +2 -0
  11. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +5 -3
  12. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +81 -58
  13. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +67 -7
  14. package/lib/components/atoms/MAIAInput/MAIAInput.js +363 -18
  15. package/lib/components/atoms/MAIAInput/styles.js +99 -33
  16. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +56 -193
  17. package/lib/components/atoms/index.js +2 -1
  18. package/lib/components/index.js +2 -1
  19. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +56 -0
  20. package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
  21. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +9 -1
  22. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +2 -3
  23. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
  24. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +29 -11
  25. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +6 -3
  26. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -3
  27. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  28. package/lib/components/molecules/ChatFooter/ChatFooter.js +30 -10
  29. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +156 -0
  30. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +51 -0
  31. package/lib/components/molecules/ChatFooter/styles.js +5 -1
  32. package/lib/components/organisms/ChatAI/ChatAI.js +11 -3
  33. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +26 -0
  34. package/lib/components/organisms/ClientAIButton/index.js +2 -0
  35. package/lib/constants/config.js +3 -2
  36. package/lib/context/global-context.js +1 -1
  37. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  38. package/lib/hooks/useChatManager/useChatManager.js +62 -40
  39. package/lib/hooks/useChatMessages/useChatMessages.js +72 -38
  40. package/lib/hooks/useFrequentlyAskedQuestions.js +68 -53
  41. package/lib/hooks/useFrequentlyUsedActions.js +73 -0
  42. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
  43. package/lib/hooks/useProjectSummaryConfig.js +35 -7
  44. package/lib/hooks/useRecentClientsSearch.js +176 -0
  45. package/lib/lang/br/index.js +36 -3
  46. package/lib/lang/en/index.js +36 -3
  47. package/lib/lang/es/index.js +36 -3
  48. package/lib/lang/fr/index.js +21 -2
  49. package/lib/services/cor/getProjectTasks.js +71 -0
  50. package/lib/services/maia/Agents/getAgents.js +6 -4
  51. package/lib/services/maia/Chats/getChatMessages.js +27 -14
  52. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  53. package/lib/services/maia/FrequentlyUsedActions/getFrequentlyUsedActions.js +48 -0
  54. package/lib/services/maia/FrequentlyUsedActions/index.js +5 -0
  55. package/lib/services/maia/Orchestrator/orchestrator.js +6 -4
  56. package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
  57. package/lib/services/maia/RecentClients/index.js +6 -0
  58. package/lib/services/maia/index.js +4 -2
  59. package/lib/services/query/getTaskFamilyProjectsQuery.js +5 -0
  60. package/lib/services/utils/mapChatMessages.js +12 -4
  61. package/lib/store/chatsStore.types.js +1 -1
  62. package/lib/store/faqsStore.types.js +2 -0
  63. package/lib/store/index.js +2 -1
  64. package/lib/store/useFaqsStore.js +27 -0
  65. package/lib/types/Chat.js +1 -1
  66. package/lib/types/Client.js +2 -0
  67. package/lib/types/FrequentlyAskedQuestion.js +1 -1
  68. package/lib/types/FrequentlyUsedAction.js +2 -0
  69. package/lib/types/agent.js +1 -1
  70. package/package.json +1 -1
@@ -22,4 +22,4 @@ export var useGlobalContext = function useGlobalContext() {
22
22
  }
23
23
  return context;
24
24
  };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIkRFRkFVTFRfQUdFTlQiLCJpZCIsIm5hbWUiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbXBhbnlfaWQiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsInR5cGUiLCJrbm93bGVkZ2UiLCJpc19pbnRlcm5hbCIsIkdsb2JhbENvbnRleHQiLCJ1c2VHbG9iYWxDb250ZXh0IiwiY29udGV4dCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDb25maWdTZXR0aW5nSXRlbSB9IGZyb20gJy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucy90eXBlcydcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vdHlwZXMvYWdlbnQnXG5cbmNvbnN0IERFRkFVTFRfQUdFTlQ6IEFnZW50ID0ge1xuICBpZDogJzEnLFxuICBuYW1lOiAnQWdlbnRlIFBNJyxcbiAgY3JlYXRlZF9ieTogeyBuYW1lOiAnMTc0NTQnLCBpc19kZWxldGVkOiBmYWxzZSB9LFxuICBjb21wYW55X2lkOiAnMjMzNicsXG4gIGVtb2ppOiAn8J+TiicsXG4gIGludHJvZHVjdGlvbjogbnVsbCxcbiAgdHlwZTogJ3BtJyxcbiAga25vd2xlZGdlOiBbXSxcbiAgaXNfaW50ZXJuYWw6IGZhbHNlLFxufVxuXG5leHBvcnQgeyBERUZBVUxUX0FHRU5UIH1cblxuZXhwb3J0IHR5cGUgQ2hpcHNQcm9qZWN0ID0ge1xuICBwcm9qZWN0TmFtZTogc3RyaW5nXG4gIGNsaWVudE5hbWU6IHN0cmluZ1xuICBwcm9qZWN0SWQ6IHN0cmluZ1xufVxuXG50eXBlIEJhc2VHbG9iYWxDb250ZXh0VHlwZSA9IHtcbiAgc2VjdGlvbjogJ3Byb2plY3QnIHwgJ2hlYWRlcidcbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBjbGVhckFnZW50OiAoKSA9PiB2b2lkXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIHNldFByb2plY3Q6IChwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB0b2dnbGVXZWJTZWFyY2g6ICgpID0+IHZvaWRcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIHRvZ2dsZURlZXBTZWFyY2g6ICgpID0+IHZvaWRcbiAgaGFzTXVsdGlBZ2VudHM/OiBib29sZWFuXG4gIGNoaXBzUHJvamVjdD86IENoaXBzUHJvamVjdCB8IG51bGxcbiAgc2V0Q2hpcHNQcm9qZWN0OiAoY2hpcHNQcm9qZWN0OiBDaGlwc1Byb2plY3QgfCBudWxsKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFByb2plY3RTdW1tYXJ5Q29udGV4dFR5cGUgPSBCYXNlR2xvYmFsQ29udGV4dFR5cGUgJiB7XG4gIGNvbmZpZ3VyZVNldHRpbmdzSXRlbXM6IE11dGFibGVSZWZPYmplY3Q8Q29uZmlnU2V0dGluZ0l0ZW1bXT5cbiAgcmVzdG9yZUNvbmZpZ3VyZVNldHRpbmdzOiAoKSA9PiB2b2lkXG4gIGVudGl0eVZhbHVlczoge1xuICAgIHByb2plY3RJZDogc3RyaW5nIHwgbnVsbFxuICAgIGNsaWVudElkOiBzdHJpbmcgfCBudWxsXG4gIH1cbiAgc2V0RW50aXR5VmFsdWVzOiAoZW50aXR5OiB7IHByb2plY3RJZDogc3RyaW5nIHwgbnVsbDsgY2xpZW50SWQ6IHN0cmluZyB8IG51bGwgfSkgPT4gdm9pZFxufVxuXG50eXBlIEFsbG93ZWRHbG9iYWxDb250ZXh0VHlwZSA9IFByb2plY3RTdW1tYXJ5Q29udGV4dFR5cGVcblxuZXhwb3J0IHR5cGUgR2xvYmFsQ29udGV4dFR5cGU8VCBleHRlbmRzIEFsbG93ZWRHbG9iYWxDb250ZXh0VHlwZSA9IEFsbG93ZWRHbG9iYWxDb250ZXh0VHlwZT4gPSBUIHwgbnVsbFxuXG5leHBvcnQgY29uc3QgR2xvYmFsQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8R2xvYmFsQ29udGV4dFR5cGU+KG51bGwpXG5cbmV4cG9ydCBjb25zdCB1c2VHbG9iYWxDb250ZXh0ID0gPFQgZXh0ZW5kcyBCYXNlR2xvYmFsQ29udGV4dFR5cGUgPSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGU+KCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChHbG9iYWxDb250ZXh0KVxuXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlR2xvYmFsQ29udGV4dCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgR2xvYmFsQ29udGV4dFByb3ZpZGVyJylcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0IGFzIHVua25vd24gYXMgVFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLEVBQW9CQyxVQUFVLFFBQVEsT0FBTztBQUtuRSxJQUFNQyxhQUFvQixHQUFHO0VBQzNCQyxFQUFFLEVBQUUsR0FBRztFQUNQQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsVUFBVSxFQUFFO0lBQUVELElBQUksRUFBRSxPQUFPO0lBQUVFLFVBQVUsRUFBRTtFQUFNLENBQUM7RUFDaERDLFVBQVUsRUFBRSxNQUFNO0VBQ2xCQyxLQUFLLEVBQUUsSUFBSTtFQUNYQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsU0FBUyxFQUFFLEVBQUU7RUFDYkMsV0FBVyxFQUFFO0FBQ2YsQ0FBQztBQUVELFNBQVNWLGFBQWE7QUFzQ3RCLE9BQU8sSUFBTVcsYUFBYSxnQkFBR2IsYUFBYSxDQUFvQixJQUFJLENBQUM7QUFFbkUsT0FBTyxJQUFNYyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQXFFO0VBQ2hHLElBQU1DLE9BQU8sR0FBR2QsVUFBVSxDQUFDWSxhQUFhLENBQUM7RUFFekMsSUFBSSxDQUFDRSxPQUFPLEVBQUU7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQztFQUNqRjtFQUVBLE9BQU9ELE9BQU87QUFDaEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIkRFRkFVTFRfQUdFTlQiLCJpZCIsIm5hbWUiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbXBhbnlfaWQiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsInR5cGUiLCJrbm93bGVkZ2UiLCJpc19pbnRlcm5hbCIsIkdsb2JhbENvbnRleHQiLCJ1c2VHbG9iYWxDb250ZXh0IiwiY29udGV4dCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBDb25maWdTZXR0aW5nSXRlbSB9IGZyb20gJy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucy90eXBlcydcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vdHlwZXMvYWdlbnQnXG5cbmNvbnN0IERFRkFVTFRfQUdFTlQ6IEFnZW50ID0ge1xuICBpZDogJzEnLFxuICBuYW1lOiAnQWdlbnRlIFBNJyxcbiAgY3JlYXRlZF9ieTogeyBuYW1lOiAnMTc0NTQnLCBpc19kZWxldGVkOiBmYWxzZSB9LFxuICBjb21wYW55X2lkOiAnMjMzNicsXG4gIGVtb2ppOiAn8J+TiicsXG4gIGludHJvZHVjdGlvbjogbnVsbCxcbiAgdHlwZTogJ3BtJyxcbiAga25vd2xlZGdlOiBbXSxcbiAgaXNfaW50ZXJuYWw6IGZhbHNlLFxufVxuXG5leHBvcnQgeyBERUZBVUxUX0FHRU5UIH1cblxuZXhwb3J0IHR5cGUgQ2hpcHNQcm9qZWN0ID0ge1xuICBwcm9qZWN0TmFtZTogc3RyaW5nXG4gIGNsaWVudE5hbWU6IHN0cmluZ1xuICBwcm9qZWN0SWQ6IHN0cmluZ1xufVxuXG50eXBlIEJhc2VHbG9iYWxDb250ZXh0VHlwZSA9IHtcbiAgc2VjdGlvbjogJ3Byb2plY3QnIHwgJ2hlYWRlcicgfCAnY2xpZW50J1xuICBhZ2VudDogQWdlbnQgfCBudWxsXG4gIHNlbGVjdEFnZW50OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIGNsZWFyQWdlbnQ6ICgpID0+IHZvaWRcbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgc2V0UHJvamVjdDogKHByb2plY3Q6IFByb2plY3QgfCBudWxsKSA9PiB2b2lkXG4gIGNsaWVudDogQ2xpZW50IHwgbnVsbFxuICBzZXRDbGllbnQ6IChjbGllbnQ6IENsaWVudCB8IG51bGwpID0+IHZvaWRcbiAgaXNXZWJTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbiAgdG9nZ2xlV2ViU2VhcmNoOiAoKSA9PiB2b2lkXG4gIGlzRGVlcFNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB0b2dnbGVEZWVwU2VhcmNoOiAoKSA9PiB2b2lkXG4gIGhhc011bHRpQWdlbnRzPzogYm9vbGVhblxuICBjaGlwc1Byb2plY3Q/OiBDaGlwc1Byb2plY3QgfCBudWxsXG4gIHNldENoaXBzUHJvamVjdDogKGNoaXBzUHJvamVjdDogQ2hpcHNQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBQcm9qZWN0U3VtbWFyeUNvbnRleHRUeXBlID0gQmFzZUdsb2JhbENvbnRleHRUeXBlICYge1xuICBjb25maWd1cmVTZXR0aW5nc0l0ZW1zOiBNdXRhYmxlUmVmT2JqZWN0PENvbmZpZ1NldHRpbmdJdGVtW10+XG4gIHJlc3RvcmVDb25maWd1cmVTZXR0aW5nczogKCkgPT4gdm9pZFxuICBlbnRpdHlWYWx1ZXM6IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9XG4gIHNldEVudGl0eVZhbHVlczogKGVudGl0eTogeyBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGw7IGNsaWVudElkOiBzdHJpbmcgfCBudWxsIH0pID0+IHZvaWRcbn1cblxudHlwZSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGUgPSBQcm9qZWN0U3VtbWFyeUNvbnRleHRUeXBlXG5cbmV4cG9ydCB0eXBlIEdsb2JhbENvbnRleHRUeXBlPFQgZXh0ZW5kcyBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGUgPSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGU+ID0gVCB8IG51bGxcblxuZXhwb3J0IGNvbnN0IEdsb2JhbENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEdsb2JhbENvbnRleHRUeXBlPihudWxsKVxuXG5leHBvcnQgY29uc3QgdXNlR2xvYmFsQ29udGV4dCA9IDxUIGV4dGVuZHMgQmFzZUdsb2JhbENvbnRleHRUeXBlID0gQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlPigpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoR2xvYmFsQ29udGV4dClcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUdsb2JhbENvbnRleHQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEdsb2JhbENvbnRleHRQcm92aWRlcicpXG4gIH1cblxuICByZXR1cm4gY29udGV4dCBhcyB1bmtub3duIGFzIFRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxFQUFvQkMsVUFBVSxRQUFRLE9BQU87QUFNbkUsSUFBTUMsYUFBb0IsR0FBRztFQUMzQkMsRUFBRSxFQUFFLEdBQUc7RUFDUEMsSUFBSSxFQUFFLFdBQVc7RUFDakJDLFVBQVUsRUFBRTtJQUFFRCxJQUFJLEVBQUUsT0FBTztJQUFFRSxVQUFVLEVBQUU7RUFBTSxDQUFDO0VBQ2hEQyxVQUFVLEVBQUUsTUFBTTtFQUNsQkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsWUFBWSxFQUFFLElBQUk7RUFDbEJDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLFNBQVMsRUFBRSxFQUFFO0VBQ2JDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFFRCxTQUFTVixhQUFhO0FBd0N0QixPQUFPLElBQU1XLGFBQWEsZ0JBQUdiLGFBQWEsQ0FBb0IsSUFBSSxDQUFDO0FBRW5FLE9BQU8sSUFBTWMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBQSxFQUFxRTtFQUNoRyxJQUFNQyxPQUFPLEdBQUdkLFVBQVUsQ0FBQ1ksYUFBYSxDQUFDO0VBRXpDLElBQUksQ0FBQ0UsT0FBTyxFQUFFO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsOERBQThELENBQUM7RUFDakY7RUFFQSxPQUFPRCxPQUFPO0FBQ2hCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcblxuZXhwb3J0IHR5cGUgVXNlQ2hhdE1hbmFnZXJQcm9wcyA9IHtcbiAgY2hhdElkPzogc3RyaW5nXG4gIHVzZXJJbml0aWFsTWVzc2FnZT86IHsgbWVzc2FnZTogc3RyaW5nOyBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXTsgZmFxSWQ/OiBzdHJpbmcgfVxuICBvbkVycm9yPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxufVxuXG5leHBvcnQgdHlwZSBTZW5kTWVzc2FnZU9wdGlvbnMgPSB7XG4gIHByb2plY3RDaGFuZ2VkPzogUHJvamVjdFxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcblxuZXhwb3J0IHR5cGUgVXNlQ2hhdE1hbmFnZXJQcm9wcyA9IHtcbiAgY2hhdElkPzogc3RyaW5nXG4gIHVzZXJJbml0aWFsTWVzc2FnZT86IHsgbWVzc2FnZTogc3RyaW5nOyBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXTsgZmFxSWQ/OiBzdHJpbmcgfVxuICBvbkVycm9yPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxufVxuXG5leHBvcnQgdHlwZSBTZW5kTWVzc2FnZU9wdGlvbnMgPSB7XG4gIHByb2plY3RDaGFuZ2VkPzogUHJvamVjdFxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBmYXFJZD86IHN0cmluZ1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -151,6 +151,8 @@ export var useChatManager = function useChatManager(_ref2) {
151
151
  var _useGlobalContext = useGlobalContext(),
152
152
  project = _useGlobalContext.project,
153
153
  setProject = _useGlobalContext.setProject,
154
+ client = _useGlobalContext.client,
155
+ setClient = _useGlobalContext.setClient,
154
156
  agent = _useGlobalContext.agent,
155
157
  isWebSearchActive = _useGlobalContext.isWebSearchActive,
156
158
  isDeepSearchActive = _useGlobalContext.isDeepSearchActive,
@@ -207,6 +209,7 @@ export var useChatManager = function useChatManager(_ref2) {
207
209
  if (initialChatId && initialChatId !== currentChatId.current) {
208
210
  // Limpiar contexto global al cambiar de conversación
209
211
  setProject(null);
212
+ setClient === null || setClient === void 0 || setClient(null);
210
213
  setChipsProject(null);
211
214
  currentChatId.current = initialChatId;
212
215
  currentMessageId.current = uuidv4();
@@ -215,7 +218,7 @@ export var useChatManager = function useChatManager(_ref2) {
215
218
  isProcessingRef.current = false;
216
219
  loadMessages();
217
220
  }
218
- }, [initialChatId, project, setProject, setChipsProject, loadMessages]);
221
+ }, [initialChatId, project, setProject, setClient, setChipsProject, loadMessages]);
219
222
 
220
223
  // Sincronizar chipsProject cuando hay mensajes con projectId pero chipsProject no se ha seteado
221
224
  useEffect(function () {
@@ -240,7 +243,6 @@ export var useChatManager = function useChatManager(_ref2) {
240
243
  });
241
244
  setProject(found);
242
245
  } else if (projectName) {
243
- // Fallback: usar projectName del mensaje cuando fetchProjects no devuelve el proyecto
244
246
  setChipsProject({
245
247
  projectName: projectName,
246
248
  clientName: '',
@@ -253,6 +255,22 @@ export var useChatManager = function useChatManager(_ref2) {
253
255
  }
254
256
  });
255
257
  }, [messages, chipsProject, loadingMessages, fetchProjects, setChipsProject, setProject]);
258
+
259
+ // Sincronizar client cuando hay mensajes con clientId pero client no se ha seteado
260
+ useEffect(function () {
261
+ if (client || loadingMessages) return;
262
+ var lastMsgWithClient = messages.filter(function (msg) {
263
+ return msg.clientId != null && msg.clientName;
264
+ }).at(-1);
265
+ var _ref4 = lastMsgWithClient || {},
266
+ msgClientId = _ref4.clientId,
267
+ msgClientName = _ref4.clientName;
268
+ if (msgClientId == null || !msgClientName) return;
269
+ setClient === null || setClient === void 0 || setClient({
270
+ id: Number(msgClientId),
271
+ name: msgClientName
272
+ });
273
+ }, [messages, client, loadingMessages, setClient]);
256
274
  var handleStreamError = useCallback(function (errorMessage) {
257
275
  var message = errorMessage === "Access denied: You don't have permission to access this agent" ? t('chat.errorAccessDenied') : t('chat.error');
258
276
  addMessage({
@@ -284,7 +302,7 @@ export var useChatManager = function useChatManager(_ref2) {
284
302
  });
285
303
  }, [addMessage]);
286
304
  var handleStreamFinish = useCallback(/*#__PURE__*/function () {
287
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId) {
305
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId) {
288
306
  var tempMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, _window$newProjectDas, customEvent;
289
307
  return _regeneratorRuntime.wrap(function (_context2) {
290
308
  while (1) switch (_context2.prev = _context2.next) {
@@ -355,7 +373,7 @@ export var useChatManager = function useChatManager(_ref2) {
355
373
  }, _callee2);
356
374
  }));
357
375
  return function (_x4, _x5, _x6) {
358
- return _ref4.apply(this, arguments);
376
+ return _ref5.apply(this, arguments);
359
377
  };
360
378
  }(), [addMessage, removeMessage, project, getTabTaskDefault]);
361
379
  var handleStreamStop = useCallback(function () {
@@ -409,32 +427,21 @@ export var useChatManager = function useChatManager(_ref2) {
409
427
  stopStreaming = _useOrchestratorStrea.stopStreaming;
410
428
  var currentProject = project;
411
429
  var sendMessage = useCallback(/*#__PURE__*/function () {
412
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(message) {
413
- var _messagesRef$current;
414
- var options,
415
- newMessageId,
416
- lastMessageWithProject,
417
- currentAgentFromMessages,
418
- finalMessage,
419
- _options$projectChang,
420
- history,
421
- contextProjectId,
422
- lastMessageProjectId,
423
- projectToRequest,
424
- parsed,
425
- projects,
426
- payloadData,
427
- _args3 = arguments;
430
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(message, attachmentsOrOptions, faqId) {
431
+ var _attachments, _messagesRef$current, _project$client;
432
+ var opts, options, attachments, newMessageId, lastMessageWithProject, currentAgentFromMessages, finalMessage, _options$projectChang, history, contextProjectId, lastMessageProjectId, projectToRequest, parsed, projects, payloadFaqId, payloadData;
428
433
  return _regeneratorRuntime.wrap(function (_context3) {
429
434
  while (1) switch (_context3.prev = _context3.next) {
430
435
  case 0:
431
- options = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
432
436
  if (!(isProcessingRef.current || waitingResponse || loadingMessages)) {
433
437
  _context3.next = 1;
434
438
  break;
435
439
  }
436
440
  return _context3.abrupt("return");
437
441
  case 1:
442
+ opts = attachmentsOrOptions !== null && attachmentsOrOptions !== void 0 ? attachmentsOrOptions : {};
443
+ options = Array.isArray(attachmentsOrOptions) ? {} : opts;
444
+ attachments = Array.isArray(attachmentsOrOptions) ? attachmentsOrOptions : (_attachments = opts === null || opts === void 0 ? void 0 : opts.attachments) !== null && _attachments !== void 0 ? _attachments : [];
438
445
  isProcessingRef.current = true;
439
446
  newMessageId = uuidv4();
440
447
  currentMessageId.current = newMessageId;
@@ -455,7 +462,7 @@ export var useChatManager = function useChatManager(_ref2) {
455
462
  date: new Date(),
456
463
  user: currentUser,
457
464
  role: ChatHistoryRole.USER,
458
- sources: Array.isArray(options) ? options : []
465
+ sources: Array.isArray(attachmentsOrOptions) ? attachmentsOrOptions : attachments
459
466
  });
460
467
  currentMessageId.current = uuidv4();
461
468
  finalMessage = message;
@@ -483,7 +490,8 @@ export var useChatManager = function useChatManager(_ref2) {
483
490
  return fetchProjects([projectToRequest]);
484
491
  case 2:
485
492
  projects = _context3.sent;
486
- payloadData = _objectSpread(_objectSpread({
493
+ payloadFaqId = faqId !== null && faqId !== void 0 ? faqId : options.faqId;
494
+ payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread({
487
495
  message: finalMessage,
488
496
  history: history,
489
497
  projectId: projectToRequest,
@@ -496,10 +504,20 @@ export var useChatManager = function useChatManager(_ref2) {
496
504
  agentId: currentAgentFromMessages || (agent === null || agent === void 0 ? void 0 : agent.id),
497
505
  isWebSearchActive: isWebSearchActiveRef.current,
498
506
  isDeepSearchActive: isDeepSearchActiveRef.current
499
- }, projects !== null && projects !== void 0 && projects.length ? {
507
+ }, client !== null && client !== void 0 && client.id ? _objectSpread({
508
+ clientId: client.id
509
+ }, client.name ? {
510
+ clientName: client.name
511
+ } : {}) : project !== null && project !== void 0 && (_project$client = project.client) !== null && _project$client !== void 0 && _project$client.id ? _objectSpread({
512
+ clientId: project.client.id
513
+ }, project.client.name ? {
514
+ clientName: project.client.name
515
+ } : {}) : {}), projects !== null && projects !== void 0 && projects.length ? {
500
516
  projectName: projects[0].name
501
- } : {}), Array.isArray(options) ? {
502
- attachments: options
517
+ } : {}), attachments.length > 0 ? {
518
+ attachments: attachments
519
+ } : {}), payloadFaqId ? {
520
+ faqId: payloadFaqId
503
521
  } : {});
504
522
  askMaia(payloadData);
505
523
  case 3:
@@ -508,10 +526,10 @@ export var useChatManager = function useChatManager(_ref2) {
508
526
  }
509
527
  }, _callee3);
510
528
  }));
511
- return function (_x7) {
512
- return _ref5.apply(this, arguments);
529
+ return function (_x7, _x8, _x9) {
530
+ return _ref6.apply(this, arguments);
513
531
  };
514
- }(), [addMessage, event, askMaia, project, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive]);
532
+ }(), [addMessage, event, askMaia, project, client, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive]);
515
533
  var changeProject = useCallback(function (option) {
516
534
  if (!currentUserQuestion.current) return;
517
535
  if (option.id !== (project === null || project === void 0 ? void 0 : project.id)) {
@@ -541,7 +559,7 @@ export var useChatManager = function useChatManager(_ref2) {
541
559
  }
542
560
  }, [project, setProject, askMaia, authUser, isWebSearchActive]);
543
561
  var handleFeedback = useCallback(/*#__PURE__*/function () {
544
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
562
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
545
563
  var response;
546
564
  return _regeneratorRuntime.wrap(function (_context4) {
547
565
  while (1) switch (_context4.prev = _context4.next) {
@@ -566,12 +584,12 @@ export var useChatManager = function useChatManager(_ref2) {
566
584
  }
567
585
  }, _callee4);
568
586
  }));
569
- return function (_x8, _x9) {
570
- return _ref6.apply(this, arguments);
587
+ return function (_x0, _x1) {
588
+ return _ref7.apply(this, arguments);
571
589
  };
572
590
  }(), []);
573
591
  var handleApprovalDecision = useCallback(/*#__PURE__*/function () {
574
- var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(threadId, decision, editedActions) {
592
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(threadId, decision, editedActions) {
575
593
  var messageWithApproval, approval, messageId, existingMessage, newStatus, response, _t;
576
594
  return _regeneratorRuntime.wrap(function (_context5) {
577
595
  while (1) switch (_context5.prev = _context5.next) {
@@ -694,12 +712,12 @@ export var useChatManager = function useChatManager(_ref2) {
694
712
  }
695
713
  }, _callee5, null, [[2, 6]]);
696
714
  }));
697
- return function (_x0, _x1, _x10) {
698
- return _ref7.apply(this, arguments);
715
+ return function (_x10, _x11, _x12) {
716
+ return _ref8.apply(this, arguments);
699
717
  };
700
718
  }(), [authUser, agent, addMessage, handleStreamError, handleStreamUpdate, handleStreamFinish]);
701
719
  var initializeChat = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
702
- var _project$client, _project$client2, history;
720
+ var _project$client2, _project$client3, history;
703
721
  return _regeneratorRuntime.wrap(function (_context6) {
704
722
  while (1) switch (_context6.prev = _context6.next) {
705
723
  case 0:
@@ -736,12 +754,16 @@ export var useChatManager = function useChatManager(_ref2) {
736
754
  agentId: agent === null || agent === void 0 ? void 0 : agent.id,
737
755
  isWebSearchActive: isWebSearchActiveRef.current,
738
756
  isDeepSearchActive: isDeepSearchActiveRef.current
739
- }, project !== null && project !== void 0 && (_project$client = project.client) !== null && _project$client !== void 0 && _project$client.id ? {
757
+ }, client !== null && client !== void 0 && client.id ? {
758
+ clientId: client.id
759
+ } : project !== null && project !== void 0 && (_project$client2 = project.client) !== null && _project$client2 !== void 0 && _project$client2.id ? {
740
760
  clientId: project.client.id
741
761
  } : {}), project !== null && project !== void 0 && project.name ? {
742
762
  projectName: project.name
743
- } : {}), project !== null && project !== void 0 && (_project$client2 = project.client) !== null && _project$client2 !== void 0 && _project$client2.name ? {
763
+ } : {}), project !== null && project !== void 0 && (_project$client3 = project.client) !== null && _project$client3 !== void 0 && _project$client3.name ? {
744
764
  clientName: project.client.name
765
+ } : client !== null && client !== void 0 && client.name ? {
766
+ clientName: client.name
745
767
  } : {}), userInitialMessage.attachments ? {
746
768
  attachments: userInitialMessage.attachments
747
769
  } : {}), userInitialMessage.faqId ? {
@@ -753,7 +775,7 @@ export var useChatManager = function useChatManager(_ref2) {
753
775
  return _context6.stop();
754
776
  }
755
777
  }, _callee6);
756
- })), [initialChatId, userInitialMessage, project, authUser, agent, askMaia, isWebSearchActive, isDeepSearchActive]);
778
+ })), [initialChatId, userInitialMessage, project, client, authUser, agent, askMaia, isWebSearchActive, isDeepSearchActive]);
757
779
  var resetChat = useCallback(function () {
758
780
  currentMessageId.current = uuidv4();
759
781
  currentUserQuestion.current = null;
@@ -786,4 +808,4 @@ export var useChatManager = function useChatManager(_ref2) {
786
808
  isDisabled: waitingResponse || loadingMessages
787
809
  };
788
810
  };
789
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsImlkIiwidG9TdHJpbmciLCJuYW1lIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwidHJpbSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwicGFyc2VkIiwiZXZlbnREYXRhIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwib25Db21wbGV0ZSIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYyIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYyJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiY3VycmVudE1lc3NhZ2VJZCIsImN1cnJlbnRVc2VyUXVlc3Rpb24iLCJjdXJyZW50Q2hhdElkIiwicmVwb3J0ZWRFdmVudCIsIm1lc3NhZ2VzUmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImxhc3RNc2dXaXRoUHJvamVjdCIsImZpbHRlciIsIm1zZyIsInByb2plY3RJZCIsImF0IiwiX3JlZjMiLCJwcm9qZWN0TmFtZSIsInRoZW4iLCJwcm9qZWN0cyIsImZvdW5kIiwiZmluZCIsInAiLCJOdW1iZXIiLCJfZm91bmQkY2xpZW50IiwiY2xpZW50TmFtZSIsImNsaWVudCIsIlN0cmluZyIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiY29uY2F0IiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsInJvbGUiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJ0ZW1wTWVzc2FnZUlkIiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjQiLCJfY2FsbGVlMiIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX2NvbnRleHQyIiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXBwcm92YWwiLCJtYXAiLCJtYXRjaCIsInBhcnNlSW50IiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsIl94NCIsIl94NSIsIl94NiIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJhcHByb3ZhbFN0YXR1cyIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdG9wU3RyZWFtaW5nIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIm9wdGlvbnMiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwiZmluYWxNZXNzYWdlIiwiX29wdGlvbnMkcHJvamVjdENoYW5nIiwiaGlzdG9yeSIsImxhc3RNZXNzYWdlUHJvamVjdElkIiwicHJvamVjdFRvUmVxdWVzdCIsInBheWxvYWREYXRhIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwidW5kZWZpbmVkIiwicG1BaVR5cGVkVGV4dCIsImFnZW50SWQiLCJVU0VSIiwiQXJyYXkiLCJpc0FycmF5IiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJpc0Zpbml0ZSIsIl9vYmplY3RTcHJlYWQiLCJsYW5nIiwidXNlcklkIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsIm1lc3NhZ2VJZCIsImFnZW50TmFtZSIsImF0dGFjaG1lbnRzIiwiX3g3IiwiY2hhbmdlUHJvamVjdCIsIm9wdGlvbiIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjYiLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94OCIsIl94OSIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmNyIsIl9jYWxsZWU1IiwiZGVjaXNpb24iLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImV4aXN0aW5nTWVzc2FnZSIsIm5ld1N0YXR1cyIsIl90IiwiX2NvbnRleHQ1IiwiX20kYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJzb21lIiwiYWN0aW9uIiwidGhyZWFkX2lkIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJuZXdMb2FkaW5ncyIsImN1cnJlbnRUaHJlYWRJZCIsIl94MCIsIl94MSIsIl94MTAiLCJpbml0aWFsaXplQ2hhdCIsIl9jYWxsZWU2IiwiX3Byb2plY3QkY2xpZW50IiwiX3Byb2plY3QkY2xpZW50MiIsIl9jb250ZXh0NiIsImNsaWVudElkIiwiZmFxSWQiLCJyZXNldENoYXQiLCJzdG9wR2VuZXJhdGlvbiIsImlzRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmFkaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0ZWQtb3B0aW9uYWwtY2hhaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyB1c2VDaGF0TWVzc2FnZXMgfSBmcm9tICcuLi91c2VDaGF0TWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuXG5jb25zdCB1c2VTdGFibGVDYWxsYmFja3MgPSAoYXV0aFVzZXI6IENPUlVzZXIpID0+IHtcbiAgY29uc3QgY3VycmVudFVzZXIgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VVc2VyPih7XG4gICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgfSlcblxuICBpZiAoXG4gICAgY3VycmVudFVzZXIuY3VycmVudC5pZCAhPT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQubmFtZSAhPT0gYXV0aFVzZXIuZmlyc3ROYW1lIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5hdmF0YXIgIT09IGF1dGhVc2VyLnBpY3R1cmVcbiAgKSB7XG4gICAgY3VycmVudFVzZXIuY3VycmVudCA9IHtcbiAgICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRVc2VyOiBjdXJyZW50VXNlci5jdXJyZW50LFxuICB9XG59XG5cbmNvbnN0IHBhcnNlU1NFTGluZSA9IChsaW5lOiBzdHJpbmcpOiB7IGV2ZW50VHlwZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgaWYgKCFsaW5lLnRyaW0oKSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuICAgIHJldHVybiB7IGV2ZW50VHlwZSwgZGF0YSB9XG4gIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBwcm9jZXNzU1NFU3RyZWFtID0gYXN5bmMgKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIHRocmVhZElkOiBzdHJpbmcsXG4gIGNhbGxiYWNrczoge1xuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoZmluYWxDb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25FcnJvcjogKGVycm9yOiBhbnksIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndG9rZW4nKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gY29udGVudFxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKCFpc1N0cmVhbUNvbXBsZXRlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGlzU3RyZWFtQ29tcGxldGUgPSB0cnVlXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaGFuZGxlTGluZShsaW5lc1tpXSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNYW5hZ2VyID0gKHtcbiAgY2hhdElkOiBpbml0aWFsQ2hhdElkLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIG9uRXJyb3IsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1hbmFnZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IHByb2plY3QsIHNldFByb2plY3QsIGFnZW50LCBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBjaGlwc1Byb2plY3QsIHNldENoaXBzUHJvamVjdCB9ID1cbiAgICB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcblxuICAgICAgbG9hZE1lc3NhZ2VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDaGlwc1Byb2plY3QsIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2hpcHNQcm9qZWN0IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIHByb2plY3RJZCBwZXJvIGNoaXBzUHJvamVjdCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIC8vIEZhbGxiYWNrOiB1c2FyIHByb2plY3ROYW1lIGRlbCBtZW5zYWplIGN1YW5kbyBmZXRjaFByb2plY3RzIG5vIGRldnVlbHZlIGVsIHByb3llY3RvXG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbbWVzc2FnZXMsIGNoaXBzUHJvamVjdCwgbG9hZGluZ01lc3NhZ2VzLCBmZXRjaFByb2plY3RzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICAgIDogdCgnY2hhdC5lcnJvcicpXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwICYmIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgIClcblxuICAgICAgICAvLyBTb2xvIGHDsWFkaXIgYWwgZGFzaGJvYXJkIGN1YW5kbyBsYSBydXRhIGFjdHVhbCBjb2luY2lkZSBjb24gZWwgcHJveWVjdG8gZGVsIGNoYXRcbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZCkge1xuICAgICAgICAgIGlmICh3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke21lbW9yeVNlc3Npb25JZH1gLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlXVxuICApXG5cbiAgY29uc3Qge1xuICAgIGFza01haWEsXG4gICAgaXNMb2FkaW5nOiB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICB9KVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0ge30pID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5VU0VSLFxuICAgICAgICBzb3VyY2VzOiBBcnJheS5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucyA6IFtdLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IHsgYXR0YWNobWVudHM6IG9wdGlvbnMgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmVdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWQ6IHN0cmluZywgLy8gQ2hhbmdlZCBmcm9tIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3RcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGVzdGUgdGhyZWFkSWQgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCA9PT0gdGhyZWFkSWQpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWQ6JywgdGhyZWFkSWQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBib3RoIGFwcHJvdmUgYW5kIHJlamVjdCwgY2FsbCBjb250aW51ZS10aHJlYWQgZW5kcG9pbnQgd2l0aCBzcGVjaWZpYyB0aHJlYWRfaWRcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmcgZm9yIHRoaXMgdGhyZWFkXG4gICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFt0aHJlYWRJZF06ICdQcm9jZXNhbmRvLi4uJyxcbiAgICAgIH0pKVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZCwgLy8gVXNlIHNwZWNpZmljIGFjdGlvbiB0aHJlYWRfaWRcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgLy8gUmVtb3ZlIGxvYWRpbmcgb24gZXJyb3JcbiAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1t0aHJlYWRJZF1cbiAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBtYW51YWxseSB0byB0cmFjayBsb2FkaW5nIHBlciB0aHJlYWRcbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgdGhyZWFkSWQsIHtcbiAgICAgICAgICBvblRva2VuOiAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1VcGRhdGUoY29udGVudCwgbnVsbCwgJycpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBtZXNzYWdlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlOiAoZmluYWxDb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBlcnJvcilcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBvbiBlcnJvclxuICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW3RocmVhZElkXVxuICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2F1dGhVc2VyLCBhZ2VudCwgYWRkTWVzc2FnZSwgaGFuZGxlU3RyZWFtRXJyb3IsIGhhbmRsZVN0cmVhbVVwZGF0ZSwgaGFuZGxlU3RyZWFtRmluaXNoXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQgfHwgbnVsbCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/LmlkID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/LmNsaWVudD8ubmFtZSA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgPyB7IGZhcUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgdXNlckluaXRpYWxNZXNzYWdlLCBwcm9qZWN0LCBhdXRoVXNlciwgYWdlbnQsIGFza01haWEsIGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsRUFBRSxJQUFJQyxNQUFNLFFBQVEsTUFBTTtBQUNuQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUU5QixTQUFTQyxPQUFPLFFBQWlCLHdCQUF3QjtBQUN6RCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBQ3RDLFNBQVNDLFFBQVEsUUFBUSw0REFBNEQ7QUFDckYsU0FBdUNDLGVBQWUsUUFBeUIsa0JBQWtCO0FBR2pHLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFDNUMsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNB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
811
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsImlkIiwidG9TdHJpbmciLCJuYW1lIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwidHJpbSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwicGFyc2VkIiwiZXZlbnREYXRhIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwib25Db21wbGV0ZSIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYyIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYyJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJjbGllbnQiLCJzZXRDbGllbnQiLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiY3VycmVudE1lc3NhZ2VJZCIsImN1cnJlbnRVc2VyUXVlc3Rpb24iLCJjdXJyZW50Q2hhdElkIiwicmVwb3J0ZWRFdmVudCIsIm1lc3NhZ2VzUmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImxhc3RNc2dXaXRoUHJvamVjdCIsImZpbHRlciIsIm1zZyIsInByb2plY3RJZCIsImF0IiwiX3JlZjMiLCJwcm9qZWN0TmFtZSIsInRoZW4iLCJwcm9qZWN0cyIsImZvdW5kIiwiZmluZCIsInAiLCJOdW1iZXIiLCJfZm91bmQkY2xpZW50IiwiY2xpZW50TmFtZSIsIlN0cmluZyIsImxhc3RNc2dXaXRoQ2xpZW50IiwiY2xpZW50SWQiLCJfcmVmNCIsIm1zZ0NsaWVudElkIiwibXNnQ2xpZW50TmFtZSIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiY29uY2F0IiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsInJvbGUiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJ0ZW1wTWVzc2FnZUlkIiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjUiLCJfY2FsbGVlMiIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX2NvbnRleHQyIiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXBwcm92YWwiLCJtYXAiLCJtYXRjaCIsInBhcnNlSW50IiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsIl94NCIsIl94NSIsIl94NiIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJhcHByb3ZhbFN0YXR1cyIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdG9wU3RyZWFtaW5nIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY2IiwiX2NhbGxlZTMiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsImZhcUlkIiwiX2F0dGFjaG1lbnRzIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJfcHJvamVjdCRjbGllbnQiLCJvcHRzIiwib3B0aW9ucyIsImF0dGFjaG1lbnRzIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsInByb2plY3RUb1JlcXVlc3QiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsIkFycmF5IiwiaXNBcnJheSIsInBtQWlUeXBlZFRleHQiLCJhZ2VudElkIiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwiaXNGaW5pdGUiLCJfb2JqZWN0U3ByZWFkIiwibGFuZyIsInVzZXJJZCIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJtZXNzYWdlSWQiLCJhZ2VudE5hbWUiLCJfeDciLCJfeDgiLCJfeDkiLCJjaGFuZ2VQcm9qZWN0Iiwib3B0aW9uIiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmNyIsIl9jYWxsZWU0IiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsIl9jb250ZXh0NCIsIkNoYXRzIiwid2FzSGVscGZ1bENoYXQiLCJUSFVNQlNfVVAiLCJ3YXNIZWxwZnVsIiwiX3gwIiwiX3gxIiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJkZWNpc2lvbiIsImVkaXRlZEFjdGlvbnMiLCJtZXNzYWdlV2l0aEFwcHJvdmFsIiwiZXhpc3RpbmdNZXNzYWdlIiwibmV3U3RhdHVzIiwiX3QiLCJfY29udGV4dDUiLCJfbSRhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJvayIsIm5ld0xvYWRpbmdzIiwiY3VycmVudFRocmVhZElkIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl9wcm9qZWN0JGNsaWVudDIiLCJfcHJvamVjdCRjbGllbnQzIiwiX2NvbnRleHQ2IiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuXG5jb25zdCB1c2VTdGFibGVDYWxsYmFja3MgPSAoYXV0aFVzZXI6IENPUlVzZXIpID0+IHtcbiAgY29uc3QgY3VycmVudFVzZXIgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VVc2VyPih7XG4gICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgfSlcblxuICBpZiAoXG4gICAgY3VycmVudFVzZXIuY3VycmVudC5pZCAhPT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQubmFtZSAhPT0gYXV0aFVzZXIuZmlyc3ROYW1lIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5hdmF0YXIgIT09IGF1dGhVc2VyLnBpY3R1cmVcbiAgKSB7XG4gICAgY3VycmVudFVzZXIuY3VycmVudCA9IHtcbiAgICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRVc2VyOiBjdXJyZW50VXNlci5jdXJyZW50LFxuICB9XG59XG5cbmNvbnN0IHBhcnNlU1NFTGluZSA9IChsaW5lOiBzdHJpbmcpOiB7IGV2ZW50VHlwZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgaWYgKCFsaW5lLnRyaW0oKSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuICAgIHJldHVybiB7IGV2ZW50VHlwZSwgZGF0YSB9XG4gIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBwcm9jZXNzU1NFU3RyZWFtID0gYXN5bmMgKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIHRocmVhZElkOiBzdHJpbmcsXG4gIGNhbGxiYWNrczoge1xuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoZmluYWxDb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25FcnJvcjogKGVycm9yOiBhbnksIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndG9rZW4nKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gY29udGVudFxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKCFpc1N0cmVhbUNvbXBsZXRlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGlzU3RyZWFtQ29tcGxldGUgPSB0cnVlXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaGFuZGxlTGluZShsaW5lc1tpXSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNYW5hZ2VyID0gKHtcbiAgY2hhdElkOiBpbml0aWFsQ2hhdElkLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIG9uRXJyb3IsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1hbmFnZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7XG4gICAgcHJvamVjdCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBzZXRDbGllbnQsXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gaW5pdGlhbENoYXRJZFxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2hpcHNQcm9qZWN0IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIHByb2plY3RJZCBwZXJvIGNoaXBzUHJvamVjdCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbbWVzc2FnZXMsIGNoaXBzUHJvamVjdCwgbG9hZGluZ01lc3NhZ2VzLCBmZXRjaFByb2plY3RzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdKVxuXG4gIC8vIFNpbmNyb25pemFyIGNsaWVudCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBjbGllbnRJZCBwZXJvIGNsaWVudCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNsaWVudCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoQ2xpZW50ID0gbWVzc2FnZXMuZmlsdGVyKG1zZyA9PiBtc2cuY2xpZW50SWQgIT0gbnVsbCAmJiBtc2cuY2xpZW50TmFtZSkuYXQoLTEpXG4gICAgY29uc3QgeyBjbGllbnRJZDogbXNnQ2xpZW50SWQsIGNsaWVudE5hbWU6IG1zZ0NsaWVudE5hbWUgfSA9IGxhc3RNc2dXaXRoQ2xpZW50IHx8IHt9XG4gICAgaWYgKG1zZ0NsaWVudElkID09IG51bGwgfHwgIW1zZ0NsaWVudE5hbWUpIHJldHVyblxuXG4gICAgc2V0Q2xpZW50Py4oeyBpZDogTnVtYmVyKG1zZ0NsaWVudElkKSwgbmFtZTogbXNnQ2xpZW50TmFtZSB9KVxuICB9LCBbbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICAgIDogdCgnY2hhdC5lcnJvcicpXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwICYmIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgIClcblxuICAgICAgICAvLyBTb2xvIGHDsWFkaXIgYWwgZGFzaGJvYXJkIGN1YW5kbyBsYSBydXRhIGFjdHVhbCBjb2luY2lkZSBjb24gZWwgcHJveWVjdG8gZGVsIGNoYXRcbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZCkge1xuICAgICAgICAgIGlmICh3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke21lbW9yeVNlc3Npb25JZH1gLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlXVxuICApXG5cbiAgY29uc3Qge1xuICAgIGFza01haWEsXG4gICAgaXNMb2FkaW5nOiB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICB9KVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG1lc3NhZ2U6IHN0cmluZywgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLCBmYXFJZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdHMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICAgICAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykgPyB7fSA6IChvcHRzIGFzIFNlbmRNZXNzYWdlT3B0aW9ucylcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgICAgPyBhdHRhY2htZW50c09yT3B0aW9uc1xuICAgICAgICA6ICgob3B0cyBhcyBTZW5kTWVzc2FnZU9wdGlvbnMpPy5hdHRhY2htZW50cyA/PyBbXSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykgPyBhdHRhY2htZW50c09yT3B0aW9ucyA6IGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudD8uaWRcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQsIC4uLihwcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBwcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgdCxcbiAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGNoYW5nZVByb2plY3QgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGlmIChvcHRpb24uaWQgIT09IHByb2plY3Q/LmlkKSB7XG4gICAgICAgIHNldFByb2plY3Qob3B0aW9uKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvamVjdCAmJiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICB9KSlcblxuICAgICAgICBhc2tNYWlhKHtcbiAgICAgICAgICBtZXNzYWdlOiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrID0gdXNlQ2FsbGJhY2soYXN5bmMgKGZlZWRiYWNrUHJvcDogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5DaGF0cy53YXNIZWxwZnVsQ2hhdChjaGF0TWVzc2FnZUlkLCBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUClcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IGNoYXRNZXNzYWdlSWQgJiYgbWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIHdhc0hlbHBmdWw6IGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICB0aHJlYWRJZDogc3RyaW5nLCAvLyBDaGFuZ2VkIGZyb20gYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdFxuICAgICAgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnLFxuICAgICAgZWRpdGVkQWN0aW9ucz86IEFycmF5PHsgdG9vbF9uYW1lOiBzdHJpbmc7IGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+XG4gICAgKSA9PiB7XG4gICAgICAvLyBCdXNjYXIgZWwgbWVuc2FqZSBxdWUgY29udGllbmUgZXN0ZSB0aHJlYWRJZCBlbiBzdXMgcGVuZGluZ19hY3Rpb25zXG4gICAgICBjb25zdCBtZXNzYWdlV2l0aEFwcHJvdmFsID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT5cbiAgICAgICAgbS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkID09PSB0aHJlYWRJZClcbiAgICAgIClcblxuICAgICAgaWYgKCFtZXNzYWdlV2l0aEFwcHJvdmFsIHx8ICFtZXNzYWdlV2l0aEFwcHJvdmFsLmFwcHJvdmFsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHLDsyBtZW5zYWplIGNvbiBhcHByb3ZhbCBwYXJhIHRocmVhZF9pZDonLCB0aHJlYWRJZClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcblxuICAgICAgLy8gVXBkYXRlIG1lc3NhZ2Ugc3RhdHVzIGltbWVkaWF0ZWx5XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBtZXNzYWdlSWQpIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfSlcblxuICAgICAgLy8gVHJpZ2dlciByZS1yZW5kZXJcbiAgICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+IG0uaWQgPT09IG1lc3NhZ2VJZClcbiAgICAgIGlmIChleGlzdGluZ01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgIGFkZE1lc3NhZ2UoeyAuLi5leGlzdGluZ01lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfSlcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIGJvdGggYXBwcm92ZSBhbmQgcmVqZWN0LCBjYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIHNwZWNpZmljIHRocmVhZF9pZFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICAvLyBBZGQgbG9hZGluZyBmb3IgdGhpcyB0aHJlYWRcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW3RocmVhZElkXTogJ1Byb2Nlc2FuZG8uLi4nLFxuICAgICAgfSkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkLCAvLyBVc2Ugc3BlY2lmaWMgYWN0aW9uIHRocmVhZF9pZFxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBvbiBlcnJvclxuICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW3RocmVhZElkXVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIG1hbnVhbGx5IHRvIHRyYWNrIGxvYWRpbmcgcGVyIHRocmVhZFxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCB0aHJlYWRJZCwge1xuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IG1lc3NhZ2UsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ29tcGxldGU6IChmaW5hbENvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGVycm9yKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIG9uIGVycm9yXG4gICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbdGhyZWFkSWRdXG4gICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXV0aFVzZXIsIGFnZW50LCBhZGRNZXNzYWdlLCBoYW5kbGVTdHJlYW1FcnJvciwgaGFuZGxlU3RyZWFtVXBkYXRlLCBoYW5kbGVTdHJlYW1GaW5pc2hdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0Py5pZCB8fCBudWxsLFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWQgPyB7IGNsaWVudElkOiBjbGllbnQuaWQgfSA6IHByb2plY3Q/LmNsaWVudD8uaWQgPyB7IGNsaWVudElkOiBwcm9qZWN0LmNsaWVudC5pZCB9IDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IHByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdD8uY2xpZW50Py5uYW1lXG4gICAgICAgICAgPyB7IGNsaWVudE5hbWU6IHByb2plY3QuY2xpZW50Lm5hbWUgfVxuICAgICAgICAgIDogY2xpZW50Py5uYW1lXG4gICAgICAgICAgICA/IHsgY2xpZW50TmFtZTogY2xpZW50Lm5hbWUgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFDbkMsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFHOUIsU0FBU0MsT0FBTyxRQUFpQix3QkFBd0I7QUFDekQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsNERBQTREO0FBQ3JGLFNBQXVDQyxlQUFlLFFBQXlCLGtCQUFrQjtBQUdqRyxTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFFakUsSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsUUFBaUIsRUFBSztFQUNoRCxJQUFNQyxXQUFXLEdBQUdwQixNQUFNLENBQWtCO0lBQzFDcUIsRUFBRSxFQUFFRixRQUFRLENBQUNFLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUM7SUFDMUJDLElBQUksRUFBRUosUUFBUSxDQUFDSyxTQUFTO0lBQ3hCQyxNQUFNLEVBQUVOLFFBQVEsQ0FBQ087RUFDbkIsQ0FBQyxDQUFDO0VBRUYsSUFDRU4sV0FBVyxDQUFDTyxPQUFPLENBQUNOLEVBQUUsS0FBS0YsUUFBUSxDQUFDRSxFQUFFLENBQUNDLFFBQVEsQ0FBQyxDQUFDLElBQ2pERixXQUFXLENBQUNPLE9BQU8sQ0FBQ0osSUFBSSxLQUFLSixRQUFRLENBQUNLLFNBQVMsSUFDL0NKLFdBQVcsQ0FBQ08sT0FBTyxDQUFDRixNQUFNLEtBQUtOLFFBQVEsQ0FBQ08sT0FBTyxFQUMvQztJQUNBTixXQUFXLENBQUNPLE9BQU8sR0FBRztNQUNwQk4sRUFBRSxFQUFFRixRQUFRLENBQUNFLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUM7TUFDMUJDLElBQUksRUFBRUosUUFBUSxDQUFDSyxTQUFTO01BQ3hCQyxNQUFNLEVBQUVOLFFBQVEsQ0FBQ087SUFDbkIsQ0FBQztFQUNIO0VBQ0EsT0FBTztJQUNMTixXQUFXLEVBQUVBLFdBQVcsQ0FBQ087RUFDM0IsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSUMsSUFBWSxFQUFrRDtFQUNsRixJQUFJLENBQUNBLElBQUksQ0FBQ0MsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUk7RUFFN0IsSUFBQUMsV0FBQSxHQUE4QkYsSUFBSSxDQUFDRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQUFDLFlBQUEsR0FBQUMsY0FBQSxDQUFBSCxXQUFBO0lBQXZDSSxTQUFTLEdBQUFGLFlBQUE7SUFBRUcsUUFBUSxHQUFBSCxZQUFBO0VBQzFCLElBQUksQ0FBQ0UsU0FBUyxJQUFJLENBQUNDLFFBQVEsRUFBRSxPQUFPLElBQUk7RUFFeEMsSUFBTUMsU0FBUyxHQUFHRixTQUFTLENBQUNHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUNSLElBQUksQ0FBQyxDQUFDO0VBQ3pELElBQU1TLE9BQU8sR0FBR0gsUUFBUSxDQUFDRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDUixJQUFJLENBQUMsQ0FBQztFQUVyRCxJQUFJO0lBQ0YsSUFBTVUsSUFBSSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsT0FBTyxDQUFDO0lBQ2hDLE9BQU87TUFBRUYsU0FBUyxFQUFUQSxTQUFTO01BQUVHLElBQUksRUFBSkE7SUFBSyxDQUFDO0VBQzVCLENBQUMsQ0FBQyxPQUFPRyxVQUFVLEVBQUU7SUFDbkJDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLHlCQUF5QixFQUFFRixVQUFVLEVBQUVKLE9BQU8sQ0FBQztJQUM3RCxPQUFPLElBQUk7RUFDYjtBQUNGLENBQUM7QUFFRCxJQUFNTyxnQkFBZ0I7RUFBQSxJQUFBQyxJQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUN2QkMsUUFBa0IsRUFDbEJDLFFBQWdCLEVBQ2hCQyxTQUtDO0lBQUEsSUFBQUMsY0FBQTtJQUFBLElBQUFDLE1BQUEsRUFBQUMsT0FBQSxFQUFBQyxNQUFBLEVBQUFDLGtCQUFBLEVBQUFDLGdCQUFBLEVBWVFDLFVBQVUsRUFBQUMsa0JBQUEsRUFBQUMsSUFBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsQ0FBQTtJQUFBLE9BQUFqQixtQkFBQSxDQUFBa0IsSUFBQSxXQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7UUFBQTtVQUFWVCxVQUFVLFlBQUFVLFlBQUMxQyxJQUFZLEVBQUU7WUFDaEMsSUFBTTJDLE1BQU0sR0FBRzVDLFlBQVksQ0FBQ0MsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQzJDLE1BQU0sRUFBRTtZQUViLElBQVFuQyxTQUFTLEdBQVdtQyxNQUFNLENBQTFCbkMsU0FBUztjQUFFRyxJQUFJLEdBQUtnQyxNQUFNLENBQWZoQyxJQUFJO1lBQ3ZCLElBQU1pQyxTQUFTLEdBQUdqQyxJQUErQjtZQUVqRCxJQUFJSCxTQUFTLEtBQUssT0FBTyxFQUFFO2NBQ3pCLElBQU1xQyxPQUFPLEdBQUdELFNBQVMsQ0FBQ0MsT0FBaUI7Y0FDM0NmLGtCQUFrQixJQUFJZSxPQUFPO2NBQzdCcEIsU0FBUyxDQUFDcUIsT0FBTyxDQUFDaEIsa0JBQWtCLENBQUM7WUFDdkMsQ0FBQyxNQUFNLElBQUl0QixTQUFTLEtBQUssTUFBTSxFQUFFO2NBQy9CLElBQUlvQyxTQUFTLENBQUNHLE9BQU8sSUFBSSxPQUFPSCxTQUFTLENBQUNHLE9BQU8sS0FBSyxRQUFRLEVBQUU7Z0JBQzlEdEIsU0FBUyxDQUFDdUIsTUFBTSxDQUFDSixTQUFTLENBQUNHLE9BQU8sRUFBRXZCLFFBQVEsQ0FBQztjQUMvQztZQUNGLENBQUMsTUFBTSxJQUFJaEIsU0FBUyxLQUFLLFVBQVUsRUFBRTtjQUNuQyxJQUFNeUMsWUFBWSxHQUFJTCxTQUFTLENBQUNDLE9BQU8sSUFBZWYsa0JBQWtCO2NBQ3hFLElBQU1vQixPQUFPLEdBQUlOLFNBQVMsQ0FBQ00sT0FBTyxJQUFnQixJQUFJO2NBQ3RELElBQU1DLGVBQWUsR0FBSVAsU0FBUyxDQUFDUSxpQkFBaUIsSUFBZSxFQUFFO2NBQ3JFM0IsU0FBUyxDQUFDNEIsVUFBVSxDQUFDSixZQUFZLEVBQUVDLE9BQU8sRUFBRUMsZUFBZSxFQUFFM0IsUUFBUSxDQUFDO1lBQ3hFLENBQUMsTUFBTSxJQUFJaEIsU0FBUyxLQUFLLE9BQU8sRUFBRTtjQUNoQ2lCLFNBQVMsQ0FBQzZCLE9BQU8sQ0FBQ1YsU0FBUyxDQUFDNUIsS0FBSyxFQUFFUSxRQUFRLENBQUM7WUFDOUM7VUFDRixDQUFDO1VBakNLRyxNQUFNLElBQUFELGNBQUEsR0FBR0gsUUFBUSxDQUFDZ0MsSUFBSSxjQUFBN0IsY0FBQSx1QkFBYkEsY0FBQSxDQUFlOEIsU0FBUyxDQUFDLENBQUM7VUFBQSxJQUNwQzdCLE1BQU07WUFBQVksUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE1BQ0gsSUFBSWdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUFBO1VBR2xDN0IsT0FBTyxHQUFHLElBQUk4QixXQUFXLENBQUMsQ0FBQztVQUM3QjdCLE1BQU0sR0FBRyxFQUFFO1VBQ1hDLGtCQUFrQixHQUFHLEVBQUU7VUFDdkJDLGdCQUFnQixHQUFHLEtBQUs7UUFBQTtVQUFBLElBMkJwQkEsZ0JBQWdCO1lBQUFRLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FFUWQsTUFBTSxDQUFDZ0MsSUFBSSxDQUFDLENBQUM7UUFBQTtVQUFBMUIsa0JBQUEsR0FBQU0sUUFBQSxDQUFBcUIsSUFBQTtVQUFuQzFCLElBQUksR0FBQUQsa0JBQUEsQ0FBSkMsSUFBSTtVQUFFQyxLQUFLLEdBQUFGLGtCQUFBLENBQUxFLEtBQUs7VUFBQSxLQUNmRCxJQUFJO1lBQUFLLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFDTlYsZ0JBQWdCLEdBQUcsSUFBSTtVQUFBLE9BQUFRLFFBQUEsQ0FBQXNCLE1BQUE7UUFBQTtVQUl6QmhDLE1BQU0sSUFBSUQsT0FBTyxDQUFDa0MsTUFBTSxDQUFDM0IsS0FBSyxFQUFFO1lBQUU0QixNQUFNLEVBQUU7VUFBSyxDQUFDLENBQUM7VUFDM0MzQixLQUFLLEdBQUdQLE1BQU0sQ0FBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUM7VUFDbEMwQixNQUFNLEdBQUdPLEtBQUssQ0FBQzRCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRTtVQUUxQixLQUFTM0IsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRCxLQUFLLENBQUM2QixNQUFNLEVBQUU1QixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDTCxVQUFVLENBQUNJLEtBQUssQ0FBQ0MsQ0FBQyxDQUFDLENBQUM7VUFDdEI7VUFBQ0UsUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtRQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBMkIsSUFBQTtNQUFBO0lBQUEsR0FBQTVDLE9BQUE7RUFBQSxDQUVKO0VBQUEsZ0JBN0RLTCxnQkFBZ0JBLENBQUFrRCxFQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQTtJQUFBLE9BQUFuRCxJQUFBLENBQUFvRCxLQUFBLE9BQUFDLFNBQUE7RUFBQTtBQUFBLEdBNkRyQjtBQUVELE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBQyxLQUFBLEVBS0E7RUFBQSxJQUpqQkMsYUFBYSxHQUFBRCxLQUFBLENBQXJCRSxNQUFNO0lBQ05DLGtCQUFrQixHQUFBSCxLQUFBLENBQWxCRyxrQkFBa0I7SUFDbEJ0QixPQUFPLEdBQUFtQixLQUFBLENBQVBuQixPQUFPO0lBQUF1QixZQUFBLEdBQUFKLEtBQUEsQ0FDUEssTUFBTTtJQUFOQSxNQUFNLEdBQUFELFlBQUEsY0FBRyxFQUFFLEdBQUFBLFlBQUE7RUFFWCxJQUFBRSxLQUFBLEdBQWNyRyxJQUFJLENBQUMsQ0FBQztJQUFac0csQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFNMUYsUUFBUSxHQUFHWCxPQUFPLENBQUMsQ0FBQztFQUMxQixJQUFBc0csaUJBQUEsR0FVSXJHLGdCQUFnQixDQUFDLENBQUM7SUFUcEJzRyxPQUFPLEdBQUFELGlCQUFBLENBQVBDLE9BQU87SUFDUEMsVUFBVSxHQUFBRixpQkFBQSxDQUFWRSxVQUFVO0lBQ1ZDLE1BQU0sR0FBQUgsaUJBQUEsQ0FBTkcsTUFBTTtJQUNOQyxTQUFTLEdBQUFKLGlCQUFBLENBQVRJLFNBQVM7SUFDVEMsS0FBSyxHQUFBTCxpQkFBQSxDQUFMSyxLQUFLO0lBQ0xDLGlCQUFpQixHQUFBTixpQkFBQSxDQUFqQk0saUJBQWlCO0lBQ2pCQyxrQkFBa0IsR0FBQVAsaUJBQUEsQ0FBbEJPLGtCQUFrQjtJQUNsQkMsWUFBWSxHQUFBUixpQkFBQSxDQUFaUSxZQUFZO0lBQ1pDLGVBQWUsR0FBQVQsaUJBQUEsQ0FBZlMsZUFBZTtFQUVqQixJQUFNQyxLQUFLLEdBQUc3RyxRQUFRLENBQUMsQ0FBQztFQUN4QixJQUFBOEcsWUFBQSxHQUEwQjFHLFdBQVcsQ0FBQyxDQUFDO0lBQS9CMkcsYUFBYSxHQUFBRCxZQUFBLENBQWJDLGFBQWE7RUFDckIsSUFBQUMsbUJBQUEsR0FBd0J6RyxrQkFBa0IsQ0FBQ0MsUUFBUSxDQUFDO0lBQTVDQyxXQUFXLEdBQUF1RyxtQkFBQSxDQUFYdkcsV0FBVztFQUNuQixJQUFBd0csa0JBQUEsR0FBOEI1RyxpQkFBaUIsQ0FBQyxDQUFDO0lBQXpDNkcsaUJBQWlCLEdBQUFELGtCQUFBLENBQWpCQyxpQkFBaUI7RUFDekIsSUFBTUMsZ0JBQWdCLEdBQUc5SCxNQUFNLENBQUNJLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDekMsSUFBTTJILG1CQUFtQixHQUFHL0gsTUFBTSxDQUFnQixJQUFJLENBQUM7RUFDdkQsSUFBTWdJLGFBQWEsR0FBR2hJLE1BQU0sQ0FBQ3VHLGFBQWEsSUFBSW5HLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDdkQsSUFBTTZILGFBQWEsR0FBR2pJLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDbkMsSUFBTWtJLFdBQVcsR0FBR2xJLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDO0VBQzdDLElBQU1tSSxlQUFlLEdBQUduSSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ3JDLElBQU1vSSxZQUFZLEdBQUdwSSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ2xDLElBQUFxSSxTQUFBLEdBQTRDbkksUUFBUSxDQUF5QixDQUFDLENBQUMsQ0FBQztJQUFBb0ksVUFBQSxHQUFBcEcsY0FBQSxDQUFBbUcsU0FBQTtJQUF6RUUsY0FBYyxHQUFBRCxVQUFBO0lBQUVFLGlCQUFpQixHQUFBRixVQUFBO0VBRXhDLElBQU1HLG9CQUFvQixHQUFHekksTUFBTSxDQUFDb0gsaUJBQWlCLENBQUM7RUFDdEQsSUFBTXNCLHFCQUFxQixHQUFHMUksTUFBTSxDQUFDcUgsa0JBQWtCLENBQUM7RUFFeERwSCxTQUFTLENBQUMsWUFBTTtJQUNkd0ksb0JBQW9CLENBQUM5RyxPQUFPLEdBQUd5RixpQkFBaUI7SUFDaERzQixxQkFBcUIsQ0FBQy9HLE9BQU8sR0FBRzBGLGtCQUFrQjtFQUNwRCxDQUFDLEVBQUUsQ0FBQ0QsaUJBQWlCLEVBQUVDLGtCQUFrQixDQUFDLENBQUM7RUFFM0MsSUFBQXNCLGdCQUFBLEdBQ0V0SSxlQUFlLENBQUM7TUFDZG1HLE1BQU0sRUFBRUQsYUFBYSxJQUFJeUIsYUFBYSxDQUFDckcsT0FBTztNQUM5Q1AsV0FBVyxFQUFYQSxXQUFXO01BQ1hxRixrQkFBa0IsRUFBbEJBLGtCQUFrQjtNQUNsQnRCLE9BQU8sRUFBUEEsT0FBTztNQUNQd0IsTUFBTSxFQUFOQTtJQUNGLENBQUMsQ0FBQztJQVBJaUMsZUFBZSxHQUFBRCxnQkFBQSxDQUFmQyxlQUFlO0lBQUVDLFFBQVEsR0FBQUYsZ0JBQUEsQ0FBUkUsUUFBUTtJQUFFQyxxQkFBcUIsR0FBQUgsZ0JBQUEsQ0FBckJHLHFCQUFxQjtJQUFFQyxZQUFZLEdBQUFKLGdCQUFBLENBQVpJLFlBQVk7SUFBRUMsVUFBVSxHQUFBTCxnQkFBQSxDQUFWSyxVQUFVO0lBQUVDLGFBQWEsR0FBQU4sZ0JBQUEsQ0FBYk0sYUFBYTtJQUFFQyxZQUFZLEdBQUFQLGdCQUFBLENBQVpPLFlBQVk7RUFTL0doQixXQUFXLENBQUN2RyxPQUFPLEdBQUdrSCxRQUFRO0VBRTlCNUksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNa0osV0FBVyxHQUFHLElBQUlDLFdBQVcsQ0FBQywrQkFBK0IsRUFBRTtNQUNuRUMsTUFBTSxFQUFFO1FBQUVULGVBQWUsRUFBZkE7TUFBZ0I7SUFDNUIsQ0FBQyxDQUFDO0lBQ0ZVLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDSixXQUFXLENBQUM7RUFDckMsQ0FBQyxFQUFFLENBQUNQLGVBQWUsQ0FBQyxDQUFDO0VBRXJCM0ksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJc0csYUFBYSxJQUFJQSxhQUFhLEtBQUt5QixhQUFhLENBQUNyRyxPQUFPLEVBQUU7TUFDNUQ7TUFDQXFGLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDaEJFLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO01BQ2pCSyxlQUFlLENBQUMsSUFBSSxDQUFDO01BRXJCUyxhQUFhLENBQUNyRyxPQUFPLEdBQUc0RSxhQUFhO01BQ3JDdUIsZ0JBQWdCLENBQUNuRyxPQUFPLEdBQUd2QixNQUFNLENBQUMsQ0FBQztNQUNuQzJILG1CQUFtQixDQUFDcEcsT0FBTyxHQUFHLElBQUk7TUFDbENzRyxhQUFhLENBQUN0RyxPQUFPLEdBQUcsS0FBSztNQUM3QndHLGVBQWUsQ0FBQ3hHLE9BQU8sR0FBRyxLQUFLO01BRS9Cb0gsWUFBWSxDQUFDLENBQUM7SUFDaEI7RUFDRixDQUFDLEVBQUUsQ0FBQ3hDLGFBQWEsRUFBRVEsT0FBTyxFQUFFQyxVQUFVLEVBQUVFLFNBQVMsRUFBRUssZUFBZSxFQUFFd0IsWUFBWSxDQUFDLENBQUM7O0VBRWxGO0VBQ0E5SSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUlxSCxZQUFZLElBQUlzQixlQUFlLEVBQUU7SUFDckMsSUFBTVksa0JBQWtCLEdBQUdYLFFBQVEsQ0FBQ1ksTUFBTSxDQUFDLFVBQUFDLEdBQUc7TUFBQSxPQUFJQSxHQUFHLENBQUNDLFNBQVM7SUFBQSxFQUFDLENBQUNDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFBQyxLQUFBLEdBQW1DTCxrQkFBa0IsSUFBSSxDQUFDLENBQUM7TUFBbkRHLFNBQVMsR0FBQUUsS0FBQSxDQUFURixTQUFTO01BQUVHLFdBQVcsR0FBQUQsS0FBQSxDQUFYQyxXQUFXO0lBQzlCLElBQUksQ0FBQ0gsU0FBUyxFQUFFO0lBRWhCakMsYUFBYSxDQUFDaUMsU0FBUyxDQUFDLENBQUNJLElBQUksQ0FBQyxVQUFBQyxRQUFRLEVBQUk7TUFDeEMsSUFBTUMsS0FBSyxHQUFHRCxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRUUsSUFBSSxDQUFDLFVBQUFDLENBQUM7UUFBQSxPQUFJQyxNQUFNLENBQUNELENBQUMsQ0FBQzlJLEVBQUUsQ0FBQyxLQUFLK0ksTUFBTSxDQUFDVCxTQUFTLENBQUM7TUFBQSxFQUFDO01BQ3JFLElBQUlNLEtBQUssRUFBRTtRQUFBLElBQUFJLGFBQUE7UUFDVDlDLGVBQWUsQ0FBQztVQUNkdUMsV0FBVyxFQUFFRyxLQUFLLENBQUMxSSxJQUFJO1VBQ3ZCK0ksVUFBVSxFQUFFLEVBQUFELGFBQUEsR0FBQUosS0FBSyxDQUFDaEQsTUFBTSxjQUFBb0QsYUFBQSx1QkFBWkEsYUFBQSxDQUFjOUksSUFBSSxLQUFJLEVBQUU7VUFDcENvSSxTQUFTLEVBQUVZLE1BQU0sQ0FBQ04sS0FBSyxDQUFDNUksRUFBRTtRQUM1QixDQUFDLENBQUM7UUFDRjJGLFVBQVUsQ0FBQ2lELEtBQUssQ0FBQztNQUNuQixDQUFDLE1BQU0sSUFBSUgsV0FBVyxFQUFFO1FBQ3RCdkMsZUFBZSxDQUFDO1VBQ2R1QyxXQUFXLEVBQVhBLFdBQVc7VUFDWFEsVUFBVSxFQUFFLEVBQUU7VUFDZFgsU0FBUyxFQUFFWSxNQUFNLENBQUNaLFNBQVM7UUFDN0IsQ0FBQyxDQUFDO1FBQ0YzQyxVQUFVLENBQUM7VUFBRTNGLEVBQUUsRUFBRStJLE1BQU0sQ0FBQ1QsU0FBUyxDQUFDO1VBQUVwSSxJQUFJLEVBQUV1STtRQUFZLENBQUMsQ0FBQztNQUMxRDtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDakIsUUFBUSxFQUFFdkIsWUFBWSxFQUFFc0IsZUFBZSxFQUFFbEIsYUFBYSxFQUFFSCxlQUFlLEVBQUVQLFVBQVUsQ0FBQyxDQUFDOztFQUV6RjtFQUNBL0csU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJZ0gsTUFBTSxJQUFJMkIsZUFBZSxFQUFFO0lBQy9CLElBQU00QixpQkFBaUIsR0FBRzNCLFFBQVEsQ0FBQ1ksTUFBTSxDQUFDLFVBQUFDLEdBQUc7TUFBQSxPQUFJQSxHQUFHLENBQUNlLFFBQVEsSUFBSSxJQUFJLElBQUlmLEdBQUcsQ0FBQ1ksVUFBVTtJQUFBLEVBQUMsQ0FBQ1YsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLElBQUFjLEtBQUEsR0FBNkRGLGlCQUFpQixJQUFJLENBQUMsQ0FBQztNQUFsRUcsV0FBVyxHQUFBRCxLQUFBLENBQXJCRCxRQUFRO01BQTJCRyxhQUFhLEdBQUFGLEtBQUEsQ0FBekJKLFVBQVU7SUFDekMsSUFBSUssV0FBVyxJQUFJLElBQUksSUFBSSxDQUFDQyxhQUFhLEVBQUU7SUFFM0MxRCxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHO01BQUU3RixFQUFFLEVBQUUrSSxNQUFNLENBQUNPLFdBQVcsQ0FBQztNQUFFcEosSUFBSSxFQUFFcUo7SUFBYyxDQUFDLENBQUM7RUFDL0QsQ0FBQyxFQUFFLENBQUMvQixRQUFRLEVBQUU1QixNQUFNLEVBQUUyQixlQUFlLEVBQUUxQixTQUFTLENBQUMsQ0FBQztFQUVsRCxJQUFNMkQsaUJBQWlCLEdBQUc5SyxXQUFXLENBQ25DLFVBQUMrSyxZQUFxQixFQUFLO0lBQ3pCLElBQU1sRyxPQUFPLEdBQ1hrRyxZQUFZLEtBQUssK0RBQStELEdBQzVFakUsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEdBQzNCQSxDQUFDLENBQUMsWUFBWSxDQUFDO0lBRXJCbUMsVUFBVSxDQUFDO01BQ1QzSCxFQUFFLFlBQUEwSixNQUFBLENBQVlqRCxnQkFBZ0IsQ0FBQ25HLE9BQU8sQ0FBRTtNQUN4Q2lELE9BQU8sRUFBUEEsT0FBTztNQUNQb0csT0FBTyxFQUFFLElBQUk7TUFDYkMsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO01BQ2hCQyxJQUFJLEVBQUU7UUFBRTlKLEVBQUUsRUFBRSxXQUFXO1FBQUVFLElBQUksRUFBRTtNQUFZLENBQUM7TUFDNUM2SixJQUFJLEVBQUV0SyxlQUFlLENBQUN1SztJQUN4QixDQUFDLENBQUM7SUFDRmxELGVBQWUsQ0FBQ3hHLE9BQU8sR0FBRyxLQUFLO0VBQ2pDLENBQUMsRUFDRCxDQUFDcUgsVUFBVSxFQUFFbkMsQ0FBQyxDQUNoQixDQUFDO0VBRUQsSUFBTXlFLGtCQUFrQixHQUFHdkwsV0FBVyxDQUNwQyxVQUFDMkUsT0FBZSxFQUFFSyxPQUFZLEVBQUVDLGVBQXVCLEVBQUs7SUFDMUQsSUFBTXVHLGFBQWEsYUFBQVIsTUFBQSxDQUFhakQsZ0JBQWdCLENBQUNuRyxPQUFPLGVBQVk7SUFFcEVxSCxVQUFVLENBQUM7TUFDVDNILEVBQUUsRUFBRWtLLGFBQWE7TUFDakIzRyxPQUFPLEVBQUVGLE9BQU87TUFDaEJ1RyxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7TUFDaEJDLElBQUksRUFBRTtRQUFFOUosRUFBRSxFQUFFLFdBQVc7UUFBRUUsSUFBSSxFQUFFO01BQVksQ0FBQztNQUM1QzZKLElBQUksRUFBRXRLLGVBQWUsQ0FBQ3VLLFNBQVM7TUFDL0J0RyxPQUFPLEVBQVBBLE9BQU87TUFDUEMsZUFBZSxFQUFmQTtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUMsRUFDRCxDQUFDZ0UsVUFBVSxDQUNiLENBQUM7RUFFRCxJQUFNd0Msa0JBQWtCLEdBQUd6TCxXQUFXO0lBQUEsSUFBQTBMLEtBQUEsR0FBQXpJLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FDcEMsU0FBQXdJLFNBQU9oSCxPQUFlLEVBQUVLLE9BQVksRUFBRUMsZUFBdUI7TUFBQSxJQUFBdUcsYUFBQSxFQUFBSSxZQUFBLEVBQUFDLE9BQUEsRUFBQUMsWUFBQSxFQUFBQyxlQUFBLEVBQUFDLDRCQUFBLEVBQUFDLE9BQUEsRUFBQUMsR0FBQSxFQUFBQyxVQUFBLEVBQUFDLGtCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGdCQUFBLEVBQUFDLFNBQUEsRUFBQUMsY0FBQSxFQUFBQyxxQkFBQSxFQUFBckQsV0FBQTtNQUFBLE9BQUFsRyxtQkFBQSxDQUFBa0IsSUFBQSxXQUFBc0ksU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFwSSxJQUFBLEdBQUFvSSxTQUFBLENBQUFuSSxJQUFBO1VBQUE7WUFDckRpSCxhQUFhLGFBQUFSLE1BQUEsQ0FBYWpELGdCQUFnQixDQUFDbkcsT0FBTztZQUN4RHNILGFBQWEsQ0FBQ3NDLGFBQWEsQ0FBQzs7WUFFNUI7WUFDTUksWUFBWSxHQUFHLElBQUllLE1BQU0sQ0FBQ3pMLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztZQUN0RDJLLE9BQU8sR0FBQWUsa0JBQUEsQ0FBT2pJLE9BQU8sQ0FBQ2tJLFFBQVEsQ0FBQ2pCLFlBQVksQ0FBQztZQUU5Q0UsWUFBWSxHQUFHbkgsT0FBTztZQUNwQm9ILGVBQWUsR0FBRzVELFdBQVcsQ0FBQ3ZHLE9BQU8sQ0FBQzhILE1BQU0sQ0FBQyxVQUFBb0QsQ0FBQztjQUFBLE9BQUlBLENBQUMsQ0FBQ3hMLEVBQUUsS0FBS2tLLGFBQWE7WUFBQSxFQUFDLENBQUMzQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEZtQyw0QkFBNEIsR0FBRyxDQUFBRCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRWdCLFFBQVEsS0FBSSxJQUFJO1lBQUEsTUFDbEVsQixPQUFPLENBQUM5RixNQUFNLEdBQUcsQ0FBQyxJQUFJaUcsNEJBQTRCO2NBQUFVLFNBQUEsQ0FBQW5JLElBQUE7Y0FBQTtZQUFBO1lBQzlDMEgsT0FBTyxHQUFHSixPQUFPLENBQUNtQixHQUFHLENBQUMsVUFBQUMsS0FBSztjQUFBLE9BQUlDLFFBQVEsQ0FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUFBLEVBQUM7WUFBQVAsU0FBQSxDQUFBbkksSUFBQTtZQUFBLE9BQzFDdUQsaUJBQWlCLENBQUNtRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQTtZQUF6Q0MsR0FBRyxHQUFBUSxTQUFBLENBQUFoSCxJQUFBO1lBQ0h5RyxVQUFVLEdBQUdELEdBQUcsT0FBQWxCLE1BQUEsQ0FBT2tCLEdBQUcsSUFBSyxTQUFTO1lBQzlDSixZQUFZLEdBQUduSCxPQUFPLENBQUNwQyxPQUFPLENBQUNxSixZQUFZLEVBQUUsVUFBQXVCLEdBQUc7Y0FBQSxPQUM5Q0EsR0FBRyxDQUFDNUssT0FBTyxDQUFDLHlEQUF5RCxFQUFFNEosVUFBVSxDQUFDO1lBQUEsQ0FDcEYsQ0FBQzs7WUFFRDtZQUNNQyxrQkFBa0IsR0FBR2pFLFdBQVcsQ0FBQ3ZHLE9BQU8sQ0FBQzhILE1BQU0sQ0FBQyxVQUFBQyxHQUFHO2NBQUEsT0FBSUEsR0FBRyxDQUFDQyxTQUFTO1lBQUEsRUFBQyxDQUFDQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUV3QyxtQkFBbUIsR0FBRyxDQUFBckYsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUxRixFQUFFLE1BQUk4SyxrQkFBa0IsYUFBbEJBLGtCQUFrQix1QkFBbEJBLGtCQUFrQixDQUFFeEMsU0FBUztZQUNsRTBDLGdCQUFnQixHQUFHRCxtQkFBbUIsR0FBR2EsUUFBUSxDQUFDMUMsTUFBTSxDQUFDNkIsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJO1lBQ3pGRSxTQUFTLEdBQUdhLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxRQUFRLENBQUNMLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztZQUNsRVQsY0FBYyxHQUFHRCxTQUFTLEdBQUdXLFFBQVEsQ0FBQ1gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUk7WUFDcEUsSUFBSUQsZ0JBQWdCLElBQUlFLGNBQWMsSUFBSUYsZ0JBQWdCLEtBQUtFLGNBQWMsRUFBRTtjQUM3RSxLQUFBQyxxQkFBQSxHQUFJVyxNQUFNLENBQUNHLG1CQUFtQixjQUFBZCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEJlLDBCQUEwQixFQUFFO2dCQUMxREosTUFBTSxDQUFDRyxtQkFBbUIsQ0FBQ0MsMEJBQTBCLENBQUN2QixPQUFPLENBQUM7Y0FDaEU7WUFDRjtVQUFDO1lBR0hoRCxVQUFVLENBQUM7Y0FDVDNILEVBQUUsWUFBQTBKLE1BQUEsQ0FBWS9GLGVBQWUsQ0FBRTtjQUMvQkosT0FBTyxFQUFFaUgsWUFBWTtjQUNyQlosSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO2NBQ2hCQyxJQUFJLEVBQUU7Z0JBQUU5SixFQUFFLEVBQUUsV0FBVztnQkFBRUUsSUFBSSxFQUFFO2NBQVksQ0FBQztjQUM1QzZKLElBQUksRUFBRXRLLGVBQWUsQ0FBQ3VLLFNBQVM7Y0FDL0J0RyxPQUFPLEVBQVBBLE9BQU87Y0FDUEMsZUFBZSxFQUFmQTtZQUNGLENBQUMsQ0FBQztZQUVGbUQsZUFBZSxDQUFDeEcsT0FBTyxHQUFHLEtBQUs7WUFDL0IsSUFBSXlHLFlBQVksQ0FBQ3pHLE9BQU8sRUFBRTtjQUNsQndILFdBQVcsR0FBRyxJQUFJQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7Y0FDdERFLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDSixXQUFXLENBQUM7Y0FDbkNmLFlBQVksQ0FBQ3pHLE9BQU8sR0FBRyxLQUFLO1lBQzlCO1VBQUM7VUFBQTtZQUFBLE9BQUE4SyxTQUFBLENBQUExRyxJQUFBO1FBQUE7TUFBQSxHQUFBMkYsUUFBQTtJQUFBLENBQ0Y7SUFBQSxpQkFBQThCLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO01BQUEsT0FBQWpDLEtBQUEsQ0FBQXRGLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FDRCxDQUFDNEMsVUFBVSxFQUFFQyxhQUFhLEVBQUVsQyxPQUFPLEVBQUVjLGlCQUFpQixDQUN4RCxDQUFDO0VBRUQsSUFBTThGLGdCQUFnQixHQUFHNU4sV0FBVyxDQUFDLFlBQU07SUFDekNpSixVQUFVLENBQUM7TUFDVDNILEVBQUUsWUFBQTBKLE1BQUEsQ0FBWWpELGdCQUFnQixDQUFDbkcsT0FBTyxlQUFZO01BQ2xEaUQsT0FBTyxFQUFFaUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO01BQzVCb0UsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO01BQ2hCQyxJQUFJLEVBQUU7UUFBRTlKLEVBQUUsRUFBRSxXQUFXO1FBQUVFLElBQUksRUFBRTtNQUFZLENBQUM7TUFDNUM2SixJQUFJLEVBQUV0SyxlQUFlLENBQUN1SyxTQUFTO01BQy9CdUMsbUJBQW1CLEVBQUU7SUFDdkIsQ0FBQyxDQUFDO0lBQ0Z6RixlQUFlLENBQUN4RyxPQUFPLEdBQUcsS0FBSztJQUMvQmtNLFVBQVUsQ0FBQyxZQUFNO01BQ2YsSUFBTTFFLFdBQVcsR0FBRyxJQUFJQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7TUFDdERFLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDSixXQUFXLENBQUM7SUFDckMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztFQUNULENBQUMsRUFBRSxDQUFDSCxVQUFVLEVBQUVuQyxDQUFDLENBQUMsQ0FBQztFQUVuQixJQUFNaUgsc0JBQXNCLEdBQUcvTixXQUFXLENBQ3hDLFVBQUMrTSxRQUF5QixFQUFFbkosa0JBQTBCLEVBQUs7SUFDekQsSUFBTTRILGFBQWEsYUFBQVIsTUFBQSxDQUFhakQsZ0JBQWdCLENBQUNuRyxPQUFPLGVBQVk7SUFDcEVzSCxhQUFhLENBQUNzQyxhQUFhLENBQUM7O0lBRTVCO0lBQ0F2QyxVQUFVLENBQUM7TUFDVDNILEVBQUUsY0FBQTBKLE1BQUEsQ0FBYytCLFFBQVEsQ0FBQ2lCLGtCQUFrQixDQUFFO01BQzdDbkosT0FBTyxFQUFFakIsa0JBQWtCLElBQUksRUFBRTtNQUNqQ3NILElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztNQUNoQkMsSUFBSSxFQUFFO1FBQUU5SixFQUFFLEVBQUUsV0FBVztRQUFFRSxJQUFJLEVBQUU7TUFBWSxDQUFDO01BQzVDNkosSUFBSSxFQUFFdEssZUFBZSxDQUFDdUssU0FBUztNQUMvQnlCLFFBQVEsRUFBUkEsUUFBUTtNQUNSa0IsY0FBYyxFQUFFO0lBQ2xCLENBQUMsQ0FBQztJQUNGN0YsZUFBZSxDQUFDeEcsT0FBTyxHQUFHLEtBQUs7RUFDakMsQ0FBQyxFQUNELENBQUNxSCxVQUFVLEVBQUVDLGFBQWEsQ0FDNUIsQ0FBQztFQUVELElBQUFnRixxQkFBQSxHQU1JM04scUJBQXFCLENBQUM7TUFDeEI2RSxPQUFPLEVBQUUwRixpQkFBaUI7TUFDMUJxRCxjQUFjLEVBQUU1QyxrQkFBa0I7TUFDbEM2QyxjQUFjLEVBQUUzQyxrQkFBa0I7TUFDbEM0QyxNQUFNLEVBQUVULGdCQUFnQjtNQUN4QlUsa0JBQWtCLEVBQUVQO0lBQ3RCLENBQUMsQ0FBQztJQVhBUSxPQUFPLEdBQUFMLHFCQUFBLENBQVBLLE9BQU87SUFDSUMsZUFBZSxHQUFBTixxQkFBQSxDQUExQk8sU0FBUztJQUNUQyxTQUFTLEdBQUFSLHFCQUFBLENBQVRRLFNBQVM7SUFDVEMsY0FBYyxHQUFBVCxxQkFBQSxDQUFkUyxjQUFjO0lBQ2RDLGFBQWEsR0FBQVYscUJBQUEsQ0FBYlUsYUFBYTtFQVNmLElBQU1DLGNBQWMsR0FBRzdILE9BQU87RUFFOUIsSUFBTThILFdBQVcsR0FBRzlPLFdBQVc7SUFBQSxJQUFBK08sS0FBQSxHQUFBOUwsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUM3QixTQUFBNkwsU0FBT25LLE9BQWUsRUFBRW9LLG9CQUE0RCxFQUFFQyxLQUFjO01BQUEsSUFBQUMsWUFBQSxFQUFBQyxvQkFBQSxFQUFBQyxlQUFBO01BQUEsSUFBQUMsSUFBQSxFQUFBQyxPQUFBLEVBQUFDLFdBQUEsRUFBQUMsWUFBQSxFQUFBQyxzQkFBQSxFQUFBQyx3QkFBQSxFQUFBQyxZQUFBLEVBQUFDLHFCQUFBLEVBQUFDLE9BQUEsRUFBQXhELGdCQUFBLEVBQUF5RCxvQkFBQSxFQUFBQyxnQkFBQSxFQUFBdkwsTUFBQSxFQUFBd0YsUUFBQSxFQUFBZ0csWUFBQSxFQUFBQyxXQUFBO01BQUEsT0FBQWhOLG1CQUFBLENBQUFrQixJQUFBLFdBQUErTCxTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQTdMLElBQUEsR0FBQTZMLFNBQUEsQ0FBQTVMLElBQUE7VUFBQTtZQUFBLE1BQzlGNkQsZUFBZSxDQUFDeEcsT0FBTyxJQUFJNE0sZUFBZSxJQUFJM0YsZUFBZTtjQUFBc0gsU0FBQSxDQUFBNUwsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBNEwsU0FBQSxDQUFBeEssTUFBQTtVQUFBO1lBSTNEMkosSUFBSSxHQUFHTCxvQkFBb0IsYUFBcEJBLG9CQUFvQixjQUFwQkEsb0JBQW9CLEdBQUksQ0FBQyxDQUFDO1lBQ2pDTSxPQUEyQixHQUFHYSxLQUFLLENBQUNDLE9BQU8sQ0FBQ3BCLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUlLLElBQTJCO1lBQ3JHRSxXQUFXLEdBQUdZLEtBQUssQ0FBQ0MsT0FBTyxDQUFDcEIsb0JBQW9CLENBQUMsR0FDbkRBLG9CQUFvQixJQUFBRSxZQUFBLEdBQ2xCRyxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBeUJFLFdBQVcsY0FBQUwsWUFBQSxjQUFBQSxZQUFBLEdBQUksRUFBRztZQUVyRC9HLGVBQWUsQ0FBQ3hHLE9BQU8sR0FBRyxJQUFJO1lBQ3hCNk4sWUFBWSxHQUFHcFAsTUFBTSxDQUFDLENBQUM7WUFDN0IwSCxnQkFBZ0IsQ0FBQ25HLE9BQU8sR0FBRzZOLFlBQVk7WUFDdkN6SCxtQkFBbUIsQ0FBQ3BHLE9BQU8sR0FBR2lELE9BQU87WUFFckMsSUFBSSxDQUFDcUQsYUFBYSxDQUFDdEcsT0FBTyxFQUFFO2NBQzFCNkYsS0FBSyxDQUFDOUcsTUFBTSxDQUFDMlAsYUFBYSxDQUFDO2NBQzNCcEksYUFBYSxDQUFDdEcsT0FBTyxHQUFHLElBQUk7WUFDOUI7O1lBRUE7WUFDTThOLHNCQUFzQixHQUFHdkgsV0FBVyxDQUFDdkcsT0FBTyxDQUFDOEgsTUFBTSxDQUFDLFVBQUFDLEdBQUc7Y0FBQSxPQUFJQSxHQUFHLENBQUNDLFNBQVM7WUFBQSxFQUFDLENBQUNDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoRjhGLHdCQUF3QixJQUFBUCxvQkFBQSxHQUFHakgsV0FBVyxDQUFDdkcsT0FBTyxjQUFBd04sb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQW5CQSxvQkFBQSxDQUFzQmpILFdBQVcsQ0FBQ3ZHLE9BQU8sQ0FBQ21FLE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBQXFKLG9CQUFBLHVCQUFyREEsb0JBQUEsQ0FBdURtQixPQUFPLEVBRS9GO1lBQ0F0SCxVQUFVLENBQUM7Y0FDVDNILEVBQUUsY0FBQTBKLE1BQUEsQ0FBY2pELGdCQUFnQixDQUFDbkcsT0FBTyxDQUFFO2NBQzFDaUQsT0FBTyxFQUFQQSxPQUFPO2NBQ1BxRyxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7Y0FDaEJDLElBQUksRUFBRS9KLFdBQVc7Y0FDakJnSyxJQUFJLEVBQUV0SyxlQUFlLENBQUN5UCxJQUFJO2NBQzFCeEwsT0FBTyxFQUFFb0wsS0FBSyxDQUFDQyxPQUFPLENBQUNwQixvQkFBb0IsQ0FBQyxHQUFHQSxvQkFBb0IsR0FBR087WUFDeEUsQ0FBQyxDQUFDO1lBRUZ6SCxnQkFBZ0IsQ0FBQ25HLE9BQU8sR0FBR3ZCLE1BQU0sQ0FBQyxDQUFDO1lBQy9CdVAsWUFBWSxHQUFHL0ssT0FBTztZQUUxQixJQUFJQSxPQUFPLEtBQUtpQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsRUFBRTtjQUNuRDhJLFlBQVksV0FBQTVFLE1BQUEsQ0FBV2xFLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQywrQkFBQWtFLE1BQUEsQ0FDeEQsRUFBQTZFLHFCQUFBLEdBQUFOLE9BQU8sQ0FBQ2tCLGNBQWMsY0FBQVoscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QmEsVUFBVSxNQUFJMUosT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUwSixVQUFVLEVBQ3pEO1lBQ0o7WUFFTVosT0FBTyxHQUFHM0gsV0FBVyxDQUFDdkcsT0FBTyxDQUFDb0wsR0FBRyxDQUFDLFVBQUEyRCxjQUFjO2NBQUEsT0FBSztnQkFDekRoTSxPQUFPLEVBQUVnTSxjQUFjLENBQUM5TCxPQUFPO2dCQUMvQndHLElBQUksRUFBRXNGLGNBQWMsQ0FBQ3ZGLElBQUksQ0FBQzlKLEVBQUUsS0FBS0YsUUFBUSxDQUFDRSxFQUFFLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEdBQUdSLGVBQWUsQ0FBQ3lQLElBQUksR0FBR3pQLGVBQWUsQ0FBQ3VLO2NBQ25HLENBQUM7WUFBQSxDQUFDLENBQUMsRUFFSDtZQUNNZ0IsZ0JBQWdCLEdBQUd0RixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTFGLEVBQUU7WUFDOUJ5TyxvQkFBb0IsR0FBR0wsc0JBQXNCLGFBQXRCQSxzQkFBc0IsdUJBQXRCQSxzQkFBc0IsQ0FBRTlGLFNBQVM7WUFFMURvRyxnQkFBK0IsR0FBRyxJQUFJLEVBRTFDO1lBQ0EsSUFBSUQsb0JBQW9CLElBQUksSUFBSSxFQUFFO2NBQzFCdEwsTUFBTSxHQUFHNEYsTUFBTSxDQUFDMEYsb0JBQW9CLENBQUM7Y0FDM0NDLGdCQUFnQixHQUFHM0YsTUFBTSxDQUFDdUcsUUFBUSxDQUFDbk0sTUFBTSxDQUFDLEdBQUdBLE1BQU0sR0FBRyxJQUFJO1lBQzVEO1lBQ0E7WUFBQSxLQUNLLElBQUk2SCxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7Y0FDakMwRCxnQkFBZ0IsR0FBRzFELGdCQUFnQjtZQUNyQztZQUFDNkQsU0FBQSxDQUFBNUwsSUFBQTtZQUFBLE9BRXNCb0QsYUFBYSxDQUFDLENBQUNxSSxnQkFBZ0IsQ0FBQyxDQUFDO1VBQUE7WUFBbEQvRixRQUFRLEdBQUFrRyxTQUFBLENBQUF6SyxJQUFBO1lBRVJ1SyxZQUFZLEdBQUdmLEtBQUssYUFBTEEsS0FBSyxjQUFMQSxLQUFLLEdBQUlLLE9BQU8sQ0FBQ0wsS0FBSztZQUVyQ2dCLFdBQVcsR0FBQVcsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQTtjQUNmaE0sT0FBTyxFQUFFK0ssWUFBWTtjQUNyQkUsT0FBTyxFQUFQQSxPQUFPO2NBQ1BsRyxTQUFTLEVBQUVvRyxnQkFBZ0I7Y0FDM0JjLElBQUksRUFBRTFQLFFBQVEsQ0FBQzBQLElBQUk7Y0FDbkJDLE1BQU0sRUFBRTNQLFFBQVEsQ0FBQ0UsRUFBRSxDQUFDQyxRQUFRLENBQUMsQ0FBQztjQUM5QnlQLFNBQVMsRUFBRTVQLFFBQVEsQ0FBQzZQLFVBQVUsQ0FBQzFQLFFBQVEsQ0FBQyxDQUFDO2NBQ3pDa0YsTUFBTSxFQUFFd0IsYUFBYSxDQUFDckcsT0FBTztjQUM3QnNQLFNBQVMsRUFBRW5KLGdCQUFnQixDQUFDbkcsT0FBTztjQUNuQ3VQLFNBQVMsRUFBRSxDQUFBL0osS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU1RixJQUFJLEtBQUksRUFBRTtjQUM1QitPLE9BQU8sRUFBRVosd0JBQXdCLEtBQUl2SSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTlGLEVBQUUsQ0FBQztjQUMvQytGLGlCQUFpQixFQUFFcUIsb0JBQW9CLENBQUM5RyxPQUFPO2NBQy9DMEYsa0JBQWtCLEVBQUVxQixxQkFBcUIsQ0FBQy9HO1lBQU8sR0FDN0NzRixNQUFNLGFBQU5BLE1BQU0sZUFBTkEsTUFBTSxDQUFFNUYsRUFBRSxHQUFBdVAsYUFBQTtjQUNSbkcsUUFBUSxFQUFFeEQsTUFBTSxDQUFDNUY7WUFBRSxHQUFNNEYsTUFBTSxDQUFDMUYsSUFBSSxHQUFHO2NBQUUrSSxVQUFVLEVBQUVyRCxNQUFNLENBQUMxRjtZQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFDekV3RixPQUFPLGFBQVBBLE9BQU8sZ0JBQUFxSSxlQUFBLEdBQVBySSxPQUFPLENBQUVFLE1BQU0sY0FBQW1JLGVBQUEsZUFBZkEsZUFBQSxDQUFpQi9OLEVBQUUsR0FBQXVQLGFBQUE7Y0FDZm5HLFFBQVEsRUFBRTFELE9BQU8sQ0FBQ0UsTUFBTSxDQUFDNUY7WUFBRSxHQUFNMEYsT0FBTyxDQUFDRSxNQUFNLENBQUMxRixJQUFJLEdBQUc7Y0FBRStJLFVBQVUsRUFBRXZELE9BQU8sQ0FBQ0UsTUFBTSxDQUFDMUY7WUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ2pHLENBQUMsQ0FBQyxHQUNKeUksUUFBUSxhQUFSQSxRQUFRLGVBQVJBLFFBQVEsQ0FBRWxFLE1BQU0sR0FBRztjQUFFZ0UsV0FBVyxFQUFFRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUN6STtZQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDekRnTyxXQUFXLENBQUN6SixNQUFNLEdBQUcsQ0FBQyxHQUFHO2NBQUV5SixXQUFXLEVBQVhBO1lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUM3Q1MsWUFBWSxHQUFHO2NBQUVmLEtBQUssRUFBRWU7WUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBR2pEMUIsT0FBTyxDQUFDMkIsV0FBVyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUFDLFNBQUEsQ0FBQW5LLElBQUE7UUFBQTtNQUFBLEdBQUFnSixRQUFBO0lBQUEsQ0FDckI7SUFBQSxpQkFBQW9DLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO01BQUEsT0FBQXZDLEtBQUEsQ0FBQTNJLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FDRCxDQUNFNEMsVUFBVSxFQUNWeEIsS0FBSyxFQUNMOEcsT0FBTyxFQUNQdkgsT0FBTyxFQUNQRSxNQUFNLEVBQ045RixRQUFRLEVBQ1JnRyxLQUFLLEVBQ0xOLENBQUMsRUFDRDBILGVBQWUsRUFDZjNGLGVBQWUsRUFDZnhCLGlCQUFpQixFQUNqQkMsa0JBQWtCLENBRXRCLENBQUM7RUFFRCxJQUFNaUssYUFBYSxHQUFHdlIsV0FBVyxDQUMvQixVQUFDd1IsTUFBZSxFQUFLO0lBQ25CLElBQUksQ0FBQ3hKLG1CQUFtQixDQUFDcEcsT0FBTyxFQUFFO0lBRWxDLElBQUk0UCxNQUFNLENBQUNsUSxFQUFFLE1BQUswRixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTFGLEVBQUUsR0FBRTtNQUM3QjJGLFVBQVUsQ0FBQ3VLLE1BQU0sQ0FBQztJQUNwQjtJQUVBLElBQUl4SyxPQUFPLElBQUlnQixtQkFBbUIsQ0FBQ3BHLE9BQU8sRUFBRTtNQUMxQyxJQUFNa08sT0FBTyxHQUFHM0gsV0FBVyxDQUFDdkcsT0FBTyxDQUFDb0wsR0FBRyxDQUFDLFVBQUEyRCxjQUFjO1FBQUEsT0FBSztVQUN6RGhNLE9BQU8sRUFBRWdNLGNBQWMsQ0FBQzlMLE9BQU87VUFDL0J3RyxJQUFJLEVBQUVzRixjQUFjLENBQUN2RixJQUFJLENBQUM5SixFQUFFLEtBQUtGLFFBQVEsQ0FBQ0UsRUFBRSxDQUFDQyxRQUFRLENBQUMsQ0FBQyxHQUFHUixlQUFlLENBQUN5UCxJQUFJLEdBQUd6UCxlQUFlLENBQUN1SztRQUNuRyxDQUFDO01BQUEsQ0FBQyxDQUFDO01BRUhpRCxPQUFPLENBQUM7UUFDTjFKLE9BQU8sRUFBRW1ELG1CQUFtQixDQUFDcEcsT0FBTztRQUNwQ2tPLE9BQU8sRUFBUEEsT0FBTztRQUNQbEcsU0FBUyxFQUFFNEgsTUFBTSxDQUFDbFEsRUFBRTtRQUNwQndQLElBQUksRUFBRTFQLFFBQVEsQ0FBQzBQLElBQUk7UUFDbkJDLE1BQU0sRUFBRTNQLFFBQVEsQ0FBQ0UsRUFBRSxDQUFDQyxRQUFRLENBQUMsQ0FBQztRQUM5QnlQLFNBQVMsRUFBRTVQLFFBQVEsQ0FBQzZQLFVBQVUsQ0FBQzFQLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDa0YsTUFBTSxFQUFFd0IsYUFBYSxDQUFDckcsT0FBTztRQUM3QnNQLFNBQVMsRUFBRW5KLGdCQUFnQixDQUFDbkcsT0FBTztRQUNuQ3VQLFNBQVMsRUFBRSxDQUFBL0osS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU1RixJQUFJLEtBQUksRUFBRTtRQUM1QitPLE9BQU8sRUFBRSxDQUFBbkosS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU5RixFQUFFLEtBQUksRUFBRTtRQUN4QitGLGlCQUFpQixFQUFFcUIsb0JBQW9CLENBQUM5RyxPQUFPO1FBQy9DMEYsa0JBQWtCLEVBQUVxQixxQkFBcUIsQ0FBQy9HO01BQzVDLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxFQUNELENBQUNvRixPQUFPLEVBQUVDLFVBQVUsRUFBRXNILE9BQU8sRUFBRW5OLFFBQVEsRUFBRWlHLGlCQUFpQixDQUM1RCxDQUFDO0VBRUQsSUFBTW9LLGNBQWMsR0FBR3pSLFdBQVc7SUFBQSxJQUFBMFIsS0FBQSxHQUFBek8saUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFDLFNBQUF3TyxTQUFPQyxZQUFzQixFQUFFQyxhQUFxQjtNQUFBLElBQUF4TyxRQUFBO01BQUEsT0FBQUgsbUJBQUEsQ0FBQWtCLElBQUEsV0FBQTBOLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBeE4sSUFBQSxHQUFBd04sU0FBQSxDQUFBdk4sSUFBQTtVQUFBO1lBQUF1TixTQUFBLENBQUF2TixJQUFBO1lBQUEsT0FDOUQxRCxJQUFJLENBQUNrUixLQUFLLENBQUNDLGNBQWMsQ0FBQ0gsYUFBYSxFQUFFRCxZQUFZLEtBQUs5USxRQUFRLENBQUNtUixTQUFTLENBQUM7VUFBQTtZQUE5RjVPLFFBQVEsR0FBQXlPLFNBQUEsQ0FBQXBNLElBQUE7WUFDZCxJQUFJckMsUUFBUSxFQUFFO2NBQ1o4RSxXQUFXLENBQUN2RyxPQUFPLEdBQUd1RyxXQUFXLENBQUN2RyxPQUFPLENBQUNvTCxHQUFHLENBQUMsVUFBQW5JLE9BQU8sRUFBSTtnQkFDdkQsSUFBSUEsT0FBTyxDQUFDdkQsRUFBRSxLQUFLdVEsYUFBYSxJQUFJaE4sT0FBTyxDQUFDd0csSUFBSSxLQUFLLFdBQVcsRUFBRTtrQkFDaEUsT0FBQXdGLGFBQUEsQ0FBQUEsYUFBQSxLQUFZaE0sT0FBTztvQkFBRXFOLFVBQVUsRUFBRU4sWUFBWSxLQUFLOVEsUUFBUSxDQUFDbVI7a0JBQVM7Z0JBQ3RFO2dCQUNBLE9BQU9wTixPQUFPO2NBQ2hCLENBQUMsQ0FBQztZQUNKO1VBQUM7VUFBQTtZQUFBLE9BQUFpTixTQUFBLENBQUE5TCxJQUFBO1FBQUE7TUFBQSxHQUFBMkwsUUFBQTtJQUFBLENBQ0Y7SUFBQSxpQkFBQVEsR0FBQSxFQUFBQyxHQUFBO01BQUEsT0FBQVYsS0FBQSxDQUFBdEwsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1nTSxzQkFBc0IsR0FBR3JTLFdBQVc7SUFBQSxJQUFBc1MsS0FBQSxHQUFBclAsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUN4QyxTQUFBb1AsU0FDRWpQLFFBQWdCLEVBQ2hCa1AsUUFBOEIsRUFDOUJDLGFBQTJFO01BQUEsSUFBQUMsbUJBQUEsRUFBQTNGLFFBQUEsRUFBQW1FLFNBQUEsRUFBQXlCLGVBQUEsRUFBQUMsU0FBQSxFQUFBdlAsUUFBQSxFQUFBd1AsRUFBQTtNQUFBLE9BQUEzUCxtQkFBQSxDQUFBa0IsSUFBQSxXQUFBME8sU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUF4TyxJQUFBLEdBQUF3TyxTQUFBLENBQUF2TyxJQUFBO1VBQUE7WUFFM0U7WUFDTW1PLG1CQUFtQixHQUFHdkssV0FBVyxDQUFDdkcsT0FBTyxDQUFDdUksSUFBSSxDQUFDLFVBQUEyQyxDQUFDO2NBQUEsSUFBQWlHLFdBQUE7Y0FBQSxRQUFBQSxXQUFBLEdBQ3BEakcsQ0FBQyxDQUFDQyxRQUFRLGNBQUFnRyxXQUFBLGdCQUFBQSxXQUFBLEdBQVZBLFdBQUEsQ0FBWUMsZUFBZSxjQUFBRCxXQUFBLHVCQUEzQkEsV0FBQSxDQUE2QkUsSUFBSSxDQUFDLFVBQUFDLE1BQU07Z0JBQUEsT0FBSUEsTUFBTSxDQUFDQyxTQUFTLEtBQUs3UCxRQUFRO2NBQUEsRUFBQztZQUFBLENBQzVFLENBQUM7WUFBQSxNQUVHLENBQUNvUCxtQkFBbUIsSUFBSSxDQUFDQSxtQkFBbUIsQ0FBQzNGLFFBQVE7Y0FBQStGLFNBQUEsQ0FBQXZPLElBQUE7Y0FBQTtZQUFBO1lBQ3ZEMUIsT0FBTyxDQUFDQyxLQUFLLENBQUMscURBQXFELEVBQUVRLFFBQVEsQ0FBQztZQUFBLE9BQUF3UCxTQUFBLENBQUFuTixNQUFBO1VBQUE7WUFJeEVvSCxRQUFRLEdBQUsyRixtQkFBbUIsQ0FBaEMzRixRQUFRO1lBQ1ZtRSxTQUFTLEdBQUd3QixtQkFBbUIsQ0FBQ3BSLEVBQUUsRUFFeEM7WUFDQTZHLFdBQVcsQ0FBQ3ZHLE9BQU8sR0FBR3VHLFdBQVcsQ0FBQ3ZHLE9BQU8sQ0FBQ29MLEdBQUcsQ0FBQyxVQUFBbkksT0FBTyxFQUFJO2NBQ3ZELElBQUlBLE9BQU8sQ0FBQ3ZELEVBQUUsS0FBSzRQLFNBQVMsRUFBRTtnQkFDNUIsSUFBTTBCLFNBQVMsR0FBR0osUUFBUSxLQUFLLFNBQVMsR0FBRyxVQUFVLEdBQUcsVUFBVTtnQkFDbEUsT0FBQTNCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZaE0sT0FBTztrQkFBRW9KLGNBQWMsRUFBRTJFO2dCQUFTO2NBQ2hEO2NBQ0EsT0FBTy9OLE9BQU87WUFDaEIsQ0FBQyxDQUFDOztZQUVGO1lBQ004TixlQUFlLEdBQUd4SyxXQUFXLENBQUN2RyxPQUFPLENBQUN1SSxJQUFJLENBQUMsVUFBQTJDLENBQUM7Y0FBQSxPQUFJQSxDQUFDLENBQUN4TCxFQUFFLEtBQUs0UCxTQUFTO1lBQUEsRUFBQztZQUN6RSxJQUFJeUIsZUFBZSxFQUFFO2NBQ2JDLFNBQVMsR0FBR0osUUFBUSxLQUFLLFNBQVMsR0FBRyxVQUFVLEdBQUcsVUFBVTtjQUNsRXZKLFVBQVUsQ0FBQTRILGFBQUEsQ0FBQUEsYUFBQSxLQUFNOEIsZUFBZTtnQkFBRTFFLGNBQWMsRUFBRTJFO2NBQVMsRUFBRSxDQUFDO1lBQy9EOztZQUVBO1lBQ0F4SyxlQUFlLENBQUN4RyxPQUFPLEdBQUcsSUFBSTtZQUM5Qm1HLGdCQUFnQixDQUFDbkcsT0FBTyxHQUFHdkIsTUFBTSxDQUFDLENBQUM7O1lBRW5DO1lBQ0FvSSxpQkFBaUIsQ0FBQyxVQUFBbkUsSUFBSTtjQUFBLE9BQUF1TSxhQUFBLENBQUFBLGFBQUEsS0FDakJ2TSxJQUFJLE9BQUE4TyxlQUFBLEtBQ045UCxRQUFRLEVBQUcsZUFBZTtZQUFBLENBQzNCLENBQUM7WUFBQXdQLFNBQUEsQ0FBQXhPLElBQUE7WUFBQXdPLFNBQUEsQ0FBQXZPLElBQUE7WUFBQSxPQUdzQjFELElBQUksQ0FBQ3dTLFlBQVksQ0FBQ0MsY0FBYyxDQUFDO2NBQ3REaFEsUUFBUSxFQUFSQSxRQUFRO2NBQUU7Y0FDVmlRLFNBQVMsRUFBRXhHLFFBQVEsQ0FBQ3lHLFVBQVU7Y0FDOUJoQixRQUFRLEVBQUVDLGFBQWEsR0FBRyxNQUFNLEdBQUdELFFBQVE7Y0FDM0NDLGFBQWEsRUFBYkEsYUFBYTtjQUNibEMsT0FBTyxFQUFFLENBQUFuSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTlGLEVBQUUsS0FBSSxFQUFFO2NBQ3hCd1AsSUFBSSxFQUFFMVAsUUFBUSxDQUFDMFA7WUFDakIsQ0FBQyxDQUFDO1VBQUE7WUFQSXpOLFFBQVEsR0FBQXlQLFNBQUEsQ0FBQXBOLElBQUE7WUFBQSxJQVNUckMsUUFBUSxDQUFDb1EsRUFBRTtjQUFBWCxTQUFBLENBQUF2TyxJQUFBO2NBQUE7WUFBQTtZQUNkdUcsaUJBQWlCLENBQUMsQ0FBQztZQUNuQjtZQUNBckMsaUJBQWlCLENBQUMsVUFBQW5FLElBQUksRUFBSTtjQUN4QixJQUFNb1AsV0FBVyxHQUFBN0MsYUFBQSxLQUFRdk0sSUFBSSxDQUFFO2NBQy9CLE9BQU9vUCxXQUFXLENBQUNwUSxRQUFRLENBQUM7Y0FDNUIsT0FBT29RLFdBQVc7WUFDcEIsQ0FBQyxDQUFDO1lBQUEsT0FBQVosU0FBQSxDQUFBbk4sTUFBQTtVQUFBO1lBQUFtTixTQUFBLENBQUF2TyxJQUFBO1lBQUEsT0FLRXhCLGdCQUFnQixDQUFDTSxRQUFRLEVBQUVDLFFBQVEsRUFBRTtjQUN6Q3NCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFHRCxPQUFlLEVBQUs7Z0JBQzVCNEcsa0JBQWtCLENBQUM1RyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztjQUN2QyxDQUFDO2NBQ0RHLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFHRCxPQUFlLEVBQUU4TyxlQUF1QixFQUFLO2dCQUNwRGxMLGlCQUFpQixDQUFDLFVBQUFuRSxJQUFJO2tCQUFBLE9BQUF1TSxhQUFBLENBQUFBLGFBQUEsS0FDakJ2TSxJQUFJLE9BQUE4TyxlQUFBLEtBQ05PLGVBQWUsRUFBRzlPLE9BQU87Z0JBQUEsQ0FDMUIsQ0FBQztjQUNMLENBQUM7Y0FDRE0sVUFBVSxFQUFFLFNBQVpBLFVBQVVBLENBQUdKLFlBQW9CLEVBQUVDLE9BQVksRUFBRUMsZUFBdUIsRUFBRTBPLGVBQXVCLEVBQUs7Z0JBQ3BHbEksa0JBQWtCLENBQUMxRyxZQUFZLEVBQUVDLE9BQU8sRUFBRUMsZUFBZSxDQUFDO2dCQUMxRHdELGlCQUFpQixDQUFDLFVBQUFuRSxJQUFJLEVBQUk7a0JBQ3hCLElBQU1vUCxXQUFXLEdBQUE3QyxhQUFBLEtBQVF2TSxJQUFJLENBQUU7a0JBQy9CLE9BQU9vUCxXQUFXLENBQUNDLGVBQWUsQ0FBQztrQkFDbkMsT0FBT0QsV0FBVztnQkFDcEIsQ0FBQyxDQUFDO2NBQ0osQ0FBQztjQUNEdE8sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUd0QyxLQUFVLEVBQUU2USxlQUF1QixFQUFLO2dCQUNoRDlRLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLFlBQVksRUFBRUEsS0FBSyxDQUFDO2dCQUNsQ2dJLGlCQUFpQixDQUFDLENBQUM7Z0JBQ25CckMsaUJBQWlCLENBQUMsVUFBQW5FLElBQUksRUFBSTtrQkFDeEIsSUFBTW9QLFdBQVcsR0FBQTdDLGFBQUEsS0FBUXZNLElBQUksQ0FBRTtrQkFDL0IsT0FBT29QLFdBQVcsQ0FBQ0MsZUFBZSxDQUFDO2tCQUNuQyxPQUFPRCxXQUFXO2dCQUNwQixDQUFDLENBQUM7Y0FDSjtZQUNGLENBQUMsQ0FBQztVQUFBO1lBQUFaLFNBQUEsQ0FBQXZPLElBQUE7WUFBQTtVQUFBO1lBQUF1TyxTQUFBLENBQUF4TyxJQUFBO1lBQUF1TyxFQUFBLEdBQUFDLFNBQUE7WUFFRmhJLGlCQUFpQixDQUFDLENBQUM7WUFDbkI7WUFDQXJDLGlCQUFpQixDQUFDLFVBQUFuRSxJQUFJLEVBQUk7Y0FDeEIsSUFBTW9QLFdBQVcsR0FBQTdDLGFBQUEsS0FBUXZNLElBQUksQ0FBRTtjQUMvQixPQUFPb1AsV0FBVyxDQUFDcFEsUUFBUSxDQUFDO2NBQzVCLE9BQU9vUSxXQUFXO1lBQ3BCLENBQUMsQ0FBQztVQUFBO1VBQUE7WUFBQSxPQUFBWixTQUFBLENBQUE5TSxJQUFBO1FBQUE7TUFBQSxHQUFBdU0sUUFBQTtJQUFBLENBRUw7SUFBQSxpQkFBQXFCLElBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBO01BQUEsT0FBQXhCLEtBQUEsQ0FBQWxNLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FDRCxDQUFDakYsUUFBUSxFQUFFZ0csS0FBSyxFQUFFNkIsVUFBVSxFQUFFNkIsaUJBQWlCLEVBQUVTLGtCQUFrQixFQUFFRSxrQkFBa0IsQ0FDekYsQ0FBQztFQUVELElBQU1zSSxjQUFjLEdBQUcvVCxXQUFXLGNBQUFpRCxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUMsU0FBQTZRLFNBQUE7SUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBcEUsT0FBQTtJQUFBLE9BQUE1TSxtQkFBQSxDQUFBa0IsSUFBQSxXQUFBK1AsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUE3UCxJQUFBLEdBQUE2UCxTQUFBLENBQUE1UCxJQUFBO1FBQUE7VUFDakMsSUFBSSxDQUFDOEQsWUFBWSxDQUFDekcsT0FBTyxFQUFFO1lBQ3pCeUcsWUFBWSxDQUFDekcsT0FBTyxHQUFHLElBQUk7VUFDN0I7VUFBQyxLQUNHNEUsYUFBYTtZQUFBMk4sU0FBQSxDQUFBNVAsSUFBQTtZQUFBO1VBQUE7VUFBQTRQLFNBQUEsQ0FBQTVQLElBQUE7VUFBQSxPQUNUeUUsWUFBWSxDQUFDLENBQUM7UUFBQTtVQUFBbUwsU0FBQSxDQUFBNVAsSUFBQTtVQUFBO1FBQUE7VUFDZixJQUFJbUMsa0JBQWtCLEVBQUU7WUFDdkJvSixPQUFPLEdBQUczSCxXQUFXLENBQUN2RyxPQUFPLENBQUNvTCxHQUFHLENBQUMsVUFBQTJELGNBQWM7Y0FBQSxPQUFLO2dCQUN6RGhNLE9BQU8sRUFBRWdNLGNBQWMsQ0FBQzlMLE9BQU87Z0JBQy9Cd0csSUFBSSxFQUFFc0YsY0FBYyxDQUFDdkYsSUFBSSxDQUFDOUosRUFBRSxLQUFLRixRQUFRLENBQUNFLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsR0FBR1IsZUFBZSxDQUFDeVAsSUFBSSxHQUFHelAsZUFBZSxDQUFDdUs7Y0FDbkcsQ0FBQztZQUFBLENBQUMsQ0FBQztZQUVIaUQsT0FBTyxDQUFBc0MsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBO2NBQ0xoTSxPQUFPLEVBQUU2QixrQkFBa0IsQ0FBQzdCLE9BQU87Y0FDbkNpTCxPQUFPLEVBQVBBLE9BQU87Y0FDUGxHLFNBQVMsRUFBRSxDQUFBNUMsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUxRixFQUFFLEtBQUksSUFBSTtjQUM5QndQLElBQUksRUFBRTFQLFFBQVEsQ0FBQzBQLElBQUk7Y0FDbkJDLE1BQU0sRUFBRTNQLFFBQVEsQ0FBQ0UsRUFBRSxDQUFDQyxRQUFRLENBQUMsQ0FBQztjQUM5QnlQLFNBQVMsRUFBRTVQLFFBQVEsQ0FBQzZQLFVBQVUsQ0FBQzFQLFFBQVEsQ0FBQyxDQUFDO2NBQ3pDa0YsTUFBTSxFQUFFd0IsYUFBYSxDQUFDckcsT0FBTztjQUM3QnNQLFNBQVMsRUFBRW5KLGdCQUFnQixDQUFDbkcsT0FBTztjQUNuQ3VQLFNBQVMsRUFBRS9KLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNUYsSUFBSztjQUN2QitPLE9BQU8sRUFBRW5KLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFOUYsRUFBRztjQUNuQitGLGlCQUFpQixFQUFFcUIsb0JBQW9CLENBQUM5RyxPQUFPO2NBQy9DMEYsa0JBQWtCLEVBQUVxQixxQkFBcUIsQ0FBQy9HO1lBQU8sR0FDN0NzRixNQUFNLGFBQU5BLE1BQU0sZUFBTkEsTUFBTSxDQUFFNUYsRUFBRSxHQUFHO2NBQUVvSixRQUFRLEVBQUV4RCxNQUFNLENBQUM1RjtZQUFHLENBQUMsR0FBRzBGLE9BQU8sYUFBUEEsT0FBTyxnQkFBQWlOLGdCQUFBLEdBQVBqTixPQUFPLENBQUVFLE1BQU0sY0FBQStNLGdCQUFBLGVBQWZBLGdCQUFBLENBQWlCM1MsRUFBRSxHQUFHO2NBQUVvSixRQUFRLEVBQUUxRCxPQUFPLENBQUNFLE1BQU0sQ0FBQzVGO1lBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNqRzBGLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUV4RixJQUFJLEdBQUc7Y0FBRXVJLFdBQVcsRUFBRS9DLE9BQU8sQ0FBQ3hGO1lBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNsRHdGLE9BQU8sYUFBUEEsT0FBTyxnQkFBQWtOLGdCQUFBLEdBQVBsTixPQUFPLENBQUVFLE1BQU0sY0FBQWdOLGdCQUFBLGVBQWZBLGdCQUFBLENBQWlCMVMsSUFBSSxHQUNyQjtjQUFFK0ksVUFBVSxFQUFFdkQsT0FBTyxDQUFDRSxNQUFNLENBQUMxRjtZQUFLLENBQUMsR0FDbkMwRixNQUFNLGFBQU5BLE1BQU0sZUFBTkEsTUFBTSxDQUFFMUYsSUFBSSxHQUNWO2NBQUUrSSxVQUFVLEVBQUVyRCxNQUFNLENBQUMxRjtZQUFLLENBQUMsR0FDM0IsQ0FBQyxDQUFDLEdBQ0prRixrQkFBa0IsQ0FBQzhJLFdBQVcsR0FBRztjQUFFQSxXQUFXLEVBQUU5SSxrQkFBa0IsQ0FBQzhJO1lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNyRjlJLGtCQUFrQixDQUFDd0ksS0FBSyxHQUFHO2NBQUVBLEtBQUssRUFBRXhJLGtCQUFrQixDQUFDd0k7WUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3hFLENBQUM7VUFDSjtRQUFDO1FBQUE7VUFBQSxPQUFBaUYsU0FBQSxDQUFBbk8sSUFBQTtNQUFBO0lBQUEsR0FBQWdPLFFBQUE7RUFBQSxDQUNGLElBQUUsQ0FDRHhOLGFBQWEsRUFDYkUsa0JBQWtCLEVBQ2xCTSxPQUFPLEVBQ1BFLE1BQU0sRUFDTjlGLFFBQVEsRUFDUmdHLEtBQUssRUFDTG1ILE9BQU8sRUFDUGxILGlCQUFpQixFQUNqQkMsa0JBQWtCLENBQ25CLENBQUM7RUFFRixJQUFNOE0sU0FBUyxHQUFHcFUsV0FBVyxDQUFDLFlBQU07SUFDbEMrSCxnQkFBZ0IsQ0FBQ25HLE9BQU8sR0FBR3ZCLE1BQU0sQ0FBQyxDQUFDO0lBQ25DMkgsbUJBQW1CLENBQUNwRyxPQUFPLEdBQUcsSUFBSTtJQUNsQ3FHLGFBQWEsQ0FBQ3JHLE9BQU8sR0FBR3ZCLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDNkgsYUFBYSxDQUFDdEcsT0FBTyxHQUFHLEtBQUs7RUFDL0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU15UyxjQUFjLEdBQUdyVSxXQUFXLENBQUMsWUFBTTtJQUN2QzRPLGFBQWEsQ0FBQyxDQUFDO0lBQ2Z4RyxlQUFlLENBQUN4RyxPQUFPLEdBQUcsS0FBSztFQUNqQyxDQUFDLEVBQUUsQ0FBQ2dOLGFBQWEsQ0FBQyxDQUFDO0VBRW5CLE9BQU87SUFDTDlGLFFBQVEsRUFBUkEsUUFBUTtJQUNSRCxlQUFlLEVBQWZBLGVBQWU7SUFDZkUscUJBQXFCLEVBQXJCQSxxQkFBcUI7SUFDckJ5RixlQUFlLEVBQWZBLGVBQWU7SUFDZkUsU0FBUyxFQUFUQSxTQUFTO0lBQ1RDLGNBQWMsRUFBZEEsY0FBYztJQUNkbkcsY0FBYyxFQUFkQSxjQUFjO0lBQ2RxRyxjQUFjLEVBQWRBLGNBQWM7SUFDZDVHLGFBQWEsRUFBRUEsYUFBYSxDQUFDckcsT0FBTztJQUNwQ21HLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQ25HLE9BQU87SUFFMUNrTixXQUFXLEVBQVhBLFdBQVc7SUFDWHlDLGFBQWEsRUFBYkEsYUFBYTtJQUNiRSxjQUFjLEVBQWRBLGNBQWM7SUFDZFksc0JBQXNCLEVBQXRCQSxzQkFBc0I7SUFDdEJsSixZQUFZLEVBQVpBLFlBQVk7SUFDWjRLLGNBQWMsRUFBZEEsY0FBYztJQUNkSyxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsY0FBYyxFQUFkQSxjQUFjO0lBRWRDLFVBQVUsRUFBRTlGLGVBQWUsSUFBSTNGO0VBQ2pDLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119