studiokit-scaffolding-js 7.7.2 → 7.7.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.
Files changed (314) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +141 -141
  3. package/lib/components/AccessibilityStatement.js +1 -1
  4. package/lib/components/AccessibleOverlayTrigger.js +3 -3
  5. package/lib/components/ActionList.js +1 -1
  6. package/lib/components/AlertDialog.js +1 -1
  7. package/lib/components/AlertWithIcon.js +1 -1
  8. package/lib/components/Buttons/PopoverButton.js +1 -1
  9. package/lib/components/ConnectedModal.js +3 -3
  10. package/lib/components/Downtime.js +1 -1
  11. package/lib/components/Dropdowns/GroupsDropdown.js +1 -1
  12. package/lib/components/Dropdowns/ManagedNavDropdown.js +4 -4
  13. package/lib/components/Dropdowns/UserDropdown.js +1 -1
  14. package/lib/components/Dropdowns/index.js +1 -1
  15. package/lib/components/EmptyCoursesMessage.js +1 -1
  16. package/lib/components/EntityOwnerList.js +1 -1
  17. package/lib/components/Error.js +1 -1
  18. package/lib/components/ErrorBoundary.js +1 -1
  19. package/lib/components/ErrorMessage.js +1 -1
  20. package/lib/components/ExpiringSoonAlert.js +1 -1
  21. package/lib/components/Footer/index.css +59 -59
  22. package/lib/components/Footer/index.js +1 -1
  23. package/lib/components/Forms/DateField.js +1 -1
  24. package/lib/components/Forms/TimeField.js +1 -1
  25. package/lib/components/Forms/index.js +1 -1
  26. package/lib/components/FullscreenHeader.js +1 -1
  27. package/lib/components/Groups/CreateEditCopySaveButtons.js +1 -1
  28. package/lib/components/Groups/ExternalGroups/Attach.js +1 -1
  29. package/lib/components/Groups/ExternalGroups/Table.js +1 -1
  30. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +1 -1
  31. package/lib/components/Groups/RosterSyncInfo.js +1 -1
  32. package/lib/components/HOC/AccessibleAppComponent.js +6 -6
  33. package/lib/components/HOC/ActivityRequiredComponent.js +50 -50
  34. package/lib/components/HOC/AsyncComponent.js +1 -1
  35. package/lib/components/HOC/AuthenticatedComponent.js +1 -1
  36. package/lib/components/HOC/CollectionComponent.js +11 -11
  37. package/lib/components/HOC/CollectionFirstItemComponent.js +4 -4
  38. package/lib/components/HOC/CollectionItemComponent.js +11 -11
  39. package/lib/components/HOC/ConnectedModalComponent.js +15 -15
  40. package/lib/components/HOC/DataDependentComponent.js +1 -1
  41. package/lib/components/HOC/EntityComponent.js +12 -12
  42. package/lib/components/HOC/FullscreenModalComponent.js +15 -15
  43. package/lib/components/HOC/GroupActivityRequiredComponent.js +19 -19
  44. package/lib/components/HOC/GuidComponent.js +5 -5
  45. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +7 -7
  46. package/lib/components/HOC/ModelErrorRedirectComponent.js +12 -12
  47. package/lib/components/HOC/SearchPersistorComponent.js +43 -43
  48. package/lib/components/HOC/UnauthenticatedComponent.js +1 -1
  49. package/lib/components/HOC/UserComponent.js +1 -1
  50. package/lib/components/Icons/IconAlphaList.js +1 -1
  51. package/lib/components/Icons/IconExternalUser.js +1 -1
  52. package/lib/components/Icons/IconImpersonation.js +1 -1
  53. package/lib/components/Icons/IconSheriff.js +2 -2
  54. package/lib/components/Icons/IconStopImpersonating.js +1 -1
  55. package/lib/components/Icons/IconTable.js +1 -1
  56. package/lib/components/Icons/IconTableDeleteCol.js +1 -1
  57. package/lib/components/Icons/IconTableDeleteRow.js +1 -1
  58. package/lib/components/Icons/IconTableInsertCol.js +1 -1
  59. package/lib/components/Icons/IconTableInsertRow.js +1 -1
  60. package/lib/components/Impersonation/Button.js +1 -1
  61. package/lib/components/Impersonation/Link.js +1 -1
  62. package/lib/components/Impersonation/UserDetail.css +24 -24
  63. package/lib/components/Impersonation/UserDetail.js +3 -3
  64. package/lib/components/LoadErrorAlert.js +1 -1
  65. package/lib/components/Loading.js +1 -1
  66. package/lib/components/LockDownBrowser/Check.js +1 -1
  67. package/lib/components/LockDownBrowser/ExitButton.js +1 -1
  68. package/lib/components/LockDownBrowser/Launch.js +1 -1
  69. package/lib/components/Lti/Confirm.d.ts +10 -1
  70. package/lib/components/Lti/Confirm.js +139 -87
  71. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +1 -1
  72. package/lib/components/Lti/Launch.d.ts +3 -0
  73. package/lib/components/Lti/Launch.js +21 -18
  74. package/lib/components/Lti/LaunchGroup.d.ts +3 -0
  75. package/lib/components/Lti/LaunchGroup.js +36 -33
  76. package/lib/components/ManageTable.js +1 -1
  77. package/lib/components/ManageTableNoDataComponent.js +1 -1
  78. package/lib/components/NewVersionAlert.js +1 -1
  79. package/lib/components/NotFound.js +1 -1
  80. package/lib/components/Notifications.js +1 -1
  81. package/lib/components/PaginationNextButton.js +1 -1
  82. package/lib/components/PaginationPreviousButton.js +1 -1
  83. package/lib/components/Quill/CustomToolbar.js +1 -1
  84. package/lib/components/Quill/Formats/Image.js +5 -5
  85. package/lib/components/Quill/Formats/List.js +3 -3
  86. package/lib/components/Quill/Formats/Video.js +3 -3
  87. package/lib/components/Quill/ImageDropModule.js +17 -17
  88. package/lib/components/Quill/ImageWarning.js +1 -1
  89. package/lib/components/Quill/ImageWithAltTextModal.js +1 -1
  90. package/lib/components/Quill/Specs/CustomImageSpec.js +7 -7
  91. package/lib/components/Quill/Specs/CustomVideoSpec.js +9 -9
  92. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +8 -8
  93. package/lib/components/Quill/TableModule/Blots/TableBlot.js +1 -1
  94. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +1 -1
  95. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +1 -1
  96. package/lib/components/Quill/TableModule/Blots/TableContainer.js +1 -1
  97. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +1 -1
  98. package/lib/components/Quill/TableModule/constants.js +1 -1
  99. package/lib/components/Quill/TableModule/index.css +171 -171
  100. package/lib/components/Quill/TableModule/index.js +1 -1
  101. package/lib/components/Quill/TableModule/utils.js +1 -1
  102. package/lib/components/Quill/accessibilityFix.js +14 -14
  103. package/lib/components/Quill/index.js +1 -1
  104. package/lib/components/RefreshIndicator/Bordered.js +1 -1
  105. package/lib/components/RefreshIndicator/Inline.js +1 -1
  106. package/lib/components/RefreshIndicator/index.js +1 -1
  107. package/lib/components/SearchControls.js +1 -1
  108. package/lib/components/SentryRoute.js +1 -1
  109. package/lib/components/Tables/RoleFilter.js +1 -1
  110. package/lib/components/Tables/TextFilter.js +1 -1
  111. package/lib/components/TimeZoneInfo.js +1 -1
  112. package/lib/components/UserRoles/Add.js +1 -1
  113. package/lib/components/UserRoles/Context.js +4 -4
  114. package/lib/components/UserRoles/RoleCell.js +1 -1
  115. package/lib/components/UserRoles/Select.js +1 -1
  116. package/lib/components/UserRoles/Table.js +1 -1
  117. package/lib/components/UserRoles/index.js +3 -3
  118. package/lib/config/eslint/index.js +1 -1
  119. package/lib/config/eslint/lib/order.js +1 -1
  120. package/lib/config/eslint/lib/typescript.js +1 -1
  121. package/lib/config/eslint/react.js +1 -1
  122. package/lib/config/eslint/rules/accessibleOverlayTrigger.js +1 -1
  123. package/lib/config/eslint/studiokit.js +1 -1
  124. package/lib/constants/baseActivity.js +1 -1
  125. package/lib/constants/baseRole.js +1 -1
  126. package/lib/constants/configuration.js +1 -1
  127. package/lib/constants/externalProviderType.js +1 -1
  128. package/lib/constants/fetchErrorData.js +1 -1
  129. package/lib/constants/fetchStatus.js +1 -1
  130. package/lib/constants/index.js +1 -1
  131. package/lib/constants/lockDownBrowser.js +1 -1
  132. package/lib/constants/mockData.js +3 -3
  133. package/lib/constants/modelStatus.js +1 -1
  134. package/lib/constants/notificationType.js +1 -1
  135. package/lib/constants/number.js +1 -1
  136. package/lib/constants/operatingSystem.js +1 -1
  137. package/lib/constants/shard.js +1 -1
  138. package/lib/constants/slot.js +1 -1
  139. package/lib/constants/svgMock.js +1 -1
  140. package/lib/constants/table.js +1 -1
  141. package/lib/constants/tier.js +1 -1
  142. package/lib/constants/userRole.js +1 -1
  143. package/lib/css/base/_base.css +98 -98
  144. package/lib/css/base/_print.css +66 -66
  145. package/lib/css/base/_typography.css +130 -130
  146. package/lib/css/components/_actionList.css +70 -70
  147. package/lib/css/components/_alert.css +86 -86
  148. package/lib/css/components/_bootstrap-grid.css +27 -27
  149. package/lib/css/components/_buttons.css +435 -435
  150. package/lib/css/components/_forms.css +157 -157
  151. package/lib/css/components/_menu.css +55 -55
  152. package/lib/css/components/_modals.css +132 -132
  153. package/lib/css/components/_quill.css +329 -329
  154. package/lib/css/components/_tables.css +506 -506
  155. package/lib/css/components/_tags.css +12 -12
  156. package/lib/css/index-with-variables.css +15 -15
  157. package/lib/css/index.css +14 -14
  158. package/lib/css/utils/_border.css +463 -463
  159. package/lib/css/utils/_color.css +317 -317
  160. package/lib/css/utils/_display.css +307 -307
  161. package/lib/css/utils/_focus.css +12 -12
  162. package/lib/css/utils/_general.css +50 -50
  163. package/lib/css/utils/_icon.css +35 -35
  164. package/lib/css/utils/_text.css +25 -25
  165. package/lib/css/utils/_width.css +60 -60
  166. package/lib/css/variables.css +100 -100
  167. package/lib/endpointMappings.js +1 -1
  168. package/lib/hooks/useCollection.js +1 -1
  169. package/lib/hooks/useCollectionConfiguration.js +7 -7
  170. package/lib/hooks/useCollectionItem.js +1 -1
  171. package/lib/hooks/useEventCallback.js +13 -13
  172. package/lib/hooks/useFetchData.js +9 -9
  173. package/lib/hooks/useGuid.js +3 -3
  174. package/lib/hooks/usePeriodicallyUpdatingState.js +7 -7
  175. package/lib/hooks/usePrevious.js +23 -23
  176. package/lib/index.js +1 -1
  177. package/lib/redux/actionCreator.js +1 -1
  178. package/lib/redux/actions/AuthAction.js +9 -9
  179. package/lib/redux/actions/ModalAction.js +1 -1
  180. package/lib/redux/actions/ModelAction.js +19 -19
  181. package/lib/redux/actions/NotificationAction.js +1 -1
  182. package/lib/redux/actions/SearchAction.js +1 -1
  183. package/lib/redux/actions/index.js +1 -1
  184. package/lib/redux/configureReducers.js +7 -7
  185. package/lib/redux/configureStore.js +1 -1
  186. package/lib/redux/helpers.js +1 -1
  187. package/lib/redux/reducers/authReducer.js +3 -3
  188. package/lib/redux/reducers/index.js +1 -1
  189. package/lib/redux/reducers/modalsReducer.js +1 -1
  190. package/lib/redux/reducers/modelsReducer.js +48 -48
  191. package/lib/redux/reducers/notificationsReducer.js +1 -1
  192. package/lib/redux/reducers/searchReducer.js +9 -9
  193. package/lib/redux/sagas/appInsightsSaga.js +1 -1
  194. package/lib/redux/sagas/authSaga.js +1 -1
  195. package/lib/redux/sagas/caliperSaga.js +16 -16
  196. package/lib/redux/sagas/clockOffsetSaga.js +9 -9
  197. package/lib/redux/sagas/configurationSaga.js +1 -1
  198. package/lib/redux/sagas/downtimeApiErrorSaga.js +1 -1
  199. package/lib/redux/sagas/errorSaga.js +1 -1
  200. package/lib/redux/sagas/googleAnalyticsSaga.js +1 -1
  201. package/lib/redux/sagas/identityProviderSaga.js +1 -1
  202. package/lib/redux/sagas/initialDataLoadSaga.js +1 -1
  203. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +1 -1
  204. package/lib/redux/sagas/modelFetchSaga.js +46 -46
  205. package/lib/redux/sagas/noStoreSaga.js +1 -1
  206. package/lib/redux/sagas/postLoginDataSaga.js +6 -6
  207. package/lib/redux/sagas/postLoginRedirectSaga.js +4 -4
  208. package/lib/redux/sagas/rootSaga.js +5 -5
  209. package/lib/redux/sagas/sentrySaga.js +1 -1
  210. package/lib/redux/sagas/userIdSaga.js +1 -1
  211. package/lib/services/codeProviderService.js +1 -1
  212. package/lib/services/documentService.js +4 -4
  213. package/lib/services/fetchService.js +26 -26
  214. package/lib/services/mockAuthPersistenceService.js +1 -1
  215. package/lib/services/persistenceService.js +1 -1
  216. package/lib/services/ticketProviderService.js +1 -1
  217. package/lib/services/userActivityService.js +1 -1
  218. package/lib/services/windowService.js +1 -1
  219. package/lib/startup.js +18 -18
  220. package/lib/types/AppConfiguration.js +1 -1
  221. package/lib/types/Artifact.js +1 -1
  222. package/lib/types/BaseReduxState.js +1 -1
  223. package/lib/types/Client.js +1 -1
  224. package/lib/types/Collection.js +1 -1
  225. package/lib/types/Configuration.js +1 -1
  226. package/lib/types/DeepLinkingResponseRequest.js +1 -1
  227. package/lib/types/DeletableModel.js +1 -1
  228. package/lib/types/Event.js +1 -1
  229. package/lib/types/ExternalGroup.js +1 -1
  230. package/lib/types/ExternalProvider.js +1 -1
  231. package/lib/types/ExternalTerm.js +1 -1
  232. package/lib/types/Group.js +1 -1
  233. package/lib/types/IdentityProvider.js +1 -1
  234. package/lib/types/LtiLaunch.js +1 -1
  235. package/lib/types/NameOnlyEntity.js +1 -1
  236. package/lib/types/Notification.js +1 -1
  237. package/lib/types/OptionalRecord.js +1 -1
  238. package/lib/types/OwnerSchedule.js +1 -1
  239. package/lib/types/PropertyOfType.js +1 -1
  240. package/lib/types/Quill.js +1 -1
  241. package/lib/types/RoleDescription.js +1 -1
  242. package/lib/types/Search.js +1 -1
  243. package/lib/types/SimpleLocation.js +1 -1
  244. package/lib/types/UniTime.js +1 -1
  245. package/lib/types/User.js +1 -1
  246. package/lib/types/UserRole.js +1 -1
  247. package/lib/types/auth/AuthPersistenceService.js +1 -1
  248. package/lib/types/auth/AuthState.js +1 -1
  249. package/lib/types/auth/CasV1LoginRequestBody.js +1 -1
  250. package/lib/types/auth/ClientCredentials.js +1 -1
  251. package/lib/types/auth/CodeProviderService.js +1 -1
  252. package/lib/types/auth/LocalLoginRequestBody.js +1 -1
  253. package/lib/types/auth/TicketProviderService.js +1 -1
  254. package/lib/types/auth/index.js +1 -1
  255. package/lib/types/externals.d.js +1 -1
  256. package/lib/types/index.js +1 -1
  257. package/lib/types/net/EndpointConfig.js +1 -1
  258. package/lib/types/net/EndpointMapping.js +1 -1
  259. package/lib/types/net/EndpointMappings.js +1 -1
  260. package/lib/types/net/ErrorHandler.js +1 -1
  261. package/lib/types/net/FetchCancelledData.js +1 -1
  262. package/lib/types/net/FetchConfig.js +1 -1
  263. package/lib/types/net/FetchErrorData.js +1 -1
  264. package/lib/types/net/FetchResult.js +1 -1
  265. package/lib/types/net/HTTPMethod.js +1 -1
  266. package/lib/types/net/HTTPStatusCode.js +1 -1
  267. package/lib/types/net/Metadata.js +1 -1
  268. package/lib/types/net/Model.js +1 -1
  269. package/lib/types/net/ModelCollection.js +1 -1
  270. package/lib/types/net/ModelsState.js +1 -1
  271. package/lib/types/net/OAuthToken.js +1 -1
  272. package/lib/types/net/OAuthTokenResponse.js +1 -1
  273. package/lib/types/net/TokenAccessFunction.js +1 -1
  274. package/lib/types/net/index.js +1 -1
  275. package/lib/utils/auth.js +5 -5
  276. package/lib/utils/baseActivity.js +87 -87
  277. package/lib/utils/baseRole.js +1 -1
  278. package/lib/utils/collection.js +20 -20
  279. package/lib/utils/cookies.js +1 -1
  280. package/lib/utils/date.js +111 -111
  281. package/lib/utils/dom.js +42 -42
  282. package/lib/utils/domainIdentifier.js +1 -1
  283. package/lib/utils/entityUserRole.js +1 -1
  284. package/lib/utils/error.js +1 -1
  285. package/lib/utils/events.js +4 -4
  286. package/lib/utils/externalGroup.js +1 -1
  287. package/lib/utils/externalProviders.js +1 -1
  288. package/lib/utils/externalTerms.js +1 -1
  289. package/lib/utils/fetch.js +10 -10
  290. package/lib/utils/group.js +1 -1
  291. package/lib/utils/groupDates.js +1 -1
  292. package/lib/utils/groupRoles.js +1 -1
  293. package/lib/utils/lockDownBrowser.js +1 -1
  294. package/lib/utils/logger.js +1 -1
  295. package/lib/utils/lti.js +1 -1
  296. package/lib/utils/model.js +5 -5
  297. package/lib/utils/number.js +11 -11
  298. package/lib/utils/promise.js +1 -1
  299. package/lib/utils/quill.js +16 -16
  300. package/lib/utils/route.js +1 -1
  301. package/lib/utils/search.js +1 -1
  302. package/lib/utils/serviceWorker.js +1 -1
  303. package/lib/utils/shard.js +9 -9
  304. package/lib/utils/sort.js +1 -1
  305. package/lib/utils/string.js +1 -1
  306. package/lib/utils/table.js +4 -4
  307. package/lib/utils/timer.js +26 -26
  308. package/lib/utils/timezone.js +1 -1
  309. package/lib/utils/url.js +26 -26
  310. package/lib/utils/user.js +1 -1
  311. package/lib/utils/userActivity.js +6 -6
  312. package/lib/utils/userAgent.js +1 -1
  313. package/lib/utils/userRole.js +16 -16
  314. package/package.json +204 -204
@@ -13,21 +13,21 @@ exports.updateMetadataForChildCollections = updateMetadataForChildCollections;
13
13
  var _lodash = require("lodash");
14
14
  var _fp2 = _interopRequireDefault(require("lodash/fp"));
15
15
  var _actions = require("../actions");
16
- /**
17
- * Given the state and a path into that state object, return the prop that
18
- * is named "_metadata"
19
- *
20
- * @param state The redux state object
21
- * @param path An array of keys that represent the path to the entity in question
16
+ /**
17
+ * Given the state and a path into that state object, return the prop that
18
+ * is named "_metadata"
19
+ *
20
+ * @param state The redux state object
21
+ * @param path An array of keys that represent the path to the entity in question
22
22
  */
23
23
  function getMetadata(state, path) {
24
24
  return (0, _lodash.merge)({}, (0, _lodash.get)(state, path.concat('_metadata')));
25
25
  }
26
26
 
27
- /**
28
- * Get whether or not an object is a "collection" (id key-value dictionary).
29
- * @param obj
30
- * @returns A boolean
27
+ /**
28
+ * Get whether or not an object is a "collection" (id key-value dictionary).
29
+ * @param obj
30
+ * @returns A boolean
31
31
  */
32
32
  function isCollection(obj) {
33
33
  return !(0, _lodash.isArray)(obj) && (0, _lodash.isPlainObject)(obj) && Object.keys(obj).length > 0 && Object.keys(obj).every(key => {
@@ -36,10 +36,10 @@ function isCollection(obj) {
36
36
  });
37
37
  }
38
38
 
39
- /**
40
- * Get whether or not an object is a "null response".
41
- * @param obj
42
- * @returns A boolean
39
+ /**
40
+ * Get whether or not an object is a "null response".
41
+ * @param obj
42
+ * @returns A boolean
43
43
  */
44
44
  function isNullResponse(obj) {
45
45
  return (0, _lodash.isPlainObject)(obj) && Object.keys(obj).length > 0 && Object.keys(obj).every(key => {
@@ -48,19 +48,19 @@ function isNullResponse(obj) {
48
48
  });
49
49
  }
50
50
 
51
- /**
52
- * Merge the `current` and `incoming` objects recursively, returning a new combined object.
53
- *
54
- * For each key in `current`:
55
- * * remove if `current` is a "collection" and item key is not in `incoming`
56
- * * recurse if `incoming` is an object or array and has a value
57
- * * or preserve existing value
58
- *
59
- * For each key in `incoming` not in `current`:
60
- * * copy value to result
61
- *
62
- * @param current
63
- * @param incoming
51
+ /**
52
+ * Merge the `current` and `incoming` objects recursively, returning a new combined object.
53
+ *
54
+ * For each key in `current`:
55
+ * * remove if `current` is a "collection" and item key is not in `incoming`
56
+ * * recurse if `incoming` is an object or array and has a value
57
+ * * or preserve existing value
58
+ *
59
+ * For each key in `incoming` not in `current`:
60
+ * * copy value to result
61
+ *
62
+ * @param current
63
+ * @param incoming
64
64
  */
65
65
  function merge(current, incoming) {
66
66
  // do not merge arrays
@@ -101,10 +101,10 @@ function merge(current, incoming) {
101
101
  return result;
102
102
  }
103
103
 
104
- /**
105
- * Sets `_metadata` on any nested collections and collection items in the data
106
- * @param data
107
- * @param metadata
104
+ /**
105
+ * Sets `_metadata` on any nested collections and collection items in the data
106
+ * @param data
107
+ * @param metadata
108
108
  */
109
109
  function updateMetadataForChildCollections(data, metadata) {
110
110
  const isDataCollection = isCollection(data);
@@ -117,22 +117,22 @@ function updateMetadataForChildCollections(data, metadata) {
117
117
  });
118
118
  }
119
119
 
120
- /**
121
- * Reducer for fetching and updating `models` in redux.
122
- *
123
- * Fetching state updated with every action.
124
- * Data updated on result received.
125
- * Data and fetchedDate NOT deleted on failed request. All data at key removed on MODEL_REMOVE_KEY.
126
- *
127
- * All actions require a `modelPath` key to function with this reducer.
128
- *
129
- * Arrays are converted to objects that represent a dictionary with the numeric id of the object used
130
- * as the key and the entire object used as the value
131
- *
132
- * @export
133
- * @param state The state of the models. Initially empty
134
- * @param action The action upon which we dispatch
135
- * @returns The updated state
120
+ /**
121
+ * Reducer for fetching and updating `models` in redux.
122
+ *
123
+ * Fetching state updated with every action.
124
+ * Data updated on result received.
125
+ * Data and fetchedDate NOT deleted on failed request. All data at key removed on MODEL_REMOVE_KEY.
126
+ *
127
+ * All actions require a `modelPath` key to function with this reducer.
128
+ *
129
+ * Arrays are converted to objects that represent a dictionary with the numeric id of the object used
130
+ * as the key and the entire object used as the value
131
+ *
132
+ * @export
133
+ * @param state The state of the models. Initially empty
134
+ * @param action The action upon which we dispatch
135
+ * @returns The updated state
136
136
  */
137
137
  function modelsReducer() {
138
138
  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -212,4 +212,4 @@ function modelsReducer() {
212
212
  return state;
213
213
  }
214
214
  }
215
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9mcDIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJnZXRNZXRhZGF0YSIsInN0YXRlIiwicGF0aCIsImxvZGFzaE1lcmdlIiwiZ2V0IiwiY29uY2F0IiwiaXNDb2xsZWN0aW9uIiwib2JqIiwiaXNBcnJheSIsImlzUGxhaW5PYmplY3QiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZXZlcnkiLCJrZXkiLCJjaGlsZCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImlkIiwicGFyc2VJbnQiLCJpc051bGxSZXNwb25zZSIsIm1lcmdlIiwiY3VycmVudCIsImluY29taW5nIiwiaXNVbmRlZmluZWQiLCJyZXN1bHQiLCJyZWR1Y2UiLCJvdXQiLCJrIiwiYyIsImkiLCJpc05pbCIsImZvckVhY2giLCJ1cGRhdGVNZXRhZGF0YUZvckNoaWxkQ29sbGVjdGlvbnMiLCJkYXRhIiwibWV0YWRhdGEiLCJpc0RhdGFDb2xsZWN0aW9uIiwidmFsdWUiLCJfbWV0YWRhdGEiLCJtb2RlbHNSZWR1Y2VyIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwibW9kZWxQYXRoIiwic3BsaXQiLCJ2YWx1ZUF0UGF0aCIsIm1ldGFkYXRhVXBkYXRlIiwidHlwZSIsIk1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFIiwiRkVUQ0hfU1RBUlQiLCJpc0ZldGNoaW5nIiwiaGFzRXJyb3IiLCJsYXN0RmV0Y2hFcnJvckRhdGEiLCJndWlkIiwiX2ZwIiwic2V0V2l0aCIsIk1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFU1VMVF9SRUNFSVZFRCIsImZldGNoZWRBdCIsIkRhdGUiLCJyZXNwb25zZSIsInJlcGxhY2VWYWx1ZSIsIk1PREVMX0ZFVENIX0NBTkNFTExFRF9BQ1RJT05fVFlQRSIsIkZFVENIX0NBTkNFTExFRCIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiRkVUQ0hfRkFJTEVEIiwiZXJyb3JEYXRhIiwiTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSIsInVuc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3JlZHVjZXJzL21vZGVsc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSwgZ2V0LCBpc0FycmF5LCBpc05pbCwgaXNQbGFpbk9iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlIGFzIGxvZGFzaE1lcmdlIH0gZnJvbSAnbG9kYXNoJ1xyXG5pbXBvcnQgX2ZwIGZyb20gJ2xvZGFzaC9mcCdcclxuaW1wb3J0IHsgTWV0YWRhdGEsIE1vZGVsIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcbmltcG9ydCB7XHJcblx0TU9ERUxfRkVUQ0hfQ0FOQ0VMTEVEX0FDVElPTl9UWVBFLFxyXG5cdE1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFLFxyXG5cdE1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSxcclxuXHRNT0RFTF9GRVRDSF9TVEFSVF9BQ1RJT05fVFlQRSxcclxuXHRNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFLFxyXG5cdE1vZGVsU3RvcmVBY3Rpb25cclxufSBmcm9tICcuLi9hY3Rpb25zJ1xyXG5cclxuLyoqXHJcbiAqIEdpdmVuIHRoZSBzdGF0ZSBhbmQgYSBwYXRoIGludG8gdGhhdCBzdGF0ZSBvYmplY3QsIHJldHVybiB0aGUgcHJvcCB0aGF0XHJcbiAqIGlzIG5hbWVkIFwiX21ldGFkYXRhXCJcclxuICpcclxuICogQHBhcmFtIHN0YXRlIFRoZSByZWR1eCBzdGF0ZSBvYmplY3RcclxuICogQHBhcmFtIHBhdGggQW4gYXJyYXkgb2Yga2V5cyB0aGF0IHJlcHJlc2VudCB0aGUgcGF0aCB0byB0aGUgZW50aXR5IGluIHF1ZXN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoc3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXRoOiBzdHJpbmdbXSk6IE1ldGFkYXRhIHtcclxuXHRyZXR1cm4gbG9kYXNoTWVyZ2Uoe30sIGdldChzdGF0ZSwgcGF0aC5jb25jYXQoJ19tZXRhZGF0YScpKSlcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB3aGV0aGVyIG9yIG5vdCBhbiBvYmplY3QgaXMgYSBcImNvbGxlY3Rpb25cIiAoaWQga2V5LXZhbHVlIGRpY3Rpb25hcnkpLlxyXG4gKiBAcGFyYW0gb2JqXHJcbiAqIEByZXR1cm5zIEEgYm9vbGVhblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvbihvYmo6IGFueSkge1xyXG5cdHJldHVybiAoXHJcblx0XHQhaXNBcnJheShvYmopICYmXHJcblx0XHRpc1BsYWluT2JqZWN0KG9iaikgJiZcclxuXHRcdE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID4gMCAmJlxyXG5cdFx0T2JqZWN0LmtleXMob2JqKS5ldmVyeShrZXkgPT4ge1xyXG5cdFx0XHRjb25zdCBjaGlsZCA9IG9ialtrZXldXHJcblx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0aXNQbGFpbk9iamVjdChjaGlsZCkgJiZcclxuXHRcdFx0XHQoa2V5ID09PSAnX21ldGFkYXRhJyB8fFxyXG5cdFx0XHRcdFx0KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGlsZCwgJ2lkJykgJiZcclxuXHRcdFx0XHRcdFx0KGNoaWxkLmlkID09PSBwYXJzZUludChrZXksIDEwKSB8fCBjaGlsZC5pZCA9PT0ga2V5KSkpXHJcblx0XHRcdClcclxuXHRcdH0pXHJcblx0KVxyXG59XHJcblxyXG4vKipcclxuICogR2V0IHdoZXRoZXIgb3Igbm90IGFuIG9iamVjdCBpcyBhIFwibnVsbCByZXNwb25zZVwiLlxyXG4gKiBAcGFyYW0gb2JqXHJcbiAqIEByZXR1cm5zIEEgYm9vbGVhblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbFJlc3BvbnNlKG9iajogYW55KSB7XHJcblx0cmV0dXJuIChcclxuXHRcdGlzUGxhaW5PYmplY3Qob2JqKSAmJlxyXG5cdFx0T2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwICYmXHJcblx0XHRPYmplY3Qua2V5cyhvYmopLmV2ZXJ5KGtleSA9PiB7XHJcblx0XHRcdGNvbnN0IGNoaWxkID0gb2JqW2tleV1cclxuXHRcdFx0cmV0dXJuIGtleSA9PT0gJ19tZXRhZGF0YScgfHwgKGtleSA9PT0gJ3Jlc3BvbnNlJyAmJiBjaGlsZCA9PT0gbnVsbClcclxuXHRcdH0pXHJcblx0KVxyXG59XHJcblxyXG4vKipcclxuICogTWVyZ2UgdGhlIGBjdXJyZW50YCBhbmQgYGluY29taW5nYCBvYmplY3RzIHJlY3Vyc2l2ZWx5LCByZXR1cm5pbmcgYSBuZXcgY29tYmluZWQgb2JqZWN0LlxyXG4gKlxyXG4gKiBGb3IgZWFjaCBrZXkgaW4gYGN1cnJlbnRgOlxyXG4gKiAqIHJlbW92ZSBpZiBgY3VycmVudGAgaXMgYSBcImNvbGxlY3Rpb25cIiBhbmQgaXRlbSBrZXkgaXMgbm90IGluIGBpbmNvbWluZ2BcclxuICogKiByZWN1cnNlIGlmIGBpbmNvbWluZ2AgaXMgYW4gb2JqZWN0IG9yIGFycmF5IGFuZCBoYXMgYSB2YWx1ZVxyXG4gKiAqIG9yIHByZXNlcnZlIGV4aXN0aW5nIHZhbHVlXHJcbiAqXHJcbiAqIEZvciBlYWNoIGtleSBpbiBgaW5jb21pbmdgIG5vdCBpbiBgY3VycmVudGA6XHJcbiAqICogY29weSB2YWx1ZSB0byByZXN1bHRcclxuICpcclxuICogQHBhcmFtIGN1cnJlbnRcclxuICogQHBhcmFtIGluY29taW5nXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoY3VycmVudDogRGljdGlvbmFyeTxhbnk+LCBpbmNvbWluZz86IERpY3Rpb25hcnk8YW55PiB8IG51bGwpIHtcclxuXHQvLyBkbyBub3QgbWVyZ2UgYXJyYXlzXHJcblx0aWYgKGlzQXJyYXkoY3VycmVudCkpIHtcclxuXHRcdHJldHVybiAhaXNVbmRlZmluZWQoaW5jb21pbmcpID8gaW5jb21pbmcgOiBjdXJyZW50XHJcblx0fVxyXG5cdC8vIGlmIGluY29taW5nIGlzIGBudWxsYCBvciBhIG51bGwgcmVzcG9uc2UgKGB7J3Jlc3BvbnNlJzogbnVsbH1gKSwgZG8gbm90IG1lcmdlLCBqdXN0IHVzZSBpbmNvbWluZ1xyXG5cdGlmIChpbmNvbWluZyA9PT0gbnVsbCB8fCAoIWlzVW5kZWZpbmVkKGluY29taW5nKSAmJiBpc051bGxSZXNwb25zZShpbmNvbWluZykpKSB7XHJcblx0XHRyZXR1cm4gaW5jb21pbmdcclxuXHR9XHJcblx0Y29uc3QgcmVzdWx0OiBEaWN0aW9uYXJ5PGFueT4gPSBPYmplY3Qua2V5cyhjdXJyZW50KS5yZWR1Y2UoKG91dDogRGljdGlvbmFyeTxhbnk+LCBrKSA9PiB7XHJcblx0XHRjb25zdCBjID0gY3VycmVudFtrXVxyXG5cdFx0Y29uc3QgaSA9IGluY29taW5nICYmIGluY29taW5nW2tdXHJcblx0XHQvLyBub24tcmVsYXRpb25zXHJcblx0XHRpZiAoIWlzQXJyYXkoYykgJiYgIWlzUGxhaW5PYmplY3QoYykpIHtcclxuXHRcdFx0Ly8gY29weSBpbmNvbWluZyB2YWx1ZSwgaWYgYW55LCBvdGhlcndpc2Uga2VlcCBjdXJyZW50XHJcblx0XHRcdG91dFtrXSA9ICFpc1VuZGVmaW5lZChpKSA/IGkgOiBjXHJcblx0XHRcdHJldHVybiBvdXRcclxuXHRcdH1cclxuXHRcdC8vIHJlbW92ZSBcImNvbGxlY3Rpb25cIiBpdGVtIG5vdCBpbmNsdWRlZCBpbiBpbmNvbWluZ1xyXG5cdFx0aWYgKChpc0NvbGxlY3Rpb24oY3VycmVudCkgfHwgaXNDb2xsZWN0aW9uKGluY29taW5nKSkgJiYgIWlzVW5kZWZpbmVkKGluY29taW5nKSAmJiBpc1VuZGVmaW5lZChpKSkge1xyXG5cdFx0XHRyZXR1cm4gb3V0XHJcblx0XHR9XHJcblx0XHQvLyBtZXJnZSByZWxhdGlvbnNcclxuXHRcdG91dFtrXSA9IG1lcmdlKGMsIGkpXHJcblx0XHRyZXR1cm4gb3V0XHJcblx0fSwge30pXHJcblx0aWYgKCFpc05pbChpbmNvbWluZykgJiYgaXNQbGFpbk9iamVjdChpbmNvbWluZykpIHtcclxuXHRcdC8vIGNvcHkgaW5jb21pbmcgcHJvcGVydGllcyB0aGF0IGFyZSBub3Qgb24gY3VycmVudFxyXG5cdFx0T2JqZWN0LmtleXMoaW5jb21pbmcpLmZvckVhY2goayA9PiB7XHJcblx0XHRcdGNvbnN0IGMgPSBjdXJyZW50W2tdXHJcblx0XHRcdGNvbnN0IGkgPSBpbmNvbWluZ1trXVxyXG5cdFx0XHRpZiAoaXNVbmRlZmluZWQoYykpIHtcclxuXHRcdFx0XHRyZXN1bHRba10gPSBpXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cdHJldHVybiByZXN1bHRcclxufVxyXG5cclxuLyoqXHJcbiAqIFNldHMgYF9tZXRhZGF0YWAgb24gYW55IG5lc3RlZCBjb2xsZWN0aW9ucyBhbmQgY29sbGVjdGlvbiBpdGVtcyBpbiB0aGUgZGF0YVxyXG4gKiBAcGFyYW0gZGF0YVxyXG4gKiBAcGFyYW0gbWV0YWRhdGFcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVNZXRhZGF0YUZvckNoaWxkQ29sbGVjdGlvbnMoZGF0YTogRGljdGlvbmFyeTxhbnk+LCBtZXRhZGF0YTogTWV0YWRhdGEpIHtcclxuXHRjb25zdCBpc0RhdGFDb2xsZWN0aW9uID0gaXNDb2xsZWN0aW9uKGRhdGEpXHJcblx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChrZXkgPT4ge1xyXG5cdFx0Y29uc3QgdmFsdWUgPSBkYXRhW2tleV1cclxuXHRcdGlmICgoaXNEYXRhQ29sbGVjdGlvbiAmJiBrZXkgIT09ICdfbWV0YWRhdGEnICYmIGlzUGxhaW5PYmplY3QodmFsdWUpKSB8fCBpc0NvbGxlY3Rpb24odmFsdWUpKSB7XHJcblx0XHRcdHZhbHVlLl9tZXRhZGF0YSA9IG1ldGFkYXRhXHJcblx0XHRcdHVwZGF0ZU1ldGFkYXRhRm9yQ2hpbGRDb2xsZWN0aW9ucyh2YWx1ZSBhcyBvYmplY3QsIG1ldGFkYXRhKVxyXG5cdFx0fVxyXG5cdH0pXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWR1Y2VyIGZvciBmZXRjaGluZyBhbmQgdXBkYXRpbmcgYG1vZGVsc2AgaW4gcmVkdXguXHJcbiAqXHJcbiAqIEZldGNoaW5nIHN0YXRlIHVwZGF0ZWQgd2l0aCBldmVyeSBhY3Rpb24uXHJcbiAqIERhdGEgdXBkYXRlZCBvbiByZXN1bHQgcmVjZWl2ZWQuXHJcbiAqIERhdGEgYW5kIGZldGNoZWREYXRlIE5PVCBkZWxldGVkIG9uIGZhaWxlZCByZXF1ZXN0LiBBbGwgZGF0YSBhdCBrZXkgcmVtb3ZlZCBvbiBNT0RFTF9SRU1PVkVfS0VZLlxyXG4gKlxyXG4gKiBBbGwgYWN0aW9ucyByZXF1aXJlIGEgYG1vZGVsUGF0aGAga2V5IHRvIGZ1bmN0aW9uIHdpdGggdGhpcyByZWR1Y2VyLlxyXG4gKlxyXG4gKiBBcnJheXMgYXJlIGNvbnZlcnRlZCB0byBvYmplY3RzIHRoYXQgcmVwcmVzZW50IGEgZGljdGlvbmFyeSB3aXRoIHRoZSBudW1lcmljIGlkIG9mIHRoZSBvYmplY3QgdXNlZFxyXG4gKiBhcyB0aGUga2V5IGFuZCB0aGUgZW50aXJlIG9iamVjdCB1c2VkIGFzIHRoZSB2YWx1ZVxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBwYXJhbSBzdGF0ZSBUaGUgc3RhdGUgb2YgdGhlIG1vZGVscy4gSW5pdGlhbGx5IGVtcHR5XHJcbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiB1cG9uIHdoaWNoIHdlIGRpc3BhdGNoXHJcbiAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIHN0YXRlXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2RlbHNSZWR1Y2VyKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LCBhY3Rpb246IE1vZGVsU3RvcmVBY3Rpb24pIHtcclxuXHRpZiAoIWFjdGlvbi5tb2RlbFBhdGgpIHtcclxuXHRcdHJldHVybiBzdGF0ZVxyXG5cdH1cclxuXHRjb25zdCBwYXRoOiBzdHJpbmdbXSA9IGFjdGlvbi5tb2RlbFBhdGguc3BsaXQoJy4nKVxyXG5cdC8vIHRoZSBvYmplY3QgdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBwYXRoXHJcblx0bGV0IHZhbHVlQXRQYXRoOiBNb2RlbCA9IGxvZGFzaE1lcmdlKHt9LCBnZXQoc3RhdGUsIHBhdGgpKVxyXG5cdGNvbnN0IG1ldGFkYXRhID0gZ2V0TWV0YWRhdGEoc3RhdGUsIHBhdGgpXHJcblx0bGV0IG1ldGFkYXRhVXBkYXRlOiBNZXRhZGF0YVxyXG5cclxuXHRzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XHJcblx0XHRjYXNlIE1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFLkZFVENIX1NUQVJUOlxyXG5cdFx0XHQvLyBSZXRhaW4gdGhlIGVudGl0eSBkYXRhLCB1cGRhdGUgdGhlIG1ldGFkYXRhIHRvIHJlZmxlY3QgZmV0Y2ggaW4gcmVxdWVzdCBzdGF0ZVxyXG5cdFx0XHRtZXRhZGF0YVVwZGF0ZSA9IHtcclxuXHRcdFx0XHRpc0ZldGNoaW5nOiB0cnVlLFxyXG5cdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcclxuXHRcdFx0XHRsYXN0RmV0Y2hFcnJvckRhdGE6IHVuZGVmaW5lZFxyXG5cdFx0XHR9XHJcblx0XHRcdHZhbHVlQXRQYXRoLl9tZXRhZGF0YSA9IGxvZGFzaE1lcmdlKG1ldGFkYXRhLCBtZXRhZGF0YVVwZGF0ZSlcclxuXHRcdFx0aWYgKGFjdGlvbi5ndWlkKSB7XHJcblx0XHRcdFx0dmFsdWVBdFBhdGguZ3VpZCA9IGFjdGlvbi5ndWlkXHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIF9mcC5zZXRXaXRoKE9iamVjdCwgcGF0aCwgdmFsdWVBdFBhdGgsIHN0YXRlKVxyXG5cclxuXHRcdGNhc2UgTU9ERUxfRkVUQ0hfUkVTVUxUX0FDVElPTl9UWVBFLkZFVENIX1JFU1VMVF9SRUNFSVZFRDoge1xyXG5cdFx0XHQvLyBVcGRhdGUgdGhlIG1ldGFkYXRhIHRvIHJlZmxlY3QgZmV0Y2ggaXMgY29tcGxldGUuXHJcblx0XHRcdG1ldGFkYXRhVXBkYXRlID0ge1xyXG5cdFx0XHRcdGlzRmV0Y2hpbmc6IGZhbHNlLFxyXG5cdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcclxuXHRcdFx0XHRsYXN0RmV0Y2hFcnJvckRhdGE6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRmZXRjaGVkQXQ6IG5ldyBEYXRlKClcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25zdCBpbmNvbWluZzogb2JqZWN0ID1cclxuXHRcdFx0XHQhaXNQbGFpbk9iamVjdChhY3Rpb24uZGF0YSkgJiYgIWlzQXJyYXkoYWN0aW9uLmRhdGEpID8geyByZXNwb25zZTogYWN0aW9uLmRhdGEgfSA6IGFjdGlvbi5kYXRhXHJcblx0XHRcdHVwZGF0ZU1ldGFkYXRhRm9yQ2hpbGRDb2xsZWN0aW9ucyhpbmNvbWluZywgbWV0YWRhdGFVcGRhdGUpXHJcblx0XHRcdC8vIG1lcmdpbmcgdGhlIGluY29taW5nIHdpdGggZXhpc3RpbmdcclxuXHRcdFx0Ly8gb3RoZXJ3aXNlIGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWUgaW4gcmVkdXhcclxuXHRcdFx0aWYgKCFhY3Rpb24ucmVwbGFjZVZhbHVlKSB7XHJcblx0XHRcdFx0dmFsdWVBdFBhdGggPSBtZXJnZSh2YWx1ZUF0UGF0aCwgaW5jb21pbmcpIGFzIE1vZGVsXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dmFsdWVBdFBhdGggPSBsb2Rhc2hNZXJnZSh7fSwgaW5jb21pbmcpIGFzIE1vZGVsXHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVBdFBhdGguX21ldGFkYXRhID0gbG9kYXNoTWVyZ2Uoe30sIG1ldGFkYXRhLCBtZXRhZGF0YVVwZGF0ZSlcclxuXHRcdFx0Y29uc3QgcmVzdWx0ID0gX2ZwLnNldFdpdGgoT2JqZWN0LCBwYXRoLCB2YWx1ZUF0UGF0aCwgc3RhdGUpXHJcblx0XHRcdHJldHVybiByZXN1bHRcclxuXHRcdH1cclxuXHJcblx0XHRjYXNlIE1PREVMX0ZFVENIX0NBTkNFTExFRF9BQ1RJT05fVFlQRS5GRVRDSF9DQU5DRUxMRUQ6XHJcblx0XHRcdC8vIFJlc2V0IHRoZSBtZXRhZGF0YVxyXG5cdFx0XHRtZXRhZGF0YVVwZGF0ZSA9IHtcclxuXHRcdFx0XHRpc0ZldGNoaW5nOiBmYWxzZSxcclxuXHRcdFx0XHRoYXNFcnJvcjogZmFsc2VcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZUF0UGF0aC5fbWV0YWRhdGEgPSBsb2Rhc2hNZXJnZShtZXRhZGF0YSwgbWV0YWRhdGFVcGRhdGUpXHJcblx0XHRcdGlmIChhY3Rpb24uZ3VpZCkge1xyXG5cdFx0XHRcdHZhbHVlQXRQYXRoLmd1aWQgPSBhY3Rpb24uZ3VpZFxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcclxuXHJcblx0XHRjYXNlIE1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFLkZFVENIX0ZBSUxFRDpcclxuXHRcdFx0Ly8gUmV0YWluIHRoZSBvYmplY3QsIHVwZGF0ZSB0aGUgbWV0YWRhdGEgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHRoZSByZXF1ZXN0IGZhaWxlZFxyXG5cdFx0XHRtZXRhZGF0YVVwZGF0ZSA9IHtcclxuXHRcdFx0XHRpc0ZldGNoaW5nOiBmYWxzZSxcclxuXHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcclxuXHRcdFx0XHRsYXN0RmV0Y2hFcnJvckRhdGE6IGFjdGlvbi5lcnJvckRhdGFcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZUF0UGF0aC5fbWV0YWRhdGEgPSBsb2Rhc2hNZXJnZShtZXRhZGF0YSwgbWV0YWRhdGFVcGRhdGUpXHJcblx0XHRcdGlmIChhY3Rpb24uZ3VpZCkge1xyXG5cdFx0XHRcdHZhbHVlQXRQYXRoLmd1aWQgPSBhY3Rpb24uZ3VpZFxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcclxuXHJcblx0XHRjYXNlIE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEU6XHJcblx0XHRcdC8vIENvbXBsZXRlbHkgcmVtb3ZlIHRoZSBvYmplY3QgYXQgdGhlIHBhdGggZnJvbSB0aGUgc3RhdGVcclxuXHRcdFx0cmV0dXJuIF9mcC51bnNldChwYXRoLCBzdGF0ZSlcclxuXHJcblx0XHRkZWZhdWx0OlxyXG5cdFx0XHRyZXR1cm4gc3RhdGVcclxuXHR9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLFdBQVdBLENBQUNDLEtBQThCLEVBQUVDLElBQWMsRUFBWTtFQUNyRixPQUFPLElBQUFDLGFBQVcsRUFBQyxDQUFDLENBQUMsRUFBRSxJQUFBQyxXQUFHLEVBQUNILEtBQUssRUFBRUMsSUFBSSxDQUFDRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsWUFBWUEsQ0FBQ0MsR0FBUSxFQUFFO0VBQ3RDLE9BQ0MsQ0FBQyxJQUFBQyxlQUFPLEVBQUNELEdBQUcsQ0FBQyxJQUNiLElBQUFFLHFCQUFhLEVBQUNGLEdBQUcsQ0FBQyxJQUNsQkcsTUFBTSxDQUFDQyxJQUFJLENBQUNKLEdBQUcsQ0FBQyxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxJQUMzQkYsTUFBTSxDQUFDQyxJQUFJLENBQUNKLEdBQUcsQ0FBQyxDQUFDTSxLQUFLLENBQUNDLEdBQUcsSUFBSTtJQUM3QixNQUFNQyxLQUFLLEdBQUdSLEdBQUcsQ0FBQ08sR0FBRyxDQUFDO0lBQ3RCLE9BQ0MsSUFBQUwscUJBQWEsRUFBQ00sS0FBSyxDQUFDLEtBQ25CRCxHQUFHLEtBQUssV0FBVyxJQUNsQkosTUFBTSxDQUFDTSxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxL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
215
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9mcDIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJnZXRNZXRhZGF0YSIsInN0YXRlIiwicGF0aCIsImxvZGFzaE1lcmdlIiwiZ2V0IiwiY29uY2F0IiwiaXNDb2xsZWN0aW9uIiwib2JqIiwiaXNBcnJheSIsImlzUGxhaW5PYmplY3QiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZXZlcnkiLCJrZXkiLCJjaGlsZCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImlkIiwicGFyc2VJbnQiLCJpc051bGxSZXNwb25zZSIsIm1lcmdlIiwiY3VycmVudCIsImluY29taW5nIiwiaXNVbmRlZmluZWQiLCJyZXN1bHQiLCJyZWR1Y2UiLCJvdXQiLCJrIiwiYyIsImkiLCJpc05pbCIsImZvckVhY2giLCJ1cGRhdGVNZXRhZGF0YUZvckNoaWxkQ29sbGVjdGlvbnMiLCJkYXRhIiwibWV0YWRhdGEiLCJpc0RhdGFDb2xsZWN0aW9uIiwidmFsdWUiLCJfbWV0YWRhdGEiLCJtb2RlbHNSZWR1Y2VyIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwibW9kZWxQYXRoIiwic3BsaXQiLCJ2YWx1ZUF0UGF0aCIsIm1ldGFkYXRhVXBkYXRlIiwidHlwZSIsIk1PREVMX0ZFVENIX1NUQVJUX0FDVElPTl9UWVBFIiwiRkVUQ0hfU1RBUlQiLCJpc0ZldGNoaW5nIiwiaGFzRXJyb3IiLCJsYXN0RmV0Y2hFcnJvckRhdGEiLCJndWlkIiwiX2ZwIiwic2V0V2l0aCIsIk1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFU1VMVF9SRUNFSVZFRCIsImZldGNoZWRBdCIsIkRhdGUiLCJyZXNwb25zZSIsInJlcGxhY2VWYWx1ZSIsIk1PREVMX0ZFVENIX0NBTkNFTExFRF9BQ1RJT05fVFlQRSIsIkZFVENIX0NBTkNFTExFRCIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiRkVUQ0hfRkFJTEVEIiwiZXJyb3JEYXRhIiwiTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSIsInVuc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3JlZHVjZXJzL21vZGVsc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSwgZ2V0LCBpc0FycmF5LCBpc05pbCwgaXNQbGFpbk9iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlIGFzIGxvZGFzaE1lcmdlIH0gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IF9mcCBmcm9tICdsb2Rhc2gvZnAnXG5pbXBvcnQgeyBNZXRhZGF0YSwgTW9kZWwgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7XG5cdE1PREVMX0ZFVENIX0NBTkNFTExFRF9BQ1RJT05fVFlQRSxcblx0TU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1JFU1VMVF9BQ1RJT05fVFlQRSxcblx0TU9ERUxfRkVUQ0hfU1RBUlRfQUNUSU9OX1RZUEUsXG5cdE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsXG5cdE1vZGVsU3RvcmVBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucydcblxuLyoqXG4gKiBHaXZlbiB0aGUgc3RhdGUgYW5kIGEgcGF0aCBpbnRvIHRoYXQgc3RhdGUgb2JqZWN0LCByZXR1cm4gdGhlIHByb3AgdGhhdFxuICogaXMgbmFtZWQgXCJfbWV0YWRhdGFcIlxuICpcbiAqIEBwYXJhbSBzdGF0ZSBUaGUgcmVkdXggc3RhdGUgb2JqZWN0XG4gKiBAcGFyYW0gcGF0aCBBbiBhcnJheSBvZiBrZXlzIHRoYXQgcmVwcmVzZW50IHRoZSBwYXRoIHRvIHRoZSBlbnRpdHkgaW4gcXVlc3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGFkYXRhKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcGF0aDogc3RyaW5nW10pOiBNZXRhZGF0YSB7XG5cdHJldHVybiBsb2Rhc2hNZXJnZSh7fSwgZ2V0KHN0YXRlLCBwYXRoLmNvbmNhdCgnX21ldGFkYXRhJykpKVxufVxuXG4vKipcbiAqIEdldCB3aGV0aGVyIG9yIG5vdCBhbiBvYmplY3QgaXMgYSBcImNvbGxlY3Rpb25cIiAoaWQga2V5LXZhbHVlIGRpY3Rpb25hcnkpLlxuICogQHBhcmFtIG9ialxuICogQHJldHVybnMgQSBib29sZWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbGxlY3Rpb24ob2JqOiBhbnkpIHtcblx0cmV0dXJuIChcblx0XHQhaXNBcnJheShvYmopICYmXG5cdFx0aXNQbGFpbk9iamVjdChvYmopICYmXG5cdFx0T2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwICYmXG5cdFx0T2JqZWN0LmtleXMob2JqKS5ldmVyeShrZXkgPT4ge1xuXHRcdFx0Y29uc3QgY2hpbGQgPSBvYmpba2V5XVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0aXNQbGFpbk9iamVjdChjaGlsZCkgJiZcblx0XHRcdFx0KGtleSA9PT0gJ19tZXRhZGF0YScgfHxcblx0XHRcdFx0XHQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoaWxkLCAnaWQnKSAmJlxuXHRcdFx0XHRcdFx0KGNoaWxkLmlkID09PSBwYXJzZUludChrZXksIDEwKSB8fCBjaGlsZC5pZCA9PT0ga2V5KSkpXG5cdFx0XHQpXG5cdFx0fSlcblx0KVxufVxuXG4vKipcbiAqIEdldCB3aGV0aGVyIG9yIG5vdCBhbiBvYmplY3QgaXMgYSBcIm51bGwgcmVzcG9uc2VcIi5cbiAqIEBwYXJhbSBvYmpcbiAqIEByZXR1cm5zIEEgYm9vbGVhblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsUmVzcG9uc2Uob2JqOiBhbnkpIHtcblx0cmV0dXJuIChcblx0XHRpc1BsYWluT2JqZWN0KG9iaikgJiZcblx0XHRPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IDAgJiZcblx0XHRPYmplY3Qua2V5cyhvYmopLmV2ZXJ5KGtleSA9PiB7XG5cdFx0XHRjb25zdCBjaGlsZCA9IG9ialtrZXldXG5cdFx0XHRyZXR1cm4ga2V5ID09PSAnX21ldGFkYXRhJyB8fCAoa2V5ID09PSAncmVzcG9uc2UnICYmIGNoaWxkID09PSBudWxsKVxuXHRcdH0pXG5cdClcbn1cblxuLyoqXG4gKiBNZXJnZSB0aGUgYGN1cnJlbnRgIGFuZCBgaW5jb21pbmdgIG9iamVjdHMgcmVjdXJzaXZlbHksIHJldHVybmluZyBhIG5ldyBjb21iaW5lZCBvYmplY3QuXG4gKlxuICogRm9yIGVhY2gga2V5IGluIGBjdXJyZW50YDpcbiAqICogcmVtb3ZlIGlmIGBjdXJyZW50YCBpcyBhIFwiY29sbGVjdGlvblwiIGFuZCBpdGVtIGtleSBpcyBub3QgaW4gYGluY29taW5nYFxuICogKiByZWN1cnNlIGlmIGBpbmNvbWluZ2AgaXMgYW4gb2JqZWN0IG9yIGFycmF5IGFuZCBoYXMgYSB2YWx1ZVxuICogKiBvciBwcmVzZXJ2ZSBleGlzdGluZyB2YWx1ZVxuICpcbiAqIEZvciBlYWNoIGtleSBpbiBgaW5jb21pbmdgIG5vdCBpbiBgY3VycmVudGA6XG4gKiAqIGNvcHkgdmFsdWUgdG8gcmVzdWx0XG4gKlxuICogQHBhcmFtIGN1cnJlbnRcbiAqIEBwYXJhbSBpbmNvbWluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoY3VycmVudDogRGljdGlvbmFyeTxhbnk+LCBpbmNvbWluZz86IERpY3Rpb25hcnk8YW55PiB8IG51bGwpIHtcblx0Ly8gZG8gbm90IG1lcmdlIGFycmF5c1xuXHRpZiAoaXNBcnJheShjdXJyZW50KSkge1xuXHRcdHJldHVybiAhaXNVbmRlZmluZWQoaW5jb21pbmcpID8gaW5jb21pbmcgOiBjdXJyZW50XG5cdH1cblx0Ly8gaWYgaW5jb21pbmcgaXMgYG51bGxgIG9yIGEgbnVsbCByZXNwb25zZSAoYHsncmVzcG9uc2UnOiBudWxsfWApLCBkbyBub3QgbWVyZ2UsIGp1c3QgdXNlIGluY29taW5nXG5cdGlmIChpbmNvbWluZyA9PT0gbnVsbCB8fCAoIWlzVW5kZWZpbmVkKGluY29taW5nKSAmJiBpc051bGxSZXNwb25zZShpbmNvbWluZykpKSB7XG5cdFx0cmV0dXJuIGluY29taW5nXG5cdH1cblx0Y29uc3QgcmVzdWx0OiBEaWN0aW9uYXJ5PGFueT4gPSBPYmplY3Qua2V5cyhjdXJyZW50KS5yZWR1Y2UoKG91dDogRGljdGlvbmFyeTxhbnk+LCBrKSA9PiB7XG5cdFx0Y29uc3QgYyA9IGN1cnJlbnRba11cblx0XHRjb25zdCBpID0gaW5jb21pbmcgJiYgaW5jb21pbmdba11cblx0XHQvLyBub24tcmVsYXRpb25zXG5cdFx0aWYgKCFpc0FycmF5KGMpICYmICFpc1BsYWluT2JqZWN0KGMpKSB7XG5cdFx0XHQvLyBjb3B5IGluY29taW5nIHZhbHVlLCBpZiBhbnksIG90aGVyd2lzZSBrZWVwIGN1cnJlbnRcblx0XHRcdG91dFtrXSA9ICFpc1VuZGVmaW5lZChpKSA/IGkgOiBjXG5cdFx0XHRyZXR1cm4gb3V0XG5cdFx0fVxuXHRcdC8vIHJlbW92ZSBcImNvbGxlY3Rpb25cIiBpdGVtIG5vdCBpbmNsdWRlZCBpbiBpbmNvbWluZ1xuXHRcdGlmICgoaXNDb2xsZWN0aW9uKGN1cnJlbnQpIHx8IGlzQ29sbGVjdGlvbihpbmNvbWluZykpICYmICFpc1VuZGVmaW5lZChpbmNvbWluZykgJiYgaXNVbmRlZmluZWQoaSkpIHtcblx0XHRcdHJldHVybiBvdXRcblx0XHR9XG5cdFx0Ly8gbWVyZ2UgcmVsYXRpb25zXG5cdFx0b3V0W2tdID0gbWVyZ2UoYywgaSlcblx0XHRyZXR1cm4gb3V0XG5cdH0sIHt9KVxuXHRpZiAoIWlzTmlsKGluY29taW5nKSAmJiBpc1BsYWluT2JqZWN0KGluY29taW5nKSkge1xuXHRcdC8vIGNvcHkgaW5jb21pbmcgcHJvcGVydGllcyB0aGF0IGFyZSBub3Qgb24gY3VycmVudFxuXHRcdE9iamVjdC5rZXlzKGluY29taW5nKS5mb3JFYWNoKGsgPT4ge1xuXHRcdFx0Y29uc3QgYyA9IGN1cnJlbnRba11cblx0XHRcdGNvbnN0IGkgPSBpbmNvbWluZ1trXVxuXHRcdFx0aWYgKGlzVW5kZWZpbmVkKGMpKSB7XG5cdFx0XHRcdHJlc3VsdFtrXSA9IGlcblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cdHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBTZXRzIGBfbWV0YWRhdGFgIG9uIGFueSBuZXN0ZWQgY29sbGVjdGlvbnMgYW5kIGNvbGxlY3Rpb24gaXRlbXMgaW4gdGhlIGRhdGFcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU1ldGFkYXRhRm9yQ2hpbGRDb2xsZWN0aW9ucyhkYXRhOiBEaWN0aW9uYXJ5PGFueT4sIG1ldGFkYXRhOiBNZXRhZGF0YSkge1xuXHRjb25zdCBpc0RhdGFDb2xsZWN0aW9uID0gaXNDb2xsZWN0aW9uKGRhdGEpXG5cdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goa2V5ID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IGRhdGFba2V5XVxuXHRcdGlmICgoaXNEYXRhQ29sbGVjdGlvbiAmJiBrZXkgIT09ICdfbWV0YWRhdGEnICYmIGlzUGxhaW5PYmplY3QodmFsdWUpKSB8fCBpc0NvbGxlY3Rpb24odmFsdWUpKSB7XG5cdFx0XHR2YWx1ZS5fbWV0YWRhdGEgPSBtZXRhZGF0YVxuXHRcdFx0dXBkYXRlTWV0YWRhdGFGb3JDaGlsZENvbGxlY3Rpb25zKHZhbHVlIGFzIG9iamVjdCwgbWV0YWRhdGEpXG5cdFx0fVxuXHR9KVxufVxuXG4vKipcbiAqIFJlZHVjZXIgZm9yIGZldGNoaW5nIGFuZCB1cGRhdGluZyBgbW9kZWxzYCBpbiByZWR1eC5cbiAqXG4gKiBGZXRjaGluZyBzdGF0ZSB1cGRhdGVkIHdpdGggZXZlcnkgYWN0aW9uLlxuICogRGF0YSB1cGRhdGVkIG9uIHJlc3VsdCByZWNlaXZlZC5cbiAqIERhdGEgYW5kIGZldGNoZWREYXRlIE5PVCBkZWxldGVkIG9uIGZhaWxlZCByZXF1ZXN0LiBBbGwgZGF0YSBhdCBrZXkgcmVtb3ZlZCBvbiBNT0RFTF9SRU1PVkVfS0VZLlxuICpcbiAqIEFsbCBhY3Rpb25zIHJlcXVpcmUgYSBgbW9kZWxQYXRoYCBrZXkgdG8gZnVuY3Rpb24gd2l0aCB0aGlzIHJlZHVjZXIuXG4gKlxuICogQXJyYXlzIGFyZSBjb252ZXJ0ZWQgdG8gb2JqZWN0cyB0aGF0IHJlcHJlc2VudCBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgbnVtZXJpYyBpZCBvZiB0aGUgb2JqZWN0IHVzZWRcbiAqIGFzIHRoZSBrZXkgYW5kIHRoZSBlbnRpcmUgb2JqZWN0IHVzZWQgYXMgdGhlIHZhbHVlXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHN0YXRlIFRoZSBzdGF0ZSBvZiB0aGUgbW9kZWxzLiBJbml0aWFsbHkgZW1wdHlcbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiB1cG9uIHdoaWNoIHdlIGRpc3BhdGNoXG4gKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBzdGF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2RlbHNSZWR1Y2VyKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LCBhY3Rpb246IE1vZGVsU3RvcmVBY3Rpb24pIHtcblx0aWYgKCFhY3Rpb24ubW9kZWxQYXRoKSB7XG5cdFx0cmV0dXJuIHN0YXRlXG5cdH1cblx0Y29uc3QgcGF0aDogc3RyaW5nW10gPSBhY3Rpb24ubW9kZWxQYXRoLnNwbGl0KCcuJylcblx0Ly8gdGhlIG9iamVjdCB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGhcblx0bGV0IHZhbHVlQXRQYXRoOiBNb2RlbCA9IGxvZGFzaE1lcmdlKHt9LCBnZXQoc3RhdGUsIHBhdGgpKVxuXHRjb25zdCBtZXRhZGF0YSA9IGdldE1ldGFkYXRhKHN0YXRlLCBwYXRoKVxuXHRsZXQgbWV0YWRhdGFVcGRhdGU6IE1ldGFkYXRhXG5cblx0c3dpdGNoIChhY3Rpb24udHlwZSkge1xuXHRcdGNhc2UgTU9ERUxfRkVUQ0hfU1RBUlRfQUNUSU9OX1RZUEUuRkVUQ0hfU1RBUlQ6XG5cdFx0XHQvLyBSZXRhaW4gdGhlIGVudGl0eSBkYXRhLCB1cGRhdGUgdGhlIG1ldGFkYXRhIHRvIHJlZmxlY3QgZmV0Y2ggaW4gcmVxdWVzdCBzdGF0ZVxuXHRcdFx0bWV0YWRhdGFVcGRhdGUgPSB7XG5cdFx0XHRcdGlzRmV0Y2hpbmc6IHRydWUsXG5cdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcblx0XHRcdFx0bGFzdEZldGNoRXJyb3JEYXRhOiB1bmRlZmluZWRcblx0XHRcdH1cblx0XHRcdHZhbHVlQXRQYXRoLl9tZXRhZGF0YSA9IGxvZGFzaE1lcmdlKG1ldGFkYXRhLCBtZXRhZGF0YVVwZGF0ZSlcblx0XHRcdGlmIChhY3Rpb24uZ3VpZCkge1xuXHRcdFx0XHR2YWx1ZUF0UGF0aC5ndWlkID0gYWN0aW9uLmd1aWRcblx0XHRcdH1cblx0XHRcdHJldHVybiBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcblxuXHRcdGNhc2UgTU9ERUxfRkVUQ0hfUkVTVUxUX0FDVElPTl9UWVBFLkZFVENIX1JFU1VMVF9SRUNFSVZFRDoge1xuXHRcdFx0Ly8gVXBkYXRlIHRoZSBtZXRhZGF0YSB0byByZWZsZWN0IGZldGNoIGlzIGNvbXBsZXRlLlxuXHRcdFx0bWV0YWRhdGFVcGRhdGUgPSB7XG5cdFx0XHRcdGlzRmV0Y2hpbmc6IGZhbHNlLFxuXHRcdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdGxhc3RGZXRjaEVycm9yRGF0YTogdW5kZWZpbmVkLFxuXHRcdFx0XHRmZXRjaGVkQXQ6IG5ldyBEYXRlKClcblx0XHRcdH1cblx0XHRcdGNvbnN0IGluY29taW5nOiBvYmplY3QgPVxuXHRcdFx0XHQhaXNQbGFpbk9iamVjdChhY3Rpb24uZGF0YSkgJiYgIWlzQXJyYXkoYWN0aW9uLmRhdGEpID8geyByZXNwb25zZTogYWN0aW9uLmRhdGEgfSA6IGFjdGlvbi5kYXRhXG5cdFx0XHR1cGRhdGVNZXRhZGF0YUZvckNoaWxkQ29sbGVjdGlvbnMoaW5jb21pbmcsIG1ldGFkYXRhVXBkYXRlKVxuXHRcdFx0Ly8gbWVyZ2luZyB0aGUgaW5jb21pbmcgd2l0aCBleGlzdGluZ1xuXHRcdFx0Ly8gb3RoZXJ3aXNlIGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWUgaW4gcmVkdXhcblx0XHRcdGlmICghYWN0aW9uLnJlcGxhY2VWYWx1ZSkge1xuXHRcdFx0XHR2YWx1ZUF0UGF0aCA9IG1lcmdlKHZhbHVlQXRQYXRoLCBpbmNvbWluZykgYXMgTW9kZWxcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbHVlQXRQYXRoID0gbG9kYXNoTWVyZ2Uoe30sIGluY29taW5nKSBhcyBNb2RlbFxuXHRcdFx0fVxuXHRcdFx0dmFsdWVBdFBhdGguX21ldGFkYXRhID0gbG9kYXNoTWVyZ2Uoe30sIG1ldGFkYXRhLCBtZXRhZGF0YVVwZGF0ZSlcblx0XHRcdGNvbnN0IHJlc3VsdCA9IF9mcC5zZXRXaXRoKE9iamVjdCwgcGF0aCwgdmFsdWVBdFBhdGgsIHN0YXRlKVxuXHRcdFx0cmV0dXJuIHJlc3VsdFxuXHRcdH1cblxuXHRcdGNhc2UgTU9ERUxfRkVUQ0hfQ0FOQ0VMTEVEX0FDVElPTl9UWVBFLkZFVENIX0NBTkNFTExFRDpcblx0XHRcdC8vIFJlc2V0IHRoZSBtZXRhZGF0YVxuXHRcdFx0bWV0YWRhdGFVcGRhdGUgPSB7XG5cdFx0XHRcdGlzRmV0Y2hpbmc6IGZhbHNlLFxuXHRcdFx0XHRoYXNFcnJvcjogZmFsc2Vcblx0XHRcdH1cblx0XHRcdHZhbHVlQXRQYXRoLl9tZXRhZGF0YSA9IGxvZGFzaE1lcmdlKG1ldGFkYXRhLCBtZXRhZGF0YVVwZGF0ZSlcblx0XHRcdGlmIChhY3Rpb24uZ3VpZCkge1xuXHRcdFx0XHR2YWx1ZUF0UGF0aC5ndWlkID0gYWN0aW9uLmd1aWRcblx0XHRcdH1cblx0XHRcdHJldHVybiBfZnAuc2V0V2l0aChPYmplY3QsIHBhdGgsIHZhbHVlQXRQYXRoLCBzdGF0ZSlcblxuXHRcdGNhc2UgTU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUuRkVUQ0hfRkFJTEVEOlxuXHRcdFx0Ly8gUmV0YWluIHRoZSBvYmplY3QsIHVwZGF0ZSB0aGUgbWV0YWRhdGEgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHRoZSByZXF1ZXN0IGZhaWxlZFxuXHRcdFx0bWV0YWRhdGFVcGRhdGUgPSB7XG5cdFx0XHRcdGlzRmV0Y2hpbmc6IGZhbHNlLFxuXHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0bGFzdEZldGNoRXJyb3JEYXRhOiBhY3Rpb24uZXJyb3JEYXRhXG5cdFx0XHR9XG5cdFx0XHR2YWx1ZUF0UGF0aC5fbWV0YWRhdGEgPSBsb2Rhc2hNZXJnZShtZXRhZGF0YSwgbWV0YWRhdGFVcGRhdGUpXG5cdFx0XHRpZiAoYWN0aW9uLmd1aWQpIHtcblx0XHRcdFx0dmFsdWVBdFBhdGguZ3VpZCA9IGFjdGlvbi5ndWlkXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gX2ZwLnNldFdpdGgoT2JqZWN0LCBwYXRoLCB2YWx1ZUF0UGF0aCwgc3RhdGUpXG5cblx0XHRjYXNlIE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEU6XG5cdFx0XHQvLyBDb21wbGV0ZWx5IHJlbW92ZSB0aGUgb2JqZWN0IGF0IHRoZSBwYXRoIGZyb20gdGhlIHN0YXRlXG5cdFx0XHRyZXR1cm4gX2ZwLnVuc2V0KHBhdGgsIHN0YXRlKVxuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBzdGF0ZVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLElBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0ksV0FBV0EsQ0FBQ0MsS0FBOEIsRUFBRUMsSUFBYyxFQUFZO0VBQ3JGLE9BQU8sSUFBQUMsYUFBVyxFQUFDLENBQUMsQ0FBQyxFQUFFLElBQUFDLFdBQUcsRUFBQ0gsS0FBSyxFQUFFQyxJQUFJLENBQUNHLE1BQU0sQ0FB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
@@ -26,4 +26,4 @@ function notificationsReducer() {
26
26
  return state;
27
27
  }
28
28
  }
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9Ob3RpZmljYXRpb25BY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJxdWV1ZSIsIm5vdGlmaWNhdGlvbnNSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ1cGRhdGVkU3RhdGUiLCJ0eXBlIiwiTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFIiwiQUREX05PVElGSUNBVElPTiIsIm1lcmdlIiwicHVzaCIsIm5vdGlmaWNhdGlvbiIsIlJFTU9WRV9OT1RJRklDQVRJT04iLCJmaWx0ZXIiLCJuIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvcmVkdWNlcnMvbm90aWZpY2F0aW9uc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnXHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL05vdGlmaWNhdGlvbidcclxuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLCBOb3RpZmljYXRpb25BY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL05vdGlmaWNhdGlvbkFjdGlvbidcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uU3RhdGUge1xyXG5cdHF1ZXVlOiBOb3RpZmljYXRpb25bXVxyXG59XHJcblxyXG5jb25zdCBpbml0aWFsU3RhdGU6IE5vdGlmaWNhdGlvblN0YXRlID0ge1xyXG5cdHF1ZXVlOiBbXVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub3RpZmljYXRpb25zUmVkdWNlcihzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBOb3RpZmljYXRpb25BY3Rpb24pIHtcclxuXHRsZXQgdXBkYXRlZFN0YXRlOiBOb3RpZmljYXRpb25TdGF0ZVxyXG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcclxuXHRcdGNhc2UgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLkFERF9OT1RJRklDQVRJT046XHJcblx0XHRcdHVwZGF0ZWRTdGF0ZSA9IG1lcmdlKHt9LCBzdGF0ZSlcclxuXHRcdFx0dXBkYXRlZFN0YXRlLnF1ZXVlLnB1c2goYWN0aW9uLm5vdGlmaWNhdGlvbilcclxuXHRcdFx0cmV0dXJuIHVwZGF0ZWRTdGF0ZVxyXG5cdFx0Y2FzZSBOT1RJRklDQVRJT05fQUNUSU9OX1RZUEUuUkVNT1ZFX05PVElGSUNBVElPTjpcclxuXHRcdFx0dXBkYXRlZFN0YXRlID0gbWVyZ2Uoe30sIHN0YXRlKVxyXG5cdFx0XHR1cGRhdGVkU3RhdGUucXVldWUgPSB1cGRhdGVkU3RhdGUucXVldWUuZmlsdGVyKG4gPT4gbi5pZCAhPT0gYWN0aW9uLm5vdGlmaWNhdGlvbi5pZClcclxuXHRcdFx0cmV0dXJuIHVwZGF0ZWRTdGF0ZVxyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0cmV0dXJuIHN0YXRlXHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQU1BLE1BQU1FLFlBQStCLEdBQUc7RUFDdkNDLEtBQUssRUFBRTtBQUNSLENBQUM7QUFFYyxTQUFTQyxvQkFBb0JBLENBQUEsRUFBbUQ7RUFBQSxJQUFsREMsS0FBSyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBR0osWUFBWTtFQUFBLElBQUVPLE1BQTBCLEdBQUFILFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFFLFNBQUE7RUFDNUYsSUFBSUUsWUFBK0I7RUFDbkMsUUFBUUQsTUFBTSxDQUFDRSxJQUFJO0lBQ2xCLEtBQUtDLDRDQUF3QixDQUFDQyxnQkFBZ0I7TUFDN0NILFlBQVksR0FBRyxJQUFBSSxhQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQUVULEtBQUssQ0FBQztNQUMvQkssWUFBWSxDQUFDUCxLQUFLLENBQUNZLElBQUksQ0FBQ04sTUFBTSxDQUFDTyxZQUFZLENBQUM7TUFDNUMsT0FBT04sWUFBWTtJQUNwQixLQUFLRSw0Q0FBd0IsQ0FBQ0ssbUJBQW1CO01BQ2hEUCxZQUFZLEdBQUcsSUFBQUksYUFBSyxFQUFDLENBQUMsQ0FBQyxFQUFFVCxLQUFLLENBQUM7TUFDL0JLLFlBQVksQ0FBQ1AsS0FBSyxHQUFHTyxZQUFZLENBQUNQLEtBQUssQ0FBQ2UsTUFBTSxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsRUFBRSxLQUFLWCxNQUFNLENBQUNPLFlBQVksQ0FBQ0ksRUFBRSxDQUFDO01BQ3BGLE9BQU9WLFlBQVk7SUFDcEI7TUFDQyxPQUFPTCxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9Ob3RpZmljYXRpb25BY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJxdWV1ZSIsIm5vdGlmaWNhdGlvbnNSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ1cGRhdGVkU3RhdGUiLCJ0eXBlIiwiTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFIiwiQUREX05PVElGSUNBVElPTiIsIm1lcmdlIiwicHVzaCIsIm5vdGlmaWNhdGlvbiIsIlJFTU9WRV9OT1RJRklDQVRJT04iLCJmaWx0ZXIiLCJuIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvcmVkdWNlcnMvbm90aWZpY2F0aW9uc1JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9Ob3RpZmljYXRpb24nXG5pbXBvcnQgeyBOT1RJRklDQVRJT05fQUNUSU9OX1RZUEUsIE5vdGlmaWNhdGlvbkFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvTm90aWZpY2F0aW9uQWN0aW9uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvblN0YXRlIHtcblx0cXVldWU6IE5vdGlmaWNhdGlvbltdXG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogTm90aWZpY2F0aW9uU3RhdGUgPSB7XG5cdHF1ZXVlOiBbXVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub3RpZmljYXRpb25zUmVkdWNlcihzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBOb3RpZmljYXRpb25BY3Rpb24pIHtcblx0bGV0IHVwZGF0ZWRTdGF0ZTogTm90aWZpY2F0aW9uU3RhdGVcblx0c3dpdGNoIChhY3Rpb24udHlwZSkge1xuXHRcdGNhc2UgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLkFERF9OT1RJRklDQVRJT046XG5cdFx0XHR1cGRhdGVkU3RhdGUgPSBtZXJnZSh7fSwgc3RhdGUpXG5cdFx0XHR1cGRhdGVkU3RhdGUucXVldWUucHVzaChhY3Rpb24ubm90aWZpY2F0aW9uKVxuXHRcdFx0cmV0dXJuIHVwZGF0ZWRTdGF0ZVxuXHRcdGNhc2UgTk9USUZJQ0FUSU9OX0FDVElPTl9UWVBFLlJFTU9WRV9OT1RJRklDQVRJT046XG5cdFx0XHR1cGRhdGVkU3RhdGUgPSBtZXJnZSh7fSwgc3RhdGUpXG5cdFx0XHR1cGRhdGVkU3RhdGUucXVldWUgPSB1cGRhdGVkU3RhdGUucXVldWUuZmlsdGVyKG4gPT4gbi5pZCAhPT0gYWN0aW9uLm5vdGlmaWNhdGlvbi5pZClcblx0XHRcdHJldHVybiB1cGRhdGVkU3RhdGVcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHN0YXRlXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQU1BLE1BQU1FLFlBQStCLEdBQUc7RUFDdkNDLEtBQUssRUFBRTtBQUNSLENBQUM7QUFFYyxTQUFTQyxvQkFBb0JBLENBQUEsRUFBbUQ7RUFBQSxJQUFsREMsS0FBSyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBR0osWUFBWTtFQUFBLElBQUVPLE1BQTBCLEdBQUFILFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFFLFNBQUE7RUFDNUYsSUFBSUUsWUFBK0I7RUFDbkMsUUFBUUQsTUFBTSxDQUFDRSxJQUFJO0lBQ2xCLEtBQUtDLDRDQUF3QixDQUFDQyxnQkFBZ0I7TUFDN0NILFlBQVksR0FBRyxJQUFBSSxhQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQUVULEtBQUssQ0FBQztNQUMvQkssWUFBWSxDQUFDUCxLQUFLLENBQUNZLElBQUksQ0FBQ04sTUFBTSxDQUFDTyxZQUFZLENBQUM7TUFDNUMsT0FBT04sWUFBWTtJQUNwQixLQUFLRSw0Q0FBd0IsQ0FBQ0ssbUJBQW1CO01BQ2hEUCxZQUFZLEdBQUcsSUFBQUksYUFBSyxFQUFDLENBQUMsQ0FBQyxFQUFFVCxLQUFLLENBQUM7TUFDL0JLLFlBQVksQ0FBQ1AsS0FBSyxHQUFHTyxZQUFZLENBQUNQLEtBQUssQ0FBQ2UsTUFBTSxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsRUFBRSxLQUFLWCxNQUFNLENBQUNPLFlBQVksQ0FBQ0ksRUFBRSxDQUFDO01BQ3BGLE9BQU9WLFlBQVk7SUFDcEI7TUFDQyxPQUFPTCxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -6,14 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = searchReducer;
7
7
  var _lodash = require("lodash");
8
8
  var _SearchAction = require("../actions/SearchAction");
9
- /**
10
- * Store the state of a manage component's search parameters so the params can be
11
- * re-applied later when revisiting the same component
12
- *
13
- * @export
14
- * @param {*} [state={}]
15
- * @param {*} action
16
- * @returns
9
+ /**
10
+ * Store the state of a manage component's search parameters so the params can be
11
+ * re-applied later when revisiting the same component
12
+ *
13
+ * @export
14
+ * @param {*} [state={}]
15
+ * @param {*} action
16
+ * @returns
17
17
  */
18
18
  function searchReducer() {
19
19
  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -26,4 +26,4 @@ function searchReducer() {
26
26
  return state;
27
27
  }
28
28
  }
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9TZWFyY2hBY3Rpb24iLCJzZWFyY2hSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ0eXBlIiwiU0VBUkNIX0FDVElPTl9UWVBFIiwiUEVSU0lTVF9TRUFSQ0giLCJtZXJnZVdpdGgiLCJkYXRhIiwidGFyZ2V0Iiwic291cmNlIiwiaXNBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9yZWR1Y2Vycy9zZWFyY2hSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnksIGlzQXJyYXksIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgU0VBUkNIX0FDVElPTl9UWVBFLCBTZWFyY2hBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL1NlYXJjaEFjdGlvbidcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoU3RhdGUgZXh0ZW5kcyBEaWN0aW9uYXJ5PGFueT4ge31cclxuXHJcbi8qKlxyXG4gKiBTdG9yZSB0aGUgc3RhdGUgb2YgYSBtYW5hZ2UgY29tcG9uZW50J3Mgc2VhcmNoIHBhcmFtZXRlcnMgc28gdGhlIHBhcmFtcyBjYW4gYmVcclxuICogcmUtYXBwbGllZCBsYXRlciB3aGVuIHJldmlzaXRpbmcgdGhlIHNhbWUgY29tcG9uZW50XHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQHBhcmFtIHsqfSBbc3RhdGU9e31dXHJcbiAqIEBwYXJhbSB7Kn0gYWN0aW9uXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWFyY2hSZWR1Y2VyKHN0YXRlOiBTZWFyY2hTdGF0ZSA9IHt9LCBhY3Rpb246IFNlYXJjaEFjdGlvbikge1xyXG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcclxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXHJcblx0XHRjYXNlIFNFQVJDSF9BQ1RJT05fVFlQRS5QRVJTSVNUX1NFQVJDSDpcclxuXHRcdFx0cmV0dXJuIG1lcmdlV2l0aCh7fSwgc3RhdGUsIGFjdGlvbi5kYXRhLCAodGFyZ2V0LCBzb3VyY2UpID0+IChpc0FycmF5KHNvdXJjZSkgPyBzb3VyY2UgOiB1bmRlZmluZWQpKVxyXG5cclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdHJldHVybiBzdGF0ZVxyXG5cdH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLFNBQVNFLGFBQWFBLENBQUEsRUFBZ0Q7RUFBQSxJQUEvQ0MsS0FBa0IsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsSUFBRUcsTUFBb0IsR0FBQUgsU0FBQSxDQUFBQyxNQUFBLE9BQUFELFNBQUEsTUFBQUUsU0FBQTtFQUNsRixRQUFRQyxNQUFNLENBQUNDLElBQUk7SUFDbEI7SUFDQSxLQUFLQyxnQ0FBa0IsQ0FBQ0MsY0FBYztNQUNyQyxPQUFPLElBQUFDLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQUVSLEtBQUssRUFBRUksTUFBTSxDQUFDSyxJQUFJLEVBQUUsQ0FBQ0MsTUFBTSxFQUFFQyxNQUFNLEtBQU0sSUFBQUMsZUFBTyxFQUFDRCxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHUixTQUFVLENBQUM7SUFFckc7TUFDQyxPQUFPSCxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9TZWFyY2hBY3Rpb24iLCJzZWFyY2hSZWR1Y2VyIiwic3RhdGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJ0eXBlIiwiU0VBUkNIX0FDVElPTl9UWVBFIiwiUEVSU0lTVF9TRUFSQ0giLCJtZXJnZVdpdGgiLCJkYXRhIiwidGFyZ2V0Iiwic291cmNlIiwiaXNBcnJheSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9yZWR1Y2Vycy9zZWFyY2hSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnksIGlzQXJyYXksIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IFNFQVJDSF9BQ1RJT05fVFlQRSwgU2VhcmNoQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9TZWFyY2hBY3Rpb24nXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoU3RhdGUgZXh0ZW5kcyBEaWN0aW9uYXJ5PGFueT4ge31cblxuLyoqXG4gKiBTdG9yZSB0aGUgc3RhdGUgb2YgYSBtYW5hZ2UgY29tcG9uZW50J3Mgc2VhcmNoIHBhcmFtZXRlcnMgc28gdGhlIHBhcmFtcyBjYW4gYmVcbiAqIHJlLWFwcGxpZWQgbGF0ZXIgd2hlbiByZXZpc2l0aW5nIHRoZSBzYW1lIGNvbXBvbmVudFxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Kn0gW3N0YXRlPXt9XVxuICogQHBhcmFtIHsqfSBhY3Rpb25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlYXJjaFJlZHVjZXIoc3RhdGU6IFNlYXJjaFN0YXRlID0ge30sIGFjdGlvbjogU2VhcmNoQWN0aW9uKSB7XG5cdHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuXHRcdGNhc2UgU0VBUkNIX0FDVElPTl9UWVBFLlBFUlNJU1RfU0VBUkNIOlxuXHRcdFx0cmV0dXJuIG1lcmdlV2l0aCh7fSwgc3RhdGUsIGFjdGlvbi5kYXRhLCAodGFyZ2V0LCBzb3VyY2UpID0+IChpc0FycmF5KHNvdXJjZSkgPyBzb3VyY2UgOiB1bmRlZmluZWQpKVxuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBzdGF0ZVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLFNBQVNFLGFBQWFBLENBQUEsRUFBZ0Q7RUFBQSxJQUEvQ0MsS0FBa0IsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsSUFBRUcsTUFBb0IsR0FBQUgsU0FBQSxDQUFBQyxNQUFBLE9BQUFELFNBQUEsTUFBQUUsU0FBQTtFQUNsRixRQUFRQyxNQUFNLENBQUNDLElBQUk7SUFDbEI7SUFDQSxLQUFLQyxnQ0FBa0IsQ0FBQ0MsY0FBYztNQUNyQyxPQUFPLElBQUFDLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQUVSLEtBQUssRUFBRUksTUFBTSxDQUFDSyxJQUFJLEVBQUUsQ0FBQ0MsTUFBTSxFQUFFQyxNQUFNLEtBQU0sSUFBQUMsZUFBTyxFQUFDRCxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHUixTQUFVLENBQUM7SUFFckc7TUFDQyxPQUFPSCxLQUFLO0VBQ2Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -23,4 +23,4 @@ function* appInsightsSaga() {
23
23
  yield (0, _effects.take)(_actions.AUTH_TOKEN_SUCCESS_ACTION_TYPE.GET_TOKEN_SUCCEEDED);
24
24
  }
25
25
  }
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2FjdGlvbnMiLCJhcHBJbnNpZ2h0c1NhZ2EiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJhcHBJbnNpZ2h0c0tleSIsIkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklORyIsImFwcEluc2lnaHRzIiwiZ2V0QXBwSW5zaWdodHMiLCJ1c2VySW5mb1Jlc3BvbnNlIiwidGFrZSIsImFjdGlvbiIsImlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbiIsIm1vZGVsUGF0aCIsInVzZXJJZCIsImRhdGEiLCJpZCIsInNldEF1dGhlbnRpY2F0ZWRVc2VyQ29udGV4dCIsInVuZGVmaW5lZCIsIkFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRSIsIkxPR19PVVQiLCJjbGVhckF1dGhlbnRpY2F0ZWRVc2VyQ29udGV4dCIsIkFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSIsIkdFVF9UT0tFTl9TVUNDRUVERUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvc2FnYXMvYXBwSW5zaWdodHNTYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xyXG5pbXBvcnQgeyBTYWdhSXRlcmF0b3IgfSBmcm9tICdyZWR1eC1zYWdhJ1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncmVkdXgtc2FnYS9lZmZlY3RzJ1xyXG5pbXBvcnQgeyBnZXRBcHBDb25maWcsIGdldEFwcEluc2lnaHRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xyXG5pbXBvcnQgeyBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUsIEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSwgaXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucydcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBhcHBJbnNpZ2h0c1NhZ2EoKTogU2FnYUl0ZXJhdG9yIHtcclxuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxyXG5cdGNvbnN0IGFwcEluc2lnaHRzS2V5ID0gYXBwQ29uZmlnLkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklOR1xyXG5cdGlmICghYXBwSW5zaWdodHNLZXkpIHtcclxuXHRcdHJldHVyblxyXG5cdH1cclxuXHRjb25zdCBhcHBJbnNpZ2h0cyA9IGdldEFwcEluc2lnaHRzKClcclxuXHR3aGlsZSAodHJ1ZSkge1xyXG5cdFx0Y29uc3QgdXNlckluZm9SZXNwb25zZSA9IHlpZWxkIHRha2UoXHJcblx0XHRcdChhY3Rpb246IEFueUFjdGlvbikgPT4gaXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gJ3VzZXIudXNlckluZm8nXHJcblx0XHQpXHJcblx0XHRjb25zdCB1c2VySWQ6IHN0cmluZyA9IHVzZXJJbmZvUmVzcG9uc2UuZGF0YS5pZFxyXG5cdFx0YXBwSW5zaWdodHMuc2V0QXV0aGVudGljYXRlZFVzZXJDb250ZXh0KHVzZXJJZCwgdW5kZWZpbmVkLCB0cnVlKVxyXG5cdFx0eWllbGQgdGFrZShBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVClcclxuXHRcdGFwcEluc2lnaHRzLmNsZWFyQXV0aGVudGljYXRlZFVzZXJDb250ZXh0KClcclxuXHRcdHlpZWxkIHRha2UoQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLkdFVF9UT0tFTl9TVUNDRUVERUQpXHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBRWUsVUFBVUcsZUFBZUEsQ0FBQSxFQUFpQjtFQUN4RCxNQUFNQyxTQUFTLEdBQUcsSUFBQUMsdUJBQVksRUFBQyxDQUFDO0VBQ2hDLE1BQU1DLGNBQWMsR0FBR0YsU0FBUyxDQUFDRyw4QkFBOEI7RUFDL0QsSUFBSSxDQUFDRCxjQUFjLEVBQUU7SUFDcEI7RUFDRDtFQUNBLE1BQU1FLFdBQVcsR0FBRyxJQUFBQyx5QkFBYyxFQUFDLENBQUM7RUFDcEMsT0FBTyxJQUFJLEVBQUU7SUFDWixNQUFNQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUFDLGFBQUksRUFDakNDLE1BQWlCLElBQUssSUFBQUMsaUNBQXdCLEVBQUNELE1BQU0sQ0FBQyxJQUFJQSxNQUFNLENBQUNFLFNBQVMsS0FBSyxlQUNqRixDQUFDO0lBQ0QsTUFBTUMsTUFBYyxHQUFHTCxnQkFBZ0IsQ0FBQ00sSUFBSSxDQUFDQyxFQUFFO0lBQy9DVCxXQUFXLENBQUNVLDJCQUEyQixDQUFDSCxNQUFNLEVBQUVJLFNBQVMsRUFBRSxJQUFJLENBQUM7SUFDaEUsTUFBTSxJQUFBUixhQUFJLEVBQUNTLGlDQUF3QixDQUFDQyxPQUFPLENBQUM7SUFDNUNiLFdBQVcsQ0FBQ2MsNkJBQTZCLENBQUMsQ0FBQztJQUMzQyxNQUFNLElBQUFYLGFBQUksRUFBQ1ksdUNBQThCLENBQUNDLG1CQUFtQixDQUFDO0VBQy9EO0FBQ0QiLCJpZ25vcmVMaXN0IjpbXX0=
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2FjdGlvbnMiLCJhcHBJbnNpZ2h0c1NhZ2EiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJhcHBJbnNpZ2h0c0tleSIsIkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklORyIsImFwcEluc2lnaHRzIiwiZ2V0QXBwSW5zaWdodHMiLCJ1c2VySW5mb1Jlc3BvbnNlIiwidGFrZSIsImFjdGlvbiIsImlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbiIsIm1vZGVsUGF0aCIsInVzZXJJZCIsImRhdGEiLCJpZCIsInNldEF1dGhlbnRpY2F0ZWRVc2VyQ29udGV4dCIsInVuZGVmaW5lZCIsIkFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRSIsIkxPR19PVVQiLCJjbGVhckF1dGhlbnRpY2F0ZWRVc2VyQ29udGV4dCIsIkFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSIsIkdFVF9UT0tFTl9TVUNDRUVERUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvc2FnYXMvYXBwSW5zaWdodHNTYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xuaW1wb3J0IHsgU2FnYUl0ZXJhdG9yIH0gZnJvbSAncmVkdXgtc2FnYSdcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnXG5pbXBvcnQgeyBnZXRBcHBDb25maWcsIGdldEFwcEluc2lnaHRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLCBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUsIGlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBhcHBJbnNpZ2h0c1NhZ2EoKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0Y29uc3QgYXBwSW5zaWdodHNLZXkgPSBhcHBDb25maWcuQVBQX0lOU0lHSFRTX0NPTk5FQ1RJT05fU1RSSU5HXG5cdGlmICghYXBwSW5zaWdodHNLZXkpIHtcblx0XHRyZXR1cm5cblx0fVxuXHRjb25zdCBhcHBJbnNpZ2h0cyA9IGdldEFwcEluc2lnaHRzKClcblx0d2hpbGUgKHRydWUpIHtcblx0XHRjb25zdCB1c2VySW5mb1Jlc3BvbnNlID0geWllbGQgdGFrZShcblx0XHRcdChhY3Rpb246IEFueUFjdGlvbikgPT4gaXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gJ3VzZXIudXNlckluZm8nXG5cdFx0KVxuXHRcdGNvbnN0IHVzZXJJZDogc3RyaW5nID0gdXNlckluZm9SZXNwb25zZS5kYXRhLmlkXG5cdFx0YXBwSW5zaWdodHMuc2V0QXV0aGVudGljYXRlZFVzZXJDb250ZXh0KHVzZXJJZCwgdW5kZWZpbmVkLCB0cnVlKVxuXHRcdHlpZWxkIHRha2UoQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQpXG5cdFx0YXBwSW5zaWdodHMuY2xlYXJBdXRoZW50aWNhdGVkVXNlckNvbnRleHQoKVxuXHRcdHlpZWxkIHRha2UoQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLkdFVF9UT0tFTl9TVUNDRUVERUQpXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBRWUsVUFBVUcsZUFBZUEsQ0FBQSxFQUFpQjtFQUN4RCxNQUFNQyxTQUFTLEdBQUcsSUFBQUMsdUJBQVksRUFBQyxDQUFDO0VBQ2hDLE1BQU1DLGNBQWMsR0FBR0YsU0FBUyxDQUFDRyw4QkFBOEI7RUFDL0QsSUFBSSxDQUFDRCxjQUFjLEVBQUU7SUFDcEI7RUFDRDtFQUNBLE1BQU1FLFdBQVcsR0FBRyxJQUFBQyx5QkFBYyxFQUFDLENBQUM7RUFDcEMsT0FBTyxJQUFJLEVBQUU7SUFDWixNQUFNQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUFDLGFBQUksRUFDakNDLE1BQWlCLElBQUssSUFBQUMsaUNBQXdCLEVBQUNELE1BQU0sQ0FBQyxJQUFJQSxNQUFNLENBQUNFLFNBQVMsS0FBSyxlQUNqRixDQUFDO0lBQ0QsTUFBTUMsTUFBYyxHQUFHTCxnQkFBZ0IsQ0FBQ00sSUFBSSxDQUFDQyxFQUFFO0lBQy9DVCxXQUFXLENBQUNVLDJCQUEyQixDQUFDSCxNQUFNLEVBQUVJLFNBQVMsRUFBRSxJQUFJLENBQUM7SUFDaEUsTUFBTSxJQUFBUixhQUFJLEVBQUNTLGlDQUF3QixDQUFDQyxPQUFPLENBQUM7SUFDNUNiLFdBQVcsQ0FBQ2MsNkJBQTZCLENBQUMsQ0FBQztJQUMzQyxNQUFNLElBQUFYLGFBQUksRUFBQ1ksdUNBQThCLENBQUNDLG1CQUFtQixDQUFDO0VBQy9EO0FBQ0QiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -601,4 +601,4 @@ function authSaga(authPersistenceServiceParam, ticketProviderService, codeProvid
601
601
  } while (true);
602
602
  }();
603
603
  }
604
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lZmZlY3RzIiwiX3V1aWQiLCJfY29uc3RhbnRzIiwiX3dpbmRvd1NlcnZpY2UiLCJfdHlwZXMiLCJfYXV0aCIsIl9kYXRlIiwiX2Vycm9yIiwiX2xvZ2dlciIsIl91cmwiLCJfdXNlckFjdGl2aXR5IiwiX2FjdGlvbnMiLCJtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiYWN0aW9uIiwibW9kZWxOYW1lIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIiwibW9kZWxQYXRoIiwiZXhwb3J0cyIsInRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiaW5jb21pbmdBY3Rpb24iLCJtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCIsImlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uIiwidGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkIiwiZGVmYXVsdEVycm9ySGFuZGxlciIsImF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UiLCJlcnJvckhhbmRsZXIiLCJsb2dnZXIiLCJnZXRUb2tlbkZyb21Db2RlIiwiY29kZSIsImFwcENvbmZpZyIsImdldEFwcENvbmZpZyIsIkNMSUVOVF9JRCIsIkNMSUVOVF9TRUNSRVQiLCJFcnJvciIsImdldFRva2VuTW9kZWxOYW1lIiwiZm9ybUJvZHkiLCJVUkxTZWFyY2hQYXJhbXMiLCJncmFudF90eXBlIiwiY2xpZW50X2lkIiwiY2xpZW50X3NlY3JldCIsInB1dCIsInR5cGUiLCJNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFIiwiRkVUQ0hfUkVRVUVTVCIsImJvZHkiLCJ0b1N0cmluZyIsIm5vU3RvcmUiLCJmZXRjaFJlc3VsdEFjdGlvbiIsImZldGNoRXJyb3JBY3Rpb24iLCJyYWNlIiwidGFrZSIsImRhdGEiLCJnZXRUb2tlbkZyb21Db2RlQW5kU3RhdGUiLCJzdGF0ZSIsIk9BVVRIX1BLQ0VfU0NPUEUiLCJPQVVUSF9QS0NFX0VORFBPSU5UIiwiY29kZVZlcmlmaWVyIiwiY2FsbCIsImdldFBlcnNpc3RlZENvZGVWZXJpZmllciIsInBlcnNpc3RlZFN0YXRlIiwiZ2V0UGVyc2lzdGVkU3RhdGUiLCJwZXJzaXN0U3RhdGUiLCJwZXJzaXN0Q29kZVZlcmlmaWVyIiwibG9jYXRpb24iLCJ3aW5kb3dTZXJ2aWNlIiwiZ2V0TG9jYXRpb24iLCJzY29wZSIsImNvZGVfdmVyaWZpZXIiLCJyZWRpcmVjdF91cmkiLCJvcmlnaW4iLCJnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4iLCJvYXV0aFRva2VuUGFyYW0iLCJyZWZyZXNoX3Rva2VuIiwiYXBwZW5kIiwiZXJyb3JEYXRhIiwic3RhdHVzIiwiSFRUUF9TVEFUVVNfQ09ERSIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImlzRXhwaXJpbmdTb29uQWxlcnRWaXNpYmxlIiwicmVmcmVzaExvY2siLCJwcmV2aW91c1JlZnJlc2hUb2tlbiIsInJlc2V0UmVmcmVzaCIsInVuZGVmaW5lZCIsInBlcmZvcm1Ub2tlblJlZnJlc2giLCJvYXV0aFRva2VuIiwicmVmcmVzaFN1Y2Nlc3MiLCJBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUiLCJUT0tFTl9SRUZSRVNIX1NVQ0NFRURFRCIsInJlZnJlc2hGYWlsZWQiLCJBVVRIX0FDVElPTl9UWVBFIiwiVE9LRU5fUkVGUkVTSF9GQUlMRUQiLCJnZXRQZXJzaXN0ZWRUb2tlbiIsImRlYnVnIiwib3JpZ2luYWxBY2Nlc3NUb2tlbiIsImFjY2Vzc190b2tlbiIsInJldHJ5RGVsYXkiLCJkZWxheSIsIm9hdXRoVG9rZW5SZXNwb25zZSIsInBlcnNpc3RUb2tlbiIsImFsbCIsImxvZ091dCIsIkFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRSIsIkxPR19PVVQiLCJ0b2tlbkV4cGlyZWQiLCJjYXVnaHRFcnJvciIsImVycm9yIiwiY29uc3RydWN0RXJyb3JGcm9tQ2F1Z2h0RXJyb3IiLCJsb2dpbkZsb3ciLCJtb2RlbEZldGNoUmVxdWVzdEFjdGlvbiIsImNyZWRlbnRpYWxzTG9naW5GbG93Iiwibm9SZXRyeSIsImNhc1YxTG9naW5GbG93IiwibG9jYWxMb2dpbkZsb3ciLCJjYXNUaWNrZXRMb2dpbkZsb3ciLCJ0aWNrZXQiLCJzZXJ2aWNlIiwicXVlcnlQYXJhbXMiLCJwa2NlTG9naW5GbG93IiwiXyIsInV1aWR2NCIsInNoYTI1NkNvZGVWZXJpZmllciIsInNoYTI1NkFzeW5jIiwiY29kZUNoYWxsZW5nZSIsImJhc2U2NFVybEVuY29kZSIsInBrY2VBdXRoUmVkaXJlY3RVUkwiLCJyZXNwb25zZV90eXBlIiwiY29kZV9jaGFsbGVuZ2UiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJyZXBsYWNlIiwiaGFuZGxlQXV0aEZhaWx1cmUiLCJVTkFVVEhPUklaRUQiLCJpc1Rva2VuRXhwaXJlZCIsImlzVG9rZW5SZWZyZXNoYWJsZSIsImlzVXNlcklkbGUiLCJnZXRPQXV0aFRva2VuIiwiZXhwaXJlc1V0YyIsIm1vbWVudCIsInV0YyIsIm5vd1V0YyIsImdldFNlcnZlck5vd1V0YyIsInRvSVNPU3RyaW5nIiwiaXNFeHBpcmluZ1Nvb24iLCJkaWZmIiwiU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRCIsInJlc2V0RGF0YSIsImNsZWFyVXNlckRhdGEiLCJNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFIiwiY2xlYXJQZXJzaXN0ZW50VG9rZW4iLCJyZWZyZXNoTG9vcCIsImlzRXhwaXJlZCIsImlzUmVmcmVzaGFibGUiLCJ0aW1lVW50aWxFeHBpcmVzIiwiZXhwaXJlc1Nvb25VdGMiLCJzdWJ0cmFjdCIsIm1heERlbGF5IiwiZXhwaXJlc19pbiIsImV4cGlyZXNTb29uRGVsYXkiLCJNYXRoIiwibWluIiwiZWxhcHNlZCIsIkVYUElSSU5HX1NPT04iLCJleHRlbnNpb25SZXF1ZXN0ZWQiLCJFWFRFTlNJT05fUkVRVUVTVEVEIiwiYXV0aFNhZ2EiLCJhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW0iLCJ0aWNrZXRQcm92aWRlclNlcnZpY2UiLCJjb2RlUHJvdmlkZXJTZXJ2aWNlIiwiZXJyb3JIYW5kbGVyUGFyYW0iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJnZXRMb2dnZXIiLCJjYXNUaWNrZXQiLCJnZXRUaWNrZXQiLCJnZXRBcHBTZXJ2aWNlTmFtZSIsImhhc0Nhc1RpY2tldCIsImdldENvZGUiLCJnZXRTdGF0ZSIsInB1cmR1ZUlkZW50aXR5UHJvdmlkZXIiLCJnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uIiwiaXNQdXJkdWVBdXRvTG9naW5SZXF1ZXN0ZWQiLCJnZXRJc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCIsInBlcnNpc3RJc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCIsInJldHVyblVybCIsImdldFJldHVyblVybCIsInBlcnNpc3RSZXR1cm5VcmwiLCJwYXRobmFtZSIsImxvZ2luVXJsIiwicGVyc2lzdElkZW50aXR5UHJvdmlkZXIiLCJyZW1vdmVUaWNrZXQiLCJyZW1vdmVDb2RlQW5kU3RhdGUiLCJBVVRIX1RPS0VOX0FDVElPTl9UWVBFIiwiQVVUSF9JTklUSUFMSVpFRCIsInRha2VFdmVyeSIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiVFJZX0ZFVENIX0ZBSUxFRCIsImNhc1YxQWN0aW9uIiwibG9jYWxMb2dpbkFjdGlvbiIsInBrY2VMb2dpbkFjdGlvbiIsIkFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUiLCJDQVNfVjFfTE9HSU5fUkVRVUVTVCIsIkFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkxPQ0FMX0xPR0lOX1JFUVVFU1QiLCJBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIlBLQ0VfTE9HSU5fUkVRVUVTVCIsIkxPR0lOX1JFUVVFU1RFRCIsImxvZ2luU3VjY2VzcyIsIkdFVF9UT0tFTl9TVUNDRUVERUQiLCJyZWZyZXNoTG9vcFRhc2siLCJmb3JrIiwiY2FuY2VsIiwiTE9HSU5fRkFJTEVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3NhZ2FzL2F1dGhTYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhZ2FJdGVyYXRvciwgVGFzayB9IGZyb20gJ0ByZWR1eC1zYWdhL2NvcmUnXHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJ1xyXG5pbXBvcnQgeyBBbnlBY3Rpb24gfSBmcm9tICdyZWR1eCdcclxuaW1wb3J0IHsgYWxsLCBjYWxsLCBjYW5jZWwsIGRlbGF5LCBmb3JrLCBwdXQsIHJhY2UsIHRha2UsIHRha2VFdmVyeSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cydcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcclxuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xyXG5pbXBvcnQgeyB3aW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2luZG93U2VydmljZSdcclxuaW1wb3J0IHtcclxuXHRBdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLFxyXG5cdENvZGVQcm92aWRlclNlcnZpY2UsXHJcblx0RXJyb3JIYW5kbGVyLFxyXG5cdEhUVFBfU1RBVFVTX0NPREUsXHJcblx0T0F1dGhUb2tlbixcclxuXHRPQXV0aFRva2VuUmVzcG9uc2UsXHJcblx0VGlja2V0UHJvdmlkZXJTZXJ2aWNlLFxyXG5cdFRva2VuQWNjZXNzRnVuY3Rpb25cclxufSBmcm9tICcuLi8uLi90eXBlcydcclxuaW1wb3J0IHsgZ2V0UHVyZHVlSWRlbnRpdHlQcm92aWRlckZyb21Mb2NhdGlvbiwgaXNUb2tlbkV4cGlyZWQsIGlzVG9rZW5SZWZyZXNoYWJsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dGgnXHJcbmltcG9ydCB7IGdldFNlcnZlck5vd1V0YyB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnXHJcbmltcG9ydCB7IGNvbnN0cnVjdEVycm9yRnJvbUNhdWdodEVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvZXJyb3InXHJcbmltcG9ydCB7IGdldExvZ2dlciwgTG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJ1xyXG5pbXBvcnQgeyBiYXNlNjRVcmxFbmNvZGUsIHNoYTI1NkFzeW5jIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXJsJ1xyXG5pbXBvcnQgeyBpc1VzZXJJZGxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXNlckFjdGl2aXR5J1xyXG5pbXBvcnQge1xyXG5cdEFVVEhfQUNUSU9OX1RZUEUsXHJcblx0QVVUSF9DQVNfVjFfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcclxuXHRBVVRIX0xPQ0FMX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUsXHJcblx0QVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLFxyXG5cdEFVVEhfUEtDRV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLFxyXG5cdEFVVEhfVE9LRU5fQUNUSU9OX1RZUEUsXHJcblx0QVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLFxyXG5cdEF1dGhBY3Rpb24sXHJcblx0QXV0aENhc1YxTG9naW5SZXF1ZXN0QWN0aW9uLFxyXG5cdEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbixcclxuXHRBdXRoTG9nT3V0QWN0aW9uLFxyXG5cdEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uLFxyXG5cdEF1dGhUb2tlbkFjdGlvbixcclxuXHRBdXRoVG9rZW5TdWNjZXNzQWN0aW9uLFxyXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uLFxyXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvbixcclxuXHRNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRSxcclxuXHRNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFLFxyXG5cdE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsXHJcblx0TW9kZWxGZXRjaEVycm9yQWN0aW9uLFxyXG5cdE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLFxyXG5cdE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24sXHJcblx0TW9kZWxSZW1vdmVLZXlBY3Rpb25cclxufSBmcm9tICcuLi9hY3Rpb25zJ1xyXG5cclxuLy8jcmVnaW9uIEhlbHBlcnNcclxuXHJcbmV4cG9ydCBjb25zdCBtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cclxuXHRpc1RyYW5zaWVudE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubW9kZWxQYXRoID09PSBtb2RlbE5hbWVcclxuXHJcbmV4cG9ydCBjb25zdCB0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XHJcblx0bWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChpbmNvbWluZ0FjdGlvbiwgbW9kZWxOYW1lKVxyXG5cclxuZXhwb3J0IGNvbnN0IG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cclxuXHRpc1RyYW5zaWVudE1vZGVsRmV0Y2hFcnJvckFjdGlvbihhY3Rpb24pICYmIGFjdGlvbi5tb2RlbFBhdGggPT09IG1vZGVsTmFtZVxyXG5cclxuZXhwb3J0IGNvbnN0IHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XHJcblx0bWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQoaW5jb21pbmdBY3Rpb24sIG1vZGVsTmFtZSlcclxuXHJcbi8vI2VuZHJlZ2lvbiBIZWxwZXJzXHJcblxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdEVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyID0gKCkgPT4ge1xyXG5cdHJldHVyblxyXG59XHJcblxyXG5sZXQgYXV0aFBlcnNpc3RlbmNlU2VydmljZTogQXV0aFBlcnNpc3RlbmNlU2VydmljZVxyXG5sZXQgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJcclxubGV0IGxvZ2dlcjogTG9nZ2VyXHJcblxyXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbUNvZGUoY29kZTogc3RyaW5nKTogU2FnYUl0ZXJhdG9yIHtcclxuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxyXG5cdGlmICghYXBwQ29uZmlnLkNMSUVOVF9JRCB8fCAhYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcignQ0xJRU5UX0lEIGFuZCBDTElFTlRfU0VDUkVUIGFyZSByZXF1aXJlZCBpbiBBcHBDb25maWcnKVxyXG5cdH1cclxuXHRjb25zdCBnZXRUb2tlbk1vZGVsTmFtZSA9ICdnZXRUb2tlbidcclxuXHRjb25zdCBmb3JtQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xyXG5cdFx0Z3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXHJcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXHJcblx0XHRjbGllbnRfc2VjcmV0OiBhcHBDb25maWcuQ0xJRU5UX1NFQ1JFVCxcclxuXHRcdGNvZGU6IGNvZGVcclxuXHR9KVxyXG5cdHlpZWxkIHB1dDxNb2RlbEZldGNoUmVxdWVzdEFjdGlvbj4oe1xyXG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxyXG5cdFx0bW9kZWxOYW1lOiBnZXRUb2tlbk1vZGVsTmFtZSxcclxuXHRcdGJvZHk6IGZvcm1Cb2R5LnRvU3RyaW5nKCksXHJcblx0XHRub1N0b3JlOiB0cnVlXHJcblx0fSlcclxuXHRjb25zdCB7XHJcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcclxuXHRcdGZldGNoRXJyb3JBY3Rpb25cclxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XHJcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxyXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKVxyXG5cdH0pXHJcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24gfHwgIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH1cclxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbUNvZGVBbmRTdGF0ZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXHJcblx0aWYgKCFhcHBDb25maWcuQ0xJRU5UX0lEIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9TQ09QRSB8fCAhYXBwQ29uZmlnLk9BVVRIX1BLQ0VfRU5EUE9JTlQpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcignQ0xJRU5UX0lELCBPQVVUSF9QS0NFX1NDT1BFLCBhbmQgT0FVVEhfUEtDRV9FTkRQT0lOVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcclxuXHR9XHJcblxyXG5cdC8vIHZhbGlkYXRlIHBlcnNpc3RlZCB2YWx1ZXNcclxuXHRjb25zdCBjb2RlVmVyaWZpZXIgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkQ29kZVZlcmlmaWVyKVxyXG5cdGlmICghY29kZVZlcmlmaWVyKSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY29kZV92ZXJpZmllcicpXHJcblx0fVxyXG5cdGNvbnN0IHBlcnNpc3RlZFN0YXRlID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFN0YXRlKVxyXG5cdGlmIChwZXJzaXN0ZWRTdGF0ZSAhPT0gc3RhdGUpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpXHJcblx0fVxyXG5cdC8vIGNsZWFyIHBlcnNpc3RlZCB2YWx1ZXNcclxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFN0YXRlLCBudWxsKVxyXG5cdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0Q29kZVZlcmlmaWVyLCBudWxsKVxyXG5cclxuXHQvLyBkaXNwYXRjaCByZXF1ZXN0XHJcblx0Y29uc3QgZ2V0VG9rZW5Nb2RlbE5hbWUgPSAnZ2V0VG9rZW4nXHJcblx0Y29uc3QgbG9jYXRpb24gPSB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKClcclxuXHRjb25zdCBmb3JtQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xyXG5cdFx0Z3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXHJcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXHJcblx0XHRzY29wZTogYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUsXHJcblx0XHRjb2RlX3ZlcmlmaWVyOiBjb2RlVmVyaWZpZXIsXHJcblx0XHRyZWRpcmVjdF91cmk6IGxvY2F0aW9uLm9yaWdpbixcclxuXHRcdGNvZGU6IGNvZGVcclxuXHR9KVxyXG5cdHlpZWxkIHB1dDxNb2RlbEZldGNoUmVxdWVzdEFjdGlvbj4oe1xyXG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxyXG5cdFx0bW9kZWxOYW1lOiBnZXRUb2tlbk1vZGVsTmFtZSxcclxuXHRcdGJvZHk6IGZvcm1Cb2R5LnRvU3RyaW5nKCksXHJcblx0XHRub1N0b3JlOiB0cnVlXHJcblx0fSlcclxuXHRjb25zdCB7XHJcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcclxuXHRcdGZldGNoRXJyb3JBY3Rpb25cclxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XHJcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxyXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKVxyXG5cdH0pXHJcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24gfHwgIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH1cclxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbVJlZnJlc2hUb2tlbihvYXV0aFRva2VuUGFyYW06IE9BdXRoVG9rZW4pOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXHJcblx0aWYgKCFhcHBDb25maWcuQ0xJRU5UX0lEKSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCBpcyByZXF1aXJlZCBpbiBBcHBDb25maWcnKVxyXG5cdH1cclxuXHRpZiAoIW9hdXRoVG9rZW5QYXJhbS5yZWZyZXNoX3Rva2VuKSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYHJlZnJlc2hfdG9rZW4gaXMgcmVxdWlyZWRgKVxyXG5cdH1cclxuXHJcblx0Y29uc3QgZ2V0VG9rZW5Nb2RlbE5hbWUgPSAnZ2V0VG9rZW4nXHJcblx0Y29uc3QgZm9ybUJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcclxuXHRcdGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcclxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcclxuXHRcdHJlZnJlc2hfdG9rZW46IG9hdXRoVG9rZW5QYXJhbS5yZWZyZXNoX3Rva2VuXHJcblx0fSlcclxuXHQvLyBjcmVhdGUgdGhlIGZvcm0gYm9keSBiYXNlZCBvbiBpZiB1c2luZyBhIGNsaWVudF9zZWNyZXQ6IHRyYWRpdGlvbmFsIE9BdXRoIHZzLiBQS0NFIGZsb3dcclxuXHRpZiAoYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQpIHtcclxuXHRcdGZvcm1Cb2R5LmFwcGVuZCgnY2xpZW50X3NlY3JldCcsIGFwcENvbmZpZy5DTElFTlRfU0VDUkVUKVxyXG5cdH1cclxuXHR5aWVsZCBwdXQ8TW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24+KHtcclxuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcclxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXHJcblx0XHRib2R5OiBmb3JtQm9keS50b1N0cmluZygpLFxyXG5cdFx0bm9TdG9yZTogdHJ1ZVxyXG5cdH0pXHJcblx0Y29uc3Qge1xyXG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXHJcblx0XHRmZXRjaEVycm9yQWN0aW9uXHJcblx0fTogeyBmZXRjaFJlc3VsdEFjdGlvbj86IE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb247IGZldGNoRXJyb3JBY3Rpb24/OiBNb2RlbEZldGNoRXJyb3JBY3Rpb24gfSA9IHlpZWxkIHJhY2Uoe1xyXG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKSxcclxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcclxuXHR9KVxyXG5cdC8vIGFueSBlcnJvciByZXNwb25zZVxyXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uKSB7XHJcblx0XHQvLyBpZ25vcmUgc2VydmVyIGVycm9yc1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRmZXRjaEVycm9yQWN0aW9uLmVycm9yRGF0YT8uc3RhdHVzICYmXHJcblx0XHRcdGZldGNoRXJyb3JBY3Rpb24uZXJyb3JEYXRhLnN0YXR1cyA+PSBIVFRQX1NUQVRVU19DT0RFLklOVEVSTkFMX1NFUlZFUl9FUlJPUlxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiBvYXV0aFRva2VuUGFyYW1cclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsXHJcblx0fVxyXG5cdC8vIGZvciBzb21lIHJlYXNvbiB0aGUgcmVzcG9uc2UgaGFkIG5vIGJvZHlcclxuXHRpZiAoIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH1cclxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxyXG59XHJcblxyXG5sZXQgaXNFeHBpcmluZ1Nvb25BbGVydFZpc2libGU6IGJvb2xlYW5cclxubGV0IHJlZnJlc2hMb2NrOiBib29sZWFuXHJcbmxldCBwcmV2aW91c1JlZnJlc2hUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRSZWZyZXNoKCkge1xyXG5cdGlzRXhwaXJpbmdTb29uQWxlcnRWaXNpYmxlID0gZmFsc2VcclxuXHRyZWZyZXNoTG9jayA9IGZhbHNlXHJcblx0cHJldmlvdXNSZWZyZXNoVG9rZW4gPSB1bmRlZmluZWRcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uKiBwZXJmb3JtVG9rZW5SZWZyZXNoKG9hdXRoVG9rZW46IE9BdXRoVG9rZW4pOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGlmIChyZWZyZXNoTG9jaykge1xyXG5cdFx0Ly8gYWxyZWFkeSByZWZyZXNoaW5nLCB3YWl0IGZvciB0aGUgY3VycmVudCByZWZyZXNoIHRvIHN1Y2NlZWQgb3IgZmFpbFxyXG5cdFx0eWllbGQgcmFjZSh7XHJcblx0XHRcdHJlZnJlc2hTdWNjZXNzOiB0YWtlKEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX1NVQ0NFRURFRCksXHJcblx0XHRcdHJlZnJlc2hGYWlsZWQ6IHRha2UoQVVUSF9BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX0ZBSUxFRClcclxuXHRcdH0pXHJcblx0XHQvLyByZXR1cm4gdGhlIGN1cnJlbnQgcGVyc2lzdGVkIHRva2VuXHJcblx0XHRyZXR1cm4geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxyXG5cdH1cclxuXHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIHJlZnJlc2hpbmcuLi4nKVxyXG5cdHJlZnJlc2hMb2NrID0gdHJ1ZVxyXG5cdHRyeSB7XHJcblx0XHQvLyBvYXV0aFRva2VuIHdpbGwgYmUgc2V0IHRvOlxyXG5cdFx0Ly8gMS4gbmV3IHRva2VuIChzdWNjZXNzKVxyXG5cdFx0Ly8gMi4gc2FtZSB0b2tlbiAoZmFpbGVkIGZyb20gdGltZW91dCBvciBzZXJ2ZXIgZXJyb3IpXHJcblx0XHQvLyAzLiBudWxsIChmYWlsKVxyXG5cdFx0Y29uc3Qgb3JpZ2luYWxBY2Nlc3NUb2tlbiA9IG9hdXRoVG9rZW4uYWNjZXNzX3Rva2VuXHJcblx0XHQvLyBpZiB1c2luZyB0aGUgc2FtZSByZWZyZXNoX3Rva2VuLCB0aGUgcHJldmlvdXMgcmVmcmVzaCBkaWQgbm90IHN1Y2NlZWQgKGUuZy4gc2VydmVyIGVycm9yIG9yIHRpbWVvdXQpXHJcblx0XHQvLyBiYWNrIG9mZiBiZWZvcmUgcmV0cnlpbmcgc28gd2UgZG9uJ3QgaGFtbWVyIHRoZSBzZXJ2ZXIgd2hpbGUgaXQgaXMgdW5hdmFpbGFibGVcclxuXHRcdGlmIChvYXV0aFRva2VuLnJlZnJlc2hfdG9rZW4gPT09IHByZXZpb3VzUmVmcmVzaFRva2VuKSB7XHJcblx0XHRcdGNvbnN0IHJldHJ5RGVsYXkgPSA1MDAwXHJcblx0XHRcdGxvZ2dlci5kZWJ1ZyhgT0F1dGggdG9rZW4gcmVmcmVzaGluZyB3aXRoIHNhbWUgdG9rZW4sIGJhY2tpbmcgb2ZmICR7cmV0cnlEZWxheX0gbXNgKVxyXG5cdFx0XHR5aWVsZCBkZWxheShyZXRyeURlbGF5KVxyXG5cdFx0fVxyXG5cdFx0cHJldmlvdXNSZWZyZXNoVG9rZW4gPSBvYXV0aFRva2VuLnJlZnJlc2hfdG9rZW5cclxuXHRcdGNvbnN0IG9hdXRoVG9rZW5SZXNwb25zZTogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4sIG9hdXRoVG9rZW4pXHJcblx0XHRpZiAoISFvYXV0aFRva2VuUmVzcG9uc2UgJiYgb2F1dGhUb2tlblJlc3BvbnNlLmFjY2Vzc190b2tlbiAhPT0gb3JpZ2luYWxBY2Nlc3NUb2tlbikge1xyXG5cdFx0XHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIHJlZnJlc2hlZCcpXHJcblx0XHRcdHByZXZpb3VzUmVmcmVzaFRva2VuID0gdW5kZWZpbmVkXHJcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW5SZXNwb25zZSlcclxuXHRcdFx0eWllbGQgcHV0PEF1dGhUb2tlblN1Y2Nlc3NBY3Rpb24+KHtcclxuXHRcdFx0XHR0eXBlOiBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQsXHJcblx0XHRcdFx0b2F1dGhUb2tlbjogb2F1dGhUb2tlblJlc3BvbnNlXHJcblx0XHRcdH0pXHJcblx0XHR9IGVsc2UgaWYgKG9hdXRoVG9rZW5SZXNwb25zZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIGZhaWxlZCB0byByZWZyZXNoJylcclxuXHRcdFx0Ly8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIG91dHNpZGUgb2YgdGhlIHRva2VuIGhhdmluZyBiZWVuIHJldm9rZWQgb24gdGhlIHNlcnZlciBzaWRlXHJcblx0XHRcdHlpZWxkIGFsbCh7XHJcblx0XHRcdFx0cmVmcmVzaEZhaWxlZDogcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX0ZBSUxFRCB9KSxcclxuXHRcdFx0XHRsb2dPdXQ6IHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcclxuXHRcdFx0fSlcclxuXHRcdH1cclxuXHRcdHJldHVybiBvYXV0aFRva2VuUmVzcG9uc2VcclxuXHR9IGNhdGNoIChjYXVnaHRFcnJvcjogdW5rbm93bikge1xyXG5cdFx0Y29uc3QgZXJyb3IgPSBjb25zdHJ1Y3RFcnJvckZyb21DYXVnaHRFcnJvcihjYXVnaHRFcnJvciwgJ1BlcmZvcm1Ub2tlblJlZnJlc2hFcnJvcicpXHJcblx0XHRsb2dnZXIuZXJyb3IoZXJyb3IpXHJcblx0XHRlcnJvckhhbmRsZXIoZXJyb3IpXHJcblx0fSBmaW5hbGx5IHtcclxuXHRcdHJlZnJlc2hMb2NrID0gZmFsc2VcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogbG9naW5GbG93KG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XHJcblx0eWllbGQgcHV0KG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKVxyXG5cdGNvbnN0IHtcclxuXHRcdGZldGNoUmVzdWx0QWN0aW9uLFxyXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxyXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcclxuXHRcdGZldGNoUmVzdWx0QWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkKG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLm1vZGVsTmFtZSkpLFxyXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24ubW9kZWxOYW1lKSlcclxuXHR9KVxyXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uKSB7XHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH1cclxuXHRjb25zdCBjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBmZXRjaFJlc3VsdEFjdGlvbj8uZGF0YT8uY29kZVxyXG5cdGlmICghY29kZSkge1xyXG5cdFx0cmV0dXJuIG51bGxcclxuXHR9XHJcblx0cmV0dXJuIHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZSwgY29kZSlcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uKiBjcmVkZW50aWFsc0xvZ2luRmxvdyhcclxuXHRhY3Rpb246IEF1dGhDYXNWMUxvZ2luUmVxdWVzdEFjdGlvbiB8IEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbixcclxuXHRtb2RlbE5hbWU6IHN0cmluZ1xyXG4pOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGNvbnN0IG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbiA9IHtcclxuXHRcdC8vIHNldCByZXF1aXJlZCBkZWZhdWx0c1xyXG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxyXG5cdFx0bW9kZWxOYW1lLFxyXG5cdFx0bm9TdG9yZTogdHJ1ZSxcclxuXHRcdC8vIGZvcmNlIG5vIHJldHJ5XHJcblx0XHRub1JldHJ5OiB0cnVlLFxyXG5cdFx0Ly8gcGFzcyB0aHJ1IGJvZHlcclxuXHRcdGJvZHk6IGFjdGlvbi5ib2R5XHJcblx0fVxyXG5cdHJldHVybiB5aWVsZCBjYWxsKGxvZ2luRmxvdywgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24pXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogY2FzVjFMb2dpbkZsb3coYWN0aW9uOiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xyXG5cdHJldHVybiB5aWVsZCBjYWxsKGNyZWRlbnRpYWxzTG9naW5GbG93LCBhY3Rpb24sICdjb2RlRnJvbUNhc1YxJylcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uKiBsb2NhbExvZ2luRmxvdyhhY3Rpb246IEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XHJcblx0cmV0dXJuIHlpZWxkIGNhbGwoY3JlZGVudGlhbHNMb2dpbkZsb3csIGFjdGlvbiwgJ2NvZGVGcm9tTG9jYWxDcmVkZW50aWFscycpXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogY2FzVGlja2V0TG9naW5GbG93KHRpY2tldDogc3RyaW5nLCBzZXJ2aWNlOiBzdHJpbmcpOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGNvbnN0IG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbiA9IHtcclxuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcclxuXHRcdG1vZGVsTmFtZTogJ2NvZGVGcm9tQ2FzVGlja2V0JyxcclxuXHRcdG5vU3RvcmU6IHRydWUsXHJcblx0XHRxdWVyeVBhcmFtczoge1xyXG5cdFx0XHR0aWNrZXQsXHJcblx0XHRcdHNlcnZpY2VcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIHlpZWxkIGNhbGwobG9naW5GbG93LCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uKiBwa2NlTG9naW5GbG93KF86IEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uKTogU2FnYUl0ZXJhdG9yIHtcclxuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxyXG5cdGlmICghYXBwQ29uZmlnLkNMSUVOVF9JRCB8fCAhYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX0VORFBPSU5UKSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCwgT0FVVEhfUEtDRV9TQ09QRSwgYW5kIE9BVVRIX1BLQ0VfRU5EUE9JTlQgYXJlIHJlcXVpcmVkIGluIEFwcENvbmZpZycpXHJcblx0fVxyXG5cclxuXHQvLyBHZW5lcmF0ZSBzdGF0ZSBhbmQgY29kZSB2ZXJpZmllciB2YWx1ZXNcclxuXHRjb25zdCBzdGF0ZSA9IHV1aWR2NCgpXHJcblx0Y29uc3QgY29kZVZlcmlmaWVyID0gdXVpZHY0KClcclxuXHRjb25zdCBzaGEyNTZDb2RlVmVyaWZpZXIgPSB5aWVsZCBjYWxsKHNoYTI1NkFzeW5jLCBjb2RlVmVyaWZpZXIpXHJcblx0Y29uc3QgY29kZUNoYWxsZW5nZSA9IHlpZWxkIGNhbGwoYmFzZTY0VXJsRW5jb2RlLCBzaGEyNTZDb2RlVmVyaWZpZXIpXHJcblxyXG5cdC8vIFBlcnNpc3Qgc3RhdGUgYW5kIGNvZGUgdmVyaWZpZXIgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdXNlIGFmdGVyIGNvZGUgZmxvdyByZWRpcmVjdC5cclxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFN0YXRlLCBzdGF0ZSlcclxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdENvZGVWZXJpZmllciwgY29kZVZlcmlmaWVyKVxyXG5cclxuXHQvLyBSZWRpcmVjdCB0byBCUyBjb2RlIGZsb3cgYXV0aCBlbmRwb2ludCAod2hpY2ggd2lsbCByZWRpcmVjdCBiYWNrIGhlcmUpXHJcblx0Y29uc3QgbG9jYXRpb24gPSB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKClcclxuXHRjb25zdCBwa2NlQXV0aFJlZGlyZWN0VVJMID0gYCR7YXBwQ29uZmlnLk9BVVRIX1BLQ0VfRU5EUE9JTlR9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7XHJcblx0XHRyZXNwb25zZV90eXBlOiAnY29kZScsXHJcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXHJcblx0XHRzdGF0ZTogc3RhdGUsXHJcblx0XHRzY29wZTogYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUsXHJcblx0XHRjb2RlX2NoYWxsZW5nZTogY29kZUNoYWxsZW5nZSxcclxuXHRcdGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxyXG5cdFx0cmVkaXJlY3RfdXJpOiBsb2NhdGlvbi5vcmlnaW5cclxuXHR9KX1gXHJcblx0eWllbGQgY2FsbCh3aW5kb3dTZXJ2aWNlLnJlcGxhY2UsIHBrY2VBdXRoUmVkaXJlY3RVUkwpXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogaGFuZGxlQXV0aEZhaWx1cmUoYWN0aW9uOiBNb2RlbEZldGNoRXJyb3JBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGlmICghYWN0aW9uLmVycm9yRGF0YSB8fCBhY3Rpb24uZXJyb3JEYXRhLnN0YXR1cyAhPT0gSFRUUF9TVEFUVVNfQ09ERS5VTkFVVEhPUklaRUQpIHJldHVyblxyXG5cdGNvbnN0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcclxuXHRpZiAoIWlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pKSByZXR1cm5cclxuXHQvLyBpZiBhIHJlcXVlc3QgcmVjZWl2ZXMgYSA0MDEsIHRoZSB0b2tlbiBpcyBleHBpcmVkIGFuZCBjYW5ub3QgcmVmcmVzaCwgdHJpZ2dlciBleHBpcmVkIGxvZyBvdXRcclxuXHQvLyB0aGlzIGlzIGEgZmFpbC1zYWZlIGluIGNhc2UgdGhlIGByZWZyZXNoTG9vcGAgaGFzIGZhaWxlZFxyXG5cdGlmICghaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XHJcblx0XHR5aWVsZCBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXHJcblx0XHRyZXR1cm5cclxuXHR9XHJcblx0Ly8gaWYgdG9rZW4gaXMgcmVmcmVzaGFibGUsIHdpdGhpbiAzMCBzZWNvbmRzIG9mIGV4cGlyYXRpb24sIGFuZCB1c2VyIGlzIG5vdCBpZGxlLCBhdXRvLXJlZnJlc2hcclxuXHQvLyB0aGlzIGlzIGEgZmFpbC1zYWZlIGluIGNhc2UgdGhlIGByZWZyZXNoTG9vcGAgaGFzIGZhaWxlZFxyXG5cdGlmICghaXNVc2VySWRsZSgpKSB7XHJcblx0XHRsb2dnZXIuZGVidWcoJ2hhbmRsZUF1dGhGYWlsdXJlIHRyaWdnZXIgYXV0by1yZWZyZXNoJylcclxuXHRcdHlpZWxkIGNhbGwocGVyZm9ybVRva2VuUmVmcmVzaCwgb2F1dGhUb2tlbilcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRPQXV0aFRva2VuOiBUb2tlbkFjY2Vzc0Z1bmN0aW9uID0gZnVuY3Rpb24qICgpIHtcclxuXHRsZXQgb2F1dGhUb2tlbjogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxyXG5cdGlmICghb2F1dGhUb2tlbj8uWycuZXhwaXJlcyddKSByZXR1cm4gb2F1dGhUb2tlblxyXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXHJcblx0Y29uc3QgZXhwaXJlc1V0YyA9IG1vbWVudC51dGMob2F1dGhUb2tlblsnLmV4cGlyZXMnXSlcclxuXHRjb25zdCBub3dVdGMgPSBtb21lbnQudXRjKGdldFNlcnZlck5vd1V0YygpLnRvSVNPU3RyaW5nKCkpXHJcblx0Y29uc3QgaXNFeHBpcmluZ1Nvb24gPSBleHBpcmVzVXRjLmRpZmYobm93VXRjKSA8PSBhcHBDb25maWcuU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRFxyXG5cdC8vIGlmIHRva2VuIGlzIHJlZnJlc2hhYmxlLCB3aXRoaW4gcmVmcmVzaCB0aHJlc2hvbGQsIHVzZXIgaXMgbm90IGlkbGUsIGFuZCBub3QgZGlzcGxheWluZyBhbGVydCwgdGhlbiBhdXRvLXJlZnJlc2hcclxuXHQvLyB0aGlzIGlzIGEgZmFpbC1zYWZlIGluIGNhc2UgdGhlIGByZWZyZXNoTG9vcGAgaGFzIGZhaWxlZFxyXG5cdGlmIChpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikgJiYgaXNFeHBpcmluZ1Nvb24gJiYgIWlzVXNlcklkbGUoKSAmJiAhaXNFeHBpcmluZ1Nvb25BbGVydFZpc2libGUpIHtcclxuXHRcdGxvZ2dlci5kZWJ1ZygnZ2V0T0F1dGhUb2tlbiB0cmlnZ2VyIGF1dG8tcmVmcmVzaCcpXHJcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxyXG5cdH1cclxuXHRyZXR1cm4gb2F1dGhUb2tlblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24qIHJlc2V0RGF0YSgpOiBTYWdhSXRlcmF0b3Ige1xyXG5cdHlpZWxkIGFsbCh7XHJcblx0XHRjbGVhclVzZXJEYXRhOiBwdXQ8TW9kZWxSZW1vdmVLZXlBY3Rpb24+KHsgdHlwZTogTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSwgbW9kZWxQYXRoOiAndXNlcicgfSksXHJcblx0XHRjbGVhclBlcnNpc3RlbnRUb2tlbjogY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgbnVsbCksXHJcblx0XHRyZXNldFJlZnJlc2g6IGNhbGwocmVzZXRSZWZyZXNoKVxyXG5cdH0pXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiogcmVmcmVzaExvb3AoKTogU2FnYUl0ZXJhdG9yIHtcclxuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxyXG5cdGxldCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2VcclxuXHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGluaXQnKVxyXG5cdHdoaWxlICh0cnVlKSB7XHJcblx0XHRpc0V4cGlyaW5nU29vbkFsZXJ0VmlzaWJsZSA9IGZhbHNlXHJcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxyXG5cclxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3Agc3RhcnQnLCB7XHJcblx0XHRcdG9hdXRoVG9rZW4sXHJcblx0XHRcdGlzRXhwaXJlZDogaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbiksXHJcblx0XHRcdGlzUmVmcmVzaGFibGU6IGlzVG9rZW5SZWZyZXNoYWJsZShvYXV0aFRva2VuKVxyXG5cdFx0fSlcclxuXHJcblx0XHRpZiAoIWlzVG9rZW5SZWZyZXNoYWJsZShvYXV0aFRva2VuKSkge1xyXG5cdFx0XHRpZiAoaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHtcclxuXHRcdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGJyZWFrOiB0b2tlbiBleHBpcmVkIGFuZCBub3QgcmVmcmVzaGFibGUsIHRyaWdnZXIgZXhwaXJlZCBsb2cgb3V0JylcclxuXHRcdFx0XHQvLyB1c2VyIGZhaWxlZCB0byByZXF1ZXN0IGFuIGV4dGVuc2lvbiBhbmQgdG9rZW4gaXMgZXhwaXJlZFxyXG5cdFx0XHRcdHlpZWxkIHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcclxuXHRcdFx0XHQvLyBicmVhayBsb29wXHJcblx0XHRcdFx0YnJlYWtcclxuXHRcdFx0fVxyXG5cdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGJyZWFrOiB0b2tlbiBub3QgcmVmcmVzaGFibGUnKVxyXG5cdFx0XHRicmVha1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGV4cGlyZXNVdGMgPSBtb21lbnQudXRjKG9hdXRoVG9rZW5bJy5leHBpcmVzJ10pXHJcblx0XHRjb25zdCBub3dVdGMgPSBtb21lbnQudXRjKGdldFNlcnZlck5vd1V0YygpLnRvSVNPU3RyaW5nKCkpXHJcblx0XHRjb25zdCB0aW1lVW50aWxFeHBpcmVzID0gZXhwaXJlc1V0Yy5kaWZmKG5vd1V0YylcclxuXHRcdGNvbnN0IGlzRXhwaXJpbmdTb29uID0gdGltZVVudGlsRXhwaXJlcyA8PSBhcHBDb25maWcuU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRFxyXG5cclxuXHRcdGlmICghaXNFeHBpcmluZ1Nvb24pIHtcclxuXHRcdFx0Y29uc3QgZXhwaXJlc1Nvb25VdGMgPSBleHBpcmVzVXRjLnN1YnRyYWN0KGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xELCAnbWlsbGlzZWNvbmRzJylcclxuXHRcdFx0Ly8gdXNlIGEgbWF4IGRlbGF5LCBlLmcuIDEgbWluIGZvciA2MCBtaW4gdG9rZW4sIDEgc2VjIGZvciA2MCBzZWMgdG9rZW5cclxuXHRcdFx0Ly8gdG8gaGVscCByZWR1Y2UgdGltZXIgZHJpZnQgd2hlbiB0YWIgaXMgaW4gdGhlIGJhY2tncm91bmRcclxuXHRcdFx0Y29uc3QgbWF4RGVsYXkgPSAob2F1dGhUb2tlbi5leHBpcmVzX2luICogMTAwMCkgLyA2MFxyXG5cdFx0XHRjb25zdCBleHBpcmVzU29vbkRlbGF5ID0gTWF0aC5taW4obWF4RGVsYXksIGV4cGlyZXNTb29uVXRjLmRpZmYobm93VXRjKSlcclxuXHRcdFx0bG9nZ2VyLmRlYnVnKGByZWZyZXNoTG9vcCBkZWxheTogd2FpdCBmb3IgdG9rZW4gdG8gYmUgY2xvc2UgdG8gZXhwaXJhdGlvbiwgZGVsYXlpbmcgJHtleHBpcmVzU29vbkRlbGF5fSBtc2ApXHJcblx0XHRcdHlpZWxkIGRlbGF5KGV4cGlyZXNTb29uRGVsYXkpXHJcblx0XHRcdC8vIHJlc3RhcnQgbG9vcCB0byByZWNoZWNrIHRva2VuXHJcblx0XHRcdGNvbnN0IGVsYXBzZWQgPSBtb21lbnQudXRjKGdldFNlcnZlck5vd1V0YygpLnRvSVNPU3RyaW5nKCkpLmRpZmYobm93VXRjKVxyXG5cdFx0XHRsb2dnZXIuZGVidWcoYHJlZnJlc2hMb29wIGRlbGF5OiBmaW5pc2hlZCBhZnRlciAke2VsYXBzZWR9IG1zYClcclxuXHRcdFx0Y29udGludWVcclxuXHRcdH1cclxuXHJcblx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGV4cGlyaW5nIHNvb24nKVxyXG5cclxuXHRcdC8vIE5PVEU6IHVzZXIgY2FuIG5ldmVyIGJlIGlkbGUgb24gTE9DQUwsIHNvIGxvY2FsIHNlc3Npb25zIHdpbGwgc3RheSBhbGl2ZSBpbmRlZmluaXRlbHlcclxuXHRcdGlmICghaXNVc2VySWRsZSgpKSB7XHJcblx0XHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciBub3QgaWRsZSwgdHJpZ2dlciBhdXRvLXJlZnJlc2gnKVxyXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggdG9rZW4gdG8gZXh0ZW5kIHNlc3Npb24gaWYgdXNlciBpcyBub3QgaWRsZVxyXG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxyXG5cdFx0XHRjb250aW51ZVxyXG5cdFx0fVxyXG5cclxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciBpZGxlLCB0cmlnZ2VyIGV4cGlyaW5nIHNvb24nKVxyXG5cclxuXHRcdC8vIGlmIHVzZXIgaXMgaWRsZSBhbmQgdG9rZW4gaXMgZXhwaXJpbmcgc29vbiwgc2VuZCBhY3Rpb24gdG8gZGlzcGxheSBFeHBpcmluZ1Nlc3Npb25BbGVydFxyXG5cdFx0eWllbGQgcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5FWFBJUklOR19TT09OIH0pXHJcblx0XHQvLyB0cmFjayBsb2NhbCBzdGF0ZSB0byBibG9jayBhdXRvLXJlZnJlc2ggaW4gYGdldE9BdXRoVG9rZW5gXHJcblx0XHRpc0V4cGlyaW5nU29vbkFsZXJ0VmlzaWJsZSA9IHRydWVcclxuXHJcblx0XHQvLyB3YWl0IGZvciB1c2VyIHRvIHRha2UgYW4gYWN0aW9uLCBvciBmb3IgdG9rZW4gdG8gZXhwaXJlXHJcblx0XHQvLyBpZiB1c2VyIGxvZ3Mgb3V0LCB0aGUgcm9vdCBgYXV0aFNhZ2FgIHdpbGwgY2FuY2VsIHRoaXMgbG9vcFxyXG5cdFx0Y29uc3QgeyB0b2tlbkV4cGlyZWQgfSA9IHlpZWxkIHJhY2Uoe1xyXG5cdFx0XHRleHRlbnNpb25SZXF1ZXN0ZWQ6IHRha2UoQVVUSF9BQ1RJT05fVFlQRS5FWFRFTlNJT05fUkVRVUVTVEVEKSxcclxuXHRcdFx0dG9rZW5FeHBpcmVkOiBkZWxheSh0aW1lVW50aWxFeHBpcmVzKVxyXG5cdFx0fSlcclxuXHRcdGlmICh0b2tlbkV4cGlyZWQpIHtcclxuXHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCB0b2tlbiBleHBpcmVkLCB0cmlnZ2VyIGV4cGlyZWQgbG9nIG91dCcpXHJcblx0XHRcdC8vIHVzZXIgZmFpbGVkIHRvIHJlcXVlc3QgYW4gZXh0ZW5zaW9uIGFuZCB0b2tlbiBpcyBleHBpcmVkXHJcblx0XHRcdHlpZWxkIHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcclxuXHRcdFx0Ly8gYnJlYWsgbG9vcFxyXG5cdFx0XHRicmVha1xyXG5cdFx0fVxyXG5cclxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciB0cmlnZ2VyIHJlZnJlc2gnKVxyXG5cclxuXHRcdC8vIHVzZXIgcmVxdWVzdGVkIGV4dGVuc2lvbiwgdHJpZ2dlciB0b2tlbiByZWZyZXNoXHJcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxyXG5cdH1cclxuXHJcblx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBkb25lJylcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIGF1dGhTYWdhKFxyXG5cdGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VQYXJhbTogQXV0aFBlcnNpc3RlbmNlU2VydmljZSxcclxuXHR0aWNrZXRQcm92aWRlclNlcnZpY2U6IFRpY2tldFByb3ZpZGVyU2VydmljZSxcclxuXHRjb2RlUHJvdmlkZXJTZXJ2aWNlOiBDb2RlUHJvdmlkZXJTZXJ2aWNlLFxyXG5cdGVycm9ySGFuZGxlclBhcmFtOiBFcnJvckhhbmRsZXIgfCB1bmRlZmluZWQgPSBkZWZhdWx0RXJyb3JIYW5kbGVyXHJcbik6IFNhZ2FJdGVyYXRvciB7XHJcblx0YXV0aFBlcnNpc3RlbmNlU2VydmljZSA9IGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VQYXJhbVxyXG5cdGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlclBhcmFtXHJcblx0bG9nZ2VyID0gZ2V0TG9nZ2VyKClcclxuXHJcblx0Ly8gdHJ5IHRvIGdldCBwZXJzaXN0ZWQgdG9rZW4gKG5vcm1hbGx5IGluIEFzeW5jU3RvcmFnZSBvciBMb2NhbFN0b3JhZ2UpXHJcblx0bGV0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcclxuXHJcblx0Ly8gaWYgdG9rZW4gaXMgZXhwaXJlZCwgdHJ5IHRvIHJlZnJlc2ggaXQgYmVmb3JlIGluaXRpYWxpemluZyBhdXRoXHJcblx0Ly8gaWYgdW5hYmxlIHRvIHJlZnJlc2gsIGNsZWFyIGRhdGEgYW5kIGluaXQgYXV0aCB3aXRoIG5vIHRva2VuXHJcblx0aWYgKGlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pKSB7XHJcblx0XHRpZiAoaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XHJcblx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsb2dnZXIuZGVidWcoJ3Rva2VuIGV4cGlyZWQsIGNsZWFyIHBlcnNpc3RlZCB1c2VyIGRhdGEgYW5kIHRva2VuJylcclxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcclxuXHRcdFx0Ly8gY2xlYXIgdGhlIGV4cGlyZWQgdG9rZW4gYW5kIHVzZXIgZGF0YSBmcm9tIHN0b3JhZ2VcclxuXHRcdFx0eWllbGQgY2FsbChyZXNldERhdGEpXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBnZXQgYXV0aCBwYXJhbWV0ZXJzXHJcblx0Y29uc3QgY2FzVGlja2V0ID0gdGlja2V0UHJvdmlkZXJTZXJ2aWNlLmdldFRpY2tldCgpXHJcblx0Y29uc3Qgc2VydmljZSA9IHRpY2tldFByb3ZpZGVyU2VydmljZS5nZXRBcHBTZXJ2aWNlTmFtZSgpXHJcblx0Y29uc3QgaGFzQ2FzVGlja2V0ID0gISFjYXNUaWNrZXQgJiYgISFzZXJ2aWNlXHJcblxyXG5cdGNvbnN0IGNvZGUgPSBjb2RlUHJvdmlkZXJTZXJ2aWNlLmdldENvZGUoKVxyXG5cdGNvbnN0IHN0YXRlID0gY29kZVByb3ZpZGVyU2VydmljZS5nZXRTdGF0ZSgpXHJcblxyXG5cdC8vIGF1dG8tbG9naW4gLyBTU08gZm9yIFB1cmR1ZVxyXG5cdGNvbnN0IHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIgPSB5aWVsZCBjYWxsKGdldFB1cmR1ZUlkZW50aXR5UHJvdmlkZXJGcm9tTG9jYXRpb24pXHJcblx0aWYgKHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIpIHtcclxuXHRcdGNvbnN0IGlzUHVyZHVlQXV0b0xvZ2luUmVxdWVzdGVkOiBib29sZWFuID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldElzUHVyZHVlQXV0b0xvZ2luUmVxdWVzdGVkKVxyXG5cclxuXHRcdC8vIHN0YXJ0IGF1dG8tbG9naW4gLyBTU08sIGlmIG5vdCBhbHJlYWR5IHJlcXVlc3RlZCwgbm90IGF1dGhlbnRpY2F0ZWQsIGFuZCBoYXMgbm8gdmFsaWQgYXV0aCBwYXJhbWV0ZXJzXHJcblx0XHRpZiAoIWlzUHVyZHVlQXV0b0xvZ2luUmVxdWVzdGVkICYmICFvYXV0aFRva2VuICYmICFoYXNDYXNUaWNrZXQgJiYgIWNvZGUpIHtcclxuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RJc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCwgdHJ1ZSlcclxuXHRcdFx0Ly8gc3RvcmUgcGF0aG5hbWUgZm9yIHBvc3QtbG9naW4gcmVkaXJlY3QgaWYgbm90IGFscmVhZHkgc2V0XHJcblx0XHRcdC8vIGNvdWxkIGhhdmUgYmVlbiBzZXQgZnJvbSB1c2VyIGxvZ2dpbmcgb3V0LCBzZWUgYEF1dGhlbnRpY2F0ZWRDb21wb25lbnRgXHJcblx0XHRcdGNvbnN0IHJldHVyblVybCA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRSZXR1cm5VcmwpXHJcblx0XHRcdGlmICghcmV0dXJuVXJsKSB7XHJcblx0XHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RSZXR1cm5VcmwsIHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKS5wYXRobmFtZSlcclxuXHRcdFx0fVxyXG5cdFx0XHR5aWVsZCBjYWxsKHdpbmRvd1NlcnZpY2UucmVwbGFjZSwgcHVyZHVlSWRlbnRpdHlQcm92aWRlci5sb2dpblVybClcclxuXHRcdFx0cmV0dXJuXHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gZmluaXNoIGF1dG8tbG9naW4gcHJvY2VzcywgaWYgaXQgd2FzIHJlcXVlc3RlZCBhbmQgaGFzIGEgdmFsaWQgYXV0aCBwYXJhbWV0ZXJcclxuXHRcdGlmIChpc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCAmJiAoaGFzQ2FzVGlja2V0IHx8IGNvZGUpKSB7XHJcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0SXNQdXJkdWVBdXRvTG9naW5SZXF1ZXN0ZWQsIGZhbHNlKVxyXG5cdFx0XHQvLyBwZXJzaXN0IFB1cmR1ZSBpZGVudGl0eVByb3ZpZGVyIGZvciBgaWRlbnRpdHlQcm92aWRlclNhZ2FgIGxvZ291dCBsb2dpY1xyXG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdElkZW50aXR5UHJvdmlkZXIsIHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIpXHJcblx0XHRcdC8vIGNvbnRpbnVlIHRvIGV4Y2hhbmdpbmcgQ0FTIGB0aWNrZXRgIG9yIGBjb2RlYCBmb3IgdG9rZW5cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIGlmIENBUyB0aWNrZXQgZXhpc3RzIChub3JtYWxseSBpbiB0aGUgVVJMKSwgdXNlIGl0IHRvIGdldCBhIG5ldyB0b2tlblxyXG5cdGlmIChoYXNDYXNUaWNrZXQpIHtcclxuXHRcdHRpY2tldFByb3ZpZGVyU2VydmljZS5yZW1vdmVUaWNrZXQoKVxyXG5cclxuXHRcdC8vIGNsZWFyIHRoZSBjdXJyZW50IHRva2VuIGFuZCB1c2VyIGRhdGEgaWYgYSBuZXcgdG9rZW4gaXMgYWJvdXQgdG8gYmUgZ2VuZXJhdGVkXHJcblx0XHRpZiAob2F1dGhUb2tlbikge1xyXG5cdFx0XHR5aWVsZCBjYWxsKHJlc2V0RGF0YSlcclxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcclxuXHRcdH1cclxuXHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGNhc1RpY2tldExvZ2luRmxvdywgY2FzVGlja2V0LCBzZXJ2aWNlKVxyXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcclxuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlbilcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIGlmIE9BdXRoIENvZGUgZXhpc3RzIChub3JtYWxseSBpbiB0aGUgVVJMKSwgdXNlIGl0IHRvIGdldCBhIG5ldyB0b2tlblxyXG5cdGlmIChjb2RlKSB7XHJcblx0XHRjb2RlUHJvdmlkZXJTZXJ2aWNlLnJlbW92ZUNvZGVBbmRTdGF0ZSgpXHJcblxyXG5cdFx0Ly8gY2xlYXIgdGhlIGN1cnJlbnQgdG9rZW4gYW5kIHVzZXIgZGF0YSBpZiBhIG5ldyB0b2tlbiBpcyBhYm91dCB0byBiZSBnZW5lcmF0ZWRcclxuXHRcdGlmIChvYXV0aFRva2VuKSB7XHJcblx0XHRcdHlpZWxkIGNhbGwocmVzZXREYXRhKVxyXG5cdFx0XHRvYXV0aFRva2VuID0gbnVsbFxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGlmIE9BdXRoIHN0YXRlIGV4aXN0cyAobm9ybWFsbHkgaW4gdGhlIFVSTCksIHVzZSBpdCBpbiBhZGRpdGlvbiB0byB0aGUgY29kZSBmb3IgUEtDRSBsb2dpbiBmbG93XHJcblx0XHRpZiAoc3RhdGUpIHtcclxuXHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlLCBjb2RlLCBzdGF0ZSlcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGdldFRva2VuRnJvbUNvZGUsIGNvZGUpXHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcclxuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlbilcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHlpZWxkIHB1dDxBdXRoVG9rZW5BY3Rpb24+KHsgdHlwZTogQVVUSF9UT0tFTl9BQ1RJT05fVFlQRS5BVVRIX0lOSVRJQUxJWkVELCBvYXV0aFRva2VuIH0pXHJcblxyXG5cdHlpZWxkIHRha2VFdmVyeShNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRS5UUllfRkVUQ0hfRkFJTEVELCBoYW5kbGVBdXRoRmFpbHVyZSlcclxuXHJcblx0ZG8ge1xyXG5cdFx0aWYgKCFvYXV0aFRva2VuKSB7XHJcblx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRjYXNWMUFjdGlvbixcclxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uLFxyXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvblxyXG5cdFx0XHR9OiB7XHJcblx0XHRcdFx0Y2FzVjFBY3Rpb24/OiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb25cclxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uPzogQXV0aExvY2FsTG9naW5SZXF1ZXN0QWN0aW9uXHJcblx0XHRcdFx0cGtjZUxvZ2luQWN0aW9uPzogQXV0aFBLQ0VMb2dpblJlcXVlc3RBY3Rpb25cclxuXHRcdFx0fSA9IHlpZWxkIHJhY2Uoe1xyXG5cdFx0XHRcdGNhc1YxQWN0aW9uOiB0YWtlKEFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUuQ0FTX1YxX0xPR0lOX1JFUVVFU1QpLFxyXG5cdFx0XHRcdGxvY2FsTG9naW5BY3Rpb246IHRha2UoQVVUSF9MT0NBTF9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLkxPQ0FMX0xPR0lOX1JFUVVFU1QpLFxyXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvbjogdGFrZShBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRS5QS0NFX0xPR0lOX1JFUVVFU1QpXHJcblx0XHRcdH0pXHJcblxyXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLkxPR0lOX1JFUVVFU1RFRCB9KVxyXG5cdFx0XHRpZiAoY2FzVjFBY3Rpb24pIHtcclxuXHRcdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChjYXNWMUxvZ2luRmxvdywgY2FzVjFBY3Rpb24pXHJcblx0XHRcdH0gZWxzZSBpZiAobG9jYWxMb2dpbkFjdGlvbikge1xyXG5cdFx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGxvY2FsTG9naW5GbG93LCBsb2NhbExvZ2luQWN0aW9uKVxyXG5cdFx0XHR9IGVsc2UgaWYgKHBrY2VMb2dpbkFjdGlvbikge1xyXG5cdFx0XHRcdC8vIG9hdXRoVG9rZW4gaXMgbm90IHJldHVybmVkIGhlcmUsIGFzIHRoaXMgZmxvdyB3aWxsIHJlc3VsdCBpbiBhIHdpbmRvdyByZWRpcmVjdFxyXG5cdFx0XHRcdHlpZWxkIGNhbGwocGtjZUxvZ2luRmxvdywgcGtjZUxvZ2luQWN0aW9uKVxyXG5cdFx0XHRcdC8vIGJyZWFrIGV4ZWN1dGlvblxyXG5cdFx0XHRcdHJldHVyblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcclxuXHRcdFx0eWllbGQgYWxsKHtcclxuXHRcdFx0XHRwZXJzaXN0VG9rZW46IGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW4pLFxyXG5cdFx0XHRcdGxvZ2luU3VjY2VzczogcHV0PEF1dGhUb2tlblN1Y2Nlc3NBY3Rpb24+KHtcclxuXHRcdFx0XHRcdHR5cGU6IEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRS5HRVRfVE9LRU5fU1VDQ0VFREVELFxyXG5cdFx0XHRcdFx0b2F1dGhUb2tlblxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblxyXG5cdFx0XHQvLyBzdGFydCBub24tYmxvY2tpbmcgcmVmcmVzaCBsb29wXHJcblx0XHRcdGNvbnN0IHJlZnJlc2hMb29wVGFzazogVGFzayA9IHlpZWxkIGZvcmsocmVmcmVzaExvb3ApXHJcblxyXG5cdFx0XHQvLyBpZiB1c2VyIGxvZ3Mgb3V0IG9yIHRva2VuIGV4cGlyZXMsIGNhbmNlbCB0aGUgcmVmcmVzaCBsb29wXHJcblx0XHRcdHlpZWxkIHRha2UoQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQpXHJcblx0XHRcdHlpZWxkIGNhbmNlbChyZWZyZXNoTG9vcFRhc2spXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLkxPR0lOX0ZBSUxFRCB9KVxyXG5cdFx0fVxyXG5cclxuXHRcdHlpZWxkIGNhbGwocmVzZXREYXRhKVxyXG5cdFx0b2F1dGhUb2tlbiA9IG51bGxcclxuXHR9IHdo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
604
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lZmZlY3RzIiwiX3V1aWQiLCJfY29uc3RhbnRzIiwiX3dpbmRvd1NlcnZpY2UiLCJfdHlwZXMiLCJfYXV0aCIsIl9kYXRlIiwiX2Vycm9yIiwiX2xvZ2dlciIsIl91cmwiLCJfdXNlckFjdGl2aXR5IiwiX2FjdGlvbnMiLCJtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiYWN0aW9uIiwibW9kZWxOYW1lIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIiwibW9kZWxQYXRoIiwiZXhwb3J0cyIsInRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiaW5jb21pbmdBY3Rpb24iLCJtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCIsImlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uIiwidGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkIiwiZGVmYXVsdEVycm9ySGFuZGxlciIsImF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UiLCJlcnJvckhhbmRsZXIiLCJsb2dnZXIiLCJnZXRUb2tlbkZyb21Db2RlIiwiY29kZSIsImFwcENvbmZpZyIsImdldEFwcENvbmZpZyIsIkNMSUVOVF9JRCIsIkNMSUVOVF9TRUNSRVQiLCJFcnJvciIsImdldFRva2VuTW9kZWxOYW1lIiwiZm9ybUJvZHkiLCJVUkxTZWFyY2hQYXJhbXMiLCJncmFudF90eXBlIiwiY2xpZW50X2lkIiwiY2xpZW50X3NlY3JldCIsInB1dCIsInR5cGUiLCJNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFIiwiRkVUQ0hfUkVRVUVTVCIsImJvZHkiLCJ0b1N0cmluZyIsIm5vU3RvcmUiLCJmZXRjaFJlc3VsdEFjdGlvbiIsImZldGNoRXJyb3JBY3Rpb24iLCJyYWNlIiwidGFrZSIsImRhdGEiLCJnZXRUb2tlbkZyb21Db2RlQW5kU3RhdGUiLCJzdGF0ZSIsIk9BVVRIX1BLQ0VfU0NPUEUiLCJPQVVUSF9QS0NFX0VORFBPSU5UIiwiY29kZVZlcmlmaWVyIiwiY2FsbCIsImdldFBlcnNpc3RlZENvZGVWZXJpZmllciIsInBlcnNpc3RlZFN0YXRlIiwiZ2V0UGVyc2lzdGVkU3RhdGUiLCJwZXJzaXN0U3RhdGUiLCJwZXJzaXN0Q29kZVZlcmlmaWVyIiwibG9jYXRpb24iLCJ3aW5kb3dTZXJ2aWNlIiwiZ2V0TG9jYXRpb24iLCJzY29wZSIsImNvZGVfdmVyaWZpZXIiLCJyZWRpcmVjdF91cmkiLCJvcmlnaW4iLCJnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4iLCJvYXV0aFRva2VuUGFyYW0iLCJyZWZyZXNoX3Rva2VuIiwiYXBwZW5kIiwiZXJyb3JEYXRhIiwic3RhdHVzIiwiSFRUUF9TVEFUVVNfQ09ERSIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImlzRXhwaXJpbmdTb29uQWxlcnRWaXNpYmxlIiwicmVmcmVzaExvY2siLCJwcmV2aW91c1JlZnJlc2hUb2tlbiIsInJlc2V0UmVmcmVzaCIsInVuZGVmaW5lZCIsInBlcmZvcm1Ub2tlblJlZnJlc2giLCJvYXV0aFRva2VuIiwicmVmcmVzaFN1Y2Nlc3MiLCJBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUiLCJUT0tFTl9SRUZSRVNIX1NVQ0NFRURFRCIsInJlZnJlc2hGYWlsZWQiLCJBVVRIX0FDVElPTl9UWVBFIiwiVE9LRU5fUkVGUkVTSF9GQUlMRUQiLCJnZXRQZXJzaXN0ZWRUb2tlbiIsImRlYnVnIiwib3JpZ2luYWxBY2Nlc3NUb2tlbiIsImFjY2Vzc190b2tlbiIsInJldHJ5RGVsYXkiLCJkZWxheSIsIm9hdXRoVG9rZW5SZXNwb25zZSIsInBlcnNpc3RUb2tlbiIsImFsbCIsImxvZ091dCIsIkFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRSIsIkxPR19PVVQiLCJ0b2tlbkV4cGlyZWQiLCJjYXVnaHRFcnJvciIsImVycm9yIiwiY29uc3RydWN0RXJyb3JGcm9tQ2F1Z2h0RXJyb3IiLCJsb2dpbkZsb3ciLCJtb2RlbEZldGNoUmVxdWVzdEFjdGlvbiIsImNyZWRlbnRpYWxzTG9naW5GbG93Iiwibm9SZXRyeSIsImNhc1YxTG9naW5GbG93IiwibG9jYWxMb2dpbkZsb3ciLCJjYXNUaWNrZXRMb2dpbkZsb3ciLCJ0aWNrZXQiLCJzZXJ2aWNlIiwicXVlcnlQYXJhbXMiLCJwa2NlTG9naW5GbG93IiwiXyIsInV1aWR2NCIsInNoYTI1NkNvZGVWZXJpZmllciIsInNoYTI1NkFzeW5jIiwiY29kZUNoYWxsZW5nZSIsImJhc2U2NFVybEVuY29kZSIsInBrY2VBdXRoUmVkaXJlY3RVUkwiLCJyZXNwb25zZV90eXBlIiwiY29kZV9jaGFsbGVuZ2UiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJyZXBsYWNlIiwiaGFuZGxlQXV0aEZhaWx1cmUiLCJVTkFVVEhPUklaRUQiLCJpc1Rva2VuRXhwaXJlZCIsImlzVG9rZW5SZWZyZXNoYWJsZSIsImlzVXNlcklkbGUiLCJnZXRPQXV0aFRva2VuIiwiZXhwaXJlc1V0YyIsIm1vbWVudCIsInV0YyIsIm5vd1V0YyIsImdldFNlcnZlck5vd1V0YyIsInRvSVNPU3RyaW5nIiwiaXNFeHBpcmluZ1Nvb24iLCJkaWZmIiwiU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRCIsInJlc2V0RGF0YSIsImNsZWFyVXNlckRhdGEiLCJNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFIiwiY2xlYXJQZXJzaXN0ZW50VG9rZW4iLCJyZWZyZXNoTG9vcCIsImlzRXhwaXJlZCIsImlzUmVmcmVzaGFibGUiLCJ0aW1lVW50aWxFeHBpcmVzIiwiZXhwaXJlc1Nvb25VdGMiLCJzdWJ0cmFjdCIsIm1heERlbGF5IiwiZXhwaXJlc19pbiIsImV4cGlyZXNTb29uRGVsYXkiLCJNYXRoIiwibWluIiwiZWxhcHNlZCIsIkVYUElSSU5HX1NPT04iLCJleHRlbnNpb25SZXF1ZXN0ZWQiLCJFWFRFTlNJT05fUkVRVUVTVEVEIiwiYXV0aFNhZ2EiLCJhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW0iLCJ0aWNrZXRQcm92aWRlclNlcnZpY2UiLCJjb2RlUHJvdmlkZXJTZXJ2aWNlIiwiZXJyb3JIYW5kbGVyUGFyYW0iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJnZXRMb2dnZXIiLCJjYXNUaWNrZXQiLCJnZXRUaWNrZXQiLCJnZXRBcHBTZXJ2aWNlTmFtZSIsImhhc0Nhc1RpY2tldCIsImdldENvZGUiLCJnZXRTdGF0ZSIsInB1cmR1ZUlkZW50aXR5UHJvdmlkZXIiLCJnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uIiwiaXNQdXJkdWVBdXRvTG9naW5SZXF1ZXN0ZWQiLCJnZXRJc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCIsInBlcnNpc3RJc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCIsInJldHVyblVybCIsImdldFJldHVyblVybCIsInBlcnNpc3RSZXR1cm5VcmwiLCJwYXRobmFtZSIsImxvZ2luVXJsIiwicGVyc2lzdElkZW50aXR5UHJvdmlkZXIiLCJyZW1vdmVUaWNrZXQiLCJyZW1vdmVDb2RlQW5kU3RhdGUiLCJBVVRIX1RPS0VOX0FDVElPTl9UWVBFIiwiQVVUSF9JTklUSUFMSVpFRCIsInRha2VFdmVyeSIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiVFJZX0ZFVENIX0ZBSUxFRCIsImNhc1YxQWN0aW9uIiwibG9jYWxMb2dpbkFjdGlvbiIsInBrY2VMb2dpbkFjdGlvbiIsIkFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUiLCJDQVNfVjFfTE9HSU5fUkVRVUVTVCIsIkFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkxPQ0FMX0xPR0lOX1JFUVVFU1QiLCJBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIlBLQ0VfTE9HSU5fUkVRVUVTVCIsIkxPR0lOX1JFUVVFU1RFRCIsImxvZ2luU3VjY2VzcyIsIkdFVF9UT0tFTl9TVUNDRUVERUQiLCJyZWZyZXNoTG9vcFRhc2siLCJmb3JrIiwiY2FuY2VsIiwiTE9HSU5fRkFJTEVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3NhZ2FzL2F1dGhTYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhZ2FJdGVyYXRvciwgVGFzayB9IGZyb20gJ0ByZWR1eC1zYWdhL2NvcmUnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xuaW1wb3J0IHsgYWxsLCBjYWxsLCBjYW5jZWwsIGRlbGF5LCBmb3JrLCBwdXQsIHJhY2UsIHRha2UsIHRha2VFdmVyeSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cydcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyBnZXRBcHBDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyB3aW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2luZG93U2VydmljZSdcbmltcG9ydCB7XG5cdEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UsXG5cdENvZGVQcm92aWRlclNlcnZpY2UsXG5cdEVycm9ySGFuZGxlcixcblx0SFRUUF9TVEFUVVNfQ09ERSxcblx0T0F1dGhUb2tlbixcblx0T0F1dGhUb2tlblJlc3BvbnNlLFxuXHRUaWNrZXRQcm92aWRlclNlcnZpY2UsXG5cdFRva2VuQWNjZXNzRnVuY3Rpb25cbn0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uLCBpc1Rva2VuRXhwaXJlZCwgaXNUb2tlblJlZnJlc2hhYmxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXV0aCdcbmltcG9ydCB7IGdldFNlcnZlck5vd1V0YyB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnXG5pbXBvcnQgeyBjb25zdHJ1Y3RFcnJvckZyb21DYXVnaHRFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vycm9yJ1xuaW1wb3J0IHsgZ2V0TG9nZ2VyLCBMb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInXG5pbXBvcnQgeyBiYXNlNjRVcmxFbmNvZGUsIHNoYTI1NkFzeW5jIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXJsJ1xuaW1wb3J0IHsgaXNVc2VySWRsZSB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZXJBY3Rpdml0eSdcbmltcG9ydCB7XG5cdEFVVEhfQUNUSU9OX1RZUEUsXG5cdEFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdEFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLFxuXHRBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9UT0tFTl9BQ1RJT05fVFlQRSxcblx0QVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLFxuXHRBdXRoQWN0aW9uLFxuXHRBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbixcblx0QXV0aExvZ091dEFjdGlvbixcblx0QXV0aFBLQ0VMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhUb2tlbkFjdGlvbixcblx0QXV0aFRva2VuU3VjY2Vzc0FjdGlvbixcblx0aXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24sXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvbixcblx0TU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsXG5cdE1vZGVsRmV0Y2hFcnJvckFjdGlvbixcblx0TW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24sXG5cdE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24sXG5cdE1vZGVsUmVtb3ZlS2V5QWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnXG5cbi8vI3JlZ2lvbiBIZWxwZXJzXG5cbmV4cG9ydCBjb25zdCBtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cblx0aXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gbW9kZWxOYW1lXG5cbmV4cG9ydCBjb25zdCB0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XG5cdG1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoaW5jb21pbmdBY3Rpb24sIG1vZGVsTmFtZSlcblxuZXhwb3J0IGNvbnN0IG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cblx0aXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubW9kZWxQYXRoID09PSBtb2RlbE5hbWVcblxuZXhwb3J0IGNvbnN0IHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XG5cdG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGluY29taW5nQWN0aW9uLCBtb2RlbE5hbWUpXG5cbi8vI2VuZHJlZ2lvbiBIZWxwZXJzXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyID0gKCkgPT4ge1xuXHRyZXR1cm5cbn1cblxubGV0IGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2U6IEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VcbmxldCBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclxubGV0IGxvZ2dlcjogTG9nZ2VyXG5cbmV4cG9ydCBmdW5jdGlvbiogZ2V0VG9rZW5Gcm9tQ29kZShjb2RlOiBzdHJpbmcpOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQgfHwgIWFwcENvbmZpZy5DTElFTlRfU0VDUkVUKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDTElFTlRfSUQgYW5kIENMSUVOVF9TRUNSRVQgYXJlIHJlcXVpcmVkIGluIEFwcENvbmZpZycpXG5cdH1cblx0Y29uc3QgZ2V0VG9rZW5Nb2RlbE5hbWUgPSAnZ2V0VG9rZW4nXG5cdGNvbnN0IGZvcm1Cb2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG5cdFx0Z3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG5cdFx0Y2xpZW50X2lkOiBhcHBDb25maWcuQ0xJRU5UX0lELFxuXHRcdGNsaWVudF9zZWNyZXQ6IGFwcENvbmZpZy5DTElFTlRfU0VDUkVULFxuXHRcdGNvZGU6IGNvZGVcblx0fSlcblx0eWllbGQgcHV0PE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uPih7XG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXG5cdFx0Ym9keTogZm9ybUJvZHkudG9TdHJpbmcoKSxcblx0XHRub1N0b3JlOiB0cnVlXG5cdH0pXG5cdGNvbnN0IHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcblx0XHRmZXRjaEVycm9yQWN0aW9uXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcblx0fSlcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24gfHwgIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbUNvZGVBbmRTdGF0ZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9FTkRQT0lOVCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignQ0xJRU5UX0lELCBPQVVUSF9QS0NFX1NDT1BFLCBhbmQgT0FVVEhfUEtDRV9FTkRQT0lOVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXG5cdC8vIHZhbGlkYXRlIHBlcnNpc3RlZCB2YWx1ZXNcblx0Y29uc3QgY29kZVZlcmlmaWVyID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZENvZGVWZXJpZmllcilcblx0aWYgKCFjb2RlVmVyaWZpZXIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY29kZV92ZXJpZmllcicpXG5cdH1cblx0Y29uc3QgcGVyc2lzdGVkU3RhdGUgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkU3RhdGUpXG5cdGlmIChwZXJzaXN0ZWRTdGF0ZSAhPT0gc3RhdGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdGUnKVxuXHR9XG5cdC8vIGNsZWFyIHBlcnNpc3RlZCB2YWx1ZXNcblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RTdGF0ZSwgbnVsbClcblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RDb2RlVmVyaWZpZXIsIG51bGwpXG5cblx0Ly8gZGlzcGF0Y2ggcmVxdWVzdFxuXHRjb25zdCBnZXRUb2tlbk1vZGVsTmFtZSA9ICdnZXRUb2tlbidcblx0Y29uc3QgbG9jYXRpb24gPSB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKClcblx0Y29uc3QgZm9ybUJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcblx0XHRncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXG5cdFx0c2NvcGU6IGFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFLFxuXHRcdGNvZGVfdmVyaWZpZXI6IGNvZGVWZXJpZmllcixcblx0XHRyZWRpcmVjdF91cmk6IGxvY2F0aW9uLm9yaWdpbixcblx0XHRjb2RlOiBjb2RlXG5cdH0pXG5cdHlpZWxkIHB1dDxNb2RlbEZldGNoUmVxdWVzdEFjdGlvbj4oe1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWU6IGdldFRva2VuTW9kZWxOYW1lLFxuXHRcdGJvZHk6IGZvcm1Cb2R5LnRvU3RyaW5nKCksXG5cdFx0bm9TdG9yZTogdHJ1ZVxuXHR9KVxuXHRjb25zdCB7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKSxcblx0XHRmZXRjaEVycm9yQWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZChnZXRUb2tlbk1vZGVsTmFtZSkpXG5cdH0pXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uIHx8ICFmZXRjaFJlc3VsdEFjdGlvbj8uZGF0YSkge1xuXHRcdHJldHVybiBudWxsXG5cdH1cblx0cmV0dXJuIGZldGNoUmVzdWx0QWN0aW9uLmRhdGFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4ob2F1dGhUb2tlblBhcmFtOiBPQXV0aFRva2VuKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0aWYgKCFhcHBDb25maWcuQ0xJRU5UX0lEKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDTElFTlRfSUQgaXMgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXHRpZiAoIW9hdXRoVG9rZW5QYXJhbS5yZWZyZXNoX3Rva2VuKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGByZWZyZXNoX3Rva2VuIGlzIHJlcXVpcmVkYClcblx0fVxuXG5cdGNvbnN0IGdldFRva2VuTW9kZWxOYW1lID0gJ2dldFRva2VuJ1xuXHRjb25zdCBmb3JtQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuXHRcdGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXG5cdFx0cmVmcmVzaF90b2tlbjogb2F1dGhUb2tlblBhcmFtLnJlZnJlc2hfdG9rZW5cblx0fSlcblx0Ly8gY3JlYXRlIHRoZSBmb3JtIGJvZHkgYmFzZWQgb24gaWYgdXNpbmcgYSBjbGllbnRfc2VjcmV0OiB0cmFkaXRpb25hbCBPQXV0aCB2cy4gUEtDRSBmbG93XG5cdGlmIChhcHBDb25maWcuQ0xJRU5UX1NFQ1JFVCkge1xuXHRcdGZvcm1Cb2R5LmFwcGVuZCgnY2xpZW50X3NlY3JldCcsIGFwcENvbmZpZy5DTElFTlRfU0VDUkVUKVxuXHR9XG5cdHlpZWxkIHB1dDxNb2RlbEZldGNoUmVxdWVzdEFjdGlvbj4oe1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWU6IGdldFRva2VuTW9kZWxOYW1lLFxuXHRcdGJvZHk6IGZvcm1Cb2R5LnRvU3RyaW5nKCksXG5cdFx0bm9TdG9yZTogdHJ1ZVxuXHR9KVxuXHRjb25zdCB7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKSxcblx0XHRmZXRjaEVycm9yQWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZChnZXRUb2tlbk1vZGVsTmFtZSkpXG5cdH0pXG5cdC8vIGFueSBlcnJvciByZXNwb25zZVxuXHRpZiAoZmV0Y2hFcnJvckFjdGlvbikge1xuXHRcdC8vIGlnbm9yZSBzZXJ2ZXIgZXJyb3JzXG5cdFx0aWYgKFxuXHRcdFx0ZmV0Y2hFcnJvckFjdGlvbi5lcnJvckRhdGE/LnN0YXR1cyAmJlxuXHRcdFx0ZmV0Y2hFcnJvckFjdGlvbi5lcnJvckRhdGEuc3RhdHVzID49IEhUVFBfU1RBVFVTX0NPREUuSU5URVJOQUxfU0VSVkVSX0VSUk9SXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gb2F1dGhUb2tlblBhcmFtXG5cdFx0fVxuXHRcdHJldHVybiBudWxsXG5cdH1cblx0Ly8gZm9yIHNvbWUgcmVhc29uIHRoZSByZXNwb25zZSBoYWQgbm8gYm9keVxuXHRpZiAoIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxufVxuXG5sZXQgaXNFeHBpcmluZ1Nvb25BbGVydFZpc2libGU6IGJvb2xlYW5cbmxldCByZWZyZXNoTG9jazogYm9vbGVhblxubGV0IHByZXZpb3VzUmVmcmVzaFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0UmVmcmVzaCgpIHtcblx0aXNFeHBpcmluZ1Nvb25BbGVydFZpc2libGUgPSBmYWxzZVxuXHRyZWZyZXNoTG9jayA9IGZhbHNlXG5cdHByZXZpb3VzUmVmcmVzaFRva2VuID0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogcGVyZm9ybVRva2VuUmVmcmVzaChvYXV0aFRva2VuOiBPQXV0aFRva2VuKTogU2FnYUl0ZXJhdG9yIHtcblx0aWYgKHJlZnJlc2hMb2NrKSB7XG5cdFx0Ly8gYWxyZWFkeSByZWZyZXNoaW5nLCB3YWl0IGZvciB0aGUgY3VycmVudCByZWZyZXNoIHRvIHN1Y2NlZWQgb3IgZmFpbFxuXHRcdHlpZWxkIHJhY2Uoe1xuXHRcdFx0cmVmcmVzaFN1Y2Nlc3M6IHRha2UoQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLlRPS0VOX1JFRlJFU0hfU1VDQ0VFREVEKSxcblx0XHRcdHJlZnJlc2hGYWlsZWQ6IHRha2UoQVVUSF9BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX0ZBSUxFRClcblx0XHR9KVxuXHRcdC8vIHJldHVybiB0aGUgY3VycmVudCBwZXJzaXN0ZWQgdG9rZW5cblx0XHRyZXR1cm4geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHR9XG5cdGxvZ2dlci5kZWJ1ZygnT0F1dGggdG9rZW4gcmVmcmVzaGluZy4uLicpXG5cdHJlZnJlc2hMb2NrID0gdHJ1ZVxuXHR0cnkge1xuXHRcdC8vIG9hdXRoVG9rZW4gd2lsbCBiZSBzZXQgdG86XG5cdFx0Ly8gMS4gbmV3IHRva2VuIChzdWNjZXNzKVxuXHRcdC8vIDIuIHNhbWUgdG9rZW4gKGZhaWxlZCBmcm9tIHRpbWVvdXQgb3Igc2VydmVyIGVycm9yKVxuXHRcdC8vIDMuIG51bGwgKGZhaWwpXG5cdFx0Y29uc3Qgb3JpZ2luYWxBY2Nlc3NUb2tlbiA9IG9hdXRoVG9rZW4uYWNjZXNzX3Rva2VuXG5cdFx0Ly8gaWYgdXNpbmcgdGhlIHNhbWUgcmVmcmVzaF90b2tlbiwgdGhlIHByZXZpb3VzIHJlZnJlc2ggZGlkIG5vdCBzdWNjZWVkIChlLmcuIHNlcnZlciBlcnJvciBvciB0aW1lb3V0KVxuXHRcdC8vIGJhY2sgb2ZmIGJlZm9yZSByZXRyeWluZyBzbyB3ZSBkb24ndCBoYW1tZXIgdGhlIHNlcnZlciB3aGlsZSBpdCBpcyB1bmF2YWlsYWJsZVxuXHRcdGlmIChvYXV0aFRva2VuLnJlZnJlc2hfdG9rZW4gPT09IHByZXZpb3VzUmVmcmVzaFRva2VuKSB7XG5cdFx0XHRjb25zdCByZXRyeURlbGF5ID0gNTAwMFxuXHRcdFx0bG9nZ2VyLmRlYnVnKGBPQXV0aCB0b2tlbiByZWZyZXNoaW5nIHdpdGggc2FtZSB0b2tlbiwgYmFja2luZyBvZmYgJHtyZXRyeURlbGF5fSBtc2ApXG5cdFx0XHR5aWVsZCBkZWxheShyZXRyeURlbGF5KVxuXHRcdH1cblx0XHRwcmV2aW91c1JlZnJlc2hUb2tlbiA9IG9hdXRoVG9rZW4ucmVmcmVzaF90b2tlblxuXHRcdGNvbnN0IG9hdXRoVG9rZW5SZXNwb25zZTogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4sIG9hdXRoVG9rZW4pXG5cdFx0aWYgKCEhb2F1dGhUb2tlblJlc3BvbnNlICYmIG9hdXRoVG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4gIT09IG9yaWdpbmFsQWNjZXNzVG9rZW4pIHtcblx0XHRcdGxvZ2dlci5kZWJ1ZygnT0F1dGggdG9rZW4gcmVmcmVzaGVkJylcblx0XHRcdHByZXZpb3VzUmVmcmVzaFRva2VuID0gdW5kZWZpbmVkXG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBvYXV0aFRva2VuUmVzcG9uc2UpXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aFRva2VuU3VjY2Vzc0FjdGlvbj4oe1xuXHRcdFx0XHR0eXBlOiBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQsXG5cdFx0XHRcdG9hdXRoVG9rZW46IG9hdXRoVG9rZW5SZXNwb25zZVxuXHRcdFx0fSlcblx0XHR9IGVsc2UgaWYgKG9hdXRoVG9rZW5SZXNwb25zZSA9PT0gbnVsbCkge1xuXHRcdFx0bG9nZ2VyLmRlYnVnKCdPQXV0aCB0b2tlbiBmYWlsZWQgdG8gcmVmcmVzaCcpXG5cdFx0XHQvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gb3V0c2lkZSBvZiB0aGUgdG9rZW4gaGF2aW5nIGJlZW4gcmV2b2tlZCBvbiB0aGUgc2VydmVyIHNpZGVcblx0XHRcdHlpZWxkIGFsbCh7XG5cdFx0XHRcdHJlZnJlc2hGYWlsZWQ6IHB1dDxBdXRoQWN0aW9uPih7IHR5cGU6IEFVVEhfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9GQUlMRUQgfSksXG5cdFx0XHRcdGxvZ091dDogcHV0PEF1dGhMb2dPdXRBY3Rpb24+KHsgdHlwZTogQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQsIHRva2VuRXhwaXJlZDogdHJ1ZSB9KVxuXHRcdFx0fSlcblx0XHR9XG5cdFx0cmV0dXJuIG9hdXRoVG9rZW5SZXNwb25zZVxuXHR9IGNhdGNoIChjYXVnaHRFcnJvcjogdW5rbm93bikge1xuXHRcdGNvbnN0IGVycm9yID0gY29uc3RydWN0RXJyb3JGcm9tQ2F1Z2h0RXJyb3IoY2F1Z2h0RXJyb3IsICdQZXJmb3JtVG9rZW5SZWZyZXNoRXJyb3InKVxuXHRcdGxvZ2dlci5lcnJvcihlcnJvcilcblx0XHRlcnJvckhhbmRsZXIoZXJyb3IpXG5cdH0gZmluYWxseSB7XG5cdFx0cmVmcmVzaExvY2sgPSBmYWxzZVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogbG9naW5GbG93KG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdHlpZWxkIHB1dChtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcblx0Y29uc3Qge1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uLFxuXHRcdGZldGNoRXJyb3JBY3Rpb25cblx0fTogeyBmZXRjaFJlc3VsdEFjdGlvbj86IE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb247IGZldGNoRXJyb3JBY3Rpb24/OiBNb2RlbEZldGNoRXJyb3JBY3Rpb24gfSA9IHlpZWxkIHJhY2Uoe1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkKG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLm1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLm1vZGVsTmFtZSkpXG5cdH0pXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRjb25zdCBjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBmZXRjaFJlc3VsdEFjdGlvbj8uZGF0YT8uY29kZVxuXHRpZiAoIWNvZGUpIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdHJldHVybiB5aWVsZCBjYWxsKGdldFRva2VuRnJvbUNvZGUsIGNvZGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY3JlZGVudGlhbHNMb2dpbkZsb3coXG5cdGFjdGlvbjogQXV0aENhc1YxTG9naW5SZXF1ZXN0QWN0aW9uIHwgQXV0aExvY2FsTG9naW5SZXF1ZXN0QWN0aW9uLFxuXHRtb2RlbE5hbWU6IHN0cmluZ1xuKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb246IE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uID0ge1xuXHRcdC8vIHNldCByZXF1aXJlZCBkZWZhdWx0c1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWUsXG5cdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHQvLyBmb3JjZSBubyByZXRyeVxuXHRcdG5vUmV0cnk6IHRydWUsXG5cdFx0Ly8gcGFzcyB0aHJ1IGJvZHlcblx0XHRib2R5OiBhY3Rpb24uYm9keVxuXHR9XG5cdHJldHVybiB5aWVsZCBjYWxsKGxvZ2luRmxvdywgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2FzVjFMb2dpbkZsb3coYWN0aW9uOiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRyZXR1cm4geWllbGQgY2FsbChjcmVkZW50aWFsc0xvZ2luRmxvdywgYWN0aW9uLCAnY29kZUZyb21DYXNWMScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogbG9jYWxMb2dpbkZsb3coYWN0aW9uOiBBdXRoTG9jYWxMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRyZXR1cm4geWllbGQgY2FsbChjcmVkZW50aWFsc0xvZ2luRmxvdywgYWN0aW9uLCAnY29kZUZyb21Mb2NhbENyZWRlbnRpYWxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjYXNUaWNrZXRMb2dpbkZsb3codGlja2V0OiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZyk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbiA9IHtcblx0XHR0eXBlOiBNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFLkZFVENIX1JFUVVFU1QsXG5cdFx0bW9kZWxOYW1lOiAnY29kZUZyb21DYXNUaWNrZXQnLFxuXHRcdG5vU3RvcmU6IHRydWUsXG5cdFx0cXVlcnlQYXJhbXM6IHtcblx0XHRcdHRpY2tldCxcblx0XHRcdHNlcnZpY2Vcblx0XHR9XG5cdH1cblx0cmV0dXJuIHlpZWxkIGNhbGwobG9naW5GbG93LCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBwa2NlTG9naW5GbG93KF86IEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0aWYgKCFhcHBDb25maWcuQ0xJRU5UX0lEIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9TQ09QRSB8fCAhYXBwQ29uZmlnLk9BVVRIX1BLQ0VfRU5EUE9JTlQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCwgT0FVVEhfUEtDRV9TQ09QRSwgYW5kIE9BVVRIX1BLQ0VfRU5EUE9JTlQgYXJlIHJlcXVpcmVkIGluIEFwcENvbmZpZycpXG5cdH1cblxuXHQvLyBHZW5lcmF0ZSBzdGF0ZSBhbmQgY29kZSB2ZXJpZmllciB2YWx1ZXNcblx0Y29uc3Qgc3RhdGUgPSB1dWlkdjQoKVxuXHRjb25zdCBjb2RlVmVyaWZpZXIgPSB1dWlkdjQoKVxuXHRjb25zdCBzaGEyNTZDb2RlVmVyaWZpZXIgPSB5aWVsZCBjYWxsKHNoYTI1NkFzeW5jLCBjb2RlVmVyaWZpZXIpXG5cdGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSB5aWVsZCBjYWxsKGJhc2U2NFVybEVuY29kZSwgc2hhMjU2Q29kZVZlcmlmaWVyKVxuXG5cdC8vIFBlcnNpc3Qgc3RhdGUgYW5kIGNvZGUgdmVyaWZpZXIgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdXNlIGFmdGVyIGNvZGUgZmxvdyByZWRpcmVjdC5cblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RTdGF0ZSwgc3RhdGUpXG5cdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0Q29kZVZlcmlmaWVyLCBjb2RlVmVyaWZpZXIpXG5cblx0Ly8gUmVkaXJlY3QgdG8gQlMgY29kZSBmbG93IGF1dGggZW5kcG9pbnQgKHdoaWNoIHdpbGwgcmVkaXJlY3QgYmFjayBoZXJlKVxuXHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxuXHRjb25zdCBwa2NlQXV0aFJlZGlyZWN0VVJMID0gYCR7YXBwQ29uZmlnLk9BVVRIX1BLQ0VfRU5EUE9JTlR9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7XG5cdFx0cmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcblx0XHRzdGF0ZTogc3RhdGUsXG5cdFx0c2NvcGU6IGFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFLFxuXHRcdGNvZGVfY2hhbGxlbmdlOiBjb2RlQ2hhbGxlbmdlLFxuXHRcdGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxuXHRcdHJlZGlyZWN0X3VyaTogbG9jYXRpb24ub3JpZ2luXG5cdH0pfWBcblx0eWllbGQgY2FsbCh3aW5kb3dTZXJ2aWNlLnJlcGxhY2UsIHBrY2VBdXRoUmVkaXJlY3RVUkwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaGFuZGxlQXV0aEZhaWx1cmUoYWN0aW9uOiBNb2RlbEZldGNoRXJyb3JBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRpZiAoIWFjdGlvbi5lcnJvckRhdGEgfHwgYWN0aW9uLmVycm9yRGF0YS5zdGF0dXMgIT09IEhUVFBfU1RBVFVTX0NPREUuVU5BVVRIT1JJWkVEKSByZXR1cm5cblx0Y29uc3Qgb2F1dGhUb2tlbjogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHRpZiAoIWlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pKSByZXR1cm5cblx0Ly8gaWYgYSByZXF1ZXN0IHJlY2VpdmVzIGEgNDAxLCB0aGUgdG9rZW4gaXMgZXhwaXJlZCBhbmQgY2Fubm90IHJlZnJlc2gsIHRyaWdnZXIgZXhwaXJlZCBsb2cgb3V0XG5cdC8vIHRoaXMgaXMgYSBmYWlsLXNhZmUgaW4gY2FzZSB0aGUgYHJlZnJlc2hMb29wYCBoYXMgZmFpbGVkXG5cdGlmICghaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0eWllbGQgcHV0PEF1dGhMb2dPdXRBY3Rpb24+KHsgdHlwZTogQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQsIHRva2VuRXhwaXJlZDogdHJ1ZSB9KVxuXHRcdHJldHVyblxuXHR9XG5cdC8vIGlmIHRva2VuIGlzIHJlZnJlc2hhYmxlLCB3aXRoaW4gMzAgc2Vjb25kcyBvZiBleHBpcmF0aW9uLCBhbmQgdXNlciBpcyBub3QgaWRsZSwgYXV0by1yZWZyZXNoXG5cdC8vIHRoaXMgaXMgYSBmYWlsLXNhZmUgaW4gY2FzZSB0aGUgYHJlZnJlc2hMb29wYCBoYXMgZmFpbGVkXG5cdGlmICghaXNVc2VySWRsZSgpKSB7XG5cdFx0bG9nZ2VyLmRlYnVnKCdoYW5kbGVBdXRoRmFpbHVyZSB0cmlnZ2VyIGF1dG8tcmVmcmVzaCcpXG5cdFx0eWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHR9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRPQXV0aFRva2VuOiBUb2tlbkFjY2Vzc0Z1bmN0aW9uID0gZnVuY3Rpb24qICgpIHtcblx0bGV0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcblx0aWYgKCFvYXV0aFRva2VuPy5bJy5leHBpcmVzJ10pIHJldHVybiBvYXV0aFRva2VuXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGNvbnN0IGV4cGlyZXNVdGMgPSBtb21lbnQudXRjKG9hdXRoVG9rZW5bJy5leHBpcmVzJ10pXG5cdGNvbnN0IG5vd1V0YyA9IG1vbWVudC51dGMoZ2V0U2VydmVyTm93VXRjKCkudG9JU09TdHJpbmcoKSlcblx0Y29uc3QgaXNFeHBpcmluZ1Nvb24gPSBleHBpcmVzVXRjLmRpZmYobm93VXRjKSA8PSBhcHBDb25maWcuU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRFxuXHQvLyBpZiB0b2tlbiBpcyByZWZyZXNoYWJsZSwgd2l0aGluIHJlZnJlc2ggdGhyZXNob2xkLCB1c2VyIGlzIG5vdCBpZGxlLCBhbmQgbm90IGRpc3BsYXlpbmcgYWxlcnQsIHRoZW4gYXV0by1yZWZyZXNoXG5cdC8vIHRoaXMgaXMgYSBmYWlsLXNhZmUgaW4gY2FzZSB0aGUgYHJlZnJlc2hMb29wYCBoYXMgZmFpbGVkXG5cdGlmIChpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikgJiYgaXNFeHBpcmluZ1Nvb24gJiYgIWlzVXNlcklkbGUoKSAmJiAhaXNFeHBpcmluZ1Nvb25BbGVydFZpc2libGUpIHtcblx0XHRsb2dnZXIuZGVidWcoJ2dldE9BdXRoVG9rZW4gdHJpZ2dlciBhdXRvLXJlZnJlc2gnKVxuXHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdH1cblx0cmV0dXJuIG9hdXRoVG9rZW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiByZXNldERhdGEoKTogU2FnYUl0ZXJhdG9yIHtcblx0eWllbGQgYWxsKHtcblx0XHRjbGVhclVzZXJEYXRhOiBwdXQ8TW9kZWxSZW1vdmVLZXlBY3Rpb24+KHsgdHlwZTogTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSwgbW9kZWxQYXRoOiAndXNlcicgfSksXG5cdFx0Y2xlYXJQZXJzaXN0ZW50VG9rZW46IGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG51bGwpLFxuXHRcdHJlc2V0UmVmcmVzaDogY2FsbChyZXNldFJlZnJlc2gpXG5cdH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogcmVmcmVzaExvb3AoKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0bGV0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZVxuXHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGluaXQnKVxuXHR3aGlsZSAodHJ1ZSkge1xuXHRcdGlzRXhwaXJpbmdTb29uQWxlcnRWaXNpYmxlID0gZmFsc2Vcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXG5cdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBzdGFydCcsIHtcblx0XHRcdG9hdXRoVG9rZW4sXG5cdFx0XHRpc0V4cGlyZWQ6IGlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pLFxuXHRcdFx0aXNSZWZyZXNoYWJsZTogaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pXG5cdFx0fSlcblxuXHRcdGlmICghaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0XHRpZiAoaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHtcblx0XHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBicmVhazogdG9rZW4gZXhwaXJlZCBhbmQgbm90IHJlZnJlc2hhYmxlLCB0cmlnZ2VyIGV4cGlyZWQgbG9nIG91dCcpXG5cdFx0XHRcdC8vIHVzZXIgZmFpbGVkIHRvIHJlcXVlc3QgYW4gZXh0ZW5zaW9uIGFuZCB0b2tlbiBpcyBleHBpcmVkXG5cdFx0XHRcdHlpZWxkIHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcblx0XHRcdFx0Ly8gYnJlYWsgbG9vcFxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBicmVhazogdG9rZW4gbm90IHJlZnJlc2hhYmxlJylcblx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdFx0Y29uc3QgZXhwaXJlc1V0YyA9IG1vbWVudC51dGMob2F1dGhUb2tlblsnLmV4cGlyZXMnXSlcblx0XHRjb25zdCBub3dVdGMgPSBtb21lbnQudXRjKGdldFNlcnZlck5vd1V0YygpLnRvSVNPU3RyaW5nKCkpXG5cdFx0Y29uc3QgdGltZVVudGlsRXhwaXJlcyA9IGV4cGlyZXNVdGMuZGlmZihub3dVdGMpXG5cdFx0Y29uc3QgaXNFeHBpcmluZ1Nvb24gPSB0aW1lVW50aWxFeHBpcmVzIDw9IGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xEXG5cblx0XHRpZiAoIWlzRXhwaXJpbmdTb29uKSB7XG5cdFx0XHRjb25zdCBleHBpcmVzU29vblV0YyA9IGV4cGlyZXNVdGMuc3VidHJhY3QoYXBwQ29uZmlnLlNFU1NJT05fUkVGUkVTSF9USFJFU0hPTEQsICdtaWxsaXNlY29uZHMnKVxuXHRcdFx0Ly8gdXNlIGEgbWF4IGRlbGF5LCBlLmcuIDEgbWluIGZvciA2MCBtaW4gdG9rZW4sIDEgc2VjIGZvciA2MCBzZWMgdG9rZW5cblx0XHRcdC8vIHRvIGhlbHAgcmVkdWNlIHRpbWVyIGRyaWZ0IHdoZW4gdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kXG5cdFx0XHRjb25zdCBtYXhEZWxheSA9IChvYXV0aFRva2VuLmV4cGlyZXNfaW4gKiAxMDAwKSAvIDYwXG5cdFx0XHRjb25zdCBleHBpcmVzU29vbkRlbGF5ID0gTWF0aC5taW4obWF4RGVsYXksIGV4cGlyZXNTb29uVXRjLmRpZmYobm93VXRjKSlcblx0XHRcdGxvZ2dlci5kZWJ1ZyhgcmVmcmVzaExvb3AgZGVsYXk6IHdhaXQgZm9yIHRva2VuIHRvIGJlIGNsb3NlIHRvIGV4cGlyYXRpb24sIGRlbGF5aW5nICR7ZXhwaXJlc1Nvb25EZWxheX0gbXNgKVxuXHRcdFx0eWllbGQgZGVsYXkoZXhwaXJlc1Nvb25EZWxheSlcblx0XHRcdC8vIHJlc3RhcnQgbG9vcCB0byByZWNoZWNrIHRva2VuXG5cdFx0XHRjb25zdCBlbGFwc2VkID0gbW9tZW50LnV0YyhnZXRTZXJ2ZXJOb3dVdGMoKS50b0lTT1N0cmluZygpKS5kaWZmKG5vd1V0Yylcblx0XHRcdGxvZ2dlci5kZWJ1ZyhgcmVmcmVzaExvb3AgZGVsYXk6IGZpbmlzaGVkIGFmdGVyICR7ZWxhcHNlZH0gbXNgKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cblx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGV4cGlyaW5nIHNvb24nKVxuXG5cdFx0Ly8gTk9URTogdXNlciBjYW4gbmV2ZXIgYmUgaWRsZSBvbiBMT0NBTCwgc28gbG9jYWwgc2Vzc2lvbnMgd2lsbCBzdGF5IGFsaXZlIGluZGVmaW5pdGVseVxuXHRcdGlmICghaXNVc2VySWRsZSgpKSB7XG5cdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIHVzZXIgbm90IGlkbGUsIHRyaWdnZXIgYXV0by1yZWZyZXNoJylcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgcmVmcmVzaCB0b2tlbiB0byBleHRlbmQgc2Vzc2lvbiBpZiB1c2VyIGlzIG5vdCBpZGxlXG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cblx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIHVzZXIgaWRsZSwgdHJpZ2dlciBleHBpcmluZyBzb29uJylcblxuXHRcdC8vIGlmIHVzZXIgaXMgaWRsZSBhbmQgdG9rZW4gaXMgZXhwaXJpbmcgc29vbiwgc2VuZCBhY3Rpb24gdG8gZGlzcGxheSBFeHBpcmluZ1Nlc3Npb25BbGVydFxuXHRcdHlpZWxkIHB1dDxBdXRoQWN0aW9uPih7IHR5cGU6IEFVVEhfQUNUSU9OX1RZUEUuRVhQSVJJTkdfU09PTiB9KVxuXHRcdC8vIHRyYWNrIGxvY2FsIHN0YXRlIHRvIGJsb2NrIGF1dG8tcmVmcmVzaCBpbiBgZ2V0T0F1dGhUb2tlbmBcblx0XHRpc0V4cGlyaW5nU29vbkFsZXJ0VmlzaWJsZSA9IHRydWVcblxuXHRcdC8vIHdhaXQgZm9yIHVzZXIgdG8gdGFrZSBhbiBhY3Rpb24sIG9yIGZvciB0b2tlbiB0byBleHBpcmVcblx0XHQvLyBpZiB1c2VyIGxvZ3Mgb3V0LCB0aGUgcm9vdCBgYXV0aFNhZ2FgIHdpbGwgY2FuY2VsIHRoaXMgbG9vcFxuXHRcdGNvbnN0IHsgdG9rZW5FeHBpcmVkIH0gPSB5aWVsZCByYWNlKHtcblx0XHRcdGV4dGVuc2lvblJlcXVlc3RlZDogdGFrZShBVVRIX0FDVElPTl9UWVBFLkVYVEVOU0lPTl9SRVFVRVNURUQpLFxuXHRcdFx0dG9rZW5FeHBpcmVkOiBkZWxheSh0aW1lVW50aWxFeHBpcmVzKVxuXHRcdH0pXG5cdFx0aWYgKHRva2VuRXhwaXJlZCkge1xuXHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCB0b2tlbiBleHBpcmVkLCB0cmlnZ2VyIGV4cGlyZWQgbG9nIG91dCcpXG5cdFx0XHQvLyB1c2VyIGZhaWxlZCB0byByZXF1ZXN0IGFuIGV4dGVuc2lvbiBhbmQgdG9rZW4gaXMgZXhwaXJlZFxuXHRcdFx0eWllbGQgcHV0PEF1dGhMb2dPdXRBY3Rpb24+KHsgdHlwZTogQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQsIHRva2VuRXhwaXJlZDogdHJ1ZSB9KVxuXHRcdFx0Ly8gYnJlYWsgbG9vcFxuXHRcdFx0YnJlYWtcblx0XHR9XG5cblx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIHVzZXIgdHJpZ2dlciByZWZyZXNoJylcblxuXHRcdC8vIHVzZXIgcmVxdWVzdGVkIGV4dGVuc2lvbiwgdHJpZ2dlciB0b2tlbiByZWZyZXNoXG5cdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwocGVyZm9ybVRva2VuUmVmcmVzaCwgb2F1dGhUb2tlbilcblx0fVxuXG5cdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgZG9uZScpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBhdXRoU2FnYShcblx0YXV0aFBlcnNpc3RlbmNlU2VydmljZVBhcmFtOiBBdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLFxuXHR0aWNrZXRQcm92aWRlclNlcnZpY2U6IFRpY2tldFByb3ZpZGVyU2VydmljZSxcblx0Y29kZVByb3ZpZGVyU2VydmljZTogQ29kZVByb3ZpZGVyU2VydmljZSxcblx0ZXJyb3JIYW5kbGVyUGFyYW06IEVycm9ySGFuZGxlciB8IHVuZGVmaW5lZCA9IGRlZmF1bHRFcnJvckhhbmRsZXJcbik6IFNhZ2FJdGVyYXRvciB7XG5cdGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UgPSBhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW1cblx0ZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyUGFyYW1cblx0bG9nZ2VyID0gZ2V0TG9nZ2VyKClcblxuXHQvLyB0cnkgdG8gZ2V0IHBlcnNpc3RlZCB0b2tlbiAobm9ybWFsbHkgaW4gQXN5bmNTdG9yYWdlIG9yIExvY2FsU3RvcmFnZSlcblx0bGV0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcblxuXHQvLyBpZiB0b2tlbiBpcyBleHBpcmVkLCB0cnkgdG8gcmVmcmVzaCBpdCBiZWZvcmUgaW5pdGlhbGl6aW5nIGF1dGhcblx0Ly8gaWYgdW5hYmxlIHRvIHJlZnJlc2gsIGNsZWFyIGRhdGEgYW5kIGluaXQgYXV0aCB3aXRoIG5vIHRva2VuXG5cdGlmIChpc1Rva2VuRXhwaXJlZChvYXV0aFRva2VuKSkge1xuXHRcdGlmIChpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikpIHtcblx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci5kZWJ1ZygndG9rZW4gZXhwaXJlZCwgY2xlYXIgcGVyc2lzdGVkIHVzZXIgZGF0YSBhbmQgdG9rZW4nKVxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0XHRcdC8vIGNsZWFyIHRoZSBleHBpcmVkIHRva2VuIGFuZCB1c2VyIGRhdGEgZnJvbSBzdG9yYWdlXG5cdFx0XHR5aWVsZCBjYWxsKHJlc2V0RGF0YSlcblx0XHR9XG5cdH1cblxuXHQvLyBnZXQgYXV0aCBwYXJhbWV0ZXJzXG5cdGNvbnN0IGNhc1RpY2tldCA9IHRpY2tldFByb3ZpZGVyU2VydmljZS5nZXRUaWNrZXQoKVxuXHRjb25zdCBzZXJ2aWNlID0gdGlja2V0UHJvdmlkZXJTZXJ2aWNlLmdldEFwcFNlcnZpY2VOYW1lKClcblx0Y29uc3QgaGFzQ2FzVGlja2V0ID0gISFjYXNUaWNrZXQgJiYgISFzZXJ2aWNlXG5cblx0Y29uc3QgY29kZSA9IGNvZGVQcm92aWRlclNlcnZpY2UuZ2V0Q29kZSgpXG5cdGNvbnN0IHN0YXRlID0gY29kZVByb3ZpZGVyU2VydmljZS5nZXRTdGF0ZSgpXG5cblx0Ly8gYXV0by1sb2dpbiAvIFNTTyBmb3IgUHVyZHVlXG5cdGNvbnN0IHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIgPSB5aWVsZCBjYWxsKGdldFB1cmR1ZUlkZW50aXR5UHJvdmlkZXJGcm9tTG9jYXRpb24pXG5cdGlmIChwdXJkdWVJZGVudGl0eVByb3ZpZGVyKSB7XG5cdFx0Y29uc3QgaXNQdXJkdWVBdXRvTG9naW5SZXF1ZXN0ZWQ6IGJvb2xlYW4gPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0SXNQdXJkdWVBdXRvTG9naW5SZXF1ZXN0ZWQpXG5cblx0XHQvLyBzdGFydCBhdXRvLWxvZ2luIC8gU1NPLCBpZiBub3QgYWxyZWFkeSByZXF1ZXN0ZWQsIG5vdCBhdXRoZW50aWNhdGVkLCBhbmQgaGFzIG5vIHZhbGlkIGF1dGggcGFyYW1ldGVyc1xuXHRcdGlmICghaXNQdXJkdWVBdXRvTG9naW5SZXF1ZXN0ZWQgJiYgIW9hdXRoVG9rZW4gJiYgIWhhc0Nhc1RpY2tldCAmJiAhY29kZSkge1xuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RJc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCwgdHJ1ZSlcblx0XHRcdC8vIHN0b3JlIHBhdGhuYW1lIGZvciBwb3N0LWxvZ2luIHJlZGlyZWN0IGlmIG5vdCBhbHJlYWR5IHNldFxuXHRcdFx0Ly8gY291bGQgaGF2ZSBiZWVuIHNldCBmcm9tIHVzZXIgbG9nZ2luZyBvdXQsIHNlZSBgQXV0aGVudGljYXRlZENvbXBvbmVudGBcblx0XHRcdGNvbnN0IHJldHVyblVybCA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRSZXR1cm5VcmwpXG5cdFx0XHRpZiAoIXJldHVyblVybCkge1xuXHRcdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFJldHVyblVybCwgd2luZG93U2VydmljZS5nZXRMb2NhdGlvbigpLnBhdGhuYW1lKVxuXHRcdFx0fVxuXHRcdFx0eWllbGQgY2FsbCh3aW5kb3dTZXJ2aWNlLnJlcGxhY2UsIHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIubG9naW5VcmwpXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHQvLyBmaW5pc2ggYXV0by1sb2dpbiBwcm9jZXNzLCBpZiBpdCB3YXMgcmVxdWVzdGVkIGFuZCBoYXMgYSB2YWxpZCBhdXRoIHBhcmFtZXRlclxuXHRcdGlmIChpc1B1cmR1ZUF1dG9Mb2dpblJlcXVlc3RlZCAmJiAoaGFzQ2FzVGlja2V0IHx8IGNvZGUpKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdElzUHVyZHVlQXV0b0xvZ2luUmVxdWVzdGVkLCBmYWxzZSlcblx0XHRcdC8vIHBlcnNpc3QgUHVyZHVlIGlkZW50aXR5UHJvdmlkZXIgZm9yIGBpZGVudGl0eVByb3ZpZGVyU2FnYWAgbG9nb3V0IGxvZ2ljXG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdElkZW50aXR5UHJvdmlkZXIsIHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIpXG5cdFx0XHQvLyBjb250aW51ZSB0byBleGNoYW5naW5nIENBUyBgdGlja2V0YCBvciBgY29kZWAgZm9yIHRva2VuXG5cdFx0fVxuXHR9XG5cblx0Ly8gaWYgQ0FTIHRpY2tldCBleGlzdHMgKG5vcm1hbGx5IGluIHRoZSBVUkwpLCB1c2UgaXQgdG8gZ2V0IGEgbmV3IHRva2VuXG5cdGlmIChoYXNDYXNUaWNrZXQpIHtcblx0XHR0aWNrZXRQcm92aWRlclNlcnZpY2UucmVtb3ZlVGlja2V0KClcblxuXHRcdC8vIGNsZWFyIHRoZSBjdXJyZW50IHRva2VuIGFuZCB1c2VyIGRhdGEgaWYgYSBuZXcgdG9rZW4gaXMgYWJvdXQgdG8gYmUgZ2VuZXJhdGVkXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGNhbGwocmVzZXREYXRhKVxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0XHR9XG5cdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoY2FzVGlja2V0TG9naW5GbG93LCBjYXNUaWNrZXQsIHNlcnZpY2UpXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW4pXG5cdFx0fVxuXHR9XG5cblx0Ly8gaWYgT0F1dGggQ29kZSBleGlzdHMgKG5vcm1hbGx5IGluIHRoZSBVUkwpLCB1c2UgaXQgdG8gZ2V0IGEgbmV3IHRva2VuXG5cdGlmIChjb2RlKSB7XG5cdFx0Y29kZVByb3ZpZGVyU2VydmljZS5yZW1vdmVDb2RlQW5kU3RhdGUoKVxuXG5cdFx0Ly8gY2xlYXIgdGhlIGN1cnJlbnQgdG9rZW4gYW5kIHVzZXIgZGF0YSBpZiBhIG5ldyB0b2tlbiBpcyBhYm91dCB0byBiZSBnZW5lcmF0ZWRcblx0XHRpZiAob2F1dGhUb2tlbikge1xuXHRcdFx0eWllbGQgY2FsbChyZXNldERhdGEpXG5cdFx0XHRvYXV0aFRva2VuID0gbnVsbFxuXHRcdH1cblxuXHRcdC8vIGlmIE9BdXRoIHN0YXRlIGV4aXN0cyAobm9ybWFsbHkgaW4gdGhlIFVSTCksIHVzZSBpdCBpbiBhZGRpdGlvbiB0byB0aGUgY29kZSBmb3IgUEtDRSBsb2dpbiBmbG93XG5cdFx0aWYgKHN0YXRlKSB7XG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21Db2RlQW5kU3RhdGUsIGNvZGUsIHN0YXRlKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21Db2RlLCBjb2RlKVxuXHRcdH1cblxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBvYXV0aFRva2VuKVxuXHRcdH1cblx0fVxuXG5cdHlpZWxkIHB1dDxBdXRoVG9rZW5BY3Rpb24+KHsgdHlwZTogQVVUSF9UT0tFTl9BQ1RJT05fVFlQRS5BVVRIX0lOSVRJQUxJWkVELCBvYXV0aFRva2VuIH0pXG5cblx0eWllbGQgdGFrZUV2ZXJ5KE1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFLlRSWV9GRVRDSF9GQUlMRUQsIGhhbmRsZUF1dGhGYWlsdXJlKVxuXG5cdGRvIHtcblx0XHRpZiAoIW9hdXRoVG9rZW4pIHtcblx0XHRcdGNvbnN0IHtcblx0XHRcdFx0Y2FzVjFBY3Rpb24sXG5cdFx0XHRcdGxvY2FsTG9naW5BY3Rpb24sXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvblxuXHRcdFx0fToge1xuXHRcdFx0XHRjYXNWMUFjdGlvbj86IEF1dGhDYXNWMUxvZ2luUmVxdWVzdEFjdGlvblxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uPzogQXV0aExvY2FsTG9naW5SZXF1ZXN0QWN0aW9uXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvbj86IEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uXG5cdFx0XHR9ID0geWllbGQgcmFjZSh7XG5cdFx0XHRcdGNhc1YxQWN0aW9uOiB0YWtlKEFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUuQ0FTX1YxX0xPR0lOX1JFUVVFU1QpLFxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uOiB0YWtlKEFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRS5MT0NBTF9MT0dJTl9SRVFVRVNUKSxcblx0XHRcdFx0cGtjZUxvZ2luQWN0aW9uOiB0YWtlKEFVVEhfUEtDRV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLlBLQ0VfTE9HSU5fUkVRVUVTVClcblx0XHRcdH0pXG5cblx0XHRcdHlpZWxkIHB1dDxBdXRoQWN0aW9uPih7IHR5cGU6IEFVVEhfQUNUSU9OX1RZUEUuTE9HSU5fUkVRVUVTVEVEIH0pXG5cdFx0XHRpZiAoY2FzVjFBY3Rpb24pIHtcblx0XHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoY2FzVjFMb2dpbkZsb3csIGNhc1YxQWN0aW9uKVxuXHRcdFx0fSBlbHNlIGlmIChsb2NhbExvZ2luQWN0aW9uKSB7XG5cdFx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGxvY2FsTG9naW5GbG93LCBsb2NhbExvZ2luQWN0aW9uKVxuXHRcdFx0fSBlbHNlIGlmIChwa2NlTG9naW5BY3Rpb24pIHtcblx0XHRcdFx0Ly8gb2F1dGhUb2tlbiBpcyBub3QgcmV0dXJuZWQgaGVyZSwgYXMgdGhpcyBmbG93IHdpbGwgcmVzdWx0IGluIGEgd2luZG93IHJlZGlyZWN0XG5cdFx0XHRcdHlpZWxkIGNhbGwocGtjZUxvZ2luRmxvdywgcGtjZUxvZ2luQWN0aW9uKVxuXHRcdFx0XHQvLyBicmVhayBleGVjdXRpb25cblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGFsbCh7XG5cdFx0XHRcdHBlcnNpc3RUb2tlbjogY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlbiksXG5cdFx0XHRcdGxvZ2luU3VjY2VzczogcHV0PEF1dGhUb2tlblN1Y2Nlc3NBY3Rpb24+KHtcblx0XHRcdFx0XHR0eXBlOiBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuR0VUX1RPS0VOX1NVQ0NFRURFRCxcblx0XHRcdFx0XHRvYXV0aFRva2VuXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXG5cdFx0XHQvLyBzdGFydCBub24tYmxvY2tpbmcgcmVmcmVzaCBsb29wXG5cdFx0XHRjb25zdCByZWZyZXNoTG9vcFRhc2s6IFRhc2sgPSB5aWVsZCBmb3JrKHJlZnJlc2hMb29wKVxuXG5cdFx0XHQvLyBpZiB1c2VyIGxvZ3Mgb3V0IG9yIHRva2VuIGV4cGlyZXMsIGNhbmNlbCB0aGUgcmVmcmVzaCBsb29wXG5cdFx0XHR5aWVsZCB0YWtlKEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VUKVxuXHRcdFx0eWllbGQgY2FuY2VsKHJlZnJlc2hMb29wVGFzaylcblx0XHR9IGVsc2Uge1xuXHRcdFx0eWllbGQgcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5MT0dJTl9GQUlMRUQgfSlcblx0XHR9XG5cblx0XHR5aWVsZCBjYWxsKHJlc2V0RGF0YSlcblx0XHRvYXV0aFRva2VuID0gbnVsbFxuXHR9IHdoaWxlICh0cnVlKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFVQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxJQUFBLEdBQUFWLE9BQUE7QUFD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QkFBZ0IsRUFBRSxJQUFBbEosYUFBSSxFQUFDc0osNkNBQW9DLENBQUNDLG1CQUFtQixDQUFDO1VBQ2hGSixlQUFlLEVBQUUsSUFBQW5KLGFBQUksRUFBQ3dKLDRDQUFtQyxDQUFDQyxrQkFBa0I7UUFDN0UsQ0FBQyxDQUFDO1FBRUYsTUFBTSxJQUFBbkssWUFBRyxFQUFhO1VBQUVDLElBQUksRUFBRWdELHlCQUFnQixDQUFDbUg7UUFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLElBQUlULFdBQVcsRUFBRTtVQUNoQi9HLFVBQVUsR0FBRyxNQUFNLElBQUEzQixhQUFJLEVBQUNzRCxjQUFjLEVBQUVvRixXQUFXLENBQUM7UUFDckQsQ0FBQyxNQUFNLElBQUlDLGdCQUFnQixFQUFFO1VBQzVCaEgsVUFBVSxHQUFHLE1BQU0sSUFBQTNCLGFBQUksRUFBQ3VELGNBQWMsRUFBRW9GLGdCQUFnQixDQUFDO1FBQzFELENBQUMsTUFBTSxJQUFJQyxlQUFlLEVBQUU7VUFDM0I7VUFDQSxNQUFNLElBQUE1SSxhQUFJLEVBQUM0RCxhQUFhLEVBQUVnRixlQUFlLENBQUM7VUFDMUM7VUFDQTtRQUNEO01BQ0Q7TUFFQSxJQUFJakgsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFBZSxZQUFHLEVBQUM7VUFDVEQsWUFBWSxFQUFFLElBQUF6QyxhQUFJLEVBQUNqQyxzQkFBc0IsQ0FBQzBFLFlBQVksRUFBRWQsVUFBVSxDQUFDO1VBQ25FeUgsWUFBWSxFQUFFLElBQUFySyxZQUFHLEVBQXlCO1lBQ3pDQyxJQUFJLEVBQUU2Qyx1Q0FBOEIsQ0FBQ3dILG1CQUFtQjtZQUN4RDFIO1VBQ0QsQ0FBQztRQUNGLENBQUMsQ0FBQzs7UUFFRjtRQUNBLE1BQU0ySCxlQUFxQixHQUFHLE1BQU0sSUFBQUMsYUFBSSxFQUFDNUQsV0FBVyxDQUFDOztRQUVyRDtRQUNBLE1BQU0sSUFBQWxHLGFBQUksRUFBQ21ELGlDQUF3QixDQUFDQyxPQUFPLENBQUM7UUFDNUMsTUFBTSxJQUFBMkcsZUFBTSxFQUFDRixlQUFlLENBQUM7TUFDOUIsQ0FBQyxNQUFNO1FBQ04sTUFBTSxJQUFBdkssWUFBRyxFQUFhO1VBQUVDLElBQUksRUFBRWdELHlCQUFnQixDQUFDeUg7UUFBYSxDQUFDLENBQUM7TUFDL0Q7TUFFQSxNQUFNLElBQUF6SixhQUFJLEVBQUN1RixTQUFTLENBQUM7TUFDckI1RCxVQUFVLEdBQUcsSUFBSTtJQUNsQixDQUFDLFFBQVEsSUFBSTtFQUNkLENBQUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==