@projectcor/maia-components 2.11.19-0 → 2.11.19-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.
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -1
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +10 -9
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +78 -30
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +29 -24
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +10 -7
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +27 -52
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +16 -13
- package/lib/hooks/index.js +4 -1
- package/lib/hooks/useAgentSuggestions.js +60 -0
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +13 -8
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
- package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
- package/lib/services/maia/Orchestrator/orchestrator.js +6 -3
- package/lib/types/AgentSuggestion.js +2 -0
- package/package.json +1 -1
|
@@ -808,4 +808,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
808
808
|
});
|
|
809
809
|
};
|
|
810
810
|
export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
|
|
811
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlN0cmVhbWluZ01lc3NhZ2VDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvY2FsQWdlbnQiLCJzZXRMb2NhbEFnZW50IiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZ2V0VGFiU2VnbWVudEZyb21IcmVmIiwiaHJlZiIsIm1hdGNoIiwidGVzdCIsImV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlIiwibWVzc2FnZSIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInRhc2tzIiwic2VlbklkcyIsIlNldCIsImV4ZWMiLCJ0YXNrSWQiLCJ1cmwiLCJoYXMiLCJhZGQiLCJlc2NhcGVkVXJsIiwicmVwbGFjZSIsIm1hcmtkb3duTGlua1JlZ2V4IiwiY29uY2F0IiwibGlua01hdGNoIiwidGl0bGUiLCJwdXNoIiwiaGFzVGFza0xpbmtzIiwidGV4dCIsImxlbmd0aCIsIlRhc2tMaW5rIiwiX3JlZjQiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjUiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsInRhc2tNYXRjaCIsIlN0cmVhbWluZ01lc3NhZ2VCb2R5IiwiZnJvbUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiZGlzcGxheVRleHQiLCJpc1N0cmVhbWluZyIsImRlYnVnQ291bnRSZWYiLCJ3aW5kb3ciLCJNQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIiLCJjdXJyZW50IiwiY29uc29sZSIsImxvZyIsImNvdW50IiwibGVuIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsImlzQXNzaXN0YW50IiwicGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImVuYWJsZWQiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJtZXNzYWdlSWQiLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsImZvckVhY2giLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsIl9sYXN0TXNnJHVzZXIiLCJfbGFzdE1zZyRtZXNzYWdlMiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwibWVzc2FnZXNSZWYiLCJjaGF0SW5pdGlhbGl6ZWRSZWYiLCJpc0xvYWRpbmdNb3JlUmVmIiwidXNlclNjcm9sbGluZ1JlZiIsInNjcm9sbFRocmVzaG9sZFJlZiIsImxhc3RTY3JvbGxUb3BSZWYiLCJzaG93U2Nyb2xsVG9Cb3R0b21SZWYiLCJzY3JvbGxSYWZSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dTY3JvbGxUb0JvdHRvbSIsInNldFNob3dTY3JvbGxUb0JvdHRvbSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYiLCJzdHJlYW1pbmdNZXNzYWdlSWRSZWYiLCJfdXNlQ2hhdE1hbmFnZXIiLCJjaGF0SWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJzY3JvbGxIZWlnaHQiLCJiZWhhdmlvciIsInNldFRpbWVvdXQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJkaWRTZXRTdGF0ZSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJsYXN0TWVzc2FnZSIsImhhc0FwcHJvdmFsIiwiaXNBdEJvdHRvbSIsInNjcm9sbFRvQm90dG9tIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQyIiwiaXNOZXdBbnN3ZXJNZXNzYWdlIiwiaXNOZXdVc2VyTWVzc2FnZSIsImlzTmV3QXBwcm92YWxNZXNzYWdlIiwiaGFzTWVzc2FnZXMiLCJpc05vdEluaXRpYWxNZXNzYWdlIiwibXNnIiwic2Nyb2xsRGVsYXkiLCJkb1Njcm9sbCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MyIsIl9tZXNzYWdlc1JlZiRjdXJyZW50NCIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwiaGFzQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJpc1Njcm9sbE9uUGFyZW50IiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiZW50aXR5IiwibGlzdFJlbmRlckNvdW50UmVmIiwiX2xhc3RNc2ckaWQiLCJfbGFzdE1zZyRtZXNzYWdlJGxlbmciLCJfbGFzdE1zZyRtZXNzYWdlIiwibGFzdE1zZyIsImxhc3RLZXkiLCJsYXN0TWVzc2FnZUtleSIsImxhc3RNZXNzYWdlTGVuIiwibWVzc2FnZXNDb3VudCIsImV4cGFuZGVkUmVmIiwic2F2ZWRTY3JvbGxUb3AiLCJpc1N0cmVhbWluZ0FjdGl2ZSIsInN0cmVhbWluZ1RleHQiLCJtZXNzYWdlc0NvbnRlbnQiLCJQcm92aWRlciIsInZhbHVlIiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsImlzQXNzaXN0YW50TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcblxuaW1wb3J0IHsgTWVzc2FnZUZyb21Vc2VyLCBNZXNzYWdlRnJvbU90aGVyLCBNZXNzYWdlQ29udGVudEZyb21Vc2VyLCBNZXNzYWdlQ29udGVudEZyb21PdGhlciB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgTWVzc2FnZUZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHtcbiAgU0NDQUlNZXNzYWdlV3JhcHBlcixcbiAgU2Nyb2xsVG9Cb3R0b21CdXR0b24sXG4gIFNDTWVzc2FnZXNPdXRlcixcbiAgU0NNZXNzYWdlc1Njcm9sbCxcbiAgU0NNZXNzYWdlc0lubmVyLFxuICBTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbixcbiAgU0NPcHRpb25zTGlzdCxcbiAgU0NPcHRpb25JdGVtLFxuICBTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIsXG4gIFNDQXNzaXN0YW50TmFtZSxcbiAgU0NBc3Npc3RhbnRBdmF0YXIsXG4gIFNDVGFza0xpbmssXG4gIFNDTWVzc2FnZUl0ZW1XcmFwcGVyLFxuICBTQ01lc3NhZ2VJdGVtSW5uZXIsXG4gIFNDQXR0YWNobWVudHNSb3csXG4gIFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uLFxufSBmcm9tICcuL25ld1N0eWxlcydcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5cbi8qKiBDb250ZXh0byBjb24gZWwgdGV4dG8gZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nLiBTb2xvIGVsIGNvbXBvbmVudGUgcXVlIGxvIGNvbnN1bWUgcmUtcmVuZGVyaXphIGN1YW5kbyBjYW1iaWEuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8c3RyaW5nPignJylcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhcklubmVyOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50QXZhdGFyPlxuICAgICAge2FnZW50Py50eXBlID09PSAnY2xvbmUnID8gPE1BSUFJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4gOiBhZ2VudD8uZW1vaml9XG4gICAgPC9TQ0Fzc2lzdGFudEF2YXRhcj5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXIgPSBtZW1vKEFzc2lzdGFudEF2YXRhcklubmVyKVxuXG50eXBlIENoYXRBSU1lc3NhZ2VzUHJvcHMgPSB7XG4gIHVzZXJJbml0aWFsTWVzc2FnZTogeyBtZXNzYWdlOiBzdHJpbmc7IGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdOyBmYXFJZD86IHN0cmluZyB9XG4gIGluaXRpYWxDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBvblNlbmRNZXNzYWdlUmVhZHk/OiAoXG4gICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSwgZmFxSWQ/OiBzdHJpbmcpID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWQ6IHN0cmluZywgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBjb25zdCBmcm9tQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQpXG4gICAgY29uc3QgZGlzcGxheVRleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IGZyb21Db250ZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIGNvbnN0IGRlYnVnQ291bnRSZWYgPSBSZWFjdC51c2VSZWYoMClcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiAmJiBwcm9wcy5pc1N0cmVhbWluZykge1xuICAgICAgZGVidWdDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1N0cmVhbWluZ01lc3NhZ2VCb2R5XSByZW5kZXInLCB7IGNvdW50OiBkZWJ1Z0NvdW50UmVmLmN1cnJlbnQsIGxlbjogZGlzcGxheVRleHQ/Lmxlbmd0aCB9KVxuICAgIH1cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwcm9wcy5pc0Fzc2lzdGFudCAmJiBoYXNUYXNrTGlua3MoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgIGlzQW5pbWF0aW5nPXshIXByb3BzLmlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgPC9TQ0NBSU1lc3NhZ2VXcmFwcGVyPlxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmICFwcm9wcy5pc1N0cmVhbWluZyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2VGZWVkYmFja1xuICAgICAgICAgICAgY29udGVudD17ZGlzcGxheVRleHR9XG4gICAgICAgICAgICBzb3VyY2VzPXtwcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e3Byb3BzLmhhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e3Byb3BzLmRpc2FibGVGZWVkYmFja31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmIChcbiAgICAgICAgICA8Q2hhdEFJU3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtwcm9wcy5zdWdnZXN0aW9ucyB8fCBbXX1cbiAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IE1lc3NhZ2VJdGVtID0gbWVtbygocHJvcHM6IE1lc3NhZ2VJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHVzZXIsXG4gICAgbWVzc2FnZSxcbiAgICBpc1N0cmVhbWluZyxcbiAgICBpc0Vycm9yLFxuICAgIGF1dGhVc2VyLFxuICAgIG9wdGlvbnMsXG4gICAgaXNDaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBkaXNhYmxlRmVlZGJhY2ssXG4gICAgcm9sZSxcbiAgICBzb3VyY2VzLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFwcHJvdmFsLFxuICAgIGFwcHJvdmFsU3RhdHVzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG5cbiAgLy8gREVCVUcgc3RyZWFtaW5nOiB2ZXIgcmUtcmVuZGVycyB5IHJlbW91bnRzLiBIYWJpbGl0YXIgY29uIHdpbmRvdy5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgPSB0cnVlXG4gIGNvbnN0IHJlbmRlckNvdW50UmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHByZXZNZXNzYWdlTGVuUmVmID0gdXNlUmVmPG51bWJlcj4obWVzc2FnZT8ubGVuZ3RoID8/IDApXG4gIHJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICBpZiAoaXNTdHJlYW1pbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUikge1xuICAgIGNvbnN0IHByZXZMZW4gPSBwcmV2TWVzc2FnZUxlblJlZi5jdXJyZW50XG4gICAgcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudCA9IG1lc3NhZ2U/Lmxlbmd0aCA/PyAwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW01lc3NhZ2VJdGVtXSByZW5kZXInLCB7XG4gICAgICBtZXNzYWdlSWQ6IGlkLFxuICAgICAgcmVuZGVyQ291bnQ6IHJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBtZXNzYWdlTGVuOiBtZXNzYWdlPy5sZW5ndGgsXG4gICAgICBwcmV2TWVzc2FnZUxlbjogcHJldkxlbixcbiAgICAgIGlzU3RyZWFtaW5nOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50Q2xpY2sgPSAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICAvLyBQZXJtaXRpciBwcmV2aXN1YWxpemFjacOzbiBzaSB0aWVuZSBhcmNoaXZvIGxvY2FsIG8gVVJMcyBkZWwgYmFja2VuZFxuICAgIGlmIChcbiAgICAgIGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQub3JpZ2luYWxGaWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfZmlsZVxuICAgICkge1xuICAgICAgc2V0UHJldmlld0F0dGFjaG1lbnQoYXR0YWNobWVudClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVByZXZpZXcgPSAoKSA9PiB7XG4gICAgc2V0UHJldmlld0F0dGFjaG1lbnQobnVsbClcbiAgfVxuXG4gIGlmIChpc0NoYW5nZVByb2plY3QgJiYgb3B0aW9ucykge1xuICAgIHJldHVybiAoXG4gICAgICA8TWVzc2FnZVdyYXBwZXIga2V5PXtpZH0gaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn0gZGF0YS1tZXNzYWdlLWlkPXtpZH0gaGFzRmVlZGJhY2s9e2ZhbHNlfT5cbiAgICAgICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgIHtpc0Fzc2lzdGFudCAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICB7ISEoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lmxlbmd0aCAmJiAhaXNBc3Npc3RhbnQgJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICAgICAgeyhhdHRhY2htZW50cyB8fCBzb3VyY2VzKT8ubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAvLyBEZXRlY3RhciBzaSBlcyB1biBhcmNoaXZvIGRlIGF1ZGlvXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudD8udHlwZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50TmFtZSA9IGF0dGFjaG1lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgaXNBdWRpb0ZpbGUgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8XG4gICAgICAgICAgICAgICAgWydmbGFjJywgJ200YScsICdtcDMnLCAnbXA0JywgJ29nYScsICdvZ2cnLCAnd2F2JywgJ3dlYm0nXS5pbmNsdWRlcyhhdHRhY2htZW50VHlwZSkgfHxcbiAgICAgICAgICAgICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnROYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgaWYgKGlzQXVkaW9GaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdHRhY2htZW50Q2FyZEF1ZGlvIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH0gYXR0YWNobWVudD17YXR0YWNobWVudH0gLz5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICApfVxuICAgICAgICB7YXBwcm92YWwgJiYgYXBwcm92YWwucGVuZGluZ19hY3Rpb25zICYmIChcbiAgICAgICAgICA8U0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICAgICA8QXBwcm92YWxCb3hcbiAgICAgICAgICAgICAgYWN0aW9ucz17YXBwcm92YWwucGVuZGluZ19hY3Rpb25zfVxuICAgICAgICAgICAgICBzdGF0dXM9e2FwcHJvdmFsU3RhdHVzfVxuICAgICAgICAgICAgICBvbkFwcHJvdmU9e3RocmVhZElkcyA9PiB0aHJlYWRJZHMuZm9yRWFjaChpZCA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKGlkLCAnYXBwcm92ZScpKX1cbiAgICAgICAgICAgICAgb25SZWplY3Q9e3RocmVhZElkcyA9PiB0aHJlYWRJZHMuZm9yRWFjaChpZCA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKGlkLCAncmVqZWN0JykpfVxuICAgICAgICAgICAgICBpc1Byb2plY3REZWxldGVkPXtwcm9wcy5wcm9qZWN0TWV0YWRhdGE/LmlzX2RlbGV0ZWQgPT09IHRydWV9XG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQ9e3Byb3BzLmV4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc1N0cmVhbWluZykgJiYgIWFwcHJvdmFsICYmIChcbiAgICAgICAgICA8U3RyZWFtaW5nTWVzc2FnZUJvZHlcbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgPz8gJyd9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17ISFpc1N0cmVhbWluZ31cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9XG4gICAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgICAgYXBwcm92YWw9e2FwcHJvdmFsfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17c3VnZ2VzdGlvbnN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFja0NsaWNrPXtoYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtkaXNhYmxlRmVlZGJhY2sgPz8gbnVsbH1cbiAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgKVxufSlcblxuY29uc3QgQ2hhdEFJTWVzc2FnZXNJbm5lciA9ICh7XG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgaW5pdGlhbENoYXRJZCxcbiAgb25FcnJvcixcbiAgb25TZW5kTWVzc2FnZVJlYWR5LFxuICBvblNjcm9sbFRvQm90dG9tLFxuICBhdHRhY2htZW50cyxcbiAgYWdlbnRzLFxuICBleHBhbmRlZCxcbn06IENoYXRBSU1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmID0gdXNlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFzdWdnZXN0aW9uPy50cmltKCkpIHJldHVyblxuICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZUlkXSkgcmV0dXJuXG4gICAgICBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzKHByZXYgPT4gKHsgLi4ucHJldiwgW21lc3NhZ2VJZF06IHRydWUgfSkpXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlLCBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pXG4gICAgICAvLyBBY3R1YWxpemFyIGVzdGFkbyBkZXNwdcOpcyBkZSB1biBicmV2ZSBkZWxheSBwYXJhIHBlcm1pdGlyIHF1ZSBlbCBzY3JvbGwgc2UgY29tcGxldGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9LCA1MDApXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgY29uc3QgZGlkU2V0U3RhdGUgPSBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvd1xuICAgICAgICBpZiAoZGlkU2V0U3RhdGUpIHtcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsXVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChzZW5kTWVzc2FnZVJlZi5jdXJyZW50LCBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZylcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlTWVzc2FnZXNcbiAgfSwgW2lzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgLy8gQ3VhbmRvIGVsIGFnZW50ZSBlbXBpZXphIGEgcmVzcG9uZGVyLCByZXNldGVhciBlbCBmbGFnIHkgZWwgdW1icmFsIHBhcmEgYWN0aXZhciBlbCBhdXRvLXNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaW5pdGlhbGl6ZUNoYXQoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gU2Nyb2xsIGN1YW5kbyBsbGVnYSB1biBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIChBcHByb3ZhbEJveCkuIFNpbiBSZXNpemVPYnNlcnZlciBlbiBlbFxuICAvLyBjb250ZW5lZG9yOiBvYnNlcnZhcmxvIGRpc3BhcmFiYSBjYWxsYmFja3MgYWwgY2FtYmlhciBlbCBsYXlvdXQvc2Nyb2xsYmFyIHkgY2FkYSB1bm9cbiAgLy8gbGxhbWFiYSBzY3JvbGxUb0JvdHRvbSgpLCBwcm92b2NhbmRvIHRpcm9uZXMgYWwgc2Nyb2xsZWFyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGhhc0FwcHJvdmFsID0gbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG5cbiAgICBpZiAoIWhhc0FwcHJvdmFsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG5cbiAgICBpZiAoIShpc0F0Qm90dG9tIHx8ICF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdWVuY2lhIGluaWNpYWwgZGUgc2Nyb2xsIHBhcmEgY3VhbmRvIGVsIEFwcHJvdmFsQm94IGFjYWJhIGRlIHJlbmRlcml6YXJzZVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsVG9Cb3R0b20sIDEwMClcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTaSBlbCB1c3VhcmlvIGVzdMOhIHNjcm9sbGVhbmRvIG1hbnVhbG1lbnRlLCBubyBoYWNlciBhdXRvIHNjcm9sbFxuICAgIGlmICh1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgJiYgd2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG5cbiAgICBjb25zdCBpc05ld0Fuc3dlck1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhbnN3ZXItJylcbiAgICBjb25zdCBpc05ld1VzZXJNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgncXVlc3Rpb24tJylcbiAgICBjb25zdCBpc05ld0FwcHJvdmFsTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzTWVzc2FnZXMgPSAhIW1lc3NhZ2VzLmxlbmd0aFxuICAgIGNvbnN0IGlzTm90SW5pdGlhbE1lc3NhZ2UgPSAhbWVzc2FnZXMuc29tZShtc2cgPT4gbXNnLmlkID09PSAndXNlci1pbml0aWFsLW1lc3NhZ2UnKVxuXG4gICAgaWYgKChpc05ld0Fuc3dlck1lc3NhZ2UgfHwgaXNOZXdVc2VyTWVzc2FnZSB8fCBpc05ld0FwcHJvdmFsTWVzc2FnZSkgJiYgaXNBdEJvdHRvbSkge1xuICAgICAgLy8gUGFyYSBtZW5zYWplcyBkZSBhcHJvYmFjacOzbiwgdXNhciB1biBwZXF1ZcOxbyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBBcHByb3ZhbEJveCBzZSBoYXlhIHJlbmRlcml6YWRvXG4gICAgICBjb25zdCBzY3JvbGxEZWxheSA9IGlzTmV3QXBwcm92YWxNZXNzYWdlID8gMTAwIDogMFxuICAgICAgY29uc3QgZG9TY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKHNjcm9sbERlbGF5ID4gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KGRvU2Nyb2xsLCBzY3JvbGxEZWxheSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvU2Nyb2xsKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaGFzTWVzc2FnZXMgJiZcbiAgICAgIGlzTm90SW5pdGlhbE1lc3NhZ2UgJiZcbiAgICAgICFpc05ld0Fuc3dlck1lc3NhZ2UgJiZcbiAgICAgICFpc05ld1VzZXJNZXNzYWdlICYmXG4gICAgICAhaXNOZXdBcHByb3ZhbE1lc3NhZ2VcbiAgICApIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgd2FpdGluZ1Jlc3BvbnNlXSlcblxuICAvLyBWZXJpZmljYXIgZWwgZXN0YWRvIGluaWNpYWwgZGVsIHNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50ICYmICFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aF0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGhhc0F0dGFjaG1lbnRzID1cbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LmF0dGFjaG1lbnRzKSAmJiBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB8fFxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uc291cmNlcykgJiYgbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMubGVuZ3RoKVxuXG4gIGNvbnN0IGlzU2Nyb2xsT25QYXJlbnQgPSAhIWV4cGFuZGVkXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gIC8vIERFQlVHIHN0cmVhbWluZzogcmUtcmVuZGVycyBkZWwgY29udGVuZWRvci4gSGFiaWxpdGFyIGNvbiB3aW5kb3cuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSID0gdHJ1ZVxuICBjb25zdCBsaXN0UmVuZGVyQ291bnRSZWYgPSB1c2VSZWYoMClcbiAgaWYgKCh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSkuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSKSB7XG4gICAgbGlzdFJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGxhc3RNc2cgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGxhc3RLZXkgPSBsYXN0TXNnPy5pZCA/PyBgbXNnLSR7bWVzc2FnZXMubGVuZ3RoIC0gMX1gXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW0NoYXRBSU1lc3NhZ2VzXSByZW5kZXInLCB7XG4gICAgICBjb3VudDogbGlzdFJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBsYXN0TWVzc2FnZUtleTogbGFzdEtleSxcbiAgICAgIGxhc3RNZXNzYWdlTGVuOiBsYXN0TXNnPy5tZXNzYWdlPy5sZW5ndGggPz8gMCxcbiAgICAgIG1lc3NhZ2VzQ291bnQ6IG1lc3NhZ2VzLmxlbmd0aCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBjb25zdCBsYXN0TXNnID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgY29uc3QgaXNTdHJlYW1pbmdBY3RpdmUgPVxuICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJlxuICAgIGxhc3RNc2cgJiZcbiAgICAobGFzdE1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IGxhc3RNc2cudXNlcj8uaWQgPT09ICdhc3Npc3RhbnQnKVxuICBjb25zdCBzdHJlYW1pbmdUZXh0ID0gaXNTdHJlYW1pbmdBY3RpdmUgPyAobGFzdE1zZy5tZXNzYWdlID8/ICcnKSA6ICcnXG5cbiAgaWYgKGxvYWRpbmdNZXNzYWdlcykge1xuICAgIHJldHVybiA8TG9hZGVyIC8+XG4gIH1cblxuICBjb25zdCBtZXNzYWdlc0NvbnRlbnQgPSAoXG4gICAgPD5cbiAgICAgIHtpc0xvYWRpbmdNb3JlTWVzc2FnZXMgJiYgPExvYWRpbmdUZXh0IHRleHQ9e3QoJ2NoYXQubG9hZGluZ01vcmUnKX0gLz59XG4gICAgICA8U3RyZWFtaW5nTWVzc2FnZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3N0cmVhbWluZ1RleHR9PlxuICAgICAgICB7bWVzc2FnZXMubWFwKChtZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEobWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoIHx8IG1lc3NhZ2Uuc291cmNlcz8ubGVuZ3RoKSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UubWVzc2FnZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UucHJvamVjdD8ubmFtZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UuYXBwcm92YWxcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VGZWVkYmFjayA9XG4gICAgICAgICAgICBtZXNzYWdlPy53YXNIZWxwZnVsID09PSB1bmRlZmluZWQgfHwgbWVzc2FnZS53YXNIZWxwZnVsID09PSBudWxsXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG1lc3NhZ2Uud2FzSGVscGZ1bFxuICAgICAgICAgICAgICAgID8gRmVlZGJhY2suVEhVTUJTX1VQXG4gICAgICAgICAgICAgICAgOiBGZWVkYmFjay5USFVNQlNfRE9XTlxuXG4gICAgICAgICAgY29uc3QgaXNBc3Npc3RhbnRNZXNzYWdlID0gbWVzc2FnZS5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IG1lc3NhZ2UudXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcbiAgICAgICAgICBjb25zdCBpc0xhc3RNZXNzYWdlID0gaW5kZXggPT09IG1lc3NhZ2VzLmxlbmd0aCAtIDFcbiAgICAgICAgICBjb25zdCBpc1N0cmVhbWluZyA9IGlzQXNzaXN0YW50TWVzc2FnZSAmJiBpc0xhc3RNZXNzYWdlICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKVxuXG4gICAgICAgICAgLy8gS2V5IGVzdGFibGU6IHNvbG8gbWVzc2FnZS5pZCBwYXJhIGV2aXRhciByZW1vdW50IGR1cmFudGUgc3RyZWFtaW5nIChtZXNzYWdlLmRhdGUgcHVlZGUgY2FtYmlhcilcbiAgICAgICAgICBjb25zdCBtZXNzYWdlS2V5ID0gbWVzc2FnZS5pZCA/PyBgbXNnLSR7aW5kZXh9YFxuXG4gICAgICAgICAgaWYgKGlzU3RyZWFtaW5nKSB7XG4gICAgICAgICAgICBpZiAoc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgIT09IG1lc3NhZ2UuaWQpIHtcbiAgICAgICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLmlkID8/IG51bGxcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHsgbWVzc2FnZTogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXV0aFVzZXIsXG4gICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjayxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb246ICEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXSxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjazogbWVzc2FnZUZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICAgaXNTdHJlYW1pbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICBpc0xhc3RNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPE1lc3NhZ2VJdGVtIGtleT17bWVzc2FnZUtleX0gey4uLihzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYuY3VycmVudCBhcyBNZXNzYWdlSXRlbVByb3BzKX0gLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICB7Li4ubWVzc2FnZX1cbiAgICAgICAgICAgICAga2V5PXttZXNzYWdlS2V5fVxuICAgICAgICAgICAgICBhdXRoVXNlcj17YXV0aFVzZXJ9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb249e2hhbmRsZUFwcHJvdmFsRGVjaXNpb259XG4gICAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb249eyEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXX1cbiAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXttZXNzYWdlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TdHJlYW1pbmdNZXNzYWdlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIHsod2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlIHx8IE9iamVjdC5rZXlzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgIDxTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICA8TG9hZGluZ1RleHRcbiAgICAgICAgICAgICAga2V5PVwibG9hZGluZy1hY3RpdmVcIlxuICAgICAgICAgICAgICB0ZXh0PXtcbiAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5maW5kKG1zZyA9PiBtc2cgIT09IHQoJ2NoYXQucHJvY2Vzc2luZycpKSB8fCB0KCdjaGF0LnByb2Nlc3NpbmcnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAod2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlKSAmJiAoXG4gICAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgICAgbG9hZGluZ01lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgIChpc1dlYlNlYXJjaEFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICA/ICdCdXNjYW5kbyBlbiBsYSB3ZWInXG4gICAgICAgICAgICAgICAgICAgIDogaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJylcbiAgICAgICAgICAgICAgICAgICAgICA6IGhhc0F0dGFjaG1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0F0dGFjaG1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGF0LmdlbmVyYXRpbmcnKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VzT3V0ZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fT5cbiAgICAgIHtpc1Njcm9sbE9uUGFyZW50ID8gKFxuICAgICAgICA8U0NNZXNzYWdlc1Njcm9sbCByZWY9e21lc3NhZ2VzUmVmfSBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fSAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXJcbiAgICAgICAgICByZWY9e21lc3NhZ2VzUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX1cbiAgICAgICAgICAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBa0IscUJBQXFCO0FBRTVFLFNBQWtCQyxPQUFPLFFBQVEs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
|
|
811
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlN0cmVhbWluZ01lc3NhZ2VDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvY2FsQWdlbnQiLCJzZXRMb2NhbEFnZW50IiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZ2V0VGFiU2VnbWVudEZyb21IcmVmIiwiaHJlZiIsIm1hdGNoIiwidGVzdCIsImV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlIiwibWVzc2FnZSIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInRhc2tzIiwic2VlbklkcyIsIlNldCIsImV4ZWMiLCJ0YXNrSWQiLCJ1cmwiLCJoYXMiLCJhZGQiLCJlc2NhcGVkVXJsIiwicmVwbGFjZSIsIm1hcmtkb3duTGlua1JlZ2V4IiwiY29uY2F0IiwibGlua01hdGNoIiwidGl0bGUiLCJwdXNoIiwiaGFzVGFza0xpbmtzIiwidGV4dCIsImxlbmd0aCIsIlRhc2tMaW5rIiwiX3JlZjQiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjUiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsInRhc2tNYXRjaCIsIlN0cmVhbWluZ01lc3NhZ2VCb2R5IiwiZnJvbUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiZGlzcGxheVRleHQiLCJpc1N0cmVhbWluZyIsImRlYnVnQ291bnRSZWYiLCJ3aW5kb3ciLCJNQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIiLCJjdXJyZW50IiwiY29uc29sZSIsImxvZyIsImNvdW50IiwibGVuIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsImlzQXNzaXN0YW50IiwicGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImVuYWJsZWQiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJtZXNzYWdlSWQiLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsImZvckVhY2giLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsIl9sYXN0TXNnJHVzZXIiLCJfbGFzdE1zZyRtZXNzYWdlMiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwibWVzc2FnZXNSZWYiLCJjaGF0SW5pdGlhbGl6ZWRSZWYiLCJpc0xvYWRpbmdNb3JlUmVmIiwidXNlclNjcm9sbGluZ1JlZiIsInNjcm9sbFRocmVzaG9sZFJlZiIsImxhc3RTY3JvbGxUb3BSZWYiLCJzaG93U2Nyb2xsVG9Cb3R0b21SZWYiLCJzY3JvbGxSYWZSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dTY3JvbGxUb0JvdHRvbSIsInNldFNob3dTY3JvbGxUb0JvdHRvbSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYiLCJzdHJlYW1pbmdNZXNzYWdlSWRSZWYiLCJfdXNlQ2hhdE1hbmFnZXIiLCJjaGF0SWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJzY3JvbGxIZWlnaHQiLCJiZWhhdmlvciIsInNldFRpbWVvdXQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJkaWRTZXRTdGF0ZSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJsYXN0TWVzc2FnZSIsImhhc0FwcHJvdmFsIiwiaXNBdEJvdHRvbSIsInNjcm9sbFRvQm90dG9tIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQyIiwiaXNOZXdBbnN3ZXJNZXNzYWdlIiwiaXNOZXdVc2VyTWVzc2FnZSIsImlzTmV3QXBwcm92YWxNZXNzYWdlIiwiaGFzTWVzc2FnZXMiLCJpc05vdEluaXRpYWxNZXNzYWdlIiwibXNnIiwic2Nyb2xsRGVsYXkiLCJkb1Njcm9sbCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MyIsIl9tZXNzYWdlc1JlZiRjdXJyZW50NCIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwiaGFzQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJpc1Njcm9sbE9uUGFyZW50IiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiZW50aXR5IiwibGlzdFJlbmRlckNvdW50UmVmIiwiX2xhc3RNc2ckaWQiLCJfbGFzdE1zZyRtZXNzYWdlJGxlbmciLCJfbGFzdE1zZyRtZXNzYWdlIiwibGFzdE1zZyIsImxhc3RLZXkiLCJsYXN0TWVzc2FnZUtleSIsImxhc3RNZXNzYWdlTGVuIiwibWVzc2FnZXNDb3VudCIsImV4cGFuZGVkUmVmIiwic2F2ZWRTY3JvbGxUb3AiLCJpc1N0cmVhbWluZ0FjdGl2ZSIsInN0cmVhbWluZ1RleHQiLCJtZXNzYWdlc0NvbnRlbnQiLCJQcm92aWRlciIsInZhbHVlIiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsImlzQXNzaXN0YW50TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcblxuaW1wb3J0IHsgTWVzc2FnZUZyb21Vc2VyLCBNZXNzYWdlRnJvbU90aGVyLCBNZXNzYWdlQ29udGVudEZyb21Vc2VyLCBNZXNzYWdlQ29udGVudEZyb21PdGhlciB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgTWVzc2FnZUZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHtcbiAgU0NDQUlNZXNzYWdlV3JhcHBlcixcbiAgU2Nyb2xsVG9Cb3R0b21CdXR0b24sXG4gIFNDTWVzc2FnZXNPdXRlcixcbiAgU0NNZXNzYWdlc1Njcm9sbCxcbiAgU0NNZXNzYWdlc0lubmVyLFxuICBTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbixcbiAgU0NPcHRpb25zTGlzdCxcbiAgU0NPcHRpb25JdGVtLFxuICBTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIsXG4gIFNDQXNzaXN0YW50TmFtZSxcbiAgU0NBc3Npc3RhbnRBdmF0YXIsXG4gIFNDVGFza0xpbmssXG4gIFNDTWVzc2FnZUl0ZW1XcmFwcGVyLFxuICBTQ01lc3NhZ2VJdGVtSW5uZXIsXG4gIFNDQXR0YWNobWVudHNSb3csXG4gIFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uLFxufSBmcm9tICcuL25ld1N0eWxlcydcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5cbi8qKiBDb250ZXh0byBjb24gZWwgdGV4dG8gZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nLiBTb2xvIGVsIGNvbXBvbmVudGUgcXVlIGxvIGNvbnN1bWUgcmUtcmVuZGVyaXphIGN1YW5kbyBjYW1iaWEuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8c3RyaW5nPignJylcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhcklubmVyOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50QXZhdGFyPlxuICAgICAge2FnZW50Py50eXBlID09PSAnY2xvbmUnID8gPE1BSUFJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4gOiBhZ2VudD8uZW1vaml9XG4gICAgPC9TQ0Fzc2lzdGFudEF2YXRhcj5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXIgPSBtZW1vKEFzc2lzdGFudEF2YXRhcklubmVyKVxuXG50eXBlIENoYXRBSU1lc3NhZ2VzUHJvcHMgPSB7XG4gIHVzZXJJbml0aWFsTWVzc2FnZToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICB9XG4gIGluaXRpYWxDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBvblNlbmRNZXNzYWdlUmVhZHk/OiAoXG4gICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSwgZmFxSWQ/OiBzdHJpbmcsIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nKSA9PiB2b2lkLFxuICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuLFxuICAgIGlzV3JpdGluZzogYm9vbGVhblxuICApID0+IHZvaWRcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TY3JvbGxUb0JvdHRvbT86ICgpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGFnZW50cz86IEFnZW50W11cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUl0ZW1Qcm9wcyA9IENoYXRNZXNzYWdlICYge1xuICBhdXRoVXNlcjogQ09SVXNlclxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbiAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24/OiBib29sZWFuXG4gIGhhbmRsZUZlZWRiYWNrOiAoZmVlZGJhY2s6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbjogKHRocmVhZElkOiBzdHJpbmcsIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JykgPT4gdm9pZFxuICBkaXNhYmxlRmVlZGJhY2s/OiBGZWVkYmFjayB8IG51bGxcbiAgc291cmNlcz86IGFueVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgTWVzc2FnZVdyYXBwZXJQcm9wcyB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICAnZGF0YS1tZXNzYWdlLWlkJz86IHN0cmluZ1xuICBoYXNGZWVkYmFjaz86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcyA9IE1BSUFNZXNzYWdlUHJvcHMgJiB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgaXNFcnJvcj86IGJvb2xlYW5cbiAgaXNDaGFuZ2VQcm9qZWN0PzogYm9vbGVhblxufVxuXG5jb25zdCBNZXNzYWdlV3JhcHBlcjogRkM8TWVzc2FnZVdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VGcm9tVXNlciA6IE1lc3NhZ2VGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29tcG9uZW50IHsuLi5wcm9wc30+e2NoaWxkcmVufTwvTWVzc2FnZUNvbXBvbmVudD5cbn1cblxuY29uc3QgTWVzc2FnZUNvbnRlbnRXcmFwcGVyOiBGQzxNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb250ZW50Q29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VDb250ZW50RnJvbVVzZXIgOiBNZXNzYWdlQ29udGVudEZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb250ZW50Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gTWVzc2FnZU9wdGlvbnMoe1xuICBvcHRpb25zLFxuICBoYW5kbGVTZWxlY3RPcHRpb24sXG59OiB7XG4gIG9wdGlvbnM6IFByb2plY3RbXSB8IG51bGxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8UHJvamVjdCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikgcmV0dXJuXG4gICAgc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uKVxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ09wdGlvbnNMaXN0PlxuICAgICAgeyhvcHRpb25zIHx8IFtdKS5tYXAob3B0aW9uID0+IChcbiAgICAgICAgPFNDT3B0aW9uSXRlbVxuICAgICAgICAgICRoYXNTZWxlY3Rpb249eyEhc2VsZWN0ZWRPcHRpb259XG4gICAgICAgICAgJGRpbW1lZD17ISFzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvbj8uaWQgIT09IG9wdGlvbi5pZH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3Qob3B0aW9uKX1cbiAgICAgICAgICBrZXk9e29wdGlvbi5pZH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgPC9TQ09wdGlvbkl0ZW0+XG4gICAgICApKX1cbiAgICA8L1NDT3B0aW9uc0xpc3Q+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50TWVzc2FnZUhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgW2xvY2FsQWdlbnQsIHNldExvY2FsQWdlbnRdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsQWdlbnQoYWdlbnQpXG4gIH0sIFthZ2VudF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyPlxuICAgICAgPEFzc2lzdGFudEF2YXRhciAvPlxuICAgICAge2xvY2FsQWdlbnQ/Lm5hbWUgJiYgKFxuICAgICAgICA8U0NBc3Npc3RhbnROYW1lPntsb2NhbEFnZW50Py50eXBlID09PSAnY2xvbmUnID8gJ01BSUEnIDogbG9jYWxBZ2VudD8ubmFtZX08L1NDQXNzaXN0YW50TmFtZT5cbiAgICAgICl9XG4gICAgPC9TQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gIClcbn1cblxuLy8gRXh0cmFlIGVsIHNlZ21lbnRvIGRlIHRhYiAoZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykgZGVsIGhyZWYgcGFyYSBhYnJpciBlbCBtb2RhbCBjb24gZWwgdGFiIGNvcnJlY3RvXG5jb25zdCBnZXRUYWJTZWdtZW50RnJvbUhyZWYgPSAoaHJlZjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWF0Y2ggPSBocmVmLm1hdGNoKC9cXC90YXNrc1xcL1xcZCtcXC8oW14vP10rKS8pXG4gIHJldHVybiBtYXRjaCAmJiAvXihkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSQvLnRlc3QobWF0Y2hbMV0pID8gbWF0Y2hbMV0gOiAnZGV0YWlsJ1xufVxuXG4vKiogRXh0cmFlIGxhcyB0YXJlYXMgZW5sYXphZGFzIGVuIGVsIHRleHRvIChVUkxzIHF1ZSBjb2luY2lkZW4gY29uIFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4pLiAqL1xuY29uc3QgZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKTogVGFza0luZm9bXSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIFtdXG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICBjb25zdCB0YXNrczogVGFza0luZm9bXSA9IFtdXG4gIGNvbnN0IHNlZW5JZHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAoKG1hdGNoID0gdGFza1VybFJlZ2V4LmV4ZWMobWVzc2FnZSkpICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFza0lkID0gbWF0Y2hbMV1cbiAgICBjb25zdCB1cmwgPSBtYXRjaFswXVxuICAgIGlmICghc2Vlbklkcy5oYXModGFza0lkKSkge1xuICAgICAgc2Vlbklkcy5hZGQodGFza0lkKVxuICAgICAgY29uc3QgZXNjYXBlZFVybCA9IHVybC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpXG4gICAgICBjb25zdCBtYXJrZG93bkxpbmtSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxbKFteXFxcXF1dKylcXFxcXVxcXFwoJHtlc2NhcGVkVXJsfVxcXFwpYClcbiAgICAgIGNvbnN0IGxpbmtNYXRjaCA9IG1lc3NhZ2UubWF0Y2gobWFya2Rvd25MaW5rUmVnZXgpXG4gICAgICBjb25zdCB0aXRsZSA9IGxpbmtNYXRjaCA/IGxpbmtNYXRjaFsxXSA6IGBUYXJlYSAjJHt0YXNrSWR9YFxuICAgICAgdGFza3MucHVzaCh7IGlkOiB0YXNrSWQsIHRpdGxlLCB1cmwgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhc2tzXG59XG5cbmNvbnN0IGhhc1Rhc2tMaW5rcyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IGV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlKHRleHQpLmxlbmd0aCA+IDBcblxuLy8gQ29tcG9uZW50IGZvciB0YXNrIGxpbmtzIHRoYXQgdXNlcyB0aGUgdXNlVGFza1BhbmVsIGhvb2tcbmNvbnN0IFRhc2tMaW5rOiBGQzx7IGhyZWY6IHN0cmluZzsgdGFza0lkOiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfT4gPSAoeyBocmVmLCB0YXNrSWQsIGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgdGFiU2VnbWVudCA9IGdldFRhYlNlZ21lbnRGcm9tSHJlZihocmVmKVxuICBjb25zdCB7IGJ1aWxkT3BlblRhc2sgfSA9IHVzZVRhc2tQYW5lbCh0YXNrSWQsIHRhYlNlZ21lbnQpXG4gIGNvbnN0IG9wZW5UYXNrID0gYnVpbGRPcGVuVGFzaygpXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAvLyBTaSBlcyBDbWQvQ3RybCArIGNsaWNrLCBkZWphciBxdWUgc2UgYWJyYSBlbiBudWV2YSBwZXN0YcOxYSAoY29tcG9ydGFtaWVudG8gcG9yIGRlZmVjdG8pXG4gICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDVGFza0xpbmsgaHJlZj17aHJlZn0gb25DbGljaz17aGFuZGxlQ2xpY2t9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU0NUYXNrTGluaz5cbiAgKVxufVxuXG4vLyBDdXN0b20gbGluayBjb21wb25lbnQgZm9yIFN0cmVhbWRvd246IHRhc2sgVVJMcyBvcGVuIHRoZSB0YXNrIHBhbmVsLCBvdGhlciBsaW5rcyByZW5kZXIgbm9ybWFsbHlcbnR5cGUgQ3VzdG9tTGlua1Byb3BzID0gUmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+ICYgeyBub2RlPzogdW5rbm93biB9XG5jb25zdCBDdXN0b21MaW5rOiBGQzxDdXN0b21MaW5rUHJvcHM+ID0gKHsgaHJlZiwgY2hpbGRyZW4sIC4uLnJlc3QgfSkgPT4ge1xuICBpZiAoIWhyZWYgfHwgdHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9hPlxuICAgIClcbiAgfVxuICBjb25zdCB0YXNrTWF0Y2ggPSBocmVmLm1hdGNoKG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTikpXG4gIGlmICh0YXNrTWF0Y2gpIHtcbiAgICBjb25zdCB0YXNrSWQgPSB0YXNrTWF0Y2hbMV1cbiAgICByZXR1cm4gKFxuICAgICAgPFRhc2tMaW5rIGhyZWY9e2hyZWZ9IHRhc2tJZD17dGFza0lkfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9UYXNrTGluaz5cbiAgICApXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9hPlxuICApXG59XG5cbi8qKiBTb2xvIGVzdGUgY29tcG9uZW50ZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYSBlbCB0ZXh0byBlbiBzdHJlYW1pbmcgKGxlZSBkZWwgY29udGV4dCkuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQm9keSA9IG1lbW8oXG4gIChwcm9wczoge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuXG4gICAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICAgIGlzQXNzaXN0YW50OiBib29sZWFuXG4gICAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgICBhcHByb3ZhbD86IE1lc3NhZ2VJdGVtUHJvcHNbJ2FwcHJvdmFsJ11cbiAgICBpc0Vycm9yPzogYm9vbGVhblxuICAgIHNvdXJjZXM/OiBNZXNzYWdlSXRlbVByb3BzWydzb3VyY2VzJ11cbiAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ/OiBib29sZWFuXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgY29uc3QgZnJvbUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFN0cmVhbWluZ01lc3NhZ2VDb250ZXh0KVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gcHJvcHMuaXNTdHJlYW1pbmcgPyBmcm9tQ29udGV4dCA6IHByb3BzLm1lc3NhZ2VcbiAgICBjb25zdCBkZWJ1Z0NvdW50UmVmID0gUmVhY3QudXNlUmVmKDApXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgJiYgcHJvcHMuaXNTdHJlYW1pbmcpIHtcbiAgICAgIGRlYnVnQ291bnRSZWYuY3VycmVudCArPSAxXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coJ1tTdHJlYW1pbmdNZXNzYWdlQm9keV0gcmVuZGVyJywgeyBjb3VudDogZGVidWdDb3VudFJlZi5jdXJyZW50LCBsZW46IGRpc3BsYXlUZXh0Py5sZW5ndGggfSlcbiAgICB9XG4gICAgaWYgKCFkaXNwbGF5VGV4dCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxTQ0NBSU1lc3NhZ2VXcmFwcGVyXG4gICAgICAgICAgaXNDdXJyZW50VXNlcj17cHJvcHMuaXNDdXJyZW50VXNlcn1cbiAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT17cHJvcHMuaXNBc3Npc3RhbnQgJiYgaGFzVGFza0xpbmtzKGRpc3BsYXlUZXh0KSA/ICdoYXMtdGFzay1saW5rcycgOiAnJ31cbiAgICAgICAgPlxuICAgICAgICAgIDxTdHJlYW1kb3duXG4gICAgICAgICAgICBwbHVnaW5zPXt7IGNvZGUgfX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgYTogQ3VzdG9tTGluayB9IGFzIFBhcmFtZXRlcnM8dHlwZW9mIFN0cmVhbWRvd24+WzBdWydjb21wb25lbnRzJ119XG4gICAgICAgICAgICBsaW5rU2FmZXR5PXt7IGVuYWJsZWQ6IGZhbHNlIH19XG4gICAgICAgICAgICBpc0FuaW1hdGluZz17ISFwcm9wcy5pc1N0cmVhbWluZ31cbiAgICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgICAgY29udHJvbHM9e3sgdGFibGU6IGZhbHNlLCBjb2RlOiBmYWxzZSB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgICA8L1N0cmVhbWRvd24+XG4gICAgICAgIDwvU0NDQUlNZXNzYWdlV3JhcHBlcj5cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlRmVlZGJhY2tcbiAgICAgICAgICAgIGNvbnRlbnQ9e2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgc291cmNlcz17cHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtwcm9wcy5oYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtwcm9wcy5kaXNhYmxlRmVlZGJhY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPENoYXRBSVN1Z2dlc3Rpb25zXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICBvblNlbGVjdFN1Z2dlc3Rpb249e3N1Z2dlc3Rpb24gPT4gcHJvcHMuaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKHByb3BzLm1lc3NhZ2VJZCwgc3VnZ2VzdGlvbil9XG4gICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24sXG4gICAgaXNMYXN0TWVzc2FnZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgW3ByZXZpZXdBdHRhY2htZW50LCBzZXRQcmV2aWV3QXR0YWNobWVudF0gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzQ3VycmVudFVzZXIgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCB1c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpXG4gIGNvbnN0IGlzQXNzaXN0YW50ID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCB1c2VyLmlkID09PSAnYXNzaXN0YW50J1xuXG4gIC8vIERFQlVHIHN0cmVhbWluZzogdmVyIHJlLXJlbmRlcnMgeSByZW1vdW50cy4gSGFiaWxpdGFyIGNvbiB3aW5kb3cuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSID0gdHJ1ZVxuICBjb25zdCByZW5kZXJDb3VudFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBwcmV2TWVzc2FnZUxlblJlZiA9IHVzZVJlZjxudW1iZXI+KG1lc3NhZ2U/Lmxlbmd0aCA/PyAwKVxuICByZW5kZXJDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgaWYgKGlzU3RyZWFtaW5nICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIpIHtcbiAgICBjb25zdCBwcmV2TGVuID0gcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudFxuICAgIHByZXZNZXNzYWdlTGVuUmVmLmN1cnJlbnQgPSBtZXNzYWdlPy5sZW5ndGggPz8gMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tNZXNzYWdlSXRlbV0gcmVuZGVyJywge1xuICAgICAgbWVzc2FnZUlkOiBpZCxcbiAgICAgIHJlbmRlckNvdW50OiByZW5kZXJDb3VudFJlZi5jdXJyZW50LFxuICAgICAgbWVzc2FnZUxlbjogbWVzc2FnZT8ubGVuZ3RoLFxuICAgICAgcHJldk1lc3NhZ2VMZW46IHByZXZMZW4sXG4gICAgICBpc1N0cmVhbWluZzogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICAgICAgPE1lc3NhZ2VDb250ZW50V3JhcHBlclxuICAgICAgICAgICAgaXNDaGFuZ2VQcm9qZWN0PXtpc0NoYW5nZVByb2plY3R9XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBtZXNzYWdlRXh0cmFDb250ZW50PXs8TWVzc2FnZU9wdGlvbnMgb3B0aW9ucz17b3B0aW9ucyBhcyBhbnl9IGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICAgPC9NZXNzYWdlV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVGZWVkYmFja0NsaWNrID0gKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IGlkXG4gICAgICAuc3BsaXQoJy0nKVxuICAgICAgLmZpbHRlcihxdWVzdGlvbklkID0+IHF1ZXN0aW9uSWQgIT09ICdhbnN3ZXInKVxuICAgICAgLmpvaW4oJy0nKVxuICAgIGhhbmRsZUZlZWRiYWNrPy4oZmVlZGJhY2ssIHNlc3Npb25JZClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAge2lzQXNzaXN0YW50ICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgPFNDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgICAgeyEhKGF0dGFjaG1lbnRzIHx8IHNvdXJjZXMpPy5sZW5ndGggJiYgIWlzQXNzaXN0YW50ICYmIChcbiAgICAgICAgICA8U0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgICAgIHsoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLy8gRGV0ZWN0YXIgc2kgZXMgdW4gYXJjaGl2byBkZSBhdWRpb1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQ/LnR5cGU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudE5hbWUgPSBhdHRhY2htZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzQXVkaW9GaWxlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fFxuICAgICAgICAgICAgICAgIFsnZmxhYycsICdtNGEnLCAnbXAzJywgJ21wNCcsICdvZ2EnLCAnb2dnJywgJ3dhdicsICd3ZWJtJ10uaW5jbHVkZXMoYXR0YWNobWVudFR5cGUpIHx8XG4gICAgICAgICAgICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLnNvbWUoZXh0ID0+XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50TmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChpc0F1ZGlvRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXR0YWNobWVudENhcmRBdWRpbyBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9IGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAge2FwcHJvdmFsICYmIGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyAmJiAoXG4gICAgICAgICAgPFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICAgICAgPEFwcHJvdmFsQm94XG4gICAgICAgICAgICAgIGFjdGlvbnM9e2FwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc31cbiAgICAgICAgICAgICAgc3RhdHVzPXthcHByb3ZhbFN0YXR1c31cbiAgICAgICAgICAgICAgb25BcHByb3ZlPXt0aHJlYWRJZHMgPT4gdGhyZWFkSWRzLmZvckVhY2goaWQgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbihpZCwgJ2FwcHJvdmUnKSl9XG4gICAgICAgICAgICAgIG9uUmVqZWN0PXt0aHJlYWRJZHMgPT4gdGhyZWFkSWRzLmZvckVhY2goaWQgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbihpZCwgJ3JlamVjdCcpKX1cbiAgICAgICAgICAgICAgaXNQcm9qZWN0RGVsZXRlZD17cHJvcHMucHJvamVjdE1ldGFkYXRhPy5pc19kZWxldGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5leHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyghIW1lc3NhZ2UgfHwgaXNTdHJlYW1pbmcpICYmICFhcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPFN0cmVhbWluZ01lc3NhZ2VCb2R5XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlID8/ICcnfVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9eyEhaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2tDbGljaz17aGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17ZGlzYWJsZUZlZWRiYWNrID8/IG51bGx9XG4gICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ9eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgISFoYXNTZWxlY3RlZFN1Z2dlc3Rpb259XG4gICAgICAgICAgICBtZXNzYWdlSWQ9e2lkfVxuICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8QXR0YWNobWVudFByZXZpZXdNb2RhbFxuICAgICAgICBpc09wZW49eyEhcHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlUHJldmlld31cbiAgICAgICAgYXR0YWNobWVudD17cHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAvPlxuICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gIClcbn0pXG5cbmNvbnN0IENoYXRBSU1lc3NhZ2VzSW5uZXIgPSAoe1xuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGluaXRpYWxDaGF0SWQsXG4gIG9uRXJyb3IsXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeSxcbiAgb25TY3JvbGxUb0JvdHRvbSxcbiAgYXR0YWNobWVudHMsXG4gIGFnZW50cyxcbiAgZXhwYW5kZWQsXG59OiBDaGF0QUlNZXNzYWdlc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hhdEluaXRpYWxpemVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBpc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCB1c2VyU2Nyb2xsaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzY3JvbGxUaHJlc2hvbGRSZWYgPSB1c2VSZWYoMzkpXG4gIGNvbnN0IGxhc3RTY3JvbGxUb3BSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc2hvd1Njcm9sbFRvQm90dG9tUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzY3JvbGxSYWZSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3Nob3dTY3JvbGxUb0JvdHRvbSwgc2V0U2hvd1Njcm9sbFRvQm90dG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcywgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pXG4gIGNvbnN0IHN0cmVhbWluZ01lc3NhZ2VQcm9wc1JlZiA9IHVzZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pXG4gIGNvbnN0IHN0cmVhbWluZ01lc3NhZ2VJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBzdG9wR2VuZXJhdGlvbixcbiAgfSA9IHVzZUNoYXRNYW5hZ2VyKHtcbiAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgdW5kZWZpbmVkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBvbkVycm9yLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFnZW50cyxcbiAgfSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBjaGFuZ2VQcm9qZWN0KG9wdGlvbilcbiAgICB9LFxuICAgIFtjaGFuZ2VQcm9qZWN0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghc3VnZ2VzdGlvbj8udHJpbSgpKSByZXR1cm5cbiAgICAgIGlmIChzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2VJZF0pIHJldHVyblxuICAgICAgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyhwcmV2ID0+ICh7IC4uLnByZXYsIFttZXNzYWdlSWRdOiB0cnVlIH0pKVxuICAgICAgc2VuZE1lc3NhZ2Uoc3VnZ2VzdGlvbilcbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZSwgc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG8oe1xuICAgICAgICB0b3A6IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICB9KVxuICAgICAgLy8gQWN0dWFsaXphciBlc3RhZG8gZGVzcHXDqXMgZGUgdW4gYnJldmUgZGVsYXkgcGFyYSBwZXJtaXRpciBxdWUgZWwgc2Nyb2xsIHNlIGNvbXBsZXRlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuICAgICAgfSwgNTAwKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuVUlFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGUuY3VycmVudFRhcmdldFxuXG4gICAgICBpZiAoc2Nyb2xsUmFmUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoc2Nyb2xsUmFmUmVmLmN1cnJlbnQpXG4gICAgICB9XG5cbiAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG5cbiAgICAgICAgY29uc3QgaXNTY3JvbGxpbmdVcCA9IHNjcm9sbFRvcCA8IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc1Njcm9sbGluZ1VwKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAxNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNOZWFyQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0IDwgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgICAgICB9XG5cbiAgICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gIWlzTmVhckJvdHRvbVxuICAgICAgICBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBzY3JvbGxUb3BcblxuICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgIGNvbnN0IGRpZFNldFN0YXRlID0gc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgIT09IHNob3VsZFNob3dcbiAgICAgICAgaWYgKGRpZFNldFN0YXRlKSB7XG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tICYmIG9uU2Nyb2xsVG9Cb3R0b20pIHtcbiAgICAgICAgICBvblNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZVNjcm9sbChjb250YWluZXIpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW29uU2Nyb2xsVG9Cb3R0b20sIGhhbmRsZVNjcm9sbF1cbiAgKVxuXG4gIC8vIHJlZnMgdG8gc3RhYmlsaXplIGZ1bmN0aW9ucyBhbmQgYXZvaWQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xuICBjb25zdCBzZW5kTWVzc2FnZVJlZiA9IHVzZVJlZihzZW5kTWVzc2FnZSlcbiAgY29uc3Qgc3RvcEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoc3RvcEdlbmVyYXRpb24pXG4gIGNvbnN0IG9uU2VuZE1lc3NhZ2VSZWFkeVJlZiA9IHVzZVJlZihvblNlbmRNZXNzYWdlUmVhZHkpXG5cbiAgLy8gdXBkYXRlIHJlZnMgd2hlbiBmdW5jdGlvbnMgY2hhbmdlXG4gIHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQgPSBzZW5kTWVzc2FnZVxuICBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50ID0gc3RvcEdlbmVyYXRpb25cbiAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQgPSBvblNlbmRNZXNzYWdlUmVhZHlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCkge1xuICAgICAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQoc2VuZE1lc3NhZ2VSZWYuY3VycmVudCwgc3RvcEdlbmVyYXRpb25SZWYuY3VycmVudCwgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcpXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXG4gIH0sIFtpc0xvYWRpbmdNb3JlTWVzc2FnZXNdKVxuXG4gIC8vIEN1YW5kbyBlbCBhZ2VudGUgZW1waWV6YSBhIHJlc3BvbmRlciwgcmVzZXRlYXIgZWwgZmxhZyB5IGVsIHVtYnJhbCBwYXJhIGFjdGl2YXIgZWwgYXV0by1zY3JvbGxcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGluaXRpYWxpemVDaGF0KClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIFNjcm9sbCBjdWFuZG8gbGxlZ2EgdW4gbWVuc2FqZSBkZSBhcHJvYmFjacOzbiAoQXBwcm92YWxCb3gpLiBTaW4gUmVzaXplT2JzZXJ2ZXIgZW4gZWxcbiAgLy8gY29udGVuZWRvcjogb2JzZXJ2YXJsbyBkaXNwYXJhYmEgY2FsbGJhY2tzIGFsIGNhbWJpYXIgZWwgbGF5b3V0L3Njcm9sbGJhciB5IGNhZGEgdW5vXG4gIC8vIGxsYW1hYmEgc2Nyb2xsVG9Cb3R0b20oKSwgcHJvdm9jYW5kbyB0aXJvbmVzIGFsIHNjcm9sbGVhci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQgfHwgbG9hZGluZ01lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVNZXNzYWdlcykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBoYXNBcHByb3ZhbCA9IGxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuXG4gICAgaWYgKCFoYXNBcHByb3ZhbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gY29udGFpbmVyLnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lci5zY3JvbGxUb3AgPD0gY29udGFpbmVyLmNsaWVudEhlaWdodCArIDEwMFxuXG4gICAgaWYgKCEoaXNBdEJvdHRvbSB8fCAhdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlY3VlbmNpYSBpbmljaWFsIGRlIHNjcm9sbCBwYXJhIGN1YW5kbyBlbCBBcHByb3ZhbEJveCBhY2FiYSBkZSByZW5kZXJpemFyc2VcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFRvQm90dG9tLCAxMDApXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFttZXNzYWdlcywgbG9hZGluZ01lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gU2kgZWwgdXN1YXJpbyBlc3TDoSBzY3JvbGxlYW5kbyBtYW51YWxtZW50ZSwgbm8gaGFjZXIgYXV0byBzY3JvbGxcbiAgICBpZiAodXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ICYmIHdhaXRpbmdSZXNwb25zZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuXG4gICAgY29uc3QgaXNOZXdBbnN3ZXJNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYW5zd2VyLScpXG4gICAgY29uc3QgaXNOZXdVc2VyTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ3F1ZXN0aW9uLScpXG4gICAgY29uc3QgaXNOZXdBcHByb3ZhbE1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYXBwcm92YWwtJykgfHwgISFsYXN0TWVzc2FnZS5hcHByb3ZhbClcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gY29udGFpbmVyLnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lci5zY3JvbGxUb3AgPD0gY29udGFpbmVyLmNsaWVudEhlaWdodCArIDEwMFxuICAgIGNvbnN0IGhhc01lc3NhZ2VzID0gISFtZXNzYWdlcy5sZW5ndGhcbiAgICBjb25zdCBpc05vdEluaXRpYWxNZXNzYWdlID0gIW1lc3NhZ2VzLnNvbWUobXNnID0+IG1zZy5pZCA9PT0gJ3VzZXItaW5pdGlhbC1tZXNzYWdlJylcblxuICAgIGlmICgoaXNOZXdBbnN3ZXJNZXNzYWdlIHx8IGlzTmV3VXNlck1lc3NhZ2UgfHwgaXNOZXdBcHByb3ZhbE1lc3NhZ2UpICYmIGlzQXRCb3R0b20pIHtcbiAgICAgIC8vIFBhcmEgbWVuc2FqZXMgZGUgYXByb2JhY2nDs24sIHVzYXIgdW4gcGVxdWXDsW8gZGVsYXkgcGFyYSBhc2VndXJhciBxdWUgZWwgQXBwcm92YWxCb3ggc2UgaGF5YSByZW5kZXJpemFkb1xuICAgICAgY29uc3Qgc2Nyb2xsRGVsYXkgPSBpc05ld0FwcHJvdmFsTWVzc2FnZSA/IDEwMCA6IDBcbiAgICAgIGNvbnN0IGRvU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmIChzY3JvbGxEZWxheSA+IDApIHtcbiAgICAgICAgc2V0VGltZW91dChkb1Njcm9sbCwgc2Nyb2xsRGVsYXkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb1Njcm9sbCgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGhhc01lc3NhZ2VzICYmXG4gICAgICBpc05vdEluaXRpYWxNZXNzYWdlICYmXG4gICAgICAhaXNOZXdBbnN3ZXJNZXNzYWdlICYmXG4gICAgICAhaXNOZXdVc2VyTWVzc2FnZSAmJlxuICAgICAgIWlzTmV3QXBwcm92YWxNZXNzYWdlXG4gICAgKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFttZXNzYWdlcywgbG9hZGluZ01lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHdhaXRpbmdSZXNwb25zZV0pXG5cbiAgLy8gVmVyaWZpY2FyIGVsIGVzdGFkbyBpbmljaWFsIGRlbCBzY3JvbGxcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCAmJiAhbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgfVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcy5sZW5ndGhdKVxuXG4gIC8vIE9idGVuZXIgZWwgw7psdGltbyBtZW5zYWplIGRlbCB1c3VhcmlvIHBhcmEgdmVyaWZpY2FyIHNpIHRpZW5lIGF0dGFjaG1lbnRzXG4gIGNvbnN0IGxhc3RVc2VyTWVzc2FnZSA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihtc2cgPT4gbXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IG1zZy51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpKVxuICAgIC5hdCgtMSlcblxuICBjb25zdCBoYXNBdHRhY2htZW50cyA9XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5hdHRhY2htZW50cykgJiYgbGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCkgfHxcbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LnNvdXJjZXMpICYmIGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzLmxlbmd0aClcblxuICBjb25zdCBpc1Njcm9sbE9uUGFyZW50ID0gISFleHBhbmRlZFxuICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcblxuICAvLyBERUJVRyBzdHJlYW1pbmc6IHJlLXJlbmRlcnMgZGVsIGNvbnRlbmVkb3IuIEhhYmlsaXRhciBjb24gd2luZG93Lk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiA9IHRydWVcbiAgY29uc3QgbGlzdFJlbmRlckNvdW50UmVmID0gdXNlUmVmKDApXG4gIGlmICgod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZykgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUikge1xuICAgIGxpc3RSZW5kZXJDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICBjb25zdCBsYXN0TXNnID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBsYXN0S2V5ID0gbGFzdE1zZz8uaWQgPz8gYG1zZy0ke21lc3NhZ2VzLmxlbmd0aCAtIDF9YFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tDaGF0QUlNZXNzYWdlc10gcmVuZGVyJywge1xuICAgICAgY291bnQ6IGxpc3RSZW5kZXJDb3VudFJlZi5jdXJyZW50LFxuICAgICAgbGFzdE1lc3NhZ2VLZXk6IGxhc3RLZXksXG4gICAgICBsYXN0TWVzc2FnZUxlbjogbGFzdE1zZz8ubWVzc2FnZT8ubGVuZ3RoID8/IDAsXG4gICAgICBtZXNzYWdlc0NvdW50OiBtZXNzYWdlcy5sZW5ndGgsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEFsIGV4cGFuZGlyL2NvbnRyYWVyIGVsIG1vZGFsIGVsIHJlZiBwYXNhIGEgb3RybyBjb250ZW5lZG9yIChzY3JvbGxUb3Agc2UgcmVzZXRlYSBhIDApLlxuICAvLyBSZXN0YXVyYXIgbGEgcG9zaWNpw7NuIGRlIHNjcm9sbCBhbnRlcyBkZWwgcGFpbnQgcGFyYSBldml0YXIgcXVlIGxhIGNvbnZlcnNhY2nDs24gc2FsdGUgYXJyaWJhLlxuICBjb25zdCBleHBhbmRlZFJlZiA9IHVzZVJlZihleHBhbmRlZClcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXhwYW5kZWRSZWYuY3VycmVudCAhPT0gZXhwYW5kZWQgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxUb3AgPSBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gc2F2ZWRTY3JvbGxUb3BcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH0gZWxzZSB7XG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9XG4gIH0sIFtleHBhbmRlZF0pXG5cbiAgY29uc3QgbGFzdE1zZyA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IGlzU3RyZWFtaW5nQWN0aXZlID1cbiAgICAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZykgJiZcbiAgICBsYXN0TXNnICYmXG4gICAgKGxhc3RNc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBsYXN0TXNnLnVzZXI/LmlkID09PSAnYXNzaXN0YW50JylcbiAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IGlzU3RyZWFtaW5nQWN0aXZlID8gKGxhc3RNc2cubWVzc2FnZSA/PyAnJykgOiAnJ1xuXG4gIGlmIChsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICByZXR1cm4gPExvYWRlciAvPlxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXNDb250ZW50ID0gKFxuICAgIDw+XG4gICAgICB7aXNMb2FkaW5nTW9yZU1lc3NhZ2VzICYmIDxMb2FkaW5nVGV4dCB0ZXh0PXt0KCdjaGF0LmxvYWRpbmdNb3JlJyl9IC8+fVxuICAgICAgPFN0cmVhbWluZ01lc3NhZ2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdHJlYW1pbmdUZXh0fT5cbiAgICAgICAge21lc3NhZ2VzLm1hcCgobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKG1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aCB8fCBtZXNzYWdlLnNvdXJjZXM/Lmxlbmd0aCkgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLm1lc3NhZ2UgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLnByb2plY3Q/Lm5hbWUgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLmFwcHJvdmFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICBjb25zdCBtZXNzYWdlRmVlZGJhY2sgPVxuICAgICAgICAgICAgbWVzc2FnZT8ud2FzSGVscGZ1bCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2Uud2FzSGVscGZ1bCA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiBtZXNzYWdlLndhc0hlbHBmdWxcbiAgICAgICAgICAgICAgICA/IEZlZWRiYWNrLlRIVU1CU19VUFxuICAgICAgICAgICAgICAgIDogRmVlZGJhY2suVEhVTUJTX0RPV05cblxuICAgICAgICAgIGNvbnN0IGlzQXNzaXN0YW50TWVzc2FnZSA9IG1lc3NhZ2Uucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBtZXNzYWdlLnVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gICAgICAgICAgY29uc3QgaXNMYXN0TWVzc2FnZSA9IGluZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc0Fzc2lzdGFudE1lc3NhZ2UgJiYgaXNMYXN0TWVzc2FnZSAmJiAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZylcblxuICAgICAgICAgIC8vIEtleSBlc3RhYmxlOiBzb2xvIG1lc3NhZ2UuaWQgcGFyYSBldml0YXIgcmVtb3VudCBkdXJhbnRlIHN0cmVhbWluZyAobWVzc2FnZS5kYXRlIHB1ZWRlIGNhbWJpYXIpXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUtleSA9IG1lc3NhZ2UuaWQgPz8gYG1zZy0ke2luZGV4fWBcblxuICAgICAgICAgIGlmIChpc1N0cmVhbWluZykge1xuICAgICAgICAgICAgaWYgKHN0cmVhbWluZ01lc3NhZ2VJZFJlZi5jdXJyZW50ICE9PSBtZXNzYWdlLmlkKSB7XG4gICAgICAgICAgICAgIHN0cmVhbWluZ01lc3NhZ2VJZFJlZi5jdXJyZW50ID0gbWVzc2FnZS5pZCA/PyBudWxsXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICB7IG1lc3NhZ2U6IHVuZGVmaW5lZCB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGF1dGhVc2VyLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgICAgICAgICAgICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgICAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uOiAhIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF0sXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s6IG1lc3NhZ2VGZWVkYmFjayxcbiAgICAgICAgICAgICAgICAgIGlzU3RyZWFtaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgaXNMYXN0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGVkLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDxNZXNzYWdlSXRlbSBrZXk9e21lc3NhZ2VLZXl9IHsuLi4oc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmLmN1cnJlbnQgYXMgTWVzc2FnZUl0ZW1Qcm9wcyl9IC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0cmVhbWluZ01lc3NhZ2VJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWVzc2FnZUl0ZW1cbiAgICAgICAgICAgICAgey4uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIGtleT17bWVzc2FnZUtleX1cbiAgICAgICAgICAgICAgYXV0aFVzZXI9e2F1dGhVc2VyfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn1cbiAgICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e2hhbmRsZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uPXtoYW5kbGVBcHByb3ZhbERlY2lzaW9ufVxuICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17bWVzc2FnZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17ZmFsc2V9XG4gICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICB7KHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZSB8fCBPYmplY3Qua2V5cyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICA8U0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4+XG4gICAgICAgICAge09iamVjdC5rZXlzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgPExvYWRpbmdUZXh0XG4gICAgICAgICAgICAgIGtleT1cImxvYWRpbmctYWN0aXZlXCJcbiAgICAgICAgICAgICAgdGV4dD17XG4gICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkuZmluZChtc2cgPT4gbXNnICE9PSB0KCdjaGF0LnByb2Nlc3NpbmcnKSkgfHwgdCgnY2hhdC5wcm9jZXNzaW5nJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgKHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZSkgJiYgKFxuICAgICAgICAgICAgICA8TG9hZGluZ1RleHRcbiAgICAgICAgICAgICAgICB0ZXh0PXtcbiAgICAgICAgICAgICAgICAgIGxvYWRpbmdNZXNzYWdlIHx8XG4gICAgICAgICAgICAgICAgICAoaXNXZWJTZWFyY2hBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgPyAnQnVzY2FuZG8gZW4gbGEgd2ViJ1xuICAgICAgICAgICAgICAgICAgICA6IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hhdC5nZW5lcmF0aW5nRGVlcFNlYXJjaCcpXG4gICAgICAgICAgICAgICAgICAgICAgOiBoYXNBdHRhY2htZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGF0LmdlbmVyYXRpbmdBdHRhY2htZW50JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hhdC5nZW5lcmF0aW5nJykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4+XG4gICAgICApfVxuICAgIDwvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlc091dGVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0+XG4gICAgICB7aXNTY3JvbGxPblBhcmVudCA/IChcbiAgICAgICAgPFNDTWVzc2FnZXNTY3JvbGwgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8U0NNZXNzYWdlc0lubmVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0gJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH0+XG4gICAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgICA8L1NDTWVzc2FnZXNTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8U0NNZXNzYWdlc0lubmVyXG4gICAgICAgICAgcmVmPXttZXNzYWdlc1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgJHNjcm9sbE9uUGFyZW50PXtmYWxzZX1cbiAgICAgICAgICAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fVxuICAgICAgICA+XG4gICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Njcm9sbFRvQm90dG9tICYmIChcbiAgICAgICAgPFNjcm9sbFRvQm90dG9tQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8QXJyb3dTbWFsbERvd24gY29sb3I9XCIjNjY2XCIgd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgIDwvU2Nyb2xsVG9Cb3R0b21CdXR0b24+XG4gICAgICApfVxuICAgIDwvU0NNZXNzYWdlc091dGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNZXNzYWdlcyA9IFJlYWN0Lm1lbW8oQ2hhdEFJTWVzc2FnZXNJbm5lcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBSyxJQUFRQyxJQUFJLEVBQWFDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFBQyxhQUFBLElBQUFDLGNBQUEsUUFBUSxPQUFPO0FBQzdHLFNBQVNDLFVBQVUsUUFBUSxZQUFZO0FBQ3ZDLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxjQUFjLFFBQVEsaURBQWlEO0FBRWhGLFNBQVNDLGNBQWMsUUFBUSwyQ0FBMkM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLHFDQUFxQztBQUNqRSxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFDM0UsU0FB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
|