@projectcor/maia-components 2.11.20-1 → 2.11.20-3

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.
@@ -74,7 +74,10 @@ export var ChatAIHomeMaiaker = function ChatAIHomeMaiaker(_ref) {
74
74
  return /*#__PURE__*/_jsxs(SCCAIHomeMaiakerCardButton, {
75
75
  type: "button",
76
76
  onClick: function onClick() {
77
- return onStartChat(suggestion.title, null, undefined, suggestion.id);
77
+ eventAmplitude(EVENTS.aiChatMpSelectAgent, {
78
+ agent_title: suggestion.title
79
+ });
80
+ onStartChat(suggestion.title, null, undefined, suggestion.id);
78
81
  },
79
82
  children: [/*#__PURE__*/_jsxs(SCCAIHomeMaiakerCardTopRow, {
80
83
  children: [/*#__PURE__*/_jsx(SCCAIHomeMaiakerCardTitleEmoji, {
@@ -95,4 +98,4 @@ export var ChatAIHomeMaiaker = function ChatAIHomeMaiaker(_ref) {
95
98
  })]
96
99
  });
97
100
  };
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVQiLCJ1c2VVc2VyIiwidXNlQWdlbnRTdWdnZXN0aW9ucyIsIkVWRU5UUyIsInVzZUV2ZW50IiwibWFwQ09STGFuZyIsIkxvYWRlciIsIlNDTUFBY3Rpb25zUm93IiwiU0NNQUNyZWF0ZU1hbnVhbEJ1dHRvbiIsIlNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0IiwiU0NDQUlIb21lTWFpYWtlclJvb3QiLCJTQ0NBSUhvbWVNYWlha2VySW50cm9Db2x1bW4iLCJTQ0NBSUhvbWVNYWlha2VySW50cm9CbG9jayIsIlNDQ0FJSG9tZU1haWFrZXJUaXRsZSIsIlNDQ0FJSG9tZU1haWFrZXJTdWJ0aXRsZSIsIlNDQ0FJSG9tZU1haWFrZXJDYXJkc1JvdyIsIlNDQ0FJSG9tZU1haWFrZXJDYXJkc0xvYWRlckNlbGwiLCJTQ0NBSUhvbWVNYWlha2VyQ2FyZEJ1dHRvbiIsIlNDQ0FJSG9tZU1haWFrZXJDYXJkVG9wUm93IiwiU0NDQUlIb21lTWFpYWtlckJhZGdlTmV3IiwiU0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZUVtb2ppIiwiU0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZU5hbWUiLCJTQ0NBSUhvbWVNYWlha2VyQ2FyZEJvZHkiLCJTQ0NBSUhvbWVNYWlha2VyQ2FyZFN1YnRpdGxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNoYXRBSUhvbWVNYWlha2VyIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25TdGFydENoYXQiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwibGFuZyIsImxhbmd1YWdlIiwiX3VzZUFnZW50U3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9ucyIsImxvYWRpbmciLCJlcnJvciIsImhhbmRsZUdldEFnZW50U3VnZ2VzdGlvbnMiLCJsYXN0RmV0Y2hSZWYiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50IiwiY3JlYXRlIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIm9wZW5Nb2RhbCIsIm9wdGlvbiIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iLCJjdXJyZW50IiwiY2hpbGRyZW4iLCJ0eXBlIiwib25DbGljayIsIm1hcCIsInN1Z2dlc3Rpb24iLCJfc3VnZ2VzdGlvbiRlbW9qaSIsInRpdGxlIiwidW5kZWZpbmVkIiwiaWQiLCJlbW9qaSIsInRyaW0iLCJzdWJ0aXRsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWVNYWlha2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlQWdlbnRTdWdnZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50U3VnZ2VzdGlvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHtcbiAgU0NNQUFjdGlvbnNSb3csXG4gIFNDTUFDcmVhdGVNYW51YWxCdXR0b24sXG4gIFNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0LFxufSBmcm9tICcuLi9DaGF0QUlNeUFnZW50cy9DaGF0QUlNeUFnZW50cy5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ0NBSUhvbWVNYWlha2VyUm9vdCxcbiAgU0NDQUlIb21lTWFpYWtlckludHJvQ29sdW1uLFxuICBTQ0NBSUhvbWVNYWlha2VySW50cm9CbG9jayxcbiAgU0NDQUlIb21lTWFpYWtlclRpdGxlLFxuICBTQ0NBSUhvbWVNYWlha2VyU3VidGl0bGUsXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkc1JvdyxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRzTG9hZGVyQ2VsbCxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRCdXR0b24sXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkVG9wUm93LFxuICBTQ0NBSUhvbWVNYWlha2VyQmFkZ2VOZXcsXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkVGl0bGVFbW9qaSxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZU5hbWUsXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkQm9keSxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRTdWJ0aXRsZSxcbn0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlci5zdHlsZXMnXG5cbnR5cGUgQ2hhdEFJSG9tZU1haWFrZXJQcm9wcyA9IHtcbiAgb25TdGFydENoYXQ6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdIHwgbnVsbCxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICApID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSUhvbWVNYWlha2VyID0gKHsgb25TdGFydENoYXQgfTogQ2hhdEFJSG9tZU1haWFrZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCBsYW5nID0gbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKVxuICBjb25zdCB7IHN1Z2dlc3Rpb25zLCBsb2FkaW5nLCBlcnJvciwgaGFuZGxlR2V0QWdlbnRTdWdnZXN0aW9ucyB9ID0gdXNlQWdlbnRTdWdnZXN0aW9ucyhsYW5nKVxuICBjb25zdCBsYXN0RmV0Y2hSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGVBZ2VudCA9ICEhdXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5DcmVhdGVBZ2VudCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gIH0sIFtldmVudEFtcGxpdHVkZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGFzdEZldGNoUmVmLmN1cnJlbnQgIT09IGxhbmcpIHtcbiAgICAgIGxhc3RGZXRjaFJlZi5jdXJyZW50ID0gbGFuZ1xuICAgICAgaGFuZGxlR2V0QWdlbnRTdWdnZXN0aW9ucygpXG4gICAgfVxuICB9LCBbbGFuZywgaGFuZGxlR2V0QWdlbnRTdWdnZXN0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lTWFpYWtlclJvb3Q+XG4gICAgICA8U0NDQUlIb21lTWFpYWtlckludHJvQ29sdW1uPlxuICAgICAgICA8U0NDQUlIb21lTWFpYWtlckludHJvQmxvY2s+XG4gICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJUaXRsZT57dCgnaG9tZU1lbnUubWFpYWtlci50aXRsZScpfTwvU0NDQUlIb21lTWFpYWtlclRpdGxlPlxuICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJJbnRyb0Jsb2NrPlxuICAgICAgICA8U0NDQUlIb21lTWFpYWtlckludHJvQmxvY2s+XG4gICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJTdWJ0aXRsZT57dCgnaG9tZU1lbnUubWFpYWtlci5kZXNjcmlwdGlvbicpfTwvU0NDQUlIb21lTWFpYWtlclN1YnRpdGxlPlxuICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJJbnRyb0Jsb2NrPlxuICAgICAgICB7Y2FuQ3JlYXRlQWdlbnQgPyAoXG4gICAgICAgICAgPFNDTUFBY3Rpb25zUm93PlxuICAgICAgICAgICAgPFNDTUFDcmVhdGVNYW51YWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZU9wZW5DcmVhdGVBZ2VudH0+XG4gICAgICAgICAgICAgIDxTQ01BQ3JlYXRlTWFudWFsQnV0dG9uVGV4dD5DcmVhciBhZ2VudGUgbWFudWFsbWVudGU8L1NDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0PlxuICAgICAgICAgICAgPC9TQ01BQ3JlYXRlTWFudWFsQnV0dG9uPlxuICAgICAgICAgIDwvU0NNQUFjdGlvbnNSb3c+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ0NBSUhvbWVNYWlha2VySW50cm9Db2x1bW4+XG4gICAgICA8U0NDQUlIb21lTWFpYWtlckNhcmRzUm93PlxuICAgICAgICB7bG9hZGluZyAmJiAhZXJyb3IgPyAoXG4gICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJDYXJkc0xvYWRlckNlbGw+XG4gICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVNYWlha2VyQ2FyZHNMb2FkZXJDZWxsPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFsb2FkaW5nICYmXG4gICAgICAgICAgIWVycm9yICYmXG4gICAgICAgICAgc3VnZ2VzdGlvbnMubWFwKHN1Z2dlc3Rpb24gPT4gKFxuICAgICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJDYXJkQnV0dG9uXG4gICAgICAgICAgICAgIGtleT17c3VnZ2VzdGlvbi5pZH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU3RhcnRDaGF0KHN1Z2dlc3Rpb24udGl0bGUsIG51bGwsIHVuZGVmaW5lZCwgc3VnZ2VzdGlvbi5pZCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVNYWlha2VyQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZUVtb2ppIGFyaWEtaGlkZGVuPlxuICAgICAgICAgICAgICAgICAge3N1Z2dlc3Rpb24uZW1vamk/LnRyaW0oKSA/IHN1Z2dlc3Rpb24uZW1vamkgOiAnXFx1MDBhMCd9XG4gICAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVNYWlha2VyQ2FyZFRpdGxlRW1vamk+XG4gICAgICAgICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJCYWRnZU5ldz57dCgnaG9tZU1lbnUubWFpYWtlci5iYWRnZU5ldycpfTwvU0NDQUlIb21lTWFpYWtlckJhZGdlTmV3PlxuICAgICAgICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJDYXJkVG9wUm93PlxuICAgICAgICAgICAgICA8U0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZU5hbWU+e3N1Z2dlc3Rpb24udGl0bGV9PC9TQ0NBSUhvbWVNYWlha2VyQ2FyZFRpdGxlTmFtZT5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJDYXJkQm9keT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lTWFpYWtlckNhcmRTdWJ0aXRsZT57c3VnZ2VzdGlvbi5zdWJ0aXRsZX08L1NDQ0FJSG9tZU1haWFrZXJDYXJkU3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lTWFpYWtlckNhcmRCb2R5PlxuICAgICAgICAgICAgPC9TQ0NBSUhvbWVNYWlha2VyQ2FyZEJ1dHRvbj5cbiAgICAgICAgICApKX1cbiAgICAgIDwvU0NDQUlIb21lTWFpYWtlckNhcmRzUm93PlxuICAgIDwvU0NDQUlIb21lTWFpYWtlclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDdEQsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUVoRCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQ0VDLGNBQWMsRUFDZEMsc0JBQXNCLEVBQ3RCQywwQkFBMEIsUUFDckIseUNBQXlDO0FBQ2hELFNBQ0VDLG9CQUFvQixFQUNwQkMsMkJBQTJCLEVBQzNCQywwQkFBMEIsRUFDMUJDLHFCQUFxQixFQUNyQkMsd0JBQXdCLEVBQ3hCQyx3QkFBd0IsRUFDeEJDLCtCQUErQixFQUMvQkMsMEJBQTBCLEVBQzFCQywwQkFB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
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVQiLCJ1c2VVc2VyIiwidXNlQWdlbnRTdWdnZXN0aW9ucyIsIkVWRU5UUyIsInVzZUV2ZW50IiwibWFwQ09STGFuZyIsIkxvYWRlciIsIlNDTUFBY3Rpb25zUm93IiwiU0NNQUNyZWF0ZU1hbnVhbEJ1dHRvbiIsIlNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0IiwiU0NDQUlIb21lTWFpYWtlclJvb3QiLCJTQ0NBSUhvbWVNYWlha2VySW50cm9Db2x1bW4iLCJTQ0NBSUhvbWVNYWlha2VySW50cm9CbG9jayIsIlNDQ0FJSG9tZU1haWFrZXJUaXRsZSIsIlNDQ0FJSG9tZU1haWFrZXJTdWJ0aXRsZSIsIlNDQ0FJSG9tZU1haWFrZXJDYXJkc1JvdyIsIlNDQ0FJSG9tZU1haWFrZXJDYXJkc0xvYWRlckNlbGwiLCJTQ0NBSUhvbWVNYWlha2VyQ2FyZEJ1dHRvbiIsIlNDQ0FJSG9tZU1haWFrZXJDYXJkVG9wUm93IiwiU0NDQUlIb21lTWFpYWtlckJhZGdlTmV3IiwiU0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZUVtb2ppIiwiU0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZU5hbWUiLCJTQ0NBSUhvbWVNYWlha2VyQ2FyZEJvZHkiLCJTQ0NBSUhvbWVNYWlha2VyQ2FyZFN1YnRpdGxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNoYXRBSUhvbWVNYWlha2VyIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25TdGFydENoYXQiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwibGFuZyIsImxhbmd1YWdlIiwiX3VzZUFnZW50U3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9ucyIsImxvYWRpbmciLCJlcnJvciIsImhhbmRsZUdldEFnZW50U3VnZ2VzdGlvbnMiLCJsYXN0RmV0Y2hSZWYiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50IiwiY3JlYXRlIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIm9wZW5Nb2RhbCIsIm9wdGlvbiIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iLCJjdXJyZW50IiwiY2hpbGRyZW4iLCJ0eXBlIiwib25DbGljayIsIm1hcCIsInN1Z2dlc3Rpb24iLCJfc3VnZ2VzdGlvbiRlbW9qaSIsImFpQ2hhdE1wU2VsZWN0QWdlbnQiLCJhZ2VudF90aXRsZSIsInRpdGxlIiwidW5kZWZpbmVkIiwiaWQiLCJlbW9qaSIsInRyaW0iLCJzdWJ0aXRsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlIb21lL0NoYXRBSUhvbWVNYWlha2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlQWdlbnRTdWdnZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50U3VnZ2VzdGlvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHtcbiAgU0NNQUFjdGlvbnNSb3csXG4gIFNDTUFDcmVhdGVNYW51YWxCdXR0b24sXG4gIFNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0LFxufSBmcm9tICcuLi9DaGF0QUlNeUFnZW50cy9DaGF0QUlNeUFnZW50cy5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ0NBSUhvbWVNYWlha2VyUm9vdCxcbiAgU0NDQUlIb21lTWFpYWtlckludHJvQ29sdW1uLFxuICBTQ0NBSUhvbWVNYWlha2VySW50cm9CbG9jayxcbiAgU0NDQUlIb21lTWFpYWtlclRpdGxlLFxuICBTQ0NBSUhvbWVNYWlha2VyU3VidGl0bGUsXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkc1JvdyxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRzTG9hZGVyQ2VsbCxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRCdXR0b24sXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkVG9wUm93LFxuICBTQ0NBSUhvbWVNYWlha2VyQmFkZ2VOZXcsXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkVGl0bGVFbW9qaSxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRUaXRsZU5hbWUsXG4gIFNDQ0FJSG9tZU1haWFrZXJDYXJkQm9keSxcbiAgU0NDQUlIb21lTWFpYWtlckNhcmRTdWJ0aXRsZSxcbn0gZnJvbSAnLi9DaGF0QUlIb21lTWFpYWtlci5zdHlsZXMnXG5cbnR5cGUgQ2hhdEFJSG9tZU1haWFrZXJQcm9wcyA9IHtcbiAgb25TdGFydENoYXQ6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdIHwgbnVsbCxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICApID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSUhvbWVNYWlha2VyID0gKHsgb25TdGFydENoYXQgfTogQ2hhdEFJSG9tZU1haWFrZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCBsYW5nID0gbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKVxuICBjb25zdCB7IHN1Z2dlc3Rpb25zLCBsb2FkaW5nLCBlcnJvciwgaGFuZGxlR2V0QWdlbnRTdWdnZXN0aW9ucyB9ID0gdXNlQWdlbnRTdWdnZXN0aW9ucyhsYW5nKVxuICBjb25zdCBsYXN0RmV0Y2hSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGVBZ2VudCA9ICEhdXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5DcmVhdGVBZ2VudCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gIH0sIFtldmVudEFtcGxpdHVkZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGFzdEZldGNoUmVmLmN1cnJlbnQgIT09IGxhbmcpIHtcbiAgICAgIGxhc3RGZXRjaFJlZi5jdXJyZW50ID0gbGFuZ1xuICAgICAgaGFuZGxlR2V0QWdlbnRTdWdnZXN0aW9ucygpXG4gICAgfVxuICB9LCBbbGFuZywgaGFuZGxlR2V0QWdlbnRTdWdnZXN0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlIb21lTWFpYWtlclJvb3Q+XG4gICAgICA8U0NDQUlIb21lTWFpYWtlckludHJvQ29sdW1uPlxuICAgICAgICA8U0NDQUlIb21lTWFpYWtlckludHJvQmxvY2s+XG4gICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJUaXRsZT57dCgnaG9tZU1lbnUubWFpYWtlci50aXRsZScpfTwvU0NDQUlIb21lTWFpYWtlclRpdGxlPlxuICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJJbnRyb0Jsb2NrPlxuICAgICAgICA8U0NDQUlIb21lTWFpYWtlckludHJvQmxvY2s+XG4gICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJTdWJ0aXRsZT57dCgnaG9tZU1lbnUubWFpYWtlci5kZXNjcmlwdGlvbicpfTwvU0NDQUlIb21lTWFpYWtlclN1YnRpdGxlPlxuICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJJbnRyb0Jsb2NrPlxuICAgICAgICB7Y2FuQ3JlYXRlQWdlbnQgPyAoXG4gICAgICAgICAgPFNDTUFBY3Rpb25zUm93PlxuICAgICAgICAgICAgPFNDTUFDcmVhdGVNYW51YWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZU9wZW5DcmVhdGVBZ2VudH0+XG4gICAgICAgICAgICAgIDxTQ01BQ3JlYXRlTWFudWFsQnV0dG9uVGV4dD5DcmVhciBhZ2VudGUgbWFudWFsbWVudGU8L1NDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0PlxuICAgICAgICAgICAgPC9TQ01BQ3JlYXRlTWFudWFsQnV0dG9uPlxuICAgICAgICAgIDwvU0NNQUFjdGlvbnNSb3c+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ0NBSUhvbWVNYWlha2VySW50cm9Db2x1bW4+XG4gICAgICA8U0NDQUlIb21lTWFpYWtlckNhcmRzUm93PlxuICAgICAgICB7bG9hZGluZyAmJiAhZXJyb3IgPyAoXG4gICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJDYXJkc0xvYWRlckNlbGw+XG4gICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgPC9TQ0NBSUhvbWVNYWlha2VyQ2FyZHNMb2FkZXJDZWxsPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFsb2FkaW5nICYmXG4gICAgICAgICAgIWVycm9yICYmXG4gICAgICAgICAgc3VnZ2VzdGlvbnMubWFwKHN1Z2dlc3Rpb24gPT4gKFxuICAgICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJDYXJkQnV0dG9uXG4gICAgICAgICAgICAgIGtleT17c3VnZ2VzdGlvbi5pZH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBTZWxlY3RBZ2VudCwgeyBhZ2VudF90aXRsZTogc3VnZ2VzdGlvbi50aXRsZSB9KVxuICAgICAgICAgICAgICAgIG9uU3RhcnRDaGF0KHN1Z2dlc3Rpb24udGl0bGUsIG51bGwsIHVuZGVmaW5lZCwgc3VnZ2VzdGlvbi5pZClcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFNDQ0FJSG9tZU1haWFrZXJDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVNYWlha2VyQ2FyZFRpdGxlRW1vamkgYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICAgICAgICB7c3VnZ2VzdGlvbi5lbW9qaT8udHJpbSgpID8gc3VnZ2VzdGlvbi5lbW9qaSA6ICdcXHUwMGEwJ31cbiAgICAgICAgICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJDYXJkVGl0bGVFbW9qaT5cbiAgICAgICAgICAgICAgICA8U0NDQUlIb21lTWFpYWtlckJhZGdlTmV3Pnt0KCdob21lTWVudS5tYWlha2VyLmJhZGdlTmV3Jyl9PC9TQ0NBSUhvbWVNYWlha2VyQmFkZ2VOZXc+XG4gICAgICAgICAgICAgIDwvU0NDQUlIb21lTWFpYWtlckNhcmRUb3BSb3c+XG4gICAgICAgICAgICAgIDxTQ0NBSUhvbWVNYWlha2VyQ2FyZFRpdGxlTmFtZT57c3VnZ2VzdGlvbi50aXRsZX08L1NDQ0FJSG9tZU1haWFrZXJDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICA8U0NDQUlIb21lTWFpYWtlckNhcmRCb2R5PlxuICAgICAgICAgICAgICAgIDxTQ0NBSUhvbWVNYWlha2VyQ2FyZFN1YnRpdGxlPntzdWdnZXN0aW9uLnN1YnRpdGxlfTwvU0NDQUlIb21lTWFpYWtlckNhcmRTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ0NBSUhvbWVNYWlha2VyQ2FyZEJvZHk+XG4gICAgICAgICAgICA8L1NDQ0FJSG9tZU1haWFrZXJDYXJkQnV0dG9uPlxuICAgICAgICAgICkpfVxuICAgICAgPC9TQ0NBSUhvbWVNYWlha2VyQ2FyZHNSb3c+XG4gICAgPC9TQ0NBSUhvbWVNYWlha2VyUm9vdD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxNQUFNLFFBQVEsT0FBTztBQUN0RCxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsbUJBQW1CLFFBQVEsb0NBQW9DO0FBQ3hFLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUMxRCxTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBRWhELFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FDRUMsY0FBYyxF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
@@ -41,6 +41,7 @@ import { MAIAIcon } from '../../atoms/icons';
41
41
  import { TASK_URL_REGEX_PATTERN } from '../../../constants/taskUrls';
42
42
  import { ChatAISuggestions } from './ChatAISuggestions';
43
43
  import { ChatAICreateAgentActions } from './ChatAICreateAgentActions';
44
+ import { EVENTS, useEvent } from '../../../hooks/useEvent';
44
45
 
45
46
  /** Contexto con el texto del mensaje en streaming. Solo el componente que lo consume re-renderiza cuando cambia. */
46
47
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
@@ -426,6 +427,7 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
426
427
  isWebSearchActive = _useGlobalContext3.isWebSearchActive,
427
428
  isDeepSearchActive = _useGlobalContext3.isDeepSearchActive,
428
429
  agent = _useGlobalContext3.agent;
430
+ var event = useEvent();
429
431
  var authUser = useUser();
430
432
  var messagesRef = useRef(null);
431
433
  var chatInitializedRef = useRef(false);
@@ -472,11 +474,15 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
472
474
  var handleSuggestionClick = useCallback(function (messageId, suggestion) {
473
475
  if (!(suggestion !== null && suggestion !== void 0 && suggestion.trim())) return;
474
476
  if (selectedSuggestionMessageIds[messageId]) return;
477
+ var isMarketplaceGlobalAgent = (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global' && /(maiaker|marketplace)/i.test((agent === null || agent === void 0 ? void 0 : agent.name) || '');
478
+ event(EVENTS.aiChatSuggestedAnswer, {
479
+ agent_type: isMarketplaceGlobalAgent ? 'marketplace' : agent === null || agent === void 0 ? void 0 : agent.type
480
+ });
475
481
  setSelectedSuggestionMessageIds(function (prev) {
476
482
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, messageId, true));
477
483
  });
478
484
  sendMessage(suggestion);
479
- }, [sendMessage, selectedSuggestionMessageIds]);
485
+ }, [sendMessage, selectedSuggestionMessageIds, event, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.name, agent === null || agent === void 0 ? void 0 : agent.type]);
480
486
  var handleClickScrollToBottom = useCallback(function () {
481
487
  if (messagesRef.current) {
482
488
  messagesRef.current.scrollTo({
@@ -814,4 +820,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
814
820
  });
815
821
  };
816
822
  export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
817
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsIkNoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlN0cmVhbWluZ01lc3NhZ2VDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvY2FsQWdlbnQiLCJzZXRMb2NhbEFnZW50IiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZ2V0VGFiU2VnbWVudEZyb21IcmVmIiwiaHJlZiIsIm1hdGNoIiwidGVzdCIsImV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlIiwibWVzc2FnZSIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInRhc2tzIiwic2VlbklkcyIsIlNldCIsImV4ZWMiLCJ0YXNrSWQiLCJ1cmwiLCJoYXMiLCJhZGQiLCJlc2NhcGVkVXJsIiwicmVwbGFjZSIsIm1hcmtkb3duTGlua1JlZ2V4IiwiY29uY2F0IiwibGlua01hdGNoIiwidGl0bGUiLCJwdXNoIiwiaGFzVGFza0xpbmtzIiwidGV4dCIsImxlbmd0aCIsIlRhc2tMaW5rIiwiX3JlZjQiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjUiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsInRhc2tNYXRjaCIsIlN0cmVhbWluZ01lc3NhZ2VCb2R5IiwiX3Byb3BzJGNyZWF0ZUFnZW50Rm9sIiwiZnJvbUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiZGlzcGxheVRleHQiLCJpc1N0cmVhbWluZyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImRlYnVnQ291bnRSZWYiLCJ3aW5kb3ciLCJNQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIiLCJjdXJyZW50IiwiY29uc29sZSIsImxvZyIsImNvdW50IiwibGVuIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsImlzQXNzaXN0YW50IiwicGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImVuYWJsZWQiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJtZXNzYWdlSWQiLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsIm9uUmVqZWN0IiwiaXNQcm9qZWN0RGVsZXRlZCIsInByb2plY3RNZXRhZGF0YSIsImlzX2RlbGV0ZWQiLCJpc0V4cGFuZGVkIiwiZXhwYW5kZWQiLCJoaXRsSW5zdGFuY2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsImlzT3BlbiIsIm9uQ2xvc2UiLCJDaGF0QUlNZXNzYWdlc0lubmVyIiwiX3JlZjgiLCJfbGFzdE1zZyR1c2VyIiwiX2xhc3RNc2ckbWVzc2FnZTIiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJpbml0aWFsQ2hhdElkIiwib25FcnJvciIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsIm9uU2Nyb2xsVG9Cb3R0b20iLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJfdXNlR2xvYmFsQ29udGV4dDMiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsIm1lc3NhZ2VzUmVmIiwiY2hhdEluaXRpYWxpemVkUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsInVzZXJTY3JvbGxpbmdSZWYiLCJzY3JvbGxUaHJlc2hvbGRSZWYiLCJsYXN0U2Nyb2xsVG9wUmVmIiwic2hvd1Njcm9sbFRvQm90dG9tUmVmIiwic2Nyb2xsUmFmUmVmIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzaG93U2Nyb2xsVG9Cb3R0b20iLCJzZXRTaG93U2Nyb2xsVG9Cb3R0b20iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwic3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmIiwic3RyZWFtaW5nTWVzc2FnZUlkUmVmIiwiX3VzZUNoYXRNYW5hZ2VyIiwiY2hhdElkIiwidW5kZWZpbmVkIiwibWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsInRyaW0iLCJwcmV2IiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSIsInNjcm9sbFRvIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJzZXRUaW1lb3V0IiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJzY3JvbGxUb3AiLCJjbGllbnRIZWlnaHQiLCJkaXN0YW5jZUZyb21Cb3R0b20iLCJzaG91bGRTaG93IiwiaGFuZGxlU2Nyb2xsVG9Cb3R0b20iLCJjb250YWluZXIiLCJjdXJyZW50VGFyZ2V0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1Njcm9sbGluZ1VwIiwiaXNOZWFyQm90dG9tIiwiZGlkU2V0U3RhdGUiLCJzZW5kTWVzc2FnZVJlZiIsInN0b3BHZW5lcmF0aW9uUmVmIiwib25TZW5kTWVzc2FnZVJlYWR5UmVmIiwibGFzdE1lc3NhZ2UiLCJoYXNBcHByb3ZhbCIsImlzQXRCb3R0b20iLCJzY3JvbGxUb0JvdHRvbSIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MiIsImlzTmV3QW5zd2VyTWVzc2FnZSIsImlzTmV3VXNlck1lc3NhZ2UiLCJpc05ld0FwcHJvdmFsTWVzc2FnZSIsImhhc01lc3NhZ2VzIiwiaXNOb3RJbml0aWFsTWVzc2FnZSIsIm1zZyIsInNjcm9sbERlbGF5IiwiZG9TY3JvbGwiLCJfbWVzc2FnZXNSZWYkY3VycmVudDMiLCJfbWVzc2FnZXNSZWYkY3VycmVudDQiLCJsYXN0VXNlck1lc3NhZ2UiLCJhdCIsImhhc0F0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiaXNTY3JvbGxPblBhcmVudCIsImlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCIsImVudGl0eSIsImxpc3RSZW5kZXJDb3VudFJlZiIsIl9sYXN0TXNnJGlkIiwiX2xhc3RNc2ckbWVzc2FnZSRsZW5nIiwiX2xhc3RNc2ckbWVzc2FnZSIsImxhc3RNc2ciLCJsYXN0S2V5IiwibGFzdE1lc3NhZ2VLZXkiLCJsYXN0TWVzc2FnZUxlbiIsIm1lc3NhZ2VzQ291bnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwiaXNTdHJlYW1pbmdBY3RpdmUiLCJzdHJlYW1pbmdUZXh0IiwibWVzc2FnZXNDb250ZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIl9tZXNzYWdlJGF0dGFjaG1lbnRzIiwiX21lc3NhZ2Ukc291cmNlcyIsIl9tZXNzYWdlJHByb2plY3QiLCJfbWVzc2FnZSRpZCIsInByb2plY3QiLCJtZXNzYWdlRmVlZGJhY2siLCJ3YXNIZWxwZnVsIiwiVEhVTUJTX1VQIiwiVEhVTUJTX0RPV04iLCJpc0Fzc2lzdGFudE1lc3NhZ2UiLCJtZXNzYWdlS2V5IiwiX21lc3NhZ2UkaWQyIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5Iiwia2V5cyIsInZhbHVlcyIsImZpbmQiLCIkc2Nyb2xsT25QYXJlbnQiLCJyZWYiLCJvblNjcm9sbCIsIiRpc01hcmtldHBsYWNlR2xvYmFsIiwiY29sb3IiLCJDaGF0QUlNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlNZXNzYWdlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnN0YWJsZS1uZXN0ZWQtY29tcG9uZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgbWVtbywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFN0cmVhbWRvd24gfSBmcm9tICdzdHJlYW1kb3duJ1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJ0BzdHJlYW1kb3duL2NvZGUnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUsIFRhc2tJbmZvIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcblxuaW1wb3J0IHsgQ09SVXNlciwgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgdXNlQ2hhdE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlcidcbmltcG9ydCB7IHVzZVRhc2tQYW5lbCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVRhc2tQYW5lbCdcblxuaW1wb3J0IHsgTG9hZGluZ1RleHQgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkaW5nVGV4dCdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyLFxuICBTQ0Fzc2lzdGFudE5hbWUsXG4gIFNDQXNzaXN0YW50QXZhdGFyLFxuICBTQ1Rhc2tMaW5rLFxuICBTQ01lc3NhZ2VJdGVtV3JhcHBlcixcbiAgU0NNZXNzYWdlSXRlbUlubmVyLFxuICBTQ0F0dGFjaG1lbnRzUm93LFxuICBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbixcbn0gZnJvbSAnLi9uZXdTdHlsZXMnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgQ2hhdEFJU3VnZ2VzdGlvbnMgfSBmcm9tICcuL0NoYXRBSVN1Z2dlc3Rpb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMnXG5cbi8qKiBDb250ZXh0byBjb24gZWwgdGV4dG8gZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nLiBTb2xvIGVsIGNvbXBvbmVudGUgcXVlIGxvIGNvbnN1bWUgcmUtcmVuZGVyaXphIGN1YW5kbyBjYW1iaWEuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8c3RyaW5nPignJylcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhcklubmVyOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50QXZhdGFyPlxuICAgICAge2FnZW50Py50eXBlID09PSAnY2xvbmUnID8gPE1BSUFJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4gOiBhZ2VudD8uZW1vaml9XG4gICAgPC9TQ0Fzc2lzdGFudEF2YXRhcj5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXIgPSBtZW1vKEFzc2lzdGFudEF2YXRhcklubmVyKVxuXG50eXBlIENoYXRBSU1lc3NhZ2VzUHJvcHMgPSB7XG4gIHVzZXJJbml0aWFsTWVzc2FnZToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICB9XG4gIGluaXRpYWxDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBvblNlbmRNZXNzYWdlUmVhZHk/OiAoXG4gICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSwgZmFxSWQ/OiBzdHJpbmcsIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nKSA9PiB2b2lkLFxuICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuLFxuICAgIGlzV3JpdGluZzogYm9vbGVhblxuICApID0+IHZvaWRcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TY3JvbGxUb0JvdHRvbT86ICgpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGFnZW50cz86IEFnZW50W11cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUl0ZW1Qcm9wcyA9IENoYXRNZXNzYWdlICYge1xuICBhdXRoVXNlcjogQ09SVXNlclxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbiAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24/OiBib29sZWFuXG4gIGhhbmRsZUZlZWRiYWNrOiAoZmVlZGJhY2s6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbjogKHRocmVhZElkczogc3RyaW5nW10sIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JykgPT4gdm9pZFxuICBkaXNhYmxlRmVlZGJhY2s/OiBGZWVkYmFjayB8IG51bGxcbiAgc291cmNlcz86IGFueVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgTWVzc2FnZVdyYXBwZXJQcm9wcyB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICAnZGF0YS1tZXNzYWdlLWlkJz86IHN0cmluZ1xuICBoYXNGZWVkYmFjaz86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcyA9IE1BSUFNZXNzYWdlUHJvcHMgJiB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgaXNFcnJvcj86IGJvb2xlYW5cbiAgaXNDaGFuZ2VQcm9qZWN0PzogYm9vbGVhblxufVxuXG5jb25zdCBNZXNzYWdlV3JhcHBlcjogRkM8TWVzc2FnZVdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VGcm9tVXNlciA6IE1lc3NhZ2VGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29tcG9uZW50IHsuLi5wcm9wc30+e2NoaWxkcmVufTwvTWVzc2FnZUNvbXBvbmVudD5cbn1cblxuY29uc3QgTWVzc2FnZUNvbnRlbnRXcmFwcGVyOiBGQzxNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb250ZW50Q29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VDb250ZW50RnJvbVVzZXIgOiBNZXNzYWdlQ29udGVudEZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb250ZW50Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gTWVzc2FnZU9wdGlvbnMoe1xuICBvcHRpb25zLFxuICBoYW5kbGVTZWxlY3RPcHRpb24sXG59OiB7XG4gIG9wdGlvbnM6IFByb2plY3RbXSB8IG51bGxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8UHJvamVjdCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikgcmV0dXJuXG4gICAgc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uKVxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ09wdGlvbnNMaXN0PlxuICAgICAgeyhvcHRpb25zIHx8IFtdKS5tYXAob3B0aW9uID0+IChcbiAgICAgICAgPFNDT3B0aW9uSXRlbVxuICAgICAgICAgICRoYXNTZWxlY3Rpb249eyEhc2VsZWN0ZWRPcHRpb259XG4gICAgICAgICAgJGRpbW1lZD17ISFzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvbj8uaWQgIT09IG9wdGlvbi5pZH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3Qob3B0aW9uKX1cbiAgICAgICAgICBrZXk9e29wdGlvbi5pZH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgPC9TQ09wdGlvbkl0ZW0+XG4gICAgICApKX1cbiAgICA8L1NDT3B0aW9uc0xpc3Q+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50TWVzc2FnZUhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgW2xvY2FsQWdlbnQsIHNldExvY2FsQWdlbnRdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExvY2FsQWdlbnQoYWdlbnQpXG4gIH0sIFthZ2VudF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyPlxuICAgICAgPEFzc2lzdGFudEF2YXRhciAvPlxuICAgICAge2xvY2FsQWdlbnQ/Lm5hbWUgJiYgKFxuICAgICAgICA8U0NBc3Npc3RhbnROYW1lPntsb2NhbEFnZW50Py50eXBlID09PSAnY2xvbmUnID8gJ01BSUEnIDogbG9jYWxBZ2VudD8ubmFtZX08L1NDQXNzaXN0YW50TmFtZT5cbiAgICAgICl9XG4gICAgPC9TQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gIClcbn1cblxuLy8gRXh0cmFlIGVsIHNlZ21lbnRvIGRlIHRhYiAoZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykgZGVsIGhyZWYgcGFyYSBhYnJpciBlbCBtb2RhbCBjb24gZWwgdGFiIGNvcnJlY3RvXG5jb25zdCBnZXRUYWJTZWdtZW50RnJvbUhyZWYgPSAoaHJlZjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWF0Y2ggPSBocmVmLm1hdGNoKC9cXC90YXNrc1xcL1xcZCtcXC8oW14vP10rKS8pXG4gIHJldHVybiBtYXRjaCAmJiAvXihkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSQvLnRlc3QobWF0Y2hbMV0pID8gbWF0Y2hbMV0gOiAnZGV0YWlsJ1xufVxuXG4vKiogRXh0cmFlIGxhcyB0YXJlYXMgZW5sYXphZGFzIGVuIGVsIHRleHRvIChVUkxzIHF1ZSBjb2luY2lkZW4gY29uIFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4pLiAqL1xuY29uc3QgZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKTogVGFza0luZm9bXSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIFtdXG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICBjb25zdCB0YXNrczogVGFza0luZm9bXSA9IFtdXG4gIGNvbnN0IHNlZW5JZHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBudWxsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAoKG1hdGNoID0gdGFza1VybFJlZ2V4LmV4ZWMobWVzc2FnZSkpICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFza0lkID0gbWF0Y2hbMV1cbiAgICBjb25zdCB1cmwgPSBtYXRjaFswXVxuICAgIGlmICghc2Vlbklkcy5oYXModGFza0lkKSkge1xuICAgICAgc2Vlbklkcy5hZGQodGFza0lkKVxuICAgICAgY29uc3QgZXNjYXBlZFVybCA9IHVybC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpXG4gICAgICBjb25zdCBtYXJrZG93bkxpbmtSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxbKFteXFxcXF1dKylcXFxcXVxcXFwoJHtlc2NhcGVkVXJsfVxcXFwpYClcbiAgICAgIGNvbnN0IGxpbmtNYXRjaCA9IG1lc3NhZ2UubWF0Y2gobWFya2Rvd25MaW5rUmVnZXgpXG4gICAgICBjb25zdCB0aXRsZSA9IGxpbmtNYXRjaCA/IGxpbmtNYXRjaFsxXSA6IGBUYXJlYSAjJHt0YXNrSWR9YFxuICAgICAgdGFza3MucHVzaCh7IGlkOiB0YXNrSWQsIHRpdGxlLCB1cmwgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhc2tzXG59XG5cbmNvbnN0IGhhc1Rhc2tMaW5rcyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IGV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlKHRleHQpLmxlbmd0aCA+IDBcblxuLy8gQ29tcG9uZW50IGZvciB0YXNrIGxpbmtzIHRoYXQgdXNlcyB0aGUgdXNlVGFza1BhbmVsIGhvb2tcbmNvbnN0IFRhc2tMaW5rOiBGQzx7IGhyZWY6IHN0cmluZzsgdGFza0lkOiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfT4gPSAoeyBocmVmLCB0YXNrSWQsIGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgdGFiU2VnbWVudCA9IGdldFRhYlNlZ21lbnRGcm9tSHJlZihocmVmKVxuICBjb25zdCB7IGJ1aWxkT3BlblRhc2sgfSA9IHVzZVRhc2tQYW5lbCh0YXNrSWQsIHRhYlNlZ21lbnQpXG4gIGNvbnN0IG9wZW5UYXNrID0gYnVpbGRPcGVuVGFzaygpXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAvLyBTaSBlcyBDbWQvQ3RybCArIGNsaWNrLCBkZWphciBxdWUgc2UgYWJyYSBlbiBudWV2YSBwZXN0YcOxYSAoY29tcG9ydGFtaWVudG8gcG9yIGRlZmVjdG8pXG4gICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDVGFza0xpbmsgaHJlZj17aHJlZn0gb25DbGljaz17aGFuZGxlQ2xpY2t9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU0NUYXNrTGluaz5cbiAgKVxufVxuXG4vLyBDdXN0b20gbGluayBjb21wb25lbnQgZm9yIFN0cmVhbWRvd246IHRhc2sgVVJMcyBvcGVuIHRoZSB0YXNrIHBhbmVsLCBvdGhlciBsaW5rcyByZW5kZXIgbm9ybWFsbHlcbnR5cGUgQ3VzdG9tTGlua1Byb3BzID0gUmVhY3QuQW5jaG9ySFRNTEF0dHJpYnV0ZXM8SFRNTEFuY2hvckVsZW1lbnQ+ICYgeyBub2RlPzogdW5rbm93biB9XG5jb25zdCBDdXN0b21MaW5rOiBGQzxDdXN0b21MaW5rUHJvcHM+ID0gKHsgaHJlZiwgY2hpbGRyZW4sIC4uLnJlc3QgfSkgPT4ge1xuICBpZiAoIWhyZWYgfHwgdHlwZW9mIGhyZWYgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9hPlxuICAgIClcbiAgfVxuICBjb25zdCB0YXNrTWF0Y2ggPSBocmVmLm1hdGNoKG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTikpXG4gIGlmICh0YXNrTWF0Y2gpIHtcbiAgICBjb25zdCB0YXNrSWQgPSB0YXNrTWF0Y2hbMV1cbiAgICByZXR1cm4gKFxuICAgICAgPFRhc2tMaW5rIGhyZWY9e2hyZWZ9IHRhc2tJZD17dGFza0lkfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9UYXNrTGluaz5cbiAgICApXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9hPlxuICApXG59XG5cbi8qKiBTb2xvIGVzdGUgY29tcG9uZW50ZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYSBlbCB0ZXh0byBlbiBzdHJlYW1pbmcgKGxlZSBkZWwgY29udGV4dCkuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQm9keSA9IG1lbW8oXG4gIChwcm9wczoge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuXG4gICAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICAgIGlzQXNzaXN0YW50OiBib29sZWFuXG4gICAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgICBhcHByb3ZhbD86IE1lc3NhZ2VJdGVtUHJvcHNbJ2FwcHJvdmFsJ11cbiAgICBpc0Vycm9yPzogYm9vbGVhblxuICAgIHNvdXJjZXM/OiBNZXNzYWdlSXRlbVByb3BzWydzb3VyY2VzJ11cbiAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA/OiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgbnVsbFxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ/OiBib29sZWFuXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgY29uc3QgZnJvbUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFN0cmVhbWluZ01lc3NhZ2VDb250ZXh0KVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gcHJvcHMuaXNTdHJlYW1pbmcgPyBmcm9tQ29udGV4dCA6IHByb3BzLm1lc3NhZ2VcbiAgICBjb25zdCBjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkID0gcHJvcHMuY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZFxuICAgIGNvbnN0IGRlYnVnQ291bnRSZWYgPSBSZWFjdC51c2VSZWYoMClcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiAmJiBwcm9wcy5pc1N0cmVhbWluZykge1xuICAgICAgZGVidWdDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1N0cmVhbWluZ01lc3NhZ2VCb2R5XSByZW5kZXInLCB7IGNvdW50OiBkZWJ1Z0NvdW50UmVmLmN1cnJlbnQsIGxlbjogZGlzcGxheVRleHQ/Lmxlbmd0aCB9KVxuICAgIH1cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwcm9wcy5pc0Fzc2lzdGFudCAmJiBoYXNUYXNrTGlua3MoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgIGlzQW5pbWF0aW5nPXshIXByb3BzLmlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgPC9TQ0NBSU1lc3NhZ2VXcmFwcGVyPlxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmICFwcm9wcy5pc1N0cmVhbWluZyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2VGZWVkYmFja1xuICAgICAgICAgICAgY29udGVudD17ZGlzcGxheVRleHR9XG4gICAgICAgICAgICBzb3VyY2VzPXtwcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e3Byb3BzLmhhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e3Byb3BzLmRpc2FibGVGZWVkYmFja31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmIChcbiAgICAgICAgICA8Q2hhdEFJU3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtwcm9wcy5zdWdnZXN0aW9ucyB8fCBbXX1cbiAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiZcbiAgICAgICAgICAhcHJvcHMuaXNFcnJvciAmJlxuICAgICAgICAgICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmXG4gICAgICAgICAgIXByb3BzLmFwcHJvdmFsICYmXG4gICAgICAgICAgISFjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkICYmIChcbiAgICAgICAgICAgIDxDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnNcbiAgICAgICAgICAgICAgYWdlbnRJZD17Y3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cbilcblxuY29uc3QgTWVzc2FnZUl0ZW0gPSBtZW1vKChwcm9wczogTWVzc2FnZUl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgdXNlcixcbiAgICBtZXNzYWdlLFxuICAgIGlzU3RyZWFtaW5nLFxuICAgIGlzRXJyb3IsXG4gICAgYXV0aFVzZXIsXG4gICAgb3B0aW9ucyxcbiAgICBpc0NoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uLFxuICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljayxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGRpc2FibGVGZWVkYmFjayxcbiAgICByb2xlLFxuICAgIHNvdXJjZXMsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYXBwcm92YWwsXG4gICAgYXBwcm92YWxTdGF0dXMsXG4gICAgc3VnZ2VzdGlvbnMsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcCxcbiAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24sXG4gICAgaXNMYXN0TWVzc2FnZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgW3ByZXZpZXdBdHRhY2htZW50LCBzZXRQcmV2aWV3QXR0YWNobWVudF0gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzQ3VycmVudFVzZXIgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCB1c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpXG4gIGNvbnN0IGlzQXNzaXN0YW50ID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCB1c2VyLmlkID09PSAnYXNzaXN0YW50J1xuXG4gIC8vIERFQlVHIHN0cmVhbWluZzogdmVyIHJlLXJlbmRlcnMgeSByZW1vdW50cy4gSGFiaWxpdGFyIGNvbiB3aW5kb3cuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSID0gdHJ1ZVxuICBjb25zdCByZW5kZXJDb3VudFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBwcmV2TWVzc2FnZUxlblJlZiA9IHVzZVJlZjxudW1iZXI+KG1lc3NhZ2U/Lmxlbmd0aCA/PyAwKVxuICByZW5kZXJDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgaWYgKGlzU3RyZWFtaW5nICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIpIHtcbiAgICBjb25zdCBwcmV2TGVuID0gcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudFxuICAgIHByZXZNZXNzYWdlTGVuUmVmLmN1cnJlbnQgPSBtZXNzYWdlPy5sZW5ndGggPz8gMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tNZXNzYWdlSXRlbV0gcmVuZGVyJywge1xuICAgICAgbWVzc2FnZUlkOiBpZCxcbiAgICAgIHJlbmRlckNvdW50OiByZW5kZXJDb3VudFJlZi5jdXJyZW50LFxuICAgICAgbWVzc2FnZUxlbjogbWVzc2FnZT8ubGVuZ3RoLFxuICAgICAgcHJldk1lc3NhZ2VMZW46IHByZXZMZW4sXG4gICAgICBpc1N0cmVhbWluZzogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICAgICAgPE1lc3NhZ2VDb250ZW50V3JhcHBlclxuICAgICAgICAgICAgaXNDaGFuZ2VQcm9qZWN0PXtpc0NoYW5nZVByb2plY3R9XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBtZXNzYWdlRXh0cmFDb250ZW50PXs8TWVzc2FnZU9wdGlvbnMgb3B0aW9ucz17b3B0aW9ucyBhcyBhbnl9IGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICAgPC9NZXNzYWdlV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVGZWVkYmFja0NsaWNrID0gKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IGlkXG4gICAgICAuc3BsaXQoJy0nKVxuICAgICAgLmZpbHRlcihxdWVzdGlvbklkID0+IHF1ZXN0aW9uSWQgIT09ICdhbnN3ZXInKVxuICAgICAgLmpvaW4oJy0nKVxuICAgIGhhbmRsZUZlZWRiYWNrPy4oZmVlZGJhY2ssIHNlc3Npb25JZClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAge2lzQXNzaXN0YW50ICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgPFNDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgICAgeyEhKGF0dGFjaG1lbnRzIHx8IHNvdXJjZXMpPy5sZW5ndGggJiYgIWlzQXNzaXN0YW50ICYmIChcbiAgICAgICAgICA8U0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgICAgIHsoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLy8gRGV0ZWN0YXIgc2kgZXMgdW4gYXJjaGl2byBkZSBhdWRpb1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQ/LnR5cGU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudE5hbWUgPSBhdHRhY2htZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzQXVkaW9GaWxlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fFxuICAgICAgICAgICAgICAgIFsnZmxhYycsICdtNGEnLCAnbXAzJywgJ21wNCcsICdvZ2EnLCAnb2dnJywgJ3dhdicsICd3ZWJtJ10uaW5jbHVkZXMoYXR0YWNobWVudFR5cGUpIHx8XG4gICAgICAgICAgICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLnNvbWUoZXh0ID0+XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50TmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChpc0F1ZGlvRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXR0YWNobWVudENhcmRBdWRpbyBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9IGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAge2FwcHJvdmFsICYmIGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyAmJiAoXG4gICAgICAgICAgPFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICAgICAgPEFwcHJvdmFsQm94XG4gICAgICAgICAgICAgIGFjdGlvbnM9e2FwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc31cbiAgICAgICAgICAgICAgc3RhdHVzPXthcHByb3ZhbFN0YXR1c31cbiAgICAgICAgICAgICAgb25BcHByb3ZlPXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdhcHByb3ZlJyl9XG4gICAgICAgICAgICAgIG9uUmVqZWN0PXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdyZWplY3QnKX1cbiAgICAgICAgICAgICAgaXNQcm9qZWN0RGVsZXRlZD17cHJvcHMucHJvamVjdE1ldGFkYXRhPy5pc19kZWxldGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5leHBhbmRlZH1cbiAgICAgICAgICAgICAgaGl0bEluc3RhbmNlSWQ9e2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyghIW1lc3NhZ2UgfHwgaXNTdHJlYW1pbmcpICYmICFhcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPFN0cmVhbWluZ01lc3NhZ2VCb2R5XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlID8/ICcnfVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9eyEhaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcD17Y3JlYXRlQWdlbnRGb2xsb3dVcH1cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s9e2hhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e2Rpc2FibGVGZWVkYmFjayA/PyBudWxsfVxuICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICBzdWdnZXN0aW9uc0Rpc2FibGVkPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICEhaGFzU2VsZWN0ZWRTdWdnZXN0aW9ufVxuICAgICAgICAgICAgbWVzc2FnZUlkPXtpZH1cbiAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICApXG59KVxuXG5jb25zdCBDaGF0QUlNZXNzYWdlc0lubmVyID0gKHtcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBpbml0aWFsQ2hhdElkLFxuICBvbkVycm9yLFxuICBvblNlbmRNZXNzYWdlUmVhZHksXG4gIG9uU2Nyb2xsVG9Cb3R0b20sXG4gIGF0dGFjaG1lbnRzLFxuICBhZ2VudHMsXG4gIGV4cGFuZGVkLFxufTogQ2hhdEFJTWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB7IGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoYXRJbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNMb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgdXNlclNjcm9sbGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGhyZXNob2xkUmVmID0gdXNlUmVmKDM5KVxuICBjb25zdCBsYXN0U2Nyb2xsVG9wUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNob3dTY3JvbGxUb0JvdHRvbVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsUmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzaG93U2Nyb2xsVG9Cb3R0b20sIHNldFNob3dTY3JvbGxUb0JvdHRvbV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMsIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KVxuICBjb25zdCBzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYgPSB1c2VSZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KVxuICBjb25zdCBzdHJlYW1pbmdNZXNzYWdlSWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgc3RvcEdlbmVyYXRpb24sXG4gIH0gPSB1c2VDaGF0TWFuYWdlcih7XG4gICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IHVuZGVmaW5lZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgb25FcnJvcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBhZ2VudHMsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgY2hhbmdlUHJvamVjdChvcHRpb24pXG4gICAgfSxcbiAgICBbY2hhbmdlUHJvamVjdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN1Z2dlc3Rpb25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1Z2dlc3Rpb24/LnRyaW0oKSkgcmV0dXJuXG4gICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlSWRdKSByZXR1cm5cbiAgICAgIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMocHJldiA9PiAoeyAuLi5wcmV2LCBbbWVzc2FnZUlkXTogdHJ1ZSB9KSlcbiAgICAgIHNlbmRNZXNzYWdlKHN1Z2dlc3Rpb24pXG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2UsIHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvKHtcbiAgICAgICAgdG9wOiBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgfSlcbiAgICAgIC8vIEFjdHVhbGl6YXIgZXN0YWRvIGRlc3B1w6lzIGRlIHVuIGJyZXZlIGRlbGF5IHBhcmEgcGVybWl0aXIgcXVlIGVsIHNjcm9sbCBzZSBjb21wbGV0ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cbiAgICAgIH0sIDUwMClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbFRvQm90dG9tID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LlVJRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBlLmN1cnJlbnRUYXJnZXRcblxuICAgICAgaWYgKHNjcm9sbFJhZlJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHNjcm9sbFJhZlJlZi5jdXJyZW50KVxuICAgICAgfVxuXG4gICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuXG4gICAgICAgIGNvbnN0IGlzU2Nyb2xsaW5nVXAgPSBzY3JvbGxUb3AgPCBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNTY3JvbGxpbmdVcCkge1xuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMTVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTmVhckJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA8IHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzTmVhckJvdHRvbSkge1xuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICAgICAgfVxuXG4gICAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9ICFpc05lYXJCb3R0b21cbiAgICAgICAgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50ID0gc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICBjb25zdCBkaWRTZXRTdGF0ZSA9IHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ICE9PSBzaG91bGRTaG93XG4gICAgICAgIGlmIChkaWRTZXRTdGF0ZSkge1xuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmVhckJvdHRvbSAmJiBvblNjcm9sbFRvQm90dG9tKSB7XG4gICAgICAgICAgb25TY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVTY3JvbGwoY29udGFpbmVyKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtvblNjcm9sbFRvQm90dG9tLCBoYW5kbGVTY3JvbGxdXG4gIClcblxuICAvLyByZWZzIHRvIHN0YWJpbGl6ZSBmdW5jdGlvbnMgYW5kIGF2b2lkIHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcbiAgY29uc3Qgc2VuZE1lc3NhZ2VSZWYgPSB1c2VSZWYoc2VuZE1lc3NhZ2UpXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uUmVmID0gdXNlUmVmKHN0b3BHZW5lcmF0aW9uKVxuICBjb25zdCBvblNlbmRNZXNzYWdlUmVhZHlSZWYgPSB1c2VSZWYob25TZW5kTWVzc2FnZVJlYWR5KVxuXG4gIC8vIHVwZGF0ZSByZWZzIHdoZW4gZnVuY3Rpb25zIGNoYW5nZVxuICBzZW5kTWVzc2FnZVJlZi5jdXJyZW50ID0gc2VuZE1lc3NhZ2VcbiAgc3RvcEdlbmVyYXRpb25SZWYuY3VycmVudCA9IHN0b3BHZW5lcmF0aW9uXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50ID0gb25TZW5kTWVzc2FnZVJlYWR5XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQsIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQsIHdhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGlzTG9hZGluZ01vcmVNZXNzYWdlc1xuICB9LCBbaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICAvLyBDdWFuZG8gZWwgYWdlbnRlIGVtcGllemEgYSByZXNwb25kZXIsIHJlc2V0ZWFyIGVsIGZsYWcgeSBlbCB1bWJyYWwgcGFyYSBhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSkge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBpbml0aWFsaXplQ2hhdCgpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBTY3JvbGwgY3VhbmRvIGxsZWdhIHVuIG1lbnNhamUgZGUgYXByb2JhY2nDs24gKEFwcHJvdmFsQm94KS4gU2luIFJlc2l6ZU9ic2VydmVyIGVuIGVsXG4gIC8vIGNvbnRlbmVkb3I6IG9ic2VydmFybG8gZGlzcGFyYWJhIGNhbGxiYWNrcyBhbCBjYW1iaWFyIGVsIGxheW91dC9zY3JvbGxiYXIgeSBjYWRhIHVub1xuICAvLyBsbGFtYWJhIHNjcm9sbFRvQm90dG9tKCksIHByb3ZvY2FuZG8gdGlyb25lcyBhbCBzY3JvbGxlYXIuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgaGFzQXBwcm92YWwgPSBsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYXBwcm92YWwtJykgfHwgISFsYXN0TWVzc2FnZS5hcHByb3ZhbClcblxuICAgIGlmICghaGFzQXBwcm92YWwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcblxuICAgIGlmICghKGlzQXRCb3R0b20gfHwgIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxUb0JvdHRvbSA9ICgpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWN1ZW5jaWEgaW5pY2lhbCBkZSBzY3JvbGwgcGFyYSBjdWFuZG8gZWwgQXBwcm92YWxCb3ggYWNhYmEgZGUgcmVuZGVyaXphcnNlXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHNjcm9sbFRvQm90dG9tKClcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgc2V0VGltZW91dChzY3JvbGxUb0JvdHRvbSwgMTAwKVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbbWVzc2FnZXMsIGxvYWRpbmdNZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNpIGVsIHVzdWFyaW8gZXN0w6Egc2Nyb2xsZWFuZG8gbWFudWFsbWVudGUsIG5vIGhhY2VyIGF1dG8gc2Nyb2xsXG4gICAgaWYgKHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCAmJiB3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQgfHwgbG9hZGluZ01lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cblxuICAgIGNvbnN0IGlzTmV3QW5zd2VyTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2Fuc3dlci0nKVxuICAgIGNvbnN0IGlzTmV3VXNlck1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdxdWVzdGlvbi0nKVxuICAgIGNvbnN0IGlzTmV3QXBwcm92YWxNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcbiAgICBjb25zdCBoYXNNZXNzYWdlcyA9ICEhbWVzc2FnZXMubGVuZ3RoXG4gICAgY29uc3QgaXNOb3RJbml0aWFsTWVzc2FnZSA9ICFtZXNzYWdlcy5zb21lKG1zZyA9PiBtc2cuaWQgPT09ICd1c2VyLWluaXRpYWwtbWVzc2FnZScpXG5cbiAgICBpZiAoKGlzTmV3QW5zd2VyTWVzc2FnZSB8fCBpc05ld1VzZXJNZXNzYWdlIHx8IGlzTmV3QXBwcm92YWxNZXNzYWdlKSAmJiBpc0F0Qm90dG9tKSB7XG4gICAgICAvLyBQYXJhIG1lbnNhamVzIGRlIGFwcm9iYWNpw7NuLCB1c2FyIHVuIHBlcXVlw7FvIGRlbGF5IHBhcmEgYXNlZ3VyYXIgcXVlIGVsIEFwcHJvdmFsQm94IHNlIGhheWEgcmVuZGVyaXphZG9cbiAgICAgIGNvbnN0IHNjcm9sbERlbGF5ID0gaXNOZXdBcHByb3ZhbE1lc3NhZ2UgPyAxMDAgOiAwXG4gICAgICBjb25zdCBkb1Njcm9sbCA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZiAoc2Nyb2xsRGVsYXkgPiAwKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZG9TY3JvbGwsIHNjcm9sbERlbGF5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9TY3JvbGwoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBoYXNNZXNzYWdlcyAmJlxuICAgICAgaXNOb3RJbml0aWFsTWVzc2FnZSAmJlxuICAgICAgIWlzTmV3QW5zd2VyTWVzc2FnZSAmJlxuICAgICAgIWlzTmV3VXNlck1lc3NhZ2UgJiZcbiAgICAgICFpc05ld0FwcHJvdmFsTWVzc2FnZVxuICAgICkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9LCBbbWVzc2FnZXMsIGxvYWRpbmdNZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCB3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIC8vIFZlcmlmaWNhciBlbCBlc3RhZG8gaW5pY2lhbCBkZWwgc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQgJiYgIWxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgIH1cbiAgfSwgW2xvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMubGVuZ3RoXSlcblxuICAvLyBPYnRlbmVyIGVsIMO6bHRpbW8gbWVuc2FqZSBkZWwgdXN1YXJpbyBwYXJhIHZlcmlmaWNhciBzaSB0aWVuZSBhdHRhY2htZW50c1xuICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAuYXQoLTEpXG5cbiAgY29uc3QgaGFzQXR0YWNobWVudHMgPVxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uYXR0YWNobWVudHMpICYmIGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGgpIHx8XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5zb3VyY2VzKSAmJiBsYXN0VXNlck1lc3NhZ2Uuc291cmNlcy5sZW5ndGgpXG5cbiAgY29uc3QgaXNTY3JvbGxPblBhcmVudCA9ICEhZXhwYW5kZWRcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgLy8gREVCVUcgc3RyZWFtaW5nOiByZS1yZW5kZXJzIGRlbCBjb250ZW5lZG9yLiBIYWJpbGl0YXIgY29uIHdpbmRvdy5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgPSB0cnVlXG4gIGNvbnN0IGxpc3RSZW5kZXJDb3VudFJlZiA9IHVzZVJlZigwKVxuICBpZiAoKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICh3aW5kb3cgYXMgYW55KS5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIpIHtcbiAgICBsaXN0UmVuZGVyQ291bnRSZWYuY3VycmVudCArPSAxXG4gICAgY29uc3QgbGFzdE1zZyA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgbGFzdEtleSA9IGxhc3RNc2c/LmlkID8/IGBtc2ctJHttZXNzYWdlcy5sZW5ndGggLSAxfWBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKCdbQ2hhdEFJTWVzc2FnZXNdIHJlbmRlcicsIHtcbiAgICAgIGNvdW50OiBsaXN0UmVuZGVyQ291bnRSZWYuY3VycmVudCxcbiAgICAgIGxhc3RNZXNzYWdlS2V5OiBsYXN0S2V5LFxuICAgICAgbGFzdE1lc3NhZ2VMZW46IGxhc3RNc2c/Lm1lc3NhZ2U/Lmxlbmd0aCA/PyAwLFxuICAgICAgbWVzc2FnZXNDb3VudDogbWVzc2FnZXMubGVuZ3RoLFxuICAgIH0pXG4gIH1cblxuICAvLyBBbCBleHBhbmRpci9jb250cmFlciBlbCBtb2RhbCBlbCByZWYgcGFzYSBhIG90cm8gY29udGVuZWRvciAoc2Nyb2xsVG9wIHNlIHJlc2V0ZWEgYSAwKS5cbiAgLy8gUmVzdGF1cmFyIGxhIHBvc2ljacOzbiBkZSBzY3JvbGwgYW50ZXMgZGVsIHBhaW50IHBhcmEgZXZpdGFyIHF1ZSBsYSBjb252ZXJzYWNpw7NuIHNhbHRlIGFycmliYS5cbiAgY29uc3QgZXhwYW5kZWRSZWYgPSB1c2VSZWYoZXhwYW5kZWQpXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV4cGFuZGVkUmVmLmN1cnJlbnQgIT09IGV4cGFuZGVkICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsVG9wID0gbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IHNhdmVkU2Nyb2xsVG9wXG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfVxuICB9LCBbZXhwYW5kZWRdKVxuXG4gIGNvbnN0IGxhc3RNc2cgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICBjb25zdCBpc1N0cmVhbWluZ0FjdGl2ZSA9XG4gICAgKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpICYmXG4gICAgbGFzdE1zZyAmJlxuICAgIChsYXN0TXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbGFzdE1zZy51c2VyPy5pZCA9PT0gJ2Fzc2lzdGFudCcpXG4gIGNvbnN0IHN0cmVhbWluZ1RleHQgPSBpc1N0cmVhbWluZ0FjdGl2ZSA/IChsYXN0TXNnLm1lc3NhZ2UgPz8gJycpIDogJydcblxuICBpZiAobG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgcmV0dXJuIDxMb2FkZXIgLz5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2VzQ29udGVudCA9IChcbiAgICA8PlxuICAgICAge2lzTG9hZGluZ01vcmVNZXNzYWdlcyAmJiA8TG9hZGluZ1RleHQgdGV4dD17dCgnY2hhdC5sb2FkaW5nTW9yZScpfSAvPn1cbiAgICAgIDxTdHJlYW1pbmdNZXNzYWdlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17c3RyZWFtaW5nVGV4dH0+XG4gICAgICAgIHttZXNzYWdlcy5tYXAoKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShtZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGggfHwgbWVzc2FnZS5zb3VyY2VzPy5sZW5ndGgpICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5tZXNzYWdlICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5wcm9qZWN0Py5uYW1lICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5hcHByb3ZhbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUZlZWRiYWNrID1cbiAgICAgICAgICAgIG1lc3NhZ2U/Lndhc0hlbHBmdWwgPT09IHVuZGVmaW5lZCB8fCBtZXNzYWdlLndhc0hlbHBmdWwgPT09IG51bGxcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbWVzc2FnZS53YXNIZWxwZnVsXG4gICAgICAgICAgICAgICAgPyBGZWVkYmFjay5USFVNQlNfVVBcbiAgICAgICAgICAgICAgICA6IEZlZWRiYWNrLlRIVU1CU19ET1dOXG5cbiAgICAgICAgICBjb25zdCBpc0Fzc2lzdGFudE1lc3NhZ2UgPSBtZXNzYWdlLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbWVzc2FnZS51c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICAgICAgICAgIGNvbnN0IGlzTGFzdE1lc3NhZ2UgPSBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nID0gaXNBc3Npc3RhbnRNZXNzYWdlICYmIGlzTGFzdE1lc3NhZ2UgJiYgKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpXG5cbiAgICAgICAgICAvLyBLZXkgZXN0YWJsZTogc29sbyBtZXNzYWdlLmlkIHBhcmEgZXZpdGFyIHJlbW91bnQgZHVyYW50ZSBzdHJlYW1pbmcgKG1lc3NhZ2UuZGF0ZSBwdWVkZSBjYW1iaWFyKVxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBtZXNzYWdlLmlkID8/IGBtc2ctJHtpbmRleH1gXG5cbiAgICAgICAgICBpZiAoaXNTdHJlYW1pbmcpIHtcbiAgICAgICAgICAgIGlmIChzdHJlYW1pbmdNZXNzYWdlSWRSZWYuY3VycmVudCAhPT0gbWVzc2FnZS5pZCkge1xuICAgICAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlSWRSZWYuY3VycmVudCA9IG1lc3NhZ2UuaWQgPz8gbnVsbFxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHN0cmVhbWluZ01lc3NhZ2VQcm9wc1JlZi5jdXJyZW50LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgeyBtZXNzYWdlOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhdXRoVXNlcixcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljayxcbiAgICAgICAgICAgICAgICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbjogISFzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2UuaWRdLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrOiBtZXNzYWdlRmVlZGJhY2ssXG4gICAgICAgICAgICAgICAgICBpc1N0cmVhbWluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICBleHBhbmRlZCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiA8TWVzc2FnZUl0ZW0ga2V5PXttZXNzYWdlS2V5fSB7Li4uKHN0cmVhbWluZ01lc3NhZ2VQcm9wc1JlZi5jdXJyZW50IGFzIE1lc3NhZ2VJdGVtUHJvcHMpfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlSWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPE1lc3NhZ2VJdGVtXG4gICAgICAgICAgICAgIHsuLi5tZXNzYWdlfVxuICAgICAgICAgICAgICBrZXk9e21lc3NhZ2VLZXl9XG4gICAgICAgICAgICAgIGF1dGhVc2VyPXthdXRoVXNlcn1cbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259XG4gICAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtoYW5kbGVGZWVkYmFja31cbiAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj17aGFuZGxlQXBwcm92YWxEZWNpc2lvbn1cbiAgICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj17ISFzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2UuaWRdfVxuICAgICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e21lc3NhZ2VGZWVkYmFja31cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2ZhbHNlfVxuICAgICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICA8L1N0cmVhbWluZ01lc3NhZ2VDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgeyh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UgfHwgT2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICBrZXk9XCJsb2FkaW5nLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmZpbmQobXNnID0+IG1zZyAhPT0gdCgnY2hhdC5wcm9jZXNzaW5nJykpIHx8IHQoJ2NoYXQucHJvY2Vzc2luZycpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UpICYmIChcbiAgICAgICAgICAgICAgPExvYWRpbmdUZXh0XG4gICAgICAgICAgICAgICAgdGV4dD17XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nTWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgKGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gJ0J1c2NhbmRvIGVuIGxhIHdlYidcbiAgICAgICAgICAgICAgICAgICAgOiBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKVxuICAgICAgICAgICAgICAgICAgICAgIDogaGFzQXR0YWNobWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZ2VuZXJhdGluZycpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZXNPdXRlciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9PlxuICAgICAge2lzU2Nyb2xsT25QYXJlbnQgPyAoXG4gICAgICAgIDxTQ01lc3NhZ2VzU2Nyb2xsIHJlZj17bWVzc2FnZXNSZWZ9IG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX0+XG4gICAgICAgICAgPFNDTWVzc2FnZXNJbm5lciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9ICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9PlxuICAgICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICAgPC9TQ01lc3NhZ2VzU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPFNDTWVzc2FnZXNJbm5lclxuICAgICAgICAgIHJlZj17bWVzc2FnZXNSZWZ9XG4gICAgICAgICAgb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfVxuICAgICAgICAgICRzY3JvbGxPblBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH1cbiAgICAgICAgPlxuICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgKX1cblxuICAgICAge3Nob3dTY3JvbGxUb0JvdHRvbSAmJiAoXG4gICAgICAgIDxTY3JvbGxUb0JvdHRvbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbX0+XG4gICAgICAgICAgPEFycm93U21hbGxEb3duIGNvbG9yPVwiIzY2NlwiIHdpZHRoPVwiMjBweFwiIGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICA8L1Njcm9sbFRvQm90dG9tQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1NDTWVzc2FnZXNPdXRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTWVzc2FnZXMgPSBSZWFjdC5tZW1vKENoYXRBSU1lc3NhZ2VzSW5uZXIpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQUssSUFBUUMsSUFBSSxFQUFhQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBQUMsYUFBQSxJQUFBQyxjQUFBLFFBQVEsT0FBTztBQUM3RyxTQUFTQyxVQUFVLFFBQVEsWUFBWTtBQUN2QyxTQUFTQyxnQkFBZ0IsUUFBUSxrQkFBa0I7QUFDbkQsU0FBU0MsY0FBYyxRQUFRLGlEQUFpRDtBQUVoRixTQUFTQyxjQUFjLFFBQVEsMkNBQTJDO0FBQzFFLFNBQVNDLFdBQVcsUUFBUSxxQ0FBcUM7QUFDakUsU0FBU0Msc0JBQXNCLFFBQVEsb0NBQW9DO0FBQzNFLFNBQVNDLG1CQUFt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
823
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsIkNoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiY29kZSIsInRoZW1lcyIsIkFzc2lzdGFudEF2YXRhcklubmVyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsImNoaWxkcmVuIiwidHlwZSIsIndpZHRoIiwiaGVpZ2h0IiwiZW1vamkiLCJBc3Npc3RhbnRBdmF0YXIiLCJNZXNzYWdlV3JhcHBlciIsIl9yZWYiLCJpc0N1cnJlbnRVc2VyIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJNZXNzYWdlQ29tcG9uZW50IiwiX29iamVjdFNwcmVhZCIsIk1lc3NhZ2VDb250ZW50V3JhcHBlciIsIl9yZWYyIiwiX2V4Y2x1ZGVkMiIsIk1lc3NhZ2VDb250ZW50Q29tcG9uZW50IiwiTWVzc2FnZU9wdGlvbnMiLCJfcmVmMyIsIm9wdGlvbnMiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZE9wdGlvbiIsInNldFNlbGVjdGVkT3B0aW9uIiwiaGFuZGxlU2VsZWN0Iiwib3B0aW9uIiwibWFwIiwiJGhhc1NlbGVjdGlvbiIsIiRkaW1tZWQiLCJpZCIsIm9uQ2xpY2siLCJuYW1lIiwiQXNzaXN0YW50TWVzc2FnZUhlYWRlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9jYWxBZ2VudCIsInNldExvY2FsQWdlbnQiLCJfdXNlR2xvYmFsQ29udGV4dDIiLCJnZXRUYWJTZWdtZW50RnJvbUhyZWYiLCJocmVmIiwibWF0Y2giLCJ0ZXN0IiwiZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UiLCJtZXNzYWdlIiwidGFza1VybFJlZ2V4IiwiUmVnRXhwIiwidGFza3MiLCJzZWVuSWRzIiwiU2V0IiwiZXhlYyIsInRhc2tJZCIsInVybCIsImhhcyIsImFkZCIsImVzY2FwZWRVcmwiLCJyZXBsYWNlIiwibWFya2Rvd25MaW5rUmVnZXgiLCJjb25jYXQiLCJsaW5rTWF0Y2giLCJ0aXRsZSIsInB1c2giLCJoYXNUYXNrTGlua3MiLCJ0ZXh0IiwibGVuZ3RoIiwiVGFza0xpbmsiLCJfcmVmNCIsInRhYlNlZ21lbnQiLCJfdXNlVGFza1BhbmVsIiwiYnVpbGRPcGVuVGFzayIsIm9wZW5UYXNrIiwiaGFuZGxlQ2xpY2siLCJlIiwibWV0YUtleSIsImN0cmxLZXkiLCJwcmV2ZW50RGVmYXVsdCIsIkN1c3RvbUxpbmsiLCJfcmVmNSIsInJlc3QiLCJfZXhjbHVkZWQzIiwidGFza01hdGNoIiwiU3RyZWFtaW5nTWVzc2FnZUJvZHkiLCJfcHJvcHMkY3JlYXRlQWdlbnRGb2wiLCJmcm9tQ29udGV4dCIsInVzZUNvbnRleHQiLCJkaXNwbGF5VGV4dCIsImlzU3RyZWFtaW5nIiwiY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJhZ2VudElkIiwiZGVidWdDb3VudFJlZiIsIndpbmRvdyIsIk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiIsImN1cnJlbnQiLCJjb25zb2xlIiwibG9nIiwiY291bnQiLCJsZW4iLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwiY2xhc3NOYW1lIiwiaXNBc3Npc3RhbnQiLCJwbHVnaW5zIiwiY29tcG9uZW50cyIsImEiLCJsaW5rU2FmZXR5IiwiZW5hYmxlZCIsImlzQW5pbWF0aW5nIiwic2hpa2lUaGVtZSIsImNvbnRyb2xzIiwidGFibGUiLCJpc0Vycm9yIiwiYXBwcm92YWwiLCJjb250ZW50Iiwic291cmNlcyIsImhhbmRsZUZlZWRiYWNrIiwiaGFuZGxlRmVlZGJhY2tDbGljayIsImRpc2FibGVGZWVkYmFjayIsInN1Z2dlc3Rpb25zIiwib25TZWxlY3RTdWdnZXN0aW9uIiwic3VnZ2VzdGlvbiIsImhhbmRsZVN1Z2dlc3Rpb25DbGljayIsIm1lc3NhZ2VJZCIsImRpc2FibGVkIiwic3VnZ2VzdGlvbnNEaXNhYmxlZCIsImhpZGRlbiIsImlzTGFzdE1lc3NhZ2UiLCJNZXNzYWdlSXRlbSIsIl9tZXNzYWdlJGxlbmd0aCIsIl9yZWY2IiwiX3JlZjciLCJfcHJvcHMkcHJvamVjdE1ldGFkYXQiLCJ1c2VyIiwiYXV0aFVzZXIiLCJpc0NoYW5nZVByb2plY3QiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwicm9sZSIsImF0dGFjaG1lbnRzIiwiYXBwcm92YWxTdGF0dXMiLCJoYXNTZWxlY3RlZFN1Z2dlc3Rpb24iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInByZXZpZXdBdHRhY2htZW50Iiwic2V0UHJldmlld0F0dGFjaG1lbnQiLCJVU0VSIiwidG9TdHJpbmciLCJBU1NJU1RBTlQiLCJyZW5kZXJDb3VudFJlZiIsInByZXZNZXNzYWdlTGVuUmVmIiwiX21lc3NhZ2UkbGVuZ3RoMiIsInByZXZMZW4iLCJyZW5kZXJDb3VudCIsIm1lc3NhZ2VMZW4iLCJwcmV2TWVzc2FnZUxlbiIsImhhbmRsZUF0dGFjaG1lbnRDbGljayIsImF0dGFjaG1lbnQiLCJmaWxlIiwiRmlsZSIsIm9yaWdpbmFsRmlsZSIsInVybF90aHVtYm5haWwiLCJ1cmxfb3JpZ2luYWwiLCJ1cmxfZmlsZSIsImhhbmRsZUNsb3NlUHJldmlldyIsImhhc0ZlZWRiYWNrIiwiJGlzQXNzaXN0YW50IiwibWVzc2FnZUV4dHJhQ29udGVudCIsImZlZWRiYWNrIiwic2Vzc2lvbklkIiwic3BsaXQiLCJmaWx0ZXIiLCJxdWVzdGlvbklkIiwiam9pbiIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsIl9hdHRhY2htZW50JG5hbWUiLCJhdHRhY2htZW50VHlwZSIsInRvTG93ZXJDYXNlIiwiYXR0YWNobWVudE5hbWUiLCJpc0F1ZGlvRmlsZSIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsInNvbWUiLCJleHQiLCJlbmRzV2l0aCIsInBvc2l0aW9uSW5kZXgiLCJwZW5kaW5nX2FjdGlvbnMiLCJhY3Rpb25zIiwic3RhdHVzIiwib25BcHByb3ZlIiwidGhyZWFkSWRzIiwib25SZWplY3QiLCJpc1Byb2plY3REZWxldGVkIiwicHJvamVjdE1ldGFkYXRhIiwiaXNfZGVsZXRlZCIsImlzRXhwYW5kZWQiLCJleHBhbmRlZCIsImhpdGxJbnN0YW5jZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsIl9sYXN0TXNnJHVzZXIiLCJfbGFzdE1zZyRtZXNzYWdlMiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiZXZlbnQiLCJtZXNzYWdlc1JlZiIsImNoYXRJbml0aWFsaXplZFJlZiIsImlzTG9hZGluZ01vcmVSZWYiLCJ1c2VyU2Nyb2xsaW5nUmVmIiwic2Nyb2xsVGhyZXNob2xkUmVmIiwibGFzdFNjcm9sbFRvcFJlZiIsInNob3dTY3JvbGxUb0JvdHRvbVJlZiIsInNjcm9sbFJhZlJlZiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1Njcm9sbFRvQm90dG9tIiwic2V0U2hvd1Njcm9sbFRvQm90dG9tIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwic2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInN0cmVhbWluZ01lc3NhZ2VQcm9wc1JlZiIsInN0cmVhbWluZ01lc3NhZ2VJZFJlZiIsIl91c2VDaGF0TWFuYWdlciIsImNoYXRJZCIsInVuZGVmaW5lZCIsIm1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwiaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJhY3RpdmVMb2FkaW5ncyIsInNlbmRNZXNzYWdlIiwiY2hhbmdlUHJvamVjdCIsImluaXRpYWxpemVDaGF0IiwiaGFuZGxlU2Nyb2xsIiwic3RvcEdlbmVyYXRpb24iLCJ0cmltIiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiZW50aXR5IiwiYWlDaGF0U3VnZ2VzdGVkQW5zd2VyIiwiYWdlbnRfdHlwZSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJzY3JvbGxIZWlnaHQiLCJiZWhhdmlvciIsInNldFRpbWVvdXQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJkaWRTZXRTdGF0ZSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJsYXN0TWVzc2FnZSIsImhhc0FwcHJvdmFsIiwiaXNBdEJvdHRvbSIsInNjcm9sbFRvQm90dG9tIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQyIiwiaXNOZXdBbnN3ZXJNZXNzYWdlIiwiaXNOZXdVc2VyTWVzc2FnZSIsImlzTmV3QXBwcm92YWxNZXNzYWdlIiwiaGFzTWVzc2FnZXMiLCJpc05vdEluaXRpYWxNZXNzYWdlIiwibXNnIiwic2Nyb2xsRGVsYXkiLCJkb1Njcm9sbCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MyIsIl9tZXNzYWdlc1JlZiRjdXJyZW50NCIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwiaGFzQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJpc1Njcm9sbE9uUGFyZW50IiwibGlzdFJlbmRlckNvdW50UmVmIiwiX2xhc3RNc2ckaWQiLCJfbGFzdE1zZyRtZXNzYWdlJGxlbmciLCJfbGFzdE1zZyRtZXNzYWdlIiwibGFzdE1zZyIsImxhc3RLZXkiLCJsYXN0TWVzc2FnZUtleSIsImxhc3RNZXNzYWdlTGVuIiwibWVzc2FnZXNDb3VudCIsImV4cGFuZGVkUmVmIiwic2F2ZWRTY3JvbGxUb3AiLCJpc1N0cmVhbWluZ0FjdGl2ZSIsInN0cmVhbWluZ1RleHQiLCJtZXNzYWdlc0NvbnRlbnQiLCJQcm92aWRlciIsInZhbHVlIiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsImlzQXNzaXN0YW50TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcblxuaW1wb3J0IHsgTWVzc2FnZUZyb21Vc2VyLCBNZXNzYWdlRnJvbU90aGVyLCBNZXNzYWdlQ29udGVudEZyb21Vc2VyLCBNZXNzYWdlQ29udGVudEZyb21PdGhlciB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgTWVzc2FnZUZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHtcbiAgU0NDQUlNZXNzYWdlV3JhcHBlcixcbiAgU2Nyb2xsVG9Cb3R0b21CdXR0b24sXG4gIFNDTWVzc2FnZXNPdXRlcixcbiAgU0NNZXNzYWdlc1Njcm9sbCxcbiAgU0NNZXNzYWdlc0lubmVyLFxuICBTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbixcbiAgU0NPcHRpb25zTGlzdCxcbiAgU0NPcHRpb25JdGVtLFxuICBTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIsXG4gIFNDQXNzaXN0YW50TmFtZSxcbiAgU0NBc3Npc3RhbnRBdmF0YXIsXG4gIFNDVGFza0xpbmssXG4gIFNDTWVzc2FnZUl0ZW1XcmFwcGVyLFxuICBTQ01lc3NhZ2VJdGVtSW5uZXIsXG4gIFNDQXR0YWNobWVudHNSb3csXG4gIFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uLFxufSBmcm9tICcuL25ld1N0eWxlcydcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5pbXBvcnQgeyBDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMgfSBmcm9tICcuL0NoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxuLyoqIENvbnRleHRvIGNvbiBlbCB0ZXh0byBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmcuIFNvbG8gZWwgY29tcG9uZW50ZSBxdWUgbG8gY29uc3VtZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxzdHJpbmc+KCcnKVxuXG5jb25zdCBjb2RlID0gY3JlYXRlQ29kZVBsdWdpbih7IHRoZW1lczogWydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J10gfSlcblxuY29uc3QgQXNzaXN0YW50QXZhdGFySW5uZXI6IEZDID0gKCkgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRBdmF0YXI+XG4gICAgICB7YWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyA8TUFJQUljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPiA6IGFnZW50Py5lbW9qaX1cbiAgICA8L1NDQXNzaXN0YW50QXZhdGFyPlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhciA9IG1lbW8oQXNzaXN0YW50QXZhdGFySW5uZXIpXG5cbnR5cGUgQ2hhdEFJTWVzc2FnZXNQcm9wcyA9IHtcbiAgdXNlckluaXRpYWxNZXNzYWdlOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gIH1cbiAgaW5pdGlhbENoYXRJZDogc3RyaW5nIHwgbnVsbFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeT86IChcbiAgICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZywgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLCBmYXFJZD86IHN0cmluZywgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcpID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWRzOiBzdHJpbmdbXSwgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcD86IHsgYWdlbnRJZDogc3RyaW5nIH0gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBjb25zdCBmcm9tQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQpXG4gICAgY29uc3QgZGlzcGxheVRleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IGZyb21Db250ZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIGNvbnN0IGNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgPSBwcm9wcy5jcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkXG4gICAgY29uc3QgZGVidWdDb3VudFJlZiA9IFJlYWN0LnVzZVJlZigwKVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSkuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSICYmIHByb3BzLmlzU3RyZWFtaW5nKSB7XG4gICAgICBkZWJ1Z0NvdW50UmVmLmN1cnJlbnQgKz0gMVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKCdbU3RyZWFtaW5nTWVzc2FnZUJvZHldIHJlbmRlcicsIHsgY291bnQ6IGRlYnVnQ291bnRSZWYuY3VycmVudCwgbGVuOiBkaXNwbGF5VGV4dD8ubGVuZ3RoIH0pXG4gICAgfVxuICAgIGlmICghZGlzcGxheVRleHQgJiYgIXByb3BzLmlzU3RyZWFtaW5nKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8U0NDQUlNZXNzYWdlV3JhcHBlclxuICAgICAgICAgIGlzQ3VycmVudFVzZXI9e3Byb3BzLmlzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e3Byb3BzLmlzQXNzaXN0YW50ICYmIGhhc1Rhc2tMaW5rcyhkaXNwbGF5VGV4dCkgPyAnaGFzLXRhc2stbGlua3MnIDogJyd9XG4gICAgICAgID5cbiAgICAgICAgICA8U3RyZWFtZG93blxuICAgICAgICAgICAgcGx1Z2lucz17eyBjb2RlIH19XG4gICAgICAgICAgICBjb21wb25lbnRzPXt7IGE6IEN1c3RvbUxpbmsgfSBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBTdHJlYW1kb3duPlswXVsnY29tcG9uZW50cyddfVxuICAgICAgICAgICAgbGlua1NhZmV0eT17eyBlbmFibGVkOiBmYWxzZSB9fVxuICAgICAgICAgICAgaXNBbmltYXRpbmc9eyEhcHJvcHMuaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBzaGlraVRoZW1lPXtbJ2dpdGh1Yi1saWdodCcsICdnaXRodWItbGlnaHQnXX1cbiAgICAgICAgICAgIGNvbnRyb2xzPXt7IHRhYmxlOiBmYWxzZSwgY29kZTogZmFsc2UgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZGlzcGxheVRleHR9XG4gICAgICAgICAgPC9TdHJlYW1kb3duPlxuICAgICAgICA8L1NDQ0FJTWVzc2FnZVdyYXBwZXI+XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgIXByb3BzLmlzU3RyZWFtaW5nICYmIChcbiAgICAgICAgICA8TWVzc2FnZUZlZWRiYWNrXG4gICAgICAgICAgICBjb250ZW50PXtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIHNvdXJjZXM9e3Byb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17cHJvcHMuaGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17cHJvcHMuZGlzYWJsZUZlZWRiYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgKFxuICAgICAgICAgIDxDaGF0QUlTdWdnZXN0aW9uc1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3Byb3BzLnN1Z2dlc3Rpb25zIHx8IFtdfVxuICAgICAgICAgICAgb25TZWxlY3RTdWdnZXN0aW9uPXtzdWdnZXN0aW9uID0+IHByb3BzLmhhbmRsZVN1Z2dlc3Rpb25DbGljayhwcm9wcy5tZXNzYWdlSWQsIHN1Z2dlc3Rpb24pfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICBoaWRkZW49eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgIXByb3BzLmlzTGFzdE1lc3NhZ2UgfHwgISFwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Vycm9yICYmXG4gICAgICAgICAgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiZcbiAgICAgICAgICAhcHJvcHMuYXBwcm92YWwgJiZcbiAgICAgICAgICAhIWNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgJiYgKFxuICAgICAgICAgICAgPENoYXRBSUNyZWF0ZUFnZW50QWN0aW9uc1xuICAgICAgICAgICAgICBhZ2VudElkPXtjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBjcmVhdGVBZ2VudEZvbGxvd1VwLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG5cbiAgLy8gREVCVUcgc3RyZWFtaW5nOiB2ZXIgcmUtcmVuZGVycyB5IHJlbW91bnRzLiBIYWJpbGl0YXIgY29uIHdpbmRvdy5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgPSB0cnVlXG4gIGNvbnN0IHJlbmRlckNvdW50UmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHByZXZNZXNzYWdlTGVuUmVmID0gdXNlUmVmPG51bWJlcj4obWVzc2FnZT8ubGVuZ3RoID8/IDApXG4gIHJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICBpZiAoaXNTdHJlYW1pbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUikge1xuICAgIGNvbnN0IHByZXZMZW4gPSBwcmV2TWVzc2FnZUxlblJlZi5jdXJyZW50XG4gICAgcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudCA9IG1lc3NhZ2U/Lmxlbmd0aCA/PyAwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW01lc3NhZ2VJdGVtXSByZW5kZXInLCB7XG4gICAgICBtZXNzYWdlSWQ6IGlkLFxuICAgICAgcmVuZGVyQ291bnQ6IHJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBtZXNzYWdlTGVuOiBtZXNzYWdlPy5sZW5ndGgsXG4gICAgICBwcmV2TWVzc2FnZUxlbjogcHJldkxlbixcbiAgICAgIGlzU3RyZWFtaW5nOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50Q2xpY2sgPSAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICAvLyBQZXJtaXRpciBwcmV2aXN1YWxpemFjacOzbiBzaSB0aWVuZSBhcmNoaXZvIGxvY2FsIG8gVVJMcyBkZWwgYmFja2VuZFxuICAgIGlmIChcbiAgICAgIGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQub3JpZ2luYWxGaWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfZmlsZVxuICAgICkge1xuICAgICAgc2V0UHJldmlld0F0dGFjaG1lbnQoYXR0YWNobWVudClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVByZXZpZXcgPSAoKSA9PiB7XG4gICAgc2V0UHJldmlld0F0dGFjaG1lbnQobnVsbClcbiAgfVxuXG4gIGlmIChpc0NoYW5nZVByb2plY3QgJiYgb3B0aW9ucykge1xuICAgIHJldHVybiAoXG4gICAgICA8TWVzc2FnZVdyYXBwZXIga2V5PXtpZH0gaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn0gZGF0YS1tZXNzYWdlLWlkPXtpZH0gaGFzRmVlZGJhY2s9e2ZhbHNlfT5cbiAgICAgICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgIHtpc0Fzc2lzdGFudCAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICB7ISEoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lmxlbmd0aCAmJiAhaXNBc3Npc3RhbnQgJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICAgICAgeyhhdHRhY2htZW50cyB8fCBzb3VyY2VzKT8ubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAvLyBEZXRlY3RhciBzaSBlcyB1biBhcmNoaXZvIGRlIGF1ZGlvXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudD8udHlwZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50TmFtZSA9IGF0dGFjaG1lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgaXNBdWRpb0ZpbGUgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8XG4gICAgICAgICAgICAgICAgWydmbGFjJywgJ200YScsICdtcDMnLCAnbXA0JywgJ29nYScsICdvZ2cnLCAnd2F2JywgJ3dlYm0nXS5pbmNsdWRlcyhhdHRhY2htZW50VHlwZSkgfHxcbiAgICAgICAgICAgICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnROYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgaWYgKGlzQXVkaW9GaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdHRhY2htZW50Q2FyZEF1ZGlvIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH0gYXR0YWNobWVudD17YXR0YWNobWVudH0gLz5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICApfVxuICAgICAgICB7YXBwcm92YWwgJiYgYXBwcm92YWwucGVuZGluZ19hY3Rpb25zICYmIChcbiAgICAgICAgICA8U0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICAgICA8QXBwcm92YWxCb3hcbiAgICAgICAgICAgICAgYWN0aW9ucz17YXBwcm92YWwucGVuZGluZ19hY3Rpb25zfVxuICAgICAgICAgICAgICBzdGF0dXM9e2FwcHJvdmFsU3RhdHVzfVxuICAgICAgICAgICAgICBvbkFwcHJvdmU9e3RocmVhZElkcyA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKHRocmVhZElkcywgJ2FwcHJvdmUnKX1cbiAgICAgICAgICAgICAgb25SZWplY3Q9e3RocmVhZElkcyA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKHRocmVhZElkcywgJ3JlamVjdCcpfVxuICAgICAgICAgICAgICBpc1Byb2plY3REZWxldGVkPXtwcm9wcy5wcm9qZWN0TWV0YWRhdGE/LmlzX2RlbGV0ZWQgPT09IHRydWV9XG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQ9e3Byb3BzLmV4cGFuZGVkfVxuICAgICAgICAgICAgICBoaXRsSW5zdGFuY2VJZD17YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc1N0cmVhbWluZykgJiYgIWFwcHJvdmFsICYmIChcbiAgICAgICAgICA8U3RyZWFtaW5nTWVzc2FnZUJvZHlcbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgPz8gJyd9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17ISFpc1N0cmVhbWluZ31cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9XG4gICAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgICAgYXBwcm92YWw9e2FwcHJvdmFsfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17c3VnZ2VzdGlvbnN9XG4gICAgICAgICAgICBjcmVhdGVBZ2VudEZvbGxvd1VwPXtjcmVhdGVBZ2VudEZvbGxvd1VwfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2tDbGljaz17aGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17ZGlzYWJsZUZlZWRiYWNrID8/IG51bGx9XG4gICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ9eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgISFoYXNTZWxlY3RlZFN1Z2dlc3Rpb259XG4gICAgICAgICAgICBtZXNzYWdlSWQ9e2lkfVxuICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8QXR0YWNobWVudFByZXZpZXdNb2RhbFxuICAgICAgICBpc09wZW49eyEhcHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlUHJldmlld31cbiAgICAgICAgYXR0YWNobWVudD17cHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAvPlxuICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gIClcbn0pXG5cbmNvbnN0IENoYXRBSU1lc3NhZ2VzSW5uZXIgPSAoe1xuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGluaXRpYWxDaGF0SWQsXG4gIG9uRXJyb3IsXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeSxcbiAgb25TY3JvbGxUb0JvdHRvbSxcbiAgYXR0YWNobWVudHMsXG4gIGFnZW50cyxcbiAgZXhwYW5kZWQsXG59OiBDaGF0QUlNZXNzYWdlc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoYXRJbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNMb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgdXNlclNjcm9sbGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGhyZXNob2xkUmVmID0gdXNlUmVmKDM5KVxuICBjb25zdCBsYXN0U2Nyb2xsVG9wUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNob3dTY3JvbGxUb0JvdHRvbVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsUmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzaG93U2Nyb2xsVG9Cb3R0b20sIHNldFNob3dTY3JvbGxUb0JvdHRvbV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMsIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KVxuICBjb25zdCBzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYgPSB1c2VSZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KVxuICBjb25zdCBzdHJlYW1pbmdNZXNzYWdlSWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgc3RvcEdlbmVyYXRpb24sXG4gIH0gPSB1c2VDaGF0TWFuYWdlcih7XG4gICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IHVuZGVmaW5lZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgb25FcnJvcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBhZ2VudHMsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgY2hhbmdlUHJvamVjdChvcHRpb24pXG4gICAgfSxcbiAgICBbY2hhbmdlUHJvamVjdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN1Z2dlc3Rpb25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1Z2dlc3Rpb24/LnRyaW0oKSkgcmV0dXJuXG4gICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlSWRdKSByZXR1cm5cbiAgICAgIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFN1Z2dlc3RlZEFuc3dlciwge1xuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyhwcmV2ID0+ICh7IC4uLnByZXYsIFttZXNzYWdlSWRdOiB0cnVlIH0pKVxuICAgICAgc2VuZE1lc3NhZ2Uoc3VnZ2VzdGlvbilcbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZSwgc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcywgZXZlbnQsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG8oe1xuICAgICAgICB0b3A6IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICB9KVxuICAgICAgLy8gQWN0dWFsaXphciBlc3RhZG8gZGVzcHXDqXMgZGUgdW4gYnJldmUgZGVsYXkgcGFyYSBwZXJtaXRpciBxdWUgZWwgc2Nyb2xsIHNlIGNvbXBsZXRlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+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+XG4gICAgICApfVxuICAgIDwvU0NNZXNzYWdlc091dGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNZXNzYWdlcyA9IFJlYWN0Lm1lbW8oQ2hhdEFJTWVzc2FnZXNJbm5lcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBSyxJQUFRQyxJQUFJLEVBQWFDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFBQyxhQUFBLElBQUFDLGNBQUEsUUFBUSxPQUFPO0FBQzdHLFNBQVNDLFVBQVUsUUFBUSxZQUFZO0FBQ3ZDLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxjQUFjLFFBQVEsaURBQWlEO0FBRWhGLFNBQVNDLGNBQWMsUUFBUSwyQ0FBMkM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLHFDQUFxQztBQUNqRSxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFDM0UsU0FBU0MsbUJBQW1CLFFBQVEsZ0RBQWdEO0FBRXBGLFNBQXNCQyxlQUFlLFFBQWtCLHFCQUFxQjtBQUU1RSxTQUFrQkMsT0FBTyxRQUFRLDJCQUEyQjtBQUU1RCxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLGNBQWMsUUFBUSw4Q0FBOEM7QUFDN0UsU0FBU0MsWUFBWSxRQUFRLDZCQUE2QjtBQUUxRCxTQUFTQyxXQUFXLFFBQVEseUJBQXlCO0FBQ3JELFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFJM0MsU0FBU0MsZUFBZSxFQUFFQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLEVBQUVDLHVCQUF1QixRQUFRLFVBQVU7QUFDN0csU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUNFQyxtQkFBbUIsRUFDbkJDLG9CQUFvQixFQUNwQkMsZUFBZSxFQUNmQyxnQkFBZ0IsRUFDaEJDLGVBQWUsRUFDZkMsdUJBQXVCLEVBQ3ZCQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsd0JBQXdCLEVBQ3hCQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsVUFBVSxFQUNWQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsZ0JBQWdCLEVBQ2hCQyx1QkFBdUIsUUFDbEIsYUFBYTtBQUNwQixTQUFTQyxRQUFRLFFBQVEsb0NBQW9DO0FBQzdELFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUdsRSxTQUFTQyxRQUFRLFFBQVEsbUJBQW1CO0FBQzVDLFNBQVNDLHNCQUFzQixRQUFRLDZCQUE2QjtBQUNwRSxTQUFTQyxpQkFBaUIsUUFBUSxxQkFBcUI7QUFDdkQsU0FBU0Msd0JBQXdCLFFBQVEsNEJBQTRCO0FBQ3JFLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5Qjs7QUFFMUQ7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUNBLElBQU1DLHVCQUF1QixnQkFBRzFELEtBQUssQ0FBQzJELGFBQWEsQ0FBUyxFQUFFLENBQUM7QUFFL0QsSUFBTUMsSUFBSSxHQUFHbEQsZ0JBQWdCLENBQUM7RUFBRW1ELE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxjQUFjO0FBQUUsQ0FBQyxDQUFDO0FBRTNFLElBQU1DLG9CQUF3QixHQUFHLFNBQTNCQSxvQkFBd0JBLENBQUEsRUFBUztFQUNyQyxJQUFBQyxpQkFBQSxHQUFrQmxCLGdCQUFnQixDQUFDLENBQUM7SUFBNUJtQixLQUFLLEdBQUFELGlCQUFBLENBQUxDLEtBQUs7RUFDYixvQkFDRVgsSUFBQSxDQUFDZixpQkFBaUI7SUFBQTJCLFFBQUEsRUFDZixDQUFBRCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUUsSUFBSSxNQUFLLE9BQU8sZ0JBQUdiLElBQUEsQ0FBQ1AsUUFBUTtNQUFDcUIsS0FBSyxFQUFFLEVBQUc7TUFBQ0MsTUFBTSxFQUFFO0lBQUcsQ0FBRSxDQUFDLEdBQUdKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFSztFQUFLLENBQzVELENBQUM7QUFFeEIsQ0FBQztBQUVELElBQU1DLGVBQWUsZ0JBQUdyRSxJQUFJLENBQUM2RCxvQkFBb0IsQ0FBQztBQW9EbEQsSUFBTVMsY0FBdUMsR0FBRyxTQUExQ0EsY0FBdUNBLENBQUFDLElBQUEsRUFBOEM7RUFBQSxJQUF4Q0MsYUFBYSxHQUFBRCxJQUFBLENBQWJDLGFBQWE7SUFBRVIsUUFBUSxHQUFBTyxJQUFBLENBQVJQLFFBQVE7SUFBS1MsS0FBSyxHQUFBQyx3QkFBQSxDQUFBSCxJQUFBLEVBQUFJLFNBQUE7RUFDbEYsSUFBTUMsZ0JBQWdCLEdBQUdKLGFBQWEsR0FBR2xELGVBQWUsR0FBR0MsZ0JBQWdCO0VBQzNFLG9CQUFPNkIsSUFBQSxDQUFDd0IsZ0JBQWdCLEVBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFLSixLQUFLO0lBQUFULFFBQUEsRUFBR0E7RUFBUSxFQUFtQixDQUFDO0FBQ25FLENBQUM7QUFFRCxJQUFNYyxxQkFBcUQsR0FBRyxTQUF4REEscUJBQXFEQSxDQUFBQyxLQUFBLEVBQW9DO0VBQUEsSUFBOUJQLGFBQWEsR0FBQU8sS0FBQSxDQUFiUCxhQUFhO0lBQUtDLEtBQUssR0FBQUMsd0JBQUEsQ0FBQUssS0FBQSxFQUFBQyxVQUFBO0VBQ3RGLElBQU1DLHVCQUF1QixHQUFHVCxhQUFhLEdBQUdoRCxzQkFBc0IsR0FBR0MsdUJBQXVCO0VBQ2hHLG9CQUFPMkIsSUFBQSxDQUFDNkIsdUJBQXVCLEVBQUFKLGFBQUEsS0FBS0osS0FBSyxDQUFHLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVNTLGNBQWNBLENBQUFDLEtBQUEsRUFNcEI7RUFBQSxJQUxEQyxPQUFPLEdBQUFELEtBQUEsQ0FBUEMsT0FBTztJQUNQQyxrQkFBa0IsR0FBQUYsS0FBQSxDQUFsQkUsa0JBQWtCO0VBS2xCLElBQUFDLFNBQUEsR0FBNENqRixRQUFRLENBQWlCLElBQUksQ0FBQztJQUFBa0YsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBbkVHLGNBQWMsR0FBQUYsVUFBQTtJQUFFRyxpQkFBaUIsR0FBQUgsVUFBQTtFQUV4QyxJQUFNSSxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSUMsTUFBZSxFQUFLO0lBQ3hDLElBQUlILGNBQWMsRUFBRTtJQUNwQkMsaUJBQWlCLENBQUNFLE1BQU0sQ0FBQztJQUN6QlAsa0JBQWtCLENBQUNPLE1BQU0sQ0FBQztFQUM1QixDQUFDO0VBRUQsb0JBQ0V4QyxJQUFBLENBQUNuQixhQUFhO0lBQUErQixRQUFBLEVBQ1gsQ0FBQ29CLE9BQU8sSUFBSSxFQUFFLEVBQUVTLEdBQUcsQ0FBQyxVQUFBRCxNQUFNO01BQUEsb0JBQ3pCeEMsSUFBQSxDQUFDbEIsWUFBWTtRQUNYNEQsYUFBYSxFQUFFLENBQUMsQ0FBQ0wsY0FBZTtRQUNoQ00sT0FBTyxFQUFFLENBQUMsQ0FBQ04sY0FBYyxJQUFJLENBQUFBLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFTyxFQUFFLE1BQUtKLE1BQU0sQ0FBQ0ksRUFBRztRQUM5REMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7VUFBQSxPQUFRTixZQUFZLENBQUNDLE1BQU0sQ0FBQztRQUFBLENBQUM7UUFBQTVCLFFBQUEsRUFHbkM0QixNQUFNLENBQUNNO01BQUksR0FGUE4sTUFBTSxDQUFDSSxFQUdBLENBQUM7SUFBQSxDQUNoQjtFQUFDLENBQ1csQ0FBQztBQUVwQjtBQUVBLElBQU1HLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBUztFQUNuQyxJQUFBQyxVQUFBLEdBQW9DL0YsUUFBUSxDQUFlLElBQUksQ0FBQztJQUFBZ0csVUFBQSxHQUFBYixjQUFBLENBQUFZLFVBQUE7SUFBekRFLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFDaEMsSUFBQUcsa0JBQUEsR0FBa0I1RCxnQkFBZ0IsQ0FBQyxDQUFDO0lBQTVCbUIsS0FBSyxHQUFBeUMsa0JBQUEsQ0FBTHpDLEtBQUs7RUFFYjdELFNBQVMsQ0FBQyxZQUFNO0lBQ2RxRyxhQUFhLENBQUN4QyxLQUFLLENBQUM7RUFDdEIsQ0FBQyxFQUFFLENBQUNBLEtBQUssQ0FBQyxDQUFDO0VBRVgsb0JBQ0VULEtBQUEsQ0FBQ25CLHdCQUF3QjtJQUFBNkIsUUFBQSxnQkFDdkJaLElBQUEsQ0FBQ2lCLGVBQWUsSUFBRSxDQUFDLEVBQ2xCLENBQUFpQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUosSUFBSSxrQkFDZjlDLElBQUEsQ0FBQ2hCLGVBQWU7TUFBQTRCLFFBQUEsRUFBRSxDQUFBc0MsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVyQyxJQUFJLE1BQUssT0FBTyxHQUFHLE1BQU0sR0FBR3FDLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFSjtJQUFJLENBQWtCLENBQzdGO0VBQUEsQ0FDdUIsQ0FBQztBQUUvQixDQUFDOztBQUVEO0FBQ0EsSUFBTU8scUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsSUFBWSxFQUFhO0VBQ3RELElBQU1DLEtBQUssR0FBR0QsSUFBSSxDQUFDQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7RUFDbEQsT0FBT0EsS0FBSyxJQUFJLGlEQUFpRCxDQUFDQyxJQUFJLENBQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUN4RyxDQUFDOztBQUVEO0FBQ0EsSUFBTUUsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsT0FBZSxFQUFpQjtFQUMvRCxJQUFJLENBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUU7RUFDdkIsSUFBTUMsWUFBWSxHQUFHLElBQUlDLE1BQU0sQ0FBQ2xFLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztFQUM1RCxJQUFNbUUsS0FBaUIsR0FBRyxFQUFFO0VBQzVCLElBQU1DLE9BQU8sR0FBRyxJQUFJQyxHQUFHLENBQVMsQ0FBQztFQUNqQyxJQUFJUixLQUE2QixHQUFHLElBQUk7RUFDeEM7RUFDQSxPQUFPLENBQUNBLEtBQUssR0FBR0ksWUFBWSxDQUFDSyxJQUFJLENBQUNOLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRTtJQUNwRCxJQUFNTyxNQUFNLEdBQUdWLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkIsSUFBTVcsR0FBRyxHQUFHWCxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQ08sT0FBTyxDQUFDSyxHQUFHLENBQUNGLE1BQU0sQ0FBQyxFQUFFO01BQ3hCSCxPQUFPLENBQUNNLEdBQUcsQ0FBQ0gsTUFBTSxDQUFDO01BQ25CLElBQU1JLFVBQVUsR0FBR0gsR0FBRyxDQUFDSSxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDO01BQzdELElBQU1DLGlCQUFpQixHQUFHLElBQUlYLE1BQU0sc0JBQUFZLE1BQUEsQ0FBc0JILFVBQVUsUUFBSyxDQUFDO01BQzFFLElBQU1JLFNBQVMsR0FBR2YsT0FBTyxDQUFDSCxLQUFLLENBQUNnQixpQkFBaUIsQ0FBQztNQUNsRCxJQUFNRyxLQUFLLEdBQUdELFNBQVMsR0FBR0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFBRCxNQUFBLENBQWFQLE1BQU0sQ0FBRTtNQUMzREosS0FBSyxDQUFDYyxJQUFJLENBQUM7UUFBRS9CLEVBQUUsRUFBRXFCLE1BQU07UUFBRVMsS0FBSyxFQUFMQSxLQUFLO1FBQUVSLEdBQUcsRUFBSEE7TUFBSSxDQUFDLENBQUM7SUFDeEM7RUFDRjtFQUNBLE9BQU9MLEtBQUs7QUFDZCxDQUFDO0FBRUQsSUFBTWUsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLElBQVk7RUFBQSxPQUFjcEIsdUJBQXVCLENBQUNvQixJQUFJLENBQUMsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBQTs7QUFFeEY7QUFDQSxJQUFNQyxRQUFtRSxHQUFHLFNBQXRFQSxRQUFtRUEsQ0FBQUMsS0FBQSxFQUFtQztFQUFBLElBQTdCMUIsSUFBSSxHQUFBMEIsS0FBQSxDQUFKMUIsSUFBSTtJQUFFVyxNQUFNLEdBQUFlLEtBQUEsQ0FBTmYsTUFBTTtJQUFFckQsUUFBUSxHQUFBb0UsS0FBQSxDQUFScEUsUUFBUTtFQUNuRyxJQUFNcUUsVUFBVSxHQUFHNUIscUJBQXFCLENBQUNDLElBQUksQ0FBQztFQUM5QyxJQUFBNEIsYUFBQSxHQUEwQm5ILFlBQVksQ0FBQ2tHLE1BQU0sRUFBRWdCLFVBQVUsQ0FBQztJQUFsREUsYUFBYSxHQUFBRCxhQUFBLENBQWJDLGFBQWE7RUFDckIsSUFBTUMsUUFBUSxHQUFHRCxhQUFhLENBQUMsQ0FBQztFQUVoQyxJQUFNRSxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsQ0FBc0MsRUFBSztJQUM5RDtJQUNBLElBQUlBLENBQUMsQ0FBQ0MsT0FBTyxJQUFJRCxDQUFDLENBQUNFLE9BQU8sRUFBRTtNQUMxQjtJQUNGO0lBRUFGLENBQUMsQ0FBQ0csY0FBYyxDQUFDLENBQUM7SUFDbEJMLFFBQVEsQ0FBQyxDQUFDO0VBQ1osQ0FBQztFQUVELG9CQUNFcEYsSUFBQSxDQUFDZCxVQUFVO0lBQUNvRSxJQUFJLEVBQUVBLElBQUs7SUFBQ1QsT0FBTyxFQUFFd0MsV0FBWTtJQUFBekUsUUFBQSxFQUMxQ0E7RUFBUSxDQUNDLENBQUM7QUFFakIsQ0FBQzs7QUFFRDs7QUFFQSxJQUFNOEUsVUFBK0IsR0FBRyxTQUFsQ0EsVUFBK0JBLENBQUFDLEtBQUEsRUFBb0M7RUFBQSxJQUE5QnJDLElBQUksR0FBQXFDLEtBQUEsQ0FBSnJDLElBQUk7SUFBRTFDLFFBQVEsR0FBQStFLEtBQUEsQ0FBUi9FLFFBQVE7SUFBS2dGLElBQUksR0FBQXRFLHdCQUFBLENBQUFxRSxLQUFBLEVBQUFFLFVBQUE7RUFDaEUsSUFBSSxDQUFDdkMsSUFBSSxJQUFJLE9BQU9BLElBQUksS0FBSyxRQUFRLEVBQUU7SUFDckMsb0JBQ0V0RCxJQUFBLE1BQUF5QixhQUFBLENBQUFBLGFBQUE7TUFBRzZCLElBQUksRUFBRUE7SUFBSyxHQUFLc0MsSUFBSTtNQUFBaEYsUUFBQSxFQUNwQkE7SUFBUSxFQUNSLENBQUM7RUFFUjtFQUNBLElBQU1rRixTQUFTLEdBQUd4QyxJQUFJLENBQUNDLEtBQUssQ0FBQyxJQUFJSyxNQUFNLENBQUNsRSxzQkFBc0IsQ0FBQyxDQUFDO0VBQ2hFLElBQUlvRyxTQUFTLEVBQUU7SUFDYixJQUFNN0IsTUFBTSxHQUFHNkIsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMzQixvQkFDRTlGLElBQUEsQ0FBQytFLFFBQVE7TUFBQ3pCLElBQUksRUFBRUEsSUFBSztNQUFDVyxNQUFNLEVBQUVBLE1BQU87TUFBQXJELFFBQUEsRUFDbENBO0lBQVEsQ0FDRCxDQUFDO0VBRWY7RUFDQSxvQkFDRVosSUFBQSxNQUFBeUIsYUFBQSxDQUFBQSxhQUFBO0lBQUc2QixJQUFJLEVBQUVBO0VBQUssR0FBS3NDLElBQUk7SUFBQWhGLFFBQUEsRUFDcEJBO0VBQVEsRUFDUixDQUFDO0FBRVIsQ0FBQzs7QUFFRDtBQUNBLElBQU1tRixvQkFBb0IsZ0JBQUduSixJQUFJLENBQy9CLFVBQUN5RSxLQWlCQSxFQUFLO0VBQUEsSUFBQTJFLHFCQUFBO0VBQ0osSUFBTUMsV0FBVyxHQUFHdEosS0FBSyxDQUFDdUosVUFBVSxDQUFDN0YsdUJBQXVCLENBQUM7RUFDN0QsSUFBTThGLFdBQVcsR0FBRzlFLEtBQUssQ0FBQytFLFdBQVcsR0FBR0gsV0FBVyxHQUFHNUUsS0FBSyxDQUFDcUMsT0FBTztFQUNuRSxJQUFNMkMseUJBQXlCLElBQUFMLHFCQUFBLEdBQUczRSxLQUFLLENBQUNpRixtQkFBbUIsY0FBQU4scUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQk8sT0FBTztFQUNwRSxJQUFNQyxhQUFhLEdBQUc3SixLQUFLLENBQUNLLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDckMsSUFBSSxPQUFPeUosTUFBTSxLQUFLLFdBQVcsSUFBS0EsTUFBTSxDQUFTQywyQkFBMkIsSUFBSXJGLEtBQUssQ0FBQytFLFdBQVcsRUFBRTtJQUNyR0ksYUFBYSxDQUFDRyxPQUFPLElBQUksQ0FBQztJQUMxQjtJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRTtNQUFFQyxLQUFLLEVBQUVOLGFBQWEsQ0FBQ0csT0FBTztNQUFFSSxHQUFHLEVBQUVaLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFckI7SUFBTyxDQUFDLENBQUM7RUFDMUc7RUFDQSxJQUFJLENBQUNxQixXQUFXLElBQUksQ0FBQzlFLEtBQUssQ0FBQytFLFdBQVcsRUFBRSxPQUFPLElBQUk7RUFDbkQsb0JBQ0VsRyxLQUFBLENBQUFFLFNBQUE7SUFBQVEsUUFBQSxnQkFDRVosSUFBQSxDQUFDekIsbUJBQW1CO01BQ2xCNkMsYUFBYSxFQUFFQyxLQUFLLENBQUNELGFBQWM7TUFDbkM0RixtQkFBbUIsRUFBRTNGLEtBQUssQ0FBQzJGLG1CQUFvQjtNQUMvQ0MsU0FBUyxFQUFFNUYsS0FBSyxDQUFDNkYsV0FBVyxJQUFJdEMsWUFBWSxDQUFDdUIsV0FBVyxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsRUFBRztNQUFBdkYsUUFBQSxlQUVsRlosSUFBQSxDQUFDNUMsVUFBVTtRQUNUK0osT0FBTyxFQUFFO1VBQUU1RyxJQUFJLEVBQUpBO1FBQUssQ0FBRTtRQUNsQjZHLFVBQVUsRUFBRTtVQUFFQyxDQUFDLEVBQUUzQjtRQUFXLENBQW9EO1FBQ2hGNEIsVUFBVSxFQUFFO1VBQUVDLE9BQU8sRUFBRTtRQUFNLENBQUU7UUFDL0JDLFdBQVcsRUFBRSxDQUFDLENBQUNuRyxLQUFLLENBQUMrRSxXQUFZO1FBQ2pDcUIsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBRTtRQUM3Q0MsUUFBUSxFQUFFO1VBQUVDLEtBQUssRUFBRSxLQUFLO1VBQUVwSCxJQUFJLEVBQUU7UUFBTSxDQUFFO1FBQUFLLFFBQUEsRUFFdkN1RjtNQUFXLENBQ0Y7SUFBQyxDQUNNLENBQUMsRUFDckI5RSxLQUFLLENBQUM2RixXQUFXLElBQUksQ0FBQzdGLEtBQUssQ0FBQ3VHLE9BQU8sSUFBSSxDQUFDdkcsS0FBSyxDQUFDMkYsbUJBQW1CLElBQUksQ0FBQzNGLEtBQUssQ0FBQ3dHLFFBQVEsSUFBSSxDQUFDeEcsS0FBSyxDQUFDK0UsV0FBVyxpQkFDekdwRyxJQUFBLENBQUMxQixlQUFlO01BQ2R3SixPQUFPLEVBQUUzQixXQUFZO01BQ3JCNEIsT0FBTyxFQUFFMUcsS0FBSyxDQUFDMEcsT0FBUTtNQUN2QkMsY0FBYyxFQUFFM0csS0FBSyxDQUFDNEcsbUJBQW9CO01BQzFDQyxlQUFlLEVBQUU3RyxLQUFLLENBQUM2RztJQUFnQixDQUN4QyxDQUNGLEVBQ0E3RyxLQUFLLENBQUM2RixXQUFXLElBQUksQ0FBQzdGLEtBQUssQ0FBQ3VHLE9BQU8sSUFBSSxDQUFDdkcsS0FBSyxDQUFDMkYsbUJBQW1CLElBQUksQ0FBQzNGLEtBQUssQ0FBQ3dHLFFBQVEsaUJBQ25GN0gsSUFBQSxDQUFDTCxpQkFBaUI7TUFDaEJ3SSxXQUFXLEVBQUU5RyxLQUFLLENBQUM4RyxXQUFXLElBQUksRUFBRztNQUNyQ0Msa0JBQWtCLEVBQUUsU0FBcEJBLGtCQUFrQkEsQ0FBRUMsVUFBVTtRQUFBLE9BQUloSCxLQUFLLENBQUNpSCxxQkFBcUIsQ0FBQ2pILEtBQUssQ0FBQ2tILFNBQVMsRUFBRUYsVUFBVSxDQUFDO01BQUEsQ0FBQztNQUMzRkcsUUFBUSxFQUFFbkgsS0FBSyxDQUFDb0gsbUJBQW9CO01BQ3BDQyxNQUFNLEVBQUUsQ0FBQyxDQUFDckgsS0FBSyxDQUFDK0UsV0FBVyxJQUFJLENBQUMvRSxLQUFLLENBQUNzSCxhQUFhLElBQUksQ0FBQyxDQUFDdEgsS0FBSyxDQUFDb0g7SUFBb0IsQ0FDcEYsQ0FDRixFQUNBcEgsS0FBSyxDQUFDNkYsV0FBVyxJQUNoQixDQUFDN0YsS0FBSyxDQUFDdUcsT0FBTyxJQUNkLENBQUN2RyxLQUFLLENBQUMyRixtQkFBbUIsSUFDMUIsQ0FBQzNGLEtBQUssQ0FBQ3dHLFFBQVEsSUFDZixDQUFDLENBQUN4Qix5QkFBeUIsaUJBQ3pCckcsSUFBQSxDQUFDSix3QkFBd0I7TUFDdkIyRyxPQUFPLEVBQUVGLHlCQUEwQjtNQUNuQ21DLFFBQVEsRUFBRW5ILEtBQUssQ0FBQ29ILG1CQUFvQjtNQUNwQ0MsTUFBTSxFQUFFLENBQUMsQ0FBQ3JILEtBQUssQ0FBQytFLFdBQVcsSUFBSSxDQUFDL0UsS0FBSyxDQUFDc0gsYUFBYSxJQUFJLENBQUMsQ0FBQ3RILEtBQUssQ0FBQ29IO0lBQW9CLENBQ3BGLENBQ0Y7RUFBQSxDQUNILENBQUM7QUFFUCxDQUNGLENBQUM7QUFFRCxJQUFNRyxXQUFXLGdCQUFHaE0sSUFBSSxDQUFDLFVBQUN5RSxLQUF1QixFQUFLO0VBQUEsSUFBQXdILGVBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLHFCQUFBO0VBQ3BELElBQ0VwRyxFQUFFLEdBc0JBdkIsS0FBSyxDQXRCUHVCLEVBQUU7SUFDRnFHLElBQUksR0FxQkY1SCxLQUFLLENBckJQNEgsSUFBSTtJQUNKdkYsT0FBTyxHQW9CTHJDLEtBQUssQ0FwQlBxQyxPQUFPO0lBQ1AwQyxXQUFXLEdBbUJUL0UsS0FBSyxDQW5CUCtFLFdBQVc7SUFDWHdCLE9BQU8sR0FrQkx2RyxLQUFLLENBbEJQdUcsT0FBTztJQUNQc0IsUUFBUSxHQWlCTjdILEtBQUssQ0FqQlA2SCxRQUFRO0lBQ1JsSCxPQUFPLEdBZ0JMWCxLQUFLLENBaEJQVyxPQUFPO0lBQ1BtSCxlQUFlLEdBZWI5SCxLQUFLLENBZlA4SCxlQUFlO0lBQ2ZsSCxrQkFBa0IsR0FjaEJaLEtBQUssQ0FkUFksa0JBQWtCO0lBQ2xCcUcscUJBQXFCLEdBYW5CakgsS0FBSyxDQWJQaUgscUJBQXFCO0lBQ3JCTixjQUFjLEdBWVozRyxLQUFLLENBWlAyRyxjQUFjO0lBQ2RvQixzQkFBc0IsR0FXcEIvSCxLQUFLLENBWFArSCxzQkFBc0I7SUFDdEJsQixlQUFlLEdBVWI3RyxLQUFLLENBVlA2RyxlQUFlO0lBQ2ZtQixJQUFJLEdBU0ZoSSxLQUFLLENBVFBnSSxJQUFJO0lBQ0p0QixPQUFPLEdBUUwxRyxLQUFLLENBUlAwRyxPQUFPO0lBQ1B1QixXQUFXLEdBT1RqSSxLQUFLLENBUFBpSSxXQUFXO0lBQ1h6QixRQUFRLEdBTU54RyxLQUFLLENBTlB3RyxRQUFRO0lBQ1IwQixjQUFjLEdBS1psSSxLQUFLLENBTFBrSSxjQUFjO0lBQ2RwQixXQUFXLEdBSVQ5RyxLQUFLLENBSlA4RyxXQUFXO0lBQ1g3QixtQkFBbUIsR0FHakJqRixLQUFLLENBSFBpRixtQkFBbUI7SUFDbkJrRCxxQkFBcUIsR0FFbkJuSSxLQUFLLENBRlBtSSxxQkFBcUI7SUFDckJiLGFBQWEsR0FDWHRILEtBQUssQ0FEUHNILGFBQWE7RUFHZixJQUFBYyxVQUFBLEdBQWtEeE0sUUFBUSxDQUF3QixJQUFJLENBQUM7SUFBQXlNLFVBQUEsR0FBQXRILGNBQUEsQ0FBQXFILFVBQUE7SUFBaEZFLGlCQUFpQixHQUFBRCxVQUFBO0lBQUVFLG9CQUFvQixHQUFBRixVQUFBO0VBQzlDLElBQU10SSxhQUFhLEdBQUdpSSxJQUFJLEtBQUsxTCxlQUFlLENBQUNrTSxJQUFJLElBQUlaLElBQUksQ0FBQ3JHLEVBQUUsS0FBS3NHLFFBQVEsQ0FBQ3RHLEVBQUUsQ0FBQ2tILFFBQVEsQ0FBQyxDQUFDO0VBQ3pGLElBQU01QyxXQUFXLEdBQUdtQyxJQUFJLEtBQUsxTCxlQUFlLENBQUNvTSxTQUFTLElBQUlkLElBQUksQ0FBQ3JHLEVBQUUsS0FBSyxXQUFXOztFQUVqRjtFQUNBLElBQU1vSCxjQUFjLEdBQUdoTixNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ2hDLElBQU1pTixpQkFBaUIsR0FBR2pOLE1BQU0sRUFBQTZMLGVBQUEsR0FBU25GLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFb0IsTUFBTSxjQUFBK0QsZUFBQSxjQUFBQSxlQUFBLEdBQUksQ0FBQyxDQUFDO0VBQzlEbUIsY0FBYyxDQUFDckQsT0FBTyxJQUFJLENBQUM7RUFDM0IsSUFBSVAsV0FBVyxJQUFJLE9BQU9LLE1BQU0sS0FBSyxXQUFXLElBQUtBLE1BQU0sQ0FBU0MsMkJBQTJCLEVBQUU7SUFBQSxJQUFBd0QsZ0JBQUE7SUFDL0YsSUFBTUMsT0FBTyxHQUFHRixpQkFBaUIsQ0FBQ3RELE9BQU87SUFDekNzRCxpQkFBaUIsQ0FBQ3RELE9BQU8sSUFBQXVELGdCQUFBLEdBQUd4RyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRW9CLE1BQU0sY0FBQW9GLGdCQUFBLGNBQUFBLGdCQUFBLEdBQUksQ0FBQztJQUNoRDtJQUNBdEQsT0FBTyxDQUFDQyxHQUFHLENBQUMsc0JBQXNCLEVBQUU7TUFDbEMwQixTQUFTLEVBQUUzRixFQUFFO01BQ2J3SCxXQUFXLEVBQUVKLGNBQWMsQ0FBQ3JELE9BQU87TUFDbkMwRCxVQUFVLEVBQUUzRyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRW9CLE1BQU07TUFDM0J3RixjQUFjLEVBQUVILE9BQU87TUFDdkIvRCxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7RUFDSjtFQUVBLElBQU1tRSxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxVQUEwQixFQUFLO0lBQzVEO0lBQ0EsSUFDRUEsVUFBVSxDQUFDQyxJQUFJLFlBQVlDLElBQUksSUFDL0JGLFVBQVUsQ0FBQ0csWUFBWSxZQUFZRCxJQUFJLElBQ3ZDRixVQUFVLENBQUNJLGFBQWEsSUFDeEJKLFVBQVUsQ0FBQ0ssWUFBWSxJQUN2QkwsVUFBVSxDQUFDTSxRQUFRLEVBQ25CO01BQ0FsQixvQkFBb0IsQ0FBQ1ksVUFBVSxDQUFDO0lBQ2xDO0VBQ0YsQ0FBQztFQUVELElBQU1PLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUEsRUFBUztJQUMvQm5CLG9CQUFvQixDQUFDLElBQUksQ0FBQztFQUM1QixDQUFDO0VBRUQsSUFBSVQsZUFBZSxJQUFJbkgsT0FBTyxFQUFFO0lBQzlCLG9CQUNFaEMsSUFBQSxDQUFDa0IsY0FBYztNQUFVRSxhQUFhLEVBQUVBLGFBQWM7TUFBQyxtQkFBaUJ3QixFQUFHO01BQUNvSSxXQUFXLEVBQUUsS0FBTTtNQUFBcEssUUFBQSxlQUM3RlYsS0FBQSxDQUFDZixvQkFBb0I7UUFBQzhMLFlBQVksRUFBRS9ELFdBQVk7UUFBQXRHLFFBQUEsR0FDN0NzRyxXQUFXLGlCQUFJbEgsSUFBQSxDQUFDK0Msc0JBQXNCLElBQUUsQ0FBQyxlQUMxQy9DLElBQUEsQ0FBQzBCLHFCQUFxQjtVQUNwQnlILGVBQWUsRUFBRUEsZUFBZ0I7VUFDakN6RixPQUFPLEVBQUVBLE9BQVE7VUFDakJ0QyxhQUFhLEVBQUVBLGFBQWM7VUFDN0J3RyxPQUFPLEVBQUVBLE9BQVE7VUFDakJzRCxtQkFBbUIsZUFBRWxMLElBQUEsQ0FBQzhCLGNBQWM7WUFBQ0UsT0FBTyxFQUFFQSxPQUFlO1lBQUNDLGtCQUFrQixFQUFFQTtVQUFtQixDQUFFO1FBQUUsQ0FDMUcsQ0FBQztNQUFBLENBQ2tCO0lBQUMsR0FWSlcsRUFXTCxDQUFDO0VBRXJCO0VBRUEsSUFBTXFGLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlrRCxRQUFrQixFQUFLO0lBQ2xELElBQU1DLFNBQVMsR0FBR3hJLEVBQUUsQ0FDakJ5SSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ1ZDLE1BQU0sQ0FBQyxVQUFBQyxVQUFVO01BQUEsT0FBSUEsVUFBVSxLQUFLLFFBQVE7SUFBQSxFQUFDLENBQzdDQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ1p4RCxjQUFjLGFBQWRBLGNBQWMsZUFBZEEsY0FBYyxDQUFHbUQsUUFBUSxFQUFFQyxTQUFTLENBQUM7RUFDdkMsQ0FBQztFQUVELG9CQUNFbEwsS0FBQSxDQUFDZixvQkFBb0I7SUFBQzhMLFlBQVksRUFBRS9ELFdBQVk7SUFBQXRHLFFBQUEsR0FDN0NzRyxXQUFXLGlCQUFJbEgsSUFBQSxDQUFDK0Msc0JBQXNCLElBQUUsQ0FBQyxlQUMxQzdDLEtBQUEsQ0FBQ2Qsa0JBQWtCO01BQUF3QixRQUFBLEdBQ2hCLENBQUMsR0FBQWtJLEtBQUEsR0FBRVEsV0FBVyxJQUFJdkIsT0FBTyxjQUFBZSxLQUFBLGVBQXZCQSxLQUFBLENBQTBCaEUsTUFBTSxLQUFJLENBQUNvQyxXQUFXLGlCQUNqRGxILElBQUEsQ0FBQ1gsZ0JBQWdCO1FBQUF1QixRQUFBLEdBQUFtSSxLQUFBLEdBQ2JPLFdBQVcsSUFBSXZCLE9BQU8sY0FBQWdCLEtBQUEsdUJBQXZCQSxLQUFBLENBQTBCdEcsR0FBRyxDQUFDLFVBQUMrSCxVQUFVLEVBQUVpQixLQUFLLEVBQUs7VUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxnQkFBQTtVQUNwRDtVQUNBLElBQU1DLGNBQWMsR0FBRyxDQUFBcEIsVUFBVSxhQUFWQSxVQUFVLGdCQUFBa0IsZ0JBQUEsR0FBVmxCLFVBQVUsQ0FBRTNKLElBQUksY0FBQTZLLGdCQUFBLHVCQUFoQkEsZ0JBQUEsQ0FBa0JHLFdBQVcsQ0FBQyxDQUFDLEtBQUksRUFBRTtVQUM1RCxJQUFNQyxjQUFjLEdBQUcsQ0FBQXRCLFVBQVUsYUFBVkEsVUFBVSxnQkFBQW1CLGdCQUFBLEdBQVZuQixVQUFVLENBQUUxSCxJQUFJLGNBQUE2SSxnQkFBQSx1QkFBaEJBLGdCQUFBLENBQWtCRSxXQUFXLENBQUMsQ0FBQyxLQUFJLEVBQUU7VUFDNUQsSUFBTUUsV0FBVyxHQUNmSCxjQUFjLENBQUNJLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFDbkMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUNDLFFBQVEsQ0FBQ0wsY0FBYyxDQUFDLElBQ25GLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDTSxJQUFJLENBQUMsVUFBQUMsR0FBRztZQUFBLE9BQ3pFTCxjQUFjLENBQUNNLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDO1VBQUEsQ0FDOUIsQ0FBQztVQUVILElBQUlKLFdBQVcsRUFBRTtZQUNmLG9CQUFPL0wsSUFBQSxDQUFDdEMsbUJBQW1CO2NBQTZDOE0sVUFBVSxFQUFFQTtZQUFXLE1BQUFoRyxNQUFBLENBQTNEZ0csVUFBVSxDQUFDNUgsRUFBRSxPQUFBNEIsTUFBQSxDQUFJZ0csVUFBVSxDQUFDMUgsSUFBSSxDQUE2QixDQUFDO1VBQ3BHO1VBRUEsb0JBQ0U5QyxJQUFBLENBQUN6QyxjQUFjO1lBRWJpTixVQUFVLEVBQUVBLFVBQVc7WUFDdkI2QixhQUFhLEVBQUVaLEtBQU07WUFDckI1SSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtjQUFBLE9BQVEwSCxxQkFBcUIsQ0FBQ0MsVUFBVSxDQUFDO1lBQUE7VUFBQyxNQUFBaEcsTUFBQSxDQUh6Q2dHLFVBQVUsQ0FBQzVILEVBQUUsT0FBQTRCLE1BQUEsQ0FBSWdHLFVBQVUsQ0FBQzFILElBQUksQ0FJekMsQ0FBQztRQUVOLENBQUM7TUFBQyxDQUNjLENBQ25CLEVBQ0ErRSxRQUFRLElBQUlBLFFBQVEsQ0FBQ3lFLGVBQWUsaUJBQ25DdE0sSUFBQSxDQUFDVix1QkFBdUI7UUFBQXNCLFFBQUEsZUFDdEJaLElBQUEsQ0FBQ3hDLFdBQVc7VUFDVitPLE9BQU8sRUFBRTFFLFFBQVEsQ0FBQ3lFLGVBQWdCO1VBQ2xDRSxNQUFNLEVBQUVqRCxjQUFlO1VBQ3ZCa0QsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUVDLFNBQVM7WUFBQSxPQUFJdEQsc0JBQXNCLENBQUNzRCxTQUFTLEVBQUUsU0FBUyxDQUFDO1VBQUEsQ0FBQztVQUNyRUMsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUVELFNBQVM7WUFBQSxPQUFJdEQsc0JBQXNCLENBQUNzRCxTQUFTLEVBQUUsUUFBUSxDQUFDO1VBQUEsQ0FBQztVQUNuRUUsZ0JBQWdCLEVBQUUsRUFBQTVELHFCQUFBLEdBQUEzSCxLQUFLLENBQUN3TCxlQUFlLGNBQUE3RCxxQkFBQSx1QkFBckJBLHFCQUFBLENBQXVCOEQsVUFBVSxNQUFLLElBQUs7VUFDN0RDLFVBQVUsRUFBRTFMLEtBQUssQ0FBQzJMLFFBQVM7VUFDM0JDLGNBQWMsRUFBRXBGLFFBQVEsQ0FBQ3FGO1FBQW1CLENBQzdDO01BQUMsQ0FDcUIsQ0FDMUIsRUFDQSxDQUFDLENBQUMsQ0FBQ3hKLE9BQU8sSUFBSTBDLFdBQVcsS0FBSyxDQUFDeUIsUUFBUSxpQkFDdEM3SCxJQUFBLENBQUMrRixvQkFBb0I7UUFDbkJyQyxPQUFPLEVBQUVBLE9BQU8sYUFBUEEsT0FBTyxjQUFQQSxPQUFPLEdBQUksRUFBRztRQUN2QjBDLFdBQVcsRUFBRSxDQUFDLENBQUNBLFdBQVk7UUFDM0JoRixhQUFhLEVBQUVBLGFBQWM7UUFDN0I4RixXQUFXLEVBQUVBLFdBQVk7UUFDekJGLG1CQUFtQixFQUFFM0YsS0FBSyxDQUFDMkYsbUJBQW9CO1FBQy9DYSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJELE9BQU8sRUFBRUEsT0FBUTtRQUNqQkcsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCSSxXQUFXLEVBQUVBLFdBQVk7UUFDekI3QixtQkFBbUIsRUFBRUEsbUJBQW9CO1FBQ3pDMkIsbUJBQW1CLEVBQUVBLG1CQUFvQjtRQUN6Q0MsZUFBZSxFQUFFQSxlQUFlLGFBQWZBLGVBQWUsY0FBZkEsZUFBZSxHQUFJLElBQUs7UUFDekNJLHFCQUFxQixFQUFFQSxxQkFBc0I7UUFDN0NHLG1CQUFtQixFQUFFLENBQUMsQ0FBQ3BILEtBQUssQ0FBQytFLFdBQVcsSUFBSSxDQUFDLENBQUNvRCxxQkFBc0I7UUFDcEVqQixTQUFTLEVBQUUzRixFQUFHO1FBQ2QrRixhQUFhLEVBQUVBO01BQWMsQ0FDOUIsQ0FDRjtJQUFBLENBQ2lCLENBQUMsZUFDckIzSSxJQUFBLENBQUN2QyxzQkFBc0I7TUFDckIwUCxNQUFNLEVBQUUsQ0FBQyxDQUFDeEQsaUJBQWtCO01BQzVCeUQsT0FBTyxFQUFFckMsa0JBQW1CO01BQzVCUCxVQUFVLEVBQUViO0lBQWtCLENBQy9CLENBQUM7RUFBQSxDQUNrQixDQUFDO0FBRTNCLENBQUMsQ0FBQztBQUVGLElBQU0wRCxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBQyxLQUFBLEVBU0U7RUFBQSxJQUFBQyxhQUFBLEVBQUFDLGlCQUFBO0VBQUEsSUFSekJDLGtCQUFrQixHQUFBSCxLQUFBLENBQWxCRyxrQkFBa0I7SUFDbEJDLGFBQWEsR0FBQUosS0FBQSxDQUFiSSxhQUFhO0lBQ2JDLE9BQU8sR0FBQUwsS0FBQSxDQUFQSyxPQUFPO0lBQ1BDLGtCQUFrQixHQUFBTixLQUFBLENBQWxCTSxrQkFBa0I7SUFDbEJDLGdCQUFnQixHQUFBUCxLQUFBLENBQWhCTyxnQkFBZ0I7SUFDaEJ2RSxXQUFXLEdBQUFnRSxLQUFBLENBQVhoRSxXQUFXO0lBQ1h3RSxNQUFNLEdBQUFSLEtBQUEsQ0FBTlEsTUFBTTtJQUNOZCxRQUFRLEdBQUFNLEtBQUEsQ0FBUk4sUUFBUTtFQUVSLElBQUFlLEtBQUEsR0FBY2xRLElBQUksQ0FBQyxDQUFDO0lBQVptUSxDQUFDLEdBQUFELEtBQUEsQ0FBREMsQ0FBQztFQUNULElBQUFDLGtCQUFBLEdBQXlEek8sZ0JBQWdCLENBQUMsQ0FBQztJQUFuRTBPLGlCQUFpQixHQUFBRCxrQkFBQSxDQUFqQkMsaUJBQWlCO0lBQUVDLGtCQUFrQixHQUFBRixrQkFBQSxDQUFsQkUsa0JBQWtCO0lBQUV4TixLQUFLLEdBQUFzTixrQkFBQSxDQUFMdE4sS0FBSztFQUNwRCxJQUFNeU4sS0FBSyxHQUFHdE8sUUFBUSxDQUFDLENBQUM7RUFDeEIsSUFBTW9KLFFBQVEsR0FBR3RMLE9BQU8sQ0FBQyxDQUFDO0VBQzFCLElBQU15USxXQUFXLEdBQUdyUixNQUFNLENBQWlCLElBQUksQ0FBQztFQUNoRCxJQUFNc1Isa0JBQWtCLEdBQUd0UixNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ3hDLElBQU11UixnQkFBZ0IsR0FBR3ZSLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDdEMsSUFBTXdSLGdCQUFnQixHQUFHeFIsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUN0QyxJQUFNeVIsa0JBQWtCLEdBQUd6UixNQUFNLENBQUMsRUFBRSxDQUFDO0VBQ3JDLElBQU0wUixnQkFBZ0IsR0FBRzFSLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDbEMsSUFBTTJSLHFCQUFxQixHQUFHM1IsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUMzQyxJQUFNNFIsWUFBWSxHQUFHNVIsTUFBTSxDQUFnQixJQUFJLENBQUM7RUFDaEQsSUFBQTZSLFVBQUEsR0FBb0Q1UixRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUE2UixVQUFBLEdBQUExTSxjQUFBLENBQUF5TSxVQUFBO0lBQTVERSxrQkFBa0IsR0FBQUQsVUFBQTtJQUFFRSxxQkFBcUIsR0FBQUYsVUFBQTtFQUNoRCxJQUFBRyxVQUFBLEdBQXdFaFMsUUFBUSxDQUEwQixDQUFDLENBQUMsQ0FBQztJQUFBaVMsVUFBQSxHQUFBOU0sY0FBQSxDQUFBNk0sVUFBQTtJQUF0R0UsNEJBQTRCLEdBQUFELFVBQUE7SUFBRUUsK0JBQStCLEdBQUFGLFVBQUE7RUFDcEUsSUFBTUcsd0JBQXdCLEdBQUdyUyxNQUFNLENBQTBCLENBQUMsQ0FBQyxDQUFDO0VBQ3BFLElBQU1zUyxxQkFBcUIsR0FBR3RTLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDO0VBRXpELElBQUF1UyxlQUFBLEdBZUl6UixjQUFjLENBQUM7TUFDakIwUixNQUFNLEVBQUU5QixhQUFhLElBQUkrQixTQUFTO01BQ2xDaEMsa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJFLE9BQU8sRUFBUEEsT0FBTztNQUNQckUsV0FBVyxFQUFYQSxXQUFXO01BQ1h3RSxNQUFNLEVBQU5BO0lBQ0YsQ0FBQyxDQUFDO0lBcEJBNEIsUUFBUSxHQUFBSCxlQUFBLENBQVJHLFFBQVE7SUFDUkMsZUFBZSxHQUFBSixlQUFBLENBQWZJLGVBQWU7SUFDZkMscUJBQXFCLEdBQUFMLGVBQUEsQ0FBckJLLHFCQUFxQjtJQUNyQkMsZUFBZSxHQUFBTixlQUFBLENBQWZNLGVBQWU7SUFDZkMsU0FBUyxHQUFBUCxlQUFBLENBQVRPLFNBQVM7SUFDVEMsY0FBYyxHQUFBUixlQUFBLENBQWRRLGNBQWM7SUFDZEMsY0FBYyxHQUFBVCxlQUFBLENBQWRTLGNBQWM7SUFDZEMsV0FBVyxHQUFBVixlQUFBLENBQVhVLFdBQVc7SUFDWEMsYUFBYSxHQUFBWCxlQUFBLENBQWJXLGFBQWE7SUFDYmxJLGNBQWMsR0FBQXVILGVBQUEsQ0FBZHZILGNBQWM7SUFDZG9CLHNCQUFzQixHQUFBbUcsZUFBQSxDQUF0Qm5HLHNCQUFzQjtJQUN0QitHLGNBQWMsR0FBQVosZUFBQSxDQUFkWSxjQUFjO0lBQ2RDLFlBQVksR0FBQWIsZUFBQSxDQUFaYSxZQUFZO0lBQ1pDLGNBQWMsR0FBQWQsZUFBQSxDQUFkYyxjQUFjO0VBU2hCLElBQU1wTyxrQkFBa0IsR0FBR3BGLFdBQVcsQ0FDcEMsVUFBQzJGLE1BQWUsRUFBSztJQUNuQjBOLGFBQWEsQ0FBQzFOLE1BQU0sQ0FBQztFQUN2QixDQUFDLEVBQ0QsQ0FBQzBOLGFBQWEsQ0FDaEIsQ0FBQztFQUVELElBQU01SCxxQkFBcUIsR0FBR3pMLFdBQVcsQ0FDdkMsVUFBQzBMLFNBQWlCLEVBQUVGLFVBQWtCLEVBQUs7SUFDekMsSUFBSSxFQUFDQSxVQUFVLGFBQVZBLFVBQVUsZUFBVkEsVUFBVSxDQUFFaUksSUFBSSxDQUFDLENBQUMsR0FBRTtJQUN6QixJQUFJbkIsNEJBQTRCLENBQUM1RyxTQUFTLENBQUMsRUFBRTtJQUM3QyxJQUFNZ0ksd0JBQXdCLEdBQUcsQ0FBQTVQLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNlAsTUFBTSxNQUFLLFFBQVEsSUFBSSx3QkFBd0IsQ0FBQ2hOLElBQUksQ0FBQyxDQUFBN0MsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVtQyxJQUFJLEtBQUksRUFBRSxDQUFDO0lBQy9Hc0wsS0FBSyxDQUFDdk8sTUFBTSxDQUFDNFEscUJBQXFCLEVBQUU7TUFDbENDLFVBQVUsRUFBRUgsd0JBQXdCLEdBQUcsYUFBYSxHQUFHNVAsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVFO0lBQ2hFLENBQUMsQ0FBQztJQUNGdU8sK0JBQStCLENBQUMsVUFBQXVCLElBQUk7TUFBQSxPQUFBbFAsYUFBQSxDQUFBQSxhQUFBLEtBQVVrUCxJQUFJLE9BQUFDLGVBQUEsS0FBR3JJLFNBQVMsRUFBRyxJQUFJO0lBQUEsQ0FBRyxDQUFDO0lBQ3pFMEgsV0FBVyxDQUFDNUgsVUFBVSxDQUFDO0VBQ3pCLENBQUMsRUFDRCxDQUFDNEgsV0FBVyxFQUFFZCw0QkFBNEIsRUFBRWYsS0FBSyxFQUFFek4sS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2UCxNQUFNLEVBQUU3UCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1DLElBQUksRUFBRW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRSxJQUFJLENBQzVGLENBQUM7RUFFRCxJQUFNZ1EseUJBQXlCLEdBQUdoVSxXQUFXLENBQUMsWUFBTTtJQUNsRCxJQUFJd1IsV0FBVyxDQUFDMUgsT0FBTyxFQUFFO01BQ3ZCMEgsV0FBVyxDQUFDMUgsT0FBTyxDQUFDbUssUUFBUSxDQUFDO1FBQzNCQyxHQUFHLEVBQUUxQyxXQUFXLENBQUMxSCxPQUFPLENBQUNxSyxZQUFZO1FBQ3JDQyxRQUFRLEVBQUU7TUFDWixDQUFDLENBQUM7TUFDRjtNQUNBQyxVQUFVLENBQUMsWUFBTTtRQUNmLElBQUk3QyxXQUFXLENBQUMxSCxPQUFPLEVBQUU7VUFDdkIsSUFBQXdLLG9CQUFBLEdBQWtEOUMsV0FBVyxDQUFDMUgsT0FBTztZQUE3RHlLLFNBQVMsR0FBQUQsb0JBQUEsQ0FBVEMsU0FBUztZQUFFSixZQUFZLEdBQUFHLG9CQUFBLENBQVpILFlBQVk7WUFBRUssWUFBWSxHQUFBRixvQkFBQSxDQUFaRSxZQUFZO1VBQzdDLElBQU1DLGtCQUFrQixHQUFHTixZQUFZLEdBQUdJLFNBQVMsR0FBR0MsWUFBWTtVQUNsRSxJQUFNRSxVQUFVLEdBQUdELGtCQUFrQixHQUFHLEVBQUU7VUFDMUMzQyxxQkFBcUIsQ0FBQ2hJLE9BQU8sR0FBRzRLLFVBQVU7VUFDMUN2QyxxQkFBcUIsQ0FBQ3VDLFVBQVUsQ0FBQztRQUNuQztNQUNGLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDVDtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxvQkFBb0IsR0FBRzNVLFdBQVcsQ0FDdEMsVUFBQ3lJLENBQWdDLEVBQUs7SUFDcEMsSUFBTW1NLFNBQVMsR0FBR25NLENBQUMsQ0FBQ29NLGFBQWE7SUFFakMsSUFBSTlDLFlBQVksQ0FBQ2pJLE9BQU8sS0FBSyxJQUFJLEVBQUU7TUFDakNnTCxvQkFBb0IsQ0FBQy9DLFlBQVksQ0FBQ2pJLE9BQU8sQ0FBQztJQUM1QztJQUVBaUksWUFBWSxDQUFDakksT0FBTyxHQUFHaUwscUJBQXFCLENBQUMsWUFBTTtNQUNqRGhELFlBQVksQ0FBQ2pJLE9BQU8sR0FBRyxJQUFJO01BQzNCLElBQVF5SyxTQUFTLEdBQWlDSyxTQUFTLENBQW5ETCxTQUFTO1FBQUVKLFlBQVksR0FBbUJTLFNBQVMsQ0FBeENULFlBQVk7UUFBRUssWUFBWSxHQUFLSSxTQUFTLENBQTFCSixZQUFZO01BRTdDLElBQU1RLGFBQWEsR0FBR1QsU0FBUyxHQUFHMUMsZ0JBQWdCLENBQUMvSCxPQUFPO01BRTFELElBQUlrTCxhQUFhLEVBQUU7UUFDakJwRCxrQkFBa0IsQ0FBQzlILE9BQU8sR0FBRyxFQUFFO01BQ2pDO01BRUEsSUFBTW1MLFlBQVksR0FBR2QsWUFBWSxHQUFHSSxTQUFTLEdBQUdDLFlBQVksR0FBRzVDLGtCQUFrQixDQUFDOUgsT0FBTztNQUV6RixJQUFJbUwsWUFBWSxFQUFFO1FBQ2hCckQsa0JBQWtCLENBQUM5SCxPQUFPLEdBQUcsRUFBRTtNQUNqQztNQUVBNkgsZ0JBQWdCLENBQUM3SCxPQUFPLEdBQUcsQ0FBQ21MLFlBQVk7TUFDeENwRCxnQkFBZ0IsQ0FBQy9ILE9BQU8sR0FBR3lLLFNBQVM7TUFFcEMsSUFBTUUsa0JBQWtCLEdBQUdOLFlBQVksR0FBR0ksU0FBUyxHQUFHQyxZQUFZO01BQ2xFLElBQU1FLFVBQVUsR0FBR0Qsa0JBQWtCLEdBQUcsRUFBRTtNQUMxQyxJQUFNUyxXQUFXLEdBQUdwRCxxQkFBcUIsQ0FBQ2hJLE9BQU8sS0FBSzRLLFVBQVU7TUFDaEUsSUFBSVEsV0FBVyxFQUFFO1FBQ2ZwRCxxQkFBcUIsQ0FBQ2hJLE9BQU8sR0FBRzRLLFVBQVU7UUFDMUN2QyxxQkFBcUIsQ0FBQ3VDLFVBQVUsQ0FBQztNQUNuQztNQUVBLElBQUlPLFlBQVksSUFBSWpFLGdCQUFnQixFQUFFO1FBQ3BDQSxnQkFBZ0IsQ0FBQyxDQUFDO01BQ3BCO01BRUF1QyxZQUFZLENBQUNxQixTQUFTLENBQUM7SUFDekIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUNELENBQUM1RCxnQkFBZ0IsRUFBRXVDLFlBQVksQ0FDakMsQ0FBQzs7RUFFRDtFQUNBLElBQU00QixjQUFjLEdBQUdoVixNQUFNLENBQUNpVCxXQUFXLENBQUM7RUFDMUMsSUFBTWdDLGlCQUFpQixHQUFHalYsTUFBTSxDQUFDcVQsY0FBYyxDQUFDO0VBQ2hELElBQU02QixxQkFBcUIsR0FBR2xWLE1BQU0sQ0FBQzRRLGtCQUFrQixDQUFDOztFQUV4RDtFQUNBb0UsY0FBYyxDQUFDckwsT0FBTyxHQUFHc0osV0FBVztFQUNwQ2dDLGlCQUFpQixDQUFDdEwsT0FBTyxHQUFHMEosY0FBYztFQUMxQzZCLHFCQUFxQixDQUFDdkwsT0FBTyxHQUFHaUgsa0JBQWtCO0VBRWxEOVEsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJb1YscUJBQXFCLENBQUN2TCxPQUFPLEVBQUU7TUFDakN1TCxxQkFBcUIsQ0FBQ3ZMLE9BQU8sQ0FBQ3FMLGNBQWMsQ0FBQ3JMLE9BQU8sRUFBRXNMLGlCQUFpQixDQUFDdEwsT0FBTyxFQUFFa0osZUFBZSxFQUFFQyxTQUFTLENBQUM7SUFDOUc7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsZUFBZSxFQUFFQyxTQUFTLENBQUMsQ0FBQztFQUVoQ2hULFNBQVMsQ0FBQyxZQUFNO0lBQ2R5UixnQkFBZ0IsQ0FBQzVILE9BQU8sR0FBR2lKLHFCQUFxQjtFQUNsRCxDQUFDLEVBQUUsQ0FBQ0EscUJBQXFCLENBQUMsQ0FBQzs7RUFFM0I7RUFDQTlTLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSStTLGVBQWUsRUFBRTtNQUNuQnJCLGdCQUFnQixDQUFDN0gsT0FBTyxHQUFHLEtBQUs7TUFDaEM4SCxrQkFBa0IsQ0FBQzlILE9BQU8sR0FBRyxFQUFFO0lBQ2pDO0VBQ0YsQ0FBQyxFQUFFLENBQUNrSixlQUFlLENBQUMsQ0FBQztFQUVyQi9TLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDd1Isa0JBQWtCLENBQUMzSCxPQUFPLEVBQUU7TUFDL0IySCxrQkFBa0IsQ0FBQzNILE9BQU8sR0FBRyxJQUFJO01BQ2pDd0osY0FBYyxDQUFDLENBQUM7SUFDbEI7RUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDOztFQUVOO0VBQ0E7RUFDQTtFQUNBclQsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUN1UixXQUFXLENBQUMxSCxPQUFPLElBQUlnSixlQUFlLElBQUlDLHFCQUFxQixFQUFFO01BQ3BFLE9BQU9ILFNBQVM7SUFDbEI7SUFFQSxJQUFNMEMsV0FBVyxHQUFHekMsUUFBUSxDQUFDQSxRQUFRLENBQUM1SyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELElBQU1zTixXQUFXLEdBQUdELFdBQVcsS0FBS0EsV0FBVyxDQUFDdlAsRUFBRSxDQUFDb0osVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQ21HLFdBQVcsQ0FBQ3RLLFFBQVEsQ0FBQztJQUVyRyxJQUFJLENBQUN1SyxXQUFXLEVBQUU7TUFDaEIsT0FBTzNDLFNBQVM7SUFDbEI7SUFFQSxJQUFNZ0MsU0FBUyxHQUFHcEQsV0FBVyxDQUFDMUgsT0FBTztJQUNyQyxJQUFNMEwsVUFBVSxHQUFHWixTQUFTLENBQUNULFlBQVksR0FBR1MsU0FBUyxDQUFDTCxTQUFTLElBQUlLLFNBQVMsQ0FBQ0osWUFBWSxHQUFHLEdBQUc7SUFFL0YsSUFBSSxFQUFFZ0IsVUFBVSxJQUFJLENBQUM3RCxnQkFBZ0IsQ0FBQzdILE9BQU8sQ0FBQyxFQUFFO01BQzlDLE9BQU84SSxTQUFTO0lBQ2xCO0lBRUEsSUFBTTZDLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBQSxFQUFTO01BQzNCLElBQUlqRSxXQUFXLENBQUMxSCxPQUFPLEVBQUU7UUFDdkIwSCxXQUFXLENBQUMxSCxPQUFPLENBQUN5SyxTQUFTLEdBQUcvQyxXQUFXLENBQUMxSCxPQUFPLENBQUNxSyxZQUFZO01BQ2xFO0lBQ0YsQ0FBQzs7SUFFRDtJQUNBWSxxQkFBcUIsQ0FBQyxZQUFNO01BQzFCVSxjQUFjLENBQUMsQ0FBQztNQUNoQlYscUJBQXFCLENBQUMsWUFBTTtRQUMxQlUsY0FBYyxDQUFDLENBQUM7UUFDaEJwQixVQUFVLENBQUNvQixjQUFjLEVBQUUsR0FBRyxDQUFDO01BQ2pDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE9BQU83QyxTQUFTO0VBQ2xCLENBQUMsRUFBRSxDQUFDQyxRQUFRLEVBQUVDLGVBQWUsRUFBRUMscUJBQXFCLENBQUMsQ0FBQztFQUV0RDlTLFNBQVMsQ0FBQyxZQUFNO0lBQ2Q7SUFDQSxJQUFJMFIsZ0JBQWdCLENBQUM3SCxPQUFPLElBQUlrSixlQUFlLEVBQUU7TUFDL0M7SUFDRjtJQUVBLElBQUlBLGVBQWUsSUFBSXhCLFdBQVcsQ0FBQzFILE9BQU8sRUFBRTtNQUMxQ2lMLHFCQUFxQixDQUFDLFlBQU07UUFDMUIsSUFBSXZELFdBQVcsQ0FBQzFILE9BQU8sRUFBRTtVQUN2QjBILFdBQVcsQ0FBQzFILE9BQU8sQ0FBQ3lLLFNBQVMsR0FBRy9DLFdBQVcsQ0FBQzFILE9BQU8sQ0FBQ3FLLFlBQVk7VUFDaEUsSUFBQXVCLHFCQUFBLEdBQWtEbEUsV0FBVyxDQUFDMUgsT0FBTztZQUE3RHlLLFNBQVMsR0FBQW1CLHFCQUFBLENBQVRuQixTQUFTO1lBQUVKLFlBQVksR0FBQXVCLHFCQUFBLENBQVp2QixZQUFZO1lBQUVLLFlBQVksR0FBQWtCLHFCQUFBLENBQVpsQixZQUFZO1VBQzdDLElBQU1DLGtCQUFrQixHQUFHTixZQUFZLEdBQUdJLFNBQVMsR0FBR0MsWUFBWTtVQUNsRSxJQUFNRSxVQUFVLEdBQUdELGtCQUFrQixHQUFHLEVBQUU7VUFDMUMzQyxxQkFBcUIsQ0FBQ2hJLE9BQU8sR0FBRzRLLFVBQVU7VUFDMUN2QyxxQkFBcUIsQ0FBQ3VDLFVBQVUsQ0FBQztRQUNuQztNQUNGLENBQUMsQ0FBQztNQUNGO0lBQ0Y7SUFFQSxJQUFJLENBQUNsRCxXQUFXLENBQUMxSCxPQUFPLElBQUlnSixlQUFlLElBQUlDLHFCQUFxQixJQUFJckIsZ0JBQWdCLENBQUM1SCxPQUFPLEVBQUU7SUFFbEcsSUFBTThLLFNBQVMsR0FBR3BELFdBQVcsQ0FBQzFILE9BQU87SUFDckMsSUFBTXdMLFdBQVcsR0FBR3pDLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDNUssTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVqRCxJQUFNME4sa0JBQWtCLEdBQUdMLFdBQVcsSUFBSUEsV0FBVyxDQUFDdlAsRUFBRSxDQUFDb0osVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUM5RSxJQUFNeUcsZ0JBQWdCLEdBQUdOLFdBQVcsSUFBSUEsV0FBVyxDQUFDdlAsRUFBRSxDQUFDb0osVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUM5RSxJQUFNMEcsb0JBQW9CLEdBQUdQLFdBQVcsS0FBS0EsV0FBVyxDQUFDdlAsRUFBRSxDQUFDb0osVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQ21HLFdBQVcsQ0FBQ3RLLFFBQVEsQ0FBQztJQUM5RyxJQUFNd0ssVUFBVSxHQUFHWixTQUFTLENBQUNULFlBQVksR0FBR1MsU0FBUyxDQUFDTCxTQUFTLElBQUlLLFNBQVMsQ0FBQ0osWUFBWSxHQUFHLEdBQUc7SUFDL0YsSUFBTXNCLFdBQVcsR0FBRyxDQUFDLENBQUNqRCxRQUFRLENBQUM1SyxNQUFNO0lBQ3JDLElBQU04TixtQkFBbUIsR0FBRyxDQUFDbEQsUUFBUSxDQUFDeEQsSUFBSSxDQUFDLFVBQUEyRyxHQUFHO01BQUEsT0FBSUEsR0FBRyxDQUFDalEsRUFBRSxLQUFLLHNCQUFzQjtJQUFBLEVBQUM7SUFFcEYsSUFBSSxDQUFDNFAsa0JBQWtCLElBQUlDLGdCQUFnQixJQUFJQyxvQkFBb0IsS0FBS0wsVUFBVSxFQUFFO01BQ2xGO01BQ0EsSUFBTVMsV0FBVyxHQUFHSixvQkFBb0IsR0FBRyxHQUFHLEdBQUcsQ0FBQztNQUNsRCxJQUFNSyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQSxFQUFTO1FBQ3JCbkIscUJBQXFCLENBQUMsWUFBTTtVQUMxQixJQUFJdkQsV0FBVyxDQUFDMUgsT0FBTyxFQUFFO1lBQ3ZCMEgsV0FBVyxDQUFDMUgsT0FBTyxDQUFDeUssU0FBUyxHQUFHL0MsV0FBVyxDQUFDMUgsT0FBTyxDQUFDcUssWUFBWTtZQUNoRSxJQUFBZ0MscUJBQUEsR0FBa0QzRSxXQUFXLENBQUMxSCxPQUFPO2NBQTdEeUssU0FBUyxHQUFBNEIscUJBQUEsQ0FBVDVCLFNBQVM7Y0FBRUosWUFBWSxHQUFBZ0MscUJBQUEsQ0FBWmhDLFlBQVk7Y0FBRUssWUFBWSxHQUFBMkIscUJBQUEsQ0FBWjNCLFlBQVk7WUFDN0MsSUFBTUMsa0JBQWtCLEdBQUdOLFlBQVksR0FBR0ksU0FBUyxHQUFHQyxZQUFZO1lBQ2xFLElBQU1FLFVBQVUsR0FBR0Qsa0JBQWtCLEdBQUcsRUFBRTtZQUMxQzNDLHFCQUFxQixDQUFDaEksT0FBTyxHQUFHNEssVUFBVTtZQUMxQ3ZDLHFCQUFxQixDQUFDdUMsVUFBVSxDQUFDO1VBQ25DO1FBQ0YsQ0FBQyxDQUFDO01BQ0osQ0FBQztNQUNELElBQUl1QixXQUFXLEdBQUcsQ0FBQyxFQUFFO1FBQ25CNUIsVUFBVSxDQUFDNkIsUUFBUSxFQUFFRCxXQUFXLENBQUM7TUFDbkMsQ0FBQyxNQUFNO1FBQ0xDLFFBQVEsQ0FBQyxDQUFDO01BQ1o7SUFDRixDQUFDLE1BQU0sSUFDTEosV0FBVyxJQUNYQyxtQkFBbUIsSUFDbkIsQ0FBQ0osa0JBQWtCLElBQ25CLENBQUNDLGdCQUFnQixJQUNqQixDQUFDQyxvQkFBb0IsRUFDckI7TUFDQWQscUJBQXFCLENBQUMsWUFBTTtRQUMxQixJQUFJdkQsV0FBVyxDQUFDMUgsT0FBTyxFQUFFO1VBQ3ZCMEgsV0FBVyxDQUFDMUgsT0FBTyxDQUFDeUssU0FBUyxHQUFHL0MsV0FBVyxDQUFDMUgsT0FBTyxDQUFDcUssWUFBWTtVQUNoRSxJQUFBaUMscUJBQUEsR0FBa0Q1RSxXQUFXLENBQUMxSCxPQUFPO1lBQTdEeUssU0FBUyxHQUFBNkIscUJBQUEsQ0FBVDdCLFNBQVM7WUFBRUosWUFBWSxHQUFBaUMscUJBQUEsQ0FBWmpDLFlBQVk7WUFBRUssWUFBWSxHQUFBNEIscUJBQUEsQ0FBWjVCLFlBQVk7VUFDN0MsSUFBTUMsa0JBQWtCLEdBQUdOLFlBQVksR0FBR0ksU0FBUyxHQUFHQyxZQUFZO1VBQ2xFLElBQU1FLFVBQVUsR0FBR0Qsa0JBQWtCLEdBQUcsRUFBRTtVQUMxQzNDLHFCQUFxQixDQUFDaEksT0FBTyxHQUFHNEssVUFBVTtVQUMxQ3ZDLHFCQUFxQixDQUFDdUMsVUFBVSxDQUFDO1FBQ25DO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLEVBQUUsQ0FBQzdCLFFBQVEsRUFBRUMsZUFBZSxFQUFFQyxxQkFBcUIsRUFBRUMsZUFBZSxDQUFDLENBQUM7O0VBRXZFO0VBQ0EvUyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUl1UixXQUFXLENBQUMxSCxPQUFPLElBQUksQ0FBQ2dKLGVBQWUsRUFBRTtNQUMzQyxJQUFNOEIsU0FBUyxHQUFHcEQsV0FBVyxDQUFDMUgsT0FBTztNQUNyQyxJQUFReUssU0FBUyxHQUFpQ0ssU0FBUyxDQUFuREwsU0FBUztRQUFFSixZQUFZLEdBQW1CUyxTQUFTLENBQXhDVCxZQUFZO1FBQUVLLFlBQVksR0FBS0ksU0FBUyxDQUExQkosWUFBWTtNQUM3QyxJQUFNQyxrQkFBa0IsR0FBR04sWUFBWSxHQUFHSSxTQUFTLEdBQUdDLFlBQVk7TUFDbEUsSUFBTUUsVUFBVSxHQUFHRCxrQkFBa0IsR0FBRyxFQUFFO01BQzFDM0MscUJBQXFCLENBQUNoSSxPQUFPLEdBQUc0SyxVQUFVO01BQzFDdkMscUJBQXFCLENBQUN1QyxVQUFVLENBQUM7SUFDbkM7RUFDRixDQUFDLEVBQUUsQ0FBQzVCLGVBQWUsRUFBRUQsUUFBUSxDQUFDNUssTUFBTSxDQUFDLENBQUM7O0VBRXRDO0VBQ0EsSUFBTW9PLGVBQWUsR0FBR3hELFFBQVEsQ0FDN0JwRSxNQUFNLENBQUMsVUFBQXVILEdBQUc7SUFBQSxPQUFJQSxHQUFHLENBQUN4SixJQUFJLEtBQUsxTCxlQUFlLENBQUNrTSxJQUFJLElBQUlnSixHQUFHLENBQUM1SixJQUFJLENBQUNyRyxFQUFFLEtBQUtzRyxRQUFRLENBQUN0RyxFQUFFLENBQUNrSCxRQUFRLENBQUMsQ0FBQztFQUFBLEVBQUMsQ0FDMUZxSixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFVCxJQUFNQyxjQUFjLEdBQ2pCQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUU1SixXQUFXLENBQUMsSUFBSTRKLGVBQWUsQ0FBQzVKLFdBQVcsQ0FBQ3hFLE1BQU0sSUFDakZ1TyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVuTCxPQUFPLENBQUMsSUFBSW1MLGVBQWUsQ0FBQ25MLE9BQU8sQ0FBQ2pELE1BQU87RUFFN0UsSUFBTXlPLGdCQUFnQixHQUFHLENBQUMsQ0FBQ3ZHLFFBQVE7RUFDbkMsSUFBTXVELHdCQUF3QixHQUFHLENBQUE1UCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTZQLE1BQU0sTUFBSyxRQUFRLElBQUksd0JBQXdCLENBQUNoTixJQUFJLENBQUMsQ0FBQTdDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUMsSUFBSSxLQUFJLEVBQUUsQ0FBQzs7RUFFL0c7RUFDQSxJQUFNMFEsa0JBQWtCLEdBQUd4VyxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ3BDLElBQUksQ0FBQzZTLGVBQWUsSUFBSUMsU0FBUyxLQUFLLE9BQU9ySixNQUFNLEtBQUssV0FBVyxJQUFLQSxNQUFNLENBQVNDLDJCQUEyQixFQUFFO0lBQUEsSUFBQStNLFdBQUEsRUFBQUMscUJBQUEsRUFBQUMsZ0JBQUE7SUFDbEhILGtCQUFrQixDQUFDN00sT0FBTyxJQUFJLENBQUM7SUFDL0IsSUFBTWlOLFFBQU8sR0FBR2xFLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDNUssTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QyxJQUFNK08sT0FBTyxJQUFBSixXQUFBLEdBQUdHLFFBQU8sYUFBUEEsUUFBTyx1QkFBUEEsUUFBTyxDQUFFaFIsRUFBRSxjQUFBNlEsV0FBQSxjQUFBQSxXQUFBLFVBQUFqUCxNQUFBLENBQVdrTCxRQUFRLENBQUM1SyxNQUFNLEdBQUcsQ0FBQyxDQUFFO0lBQzNEO0lBQ0E4QixPQUFPLENBQUNDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRTtNQUNyQ0MsS0FBSyxFQUFFME0sa0JBQWtCLENBQUM3TSxPQUFPO01BQ2pDbU4sY0FBYyxFQUFFRCxPQUFPO01BQ3ZCRSxjQUFjLEdBQUFMLHFCQUFBLEdBQUVFLFFBQU8sYUFBUEEsUUFBTyxnQkFBQUQsZ0JBQUEsR0FBUEMsUUFBTyxDQUFFbFEsT0FBTyxjQUFBaVEsZ0JBQUEsdUJBQWhCQSxnQkFBQSxDQUFrQjdPLE1BQU0sY0FBQTRPLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQztNQUM3Q00sYUFBYSxFQUFFdEUsUUFBUSxDQUFDNUs7SUFDMUIsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7RUFDQTtFQUNBLElBQU1tUCxXQUFXLEdBQUdqWCxNQUFNLENBQUNnUSxRQUFRLENBQUM7RUFDcENqUSxlQUFlLENBQUMsWUFBTTtJQUNwQixJQUFJa1gsV0FBVyxDQUFDdE4sT0FBTyxLQUFLcUcsUUFBUSxJQUFJcUIsV0FBVyxDQUFDMUgsT0FBTyxFQUFFO01BQzNELElBQU11TixjQUFjLEdBQUd4RixnQkFBZ0IsQ0FBQy9ILE9BQU87TUFDL0MwSCxXQUFXLENBQUMxSCxPQUFPLENBQUN5SyxTQUFTLEdBQUc4QyxjQUFjO01BQzlDRCxXQUFXLENBQUN0TixPQUFPLEdBQUdxRyxRQUFRO0lBQ2hDLENBQUMsTUFBTTtNQUNMaUgsV0FBVyxDQUFDdE4sT0FBTyxHQUFHcUcsUUFBUTtJQUNoQztFQUNGLENBQUMsRUFBRSxDQUFDQSxRQUFRLENBQUMsQ0FBQztFQUVkLElBQU00RyxPQUFPLEdBQUdsRSxRQUFRLENBQUNBLFFBQVEsQ0FBQzVLLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDN0MsSUFBTXFQLGlCQUFpQixHQUNyQixDQUFDdEUsZUFBZSxJQUFJQyxTQUFTLEtBQzdCOEQsT0FBTyxLQUNOQSxPQUFPLENBQUN2SyxJQUFJLEtBQUsxTCxlQUFlLENBQUNvTSxTQUFTLElBQUksRUFBQXdELGFBQUEsR0FBQXFHLE9BQU8sQ0FBQzNLLElBQUksY0FBQXNFLGFBQUEsdUJBQVpBLGFBQUEsQ0FBYzNLLEVBQUUsTUFBSyxXQUFXLENBQUM7RUFDbEYsSUFBTXdSLGFBQWEsR0FBR0QsaUJBQWlCLElBQUEzRyxpQkFBQSxHQUFJb0csT0FBTyxDQUFDbFEsT0FBTyxjQUFBOEosaUJBQUEsY0FBQUEsaUJBQUEsR0FBSSxFQUFFLEdBQUksRUFBRTtFQUV0RSxJQUFJbUMsZUFBZSxFQUFFO0lBQ25CLG9CQUFPM1AsSUFBQSxDQUFDL0IsTUFBTSxJQUFFLENBQUM7RUFDbkI7RUFFQSxJQUFNb1csZUFBZSxnQkFDbkJuVSxLQUFBLENBQUFFLFNBQUE7SUFBQVEsUUFBQSxHQUNHZ1AscUJBQXFCLGlCQUFJNVAsSUFBQSxDQUFDaEMsV0FBVztNQUFDNkcsSUFBSSxFQUFFbUosQ0FBQyxDQUFDLGtCQUFrQjtJQUFFLENBQUUsQ0FBQyxlQUN0RWhPLElBQUEsQ0FBQ0ssdUJBQXVCLENBQUNpVSxRQUFRO01BQUNDLEtBQUssRUFBRUgsYUFBYztNQUFBeFQsUUFBQSxFQUNwRDhPLFFBQVEsQ0FBQ2pOLEdBQUcsQ0FBQyxVQUFDaUIsT0FBTyxFQUFFK0gsS0FBSyxFQUFLO1FBQUEsSUFBQStJLG9CQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLFdBQUE7UUFDaEMsSUFDRSxFQUFFLENBQUFILG9CQUFBLEdBQUE5USxPQUFPLENBQUM0RixXQUFXLGNBQUFrTCxvQkFBQSxlQUFuQkEsb0JBQUEsQ0FBcUIxUCxNQUFNLEtBQUEyUCxnQkFBQSxHQUFJL1EsT0FBTyxDQUFDcUUsT0FBTyxjQUFBME0sZ0JBQUEsZUFBZkEsZ0JBQUEsQ0FBaUIzUCxNQUFNLENBQUMsSUFDekQsQ0FBQ3BCLE9BQU8sQ0FBQ0EsT0FBTyxJQUNoQixHQUFBZ1IsZ0JBQUEsR0FBQ2hSLE9BQU8sQ0FBQ2tSLE9BQU8sY0FBQUYsZ0JBQUEsZUFBZkEsZ0JBQUEsQ0FBaUI1UixJQUFJLEtBQ3RCLENBQUNZLE9BQU8sQ0FBQ21FLFFBQVEsRUFFakIsT0FBTyxJQUFJO1FBQ2IsSUFBTWdOLGVBQWUsR0FDbkIsQ0FBQW5SLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFb1IsVUFBVSxNQUFLckYsU0FBUyxJQUFJL0wsT0FBTyxDQUFDb1IsVUFBVSxLQUFLLElBQUksR0FDNUQsSUFBSSxHQUNKcFIsT0FBTyxDQUFDb1IsVUFBVSxHQUNoQnZWLFFBQVEsQ0FBQ3dWLFNBQVMsR0FDbEJ4VixRQUFRLENBQUN5VixXQUFXO1FBRTVCLElBQU1DLGtCQUFrQixHQUFHdlIsT0FBTyxDQUFDMkYsSUFBSSxLQUFLMUwsZUFBZSxDQUFDb00sU0FBUyxJQUFJckcsT0FBTyxDQUFDdUYsSUFBSSxDQUFDckcsRUFBRSxLQUFLLFdBQVc7UUFDeEcsSUFBTStGLGFBQWEsR0FBRzhDLEtBQUssS0FBS2lFLFFBQVEsQ0FBQzVLLE1BQU0sR0FBRyxDQUFDO1FBQ25ELElBQU1zQixXQUFXLEdBQUc2TyxrQkFBa0IsSUFBSXRNLGFBQWEsS0FBS2tILGVBQWUsSUFBSUMsU0FBUyxDQUFDOztRQUV6RjtRQUNBLElBQU1vRixVQUFVLElBQUFQLFdBQUEsR0FBR2pSLE9BQU8sQ0FBQ2QsRUFBRSxjQUFBK1IsV0FBQSxjQUFBQSxXQUFBLFVBQUFuUSxNQUFBLENBQVdpSCxLQUFLLENBQUU7UUFFL0MsSUFBSXJGLFdBQVcsRUFBRTtVQUNmLElBQUlrSixxQkFBcUIsQ0FBQzNJLE9BQU8sS0FBS2pELE9BQU8sQ0FBQ2QsRUFBRSxFQUFFO1lBQUEsSUFBQXVTLFlBQUE7WUFDaEQ3RixxQkFBcUIsQ0FBQzNJLE9BQU8sSUFBQXdPLFlBQUEsR0FBR3pSLE9BQU8sQ0FBQ2QsRUFBRSxjQUFBdVMsWUFBQSxjQUFBQSxZQUFBLEdBQUksSUFBSTtZQUNsREMsTUFBTSxDQUFDQyxNQUFNLENBQ1hoRyx3QkFBd0IsQ0FBQzFJLE9BQU8sRUFDaENqRCxPQUFPLEVBQ1A7Y0FBRUEsT0FBTyxFQUFFK0w7WUFBVSxDQUFDLEVBQ3RCO2NBQ0V2RyxRQUFRLEVBQVJBLFFBQVE7Y0FDUmpILGtCQUFrQixFQUFsQkEsa0JBQWtCO2NBQ2xCK0YsY0FBYyxFQUFkQSxjQUFjO2NBQ2RvQixzQkFBc0IsRUFBdEJBLHNCQUFzQjtjQUN0QmQscUJBQXFCLEVBQXJCQSxxQkFBcUI7Y0FDckJrQixxQkFBcUIsRUFBRSxDQUFDLENBQUMyRiw0QkFBNEIsQ0FBQ3pMLE9BQU8sQ0FBQ2QsRUFBRSxDQUFDO2NBQ2pFc0YsZUFBZSxFQUFFMk0sZUFBZTtjQUNoQ3pPLFdBQVcsRUFBRSxJQUFJO2NBQ2pCdUMsYUFBYSxFQUFiQSxhQUFhO2NBQ2JxRSxRQUFRLEVBQVJBO1lBQ0YsQ0FDRixDQUFDO1VBQ0g7VUFDQSxvQkFBT2hOLElBQUEsQ0FBQzRJLFdBQVcsRUFBQW5ILGFBQUEsS0FBdUI0Tix3QkFBd0IsQ0FBQzFJLE9BQU8sR0FBakR1TyxVQUF5RSxDQUFDO1FBQ3JHO1FBQ0E1RixxQkFBcUIsQ0FBQzNJLE9BQU8sR0FBRyxJQUFJO1FBQ3BDLG9CQUNFeEosY0FBQSxDQUFDeUwsV0FBVyxFQUFBbkgsYUFBQSxDQUFBQSxhQUFBLEtBQ05pQyxPQUFPO1VBQ1g0UixHQUFHLEVBQUVKLFVBQVc7VUFDaEJoTSxRQUFRLEVBQUVBLFFBQVM7VUFDbkJqSCxrQkFBa0IsRUFBRUEsa0JBQW1CO1VBQ3ZDK0YsY0FBYyxFQUFFQSxjQUFlO1VBQy9Cb0Isc0JBQXNCLEVBQUVBLHNCQUF1QjtVQUMvQ2QscUJBQXFCLEVBQUVBLHFCQUFzQjtVQUM3Q2tCLHFCQUFxQixFQUFFLENBQUMsQ0FBQzJGLDRCQUE0QixDQUFDekwsT0FBTyxDQUFDZCxFQUFFLENBQUU7VUFDbEVzRixlQUFlLEVBQUUyTSxlQUFnQjtVQUNqQ3pPLFdBQVcsRUFBRSxLQUFNO1VBQ25CdUMsYUFBYSxFQUFFQSxhQUFjO1VBQzdCcUUsUUFBUSxFQUFFQTtRQUFTLEVBQ3BCLENBQUM7TUFFTixDQUFDO0lBQUMsQ0FDOEIsQ0FBQyxFQUNsQyxDQUFDNkMsZUFBZSxJQUFJRSxjQUFjLElBQUlxRixNQUFNLENBQUNHLElBQUksQ0FBQ3ZGLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDbEwsTUFBTSxHQUFHLENBQUMsa0JBQ2pGOUUsSUFBQSxDQUFDcEIsdUJBQXVCO01BQUFnQyxRQUFBLEVBQ3JCd1UsTUFBTSxDQUFDRyxJQUFJLENBQUN2RixjQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ2xMLE1BQU0sR0FBRyxDQUFDLGdCQUMzQzlFLElBQUEsQ0FBQ2hDLFdBQVc7UUFFVjZHLElBQUksRUFDRnVRLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDeEYsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUN5RixJQUFJLENBQUMsVUFBQTVDLEdBQUc7VUFBQSxPQUFJQSxHQUFHLEtBQUs3RSxDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFBQSxFQUFDLElBQUlBLENBQUMsQ0FBQyxpQkFBaUI7TUFDckcsR0FIRyxnQkFJTCxDQUFDLEdBRUYsQ0FBQzZCLGVBQWUsSUFBSUUsY0FBYyxrQkFDaEMvUCxJQUFBLENBQUNoQyxXQUFXO1FBQ1Y2RyxJQUFJLEVBQ0ZrTCxjQUFjLEtBQ2I3QixpQkFBaUIsR0FDZCxvQkFBb0IsR0FDcEJDLGtCQUFrQixHQUNoQkgsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEdBQzlCb0YsY0FBYyxHQUNacEYsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEdBQzlCQSxDQUFDLENBQUMsaUJBQWlCLENBQUM7TUFDN0IsQ0FDRjtJQUVKLENBQ3NCLENBQzFCO0VBQUEsQ0FDRCxDQUNIO0VBRUQsb0JBQ0U5TixLQUFBLENBQUN6QixlQUFlO0lBQUNpWCxlQUFlLEVBQUVuQyxnQkFBaUI7SUFBQTNTLFFBQUEsR0FDaEQyUyxnQkFBZ0IsZ0JBQ2Z2VCxJQUFBLENBQUN0QixnQkFBZ0I7TUFBQ2lYLEdBQUcsRUFBRXRILFdBQVk7TUFBQ3VILFFBQVEsRUFBRXBFLG9CQUFxQjtNQUFBNVEsUUFBQSxlQUNqRVosSUFBQSxDQUFDckIsZUFBZTtRQUFDK1csZUFBZSxFQUFFbkMsZ0JBQWlCO1FBQUNzQyxvQkFBb0IsRUFBRXRGLHdCQUF5QjtRQUFBM1AsUUFBQSxFQUNoR3lUO01BQWUsQ0FDRDtJQUFDLENBQ0YsQ0FBQyxnQkFFbkJyVSxJQUFBLENBQUNyQixlQUFlO01BQ2RnWCxHQUFHLEVBQUV0SCxXQUFZO01BQ2pCdUgsUUFBUSxFQUFFcEUsb0JBQXFCO01BQy9Ca0UsZUFBZSxFQUFFLEtBQU07TUFDdkJHLG9CQUFvQixFQUFFdEYsd0JBQXlCO01BQUEzUCxRQUFBLEVBRTlDeVQ7SUFBZSxDQUNELENBQ2xCLEVBRUF0RixrQkFBa0IsaUJBQ2pCL08sSUFBQSxDQUFDeEIsb0JBQW9CO01BQUNxQyxJQUFJLEVBQUMsUUFBUTtNQUFDZ0MsT0FBTyxFQUFFZ08seUJBQTBCO01BQUFqUSxRQUFBLGVBQ3JFWixJQUFBLENBQUMxQyxjQUFjO1FBQUN3WSxLQUFLLEVBQUMsTUFBTTtRQUFDaFYsS0FBSyxFQUFDLE1BQU07UUFBQ0MsTUFBTSxFQUFDO01BQU0sQ0FBRTtJQUFDLENBQ3RDLENBQ3ZCO0VBQUEsQ0FDYyxDQUFDO0FBRXRCLENBQUM7QUFFRCxPQUFPLElBQU1nVixjQUFjLGdCQUFHcFosS0FBSyxDQUFDQyxJQUFJLENBQUN5USxtQkFBbUIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==