bx-rest 1.5.1 → 1.7.0

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 (301) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/README.en.md +206 -3
  3. package/README.md +207 -3
  4. package/consts/part-name-methods.d.ts +1 -0
  5. package/esm2022/consts/part-name-methods.mjs +2 -1
  6. package/esm2022/functions/errors.mjs +17 -5
  7. package/esm2022/functions/uniqueElementCode.mjs +24 -0
  8. package/esm2022/map/pull/application/config.mjs +25 -29
  9. package/esm2022/map/pull.mjs +8 -13
  10. package/esm2022/public-api.mjs +3 -2
  11. package/esm2022/request-navvy/bizproc.mjs +18 -9
  12. package/esm2022/request-navvy/booking/v1/resource.mjs +2 -2
  13. package/esm2022/request-navvy/booking/v1/resourcetype.mjs +2 -2
  14. package/esm2022/request-navvy/calendar/event.mjs +1 -9
  15. package/esm2022/request-navvy/catalog/catalog.mjs +2 -2
  16. package/esm2022/request-navvy/catalog/document/element.mjs +2 -2
  17. package/esm2022/request-navvy/catalog/document.mjs +2 -2
  18. package/esm2022/request-navvy/catalog/documentcontractor.mjs +2 -2
  19. package/esm2022/request-navvy/catalog/extra.mjs +2 -2
  20. package/esm2022/request-navvy/catalog/measure.mjs +2 -2
  21. package/esm2022/request-navvy/catalog/price.mjs +2 -2
  22. package/esm2022/request-navvy/catalog/pricetype.mjs +2 -2
  23. package/esm2022/request-navvy/catalog/pricetypegroup.mjs +2 -2
  24. package/esm2022/request-navvy/catalog/pricetypelang.mjs +2 -2
  25. package/esm2022/request-navvy/catalog/product/offer.mjs +2 -2
  26. package/esm2022/request-navvy/catalog/product/service.mjs +2 -2
  27. package/esm2022/request-navvy/catalog/product/sku.mjs +2 -2
  28. package/esm2022/request-navvy/catalog/product.mjs +2 -2
  29. package/esm2022/request-navvy/catalog/productproperty.mjs +2 -2
  30. package/esm2022/request-navvy/catalog/productpropertyenum.mjs +2 -2
  31. package/esm2022/request-navvy/catalog/productpropertyfeature.mjs +2 -2
  32. package/esm2022/request-navvy/catalog/productpropertysection.mjs +2 -2
  33. package/esm2022/request-navvy/catalog/ratio.mjs +2 -2
  34. package/esm2022/request-navvy/catalog/roundingrule.mjs +2 -2
  35. package/esm2022/request-navvy/catalog/section.mjs +2 -2
  36. package/esm2022/request-navvy/catalog/store.mjs +2 -2
  37. package/esm2022/request-navvy/catalog/storeproduct.mjs +2 -2
  38. package/esm2022/request-navvy/catalog/userfield/document.mjs +2 -2
  39. package/esm2022/request-navvy/catalog/vat.mjs +2 -2
  40. package/esm2022/request-navvy/crm/activity.mjs +2 -2
  41. package/esm2022/request-navvy/crm/deal/recurring.mjs +2 -2
  42. package/esm2022/request-navvy/crm/item/product/row.mjs +2 -2
  43. package/esm2022/request-navvy/crm/orderentity.mjs +2 -2
  44. package/esm2022/request-navvy/crm/requisite/link.mjs +2 -2
  45. package/esm2022/request-navvy/crm/stagehistory.mjs +2 -2
  46. package/esm2022/request-navvy/crm/timeline/bindings.mjs +2 -2
  47. package/esm2022/request-navvy/disk/operation.mjs +3 -10
  48. package/esm2022/request-navvy/documentgenerator/document.mjs +2 -2
  49. package/esm2022/request-navvy/documentgenerator/numerator.mjs +2 -2
  50. package/esm2022/request-navvy/documentgenerator/role.mjs +2 -2
  51. package/esm2022/request-navvy/documentgenerator/template.mjs +2 -2
  52. package/esm2022/request-navvy/pull/application/config.mjs +10 -4
  53. package/esm2022/request-navvy/pull/application/event.mjs +23 -0
  54. package/esm2022/request-navvy/pull/application/push.mjs +23 -0
  55. package/esm2022/request-navvy/pull/channel/public.mjs +4 -4
  56. package/esm2022/request-navvy/pull/config.mjs +8 -4
  57. package/esm2022/request-navvy/pull.mjs +12 -1
  58. package/esm2022/request-navvy/sale/basketitem.mjs +2 -2
  59. package/esm2022/request-navvy/sale/basketproperties.mjs +2 -2
  60. package/esm2022/request-navvy/sale/businessvaluepersondomain.mjs +2 -2
  61. package/esm2022/request-navvy/sale/order.mjs +2 -2
  62. package/esm2022/request-navvy/sale/payment.mjs +2 -2
  63. package/esm2022/request-navvy/sale/paymentitembasket.mjs +2 -2
  64. package/esm2022/request-navvy/sale/paymentitemshipment.mjs +2 -2
  65. package/esm2022/request-navvy/sale/persontype.mjs +2 -2
  66. package/esm2022/request-navvy/sale/property.mjs +2 -2
  67. package/esm2022/request-navvy/sale/propertyrelation.mjs +2 -2
  68. package/esm2022/request-navvy/sale/propertyvalue.mjs +2 -2
  69. package/esm2022/request-navvy/sale/propertyvariant.mjs +2 -2
  70. package/esm2022/request-navvy/sale/shipment.mjs +2 -2
  71. package/esm2022/request-navvy/sale/shipmentitem.mjs +2 -2
  72. package/esm2022/request-navvy/sale/shipmentproperty.mjs +2 -2
  73. package/esm2022/request-navvy/sale/shipmentpropertyvalue.mjs +2 -2
  74. package/esm2022/request-navvy/sale/status.mjs +2 -2
  75. package/esm2022/request-navvy/sale/statuslang.mjs +2 -2
  76. package/esm2022/request-navvy/sale/tradebinding.mjs +2 -2
  77. package/esm2022/request-navvy/sale/tradeplatform.mjs +2 -2
  78. package/esm2022/request-navvy/socialnetwork/api/livefeed.mjs +1 -5
  79. package/esm2022/request-navvy/task/operation/elapseditem.mjs +51 -28
  80. package/esm2022/request-navvy/tasks/task.mjs +1 -119
  81. package/esm2022/request-navvy/userfieldtype.mjs +2 -2
  82. package/esm2022/rest/navvy.mjs +66 -64
  83. package/esm2022/services/base.mjs +1 -4
  84. package/esm2022/services/context.mjs +59 -0
  85. package/esm2022/services/http/HttpBX.mjs +52 -19
  86. package/esm2022/services/http/authRefresh.mjs +25 -23
  87. package/esm2022/services/http/fetch.mjs +45 -0
  88. package/esm2022/services/http/http.mjs +25 -71
  89. package/esm2022/services/http/middleware.mjs +203 -0
  90. package/esm2022/services/http/sessionKey.mjs +16 -5
  91. package/esm2022/services/http/transport.mjs +5 -0
  92. package/esm2022/services/navvy/navvy-pag-nav-keyed.mjs +31 -0
  93. package/esm2022/services/navvy/navvy-support.mjs +2 -15
  94. package/esm2022/services/navvy.mjs +32 -31
  95. package/esm2022/typification/rest/calendar/event/get.mjs +1 -1
  96. package/esm2022/typification/rest/crm/requisite.mjs +1 -1
  97. package/esm2022/typification/rest/crm/timeline/bindings.mjs +1 -1
  98. package/esm2022/typification/rest/pull/application/config/get.mjs +1 -1
  99. package/esm2022/typification/rest/pull/application/event/add.mjs +2 -0
  100. package/esm2022/typification/rest/pull/application/push/add.mjs +2 -0
  101. package/esm2022/typification/rest/pull/config/get.mjs +1 -1
  102. package/esm2022/typification/rest/pull.mjs +3 -1
  103. package/esm2022/typification/rest/tasks/task/get.mjs +1 -1
  104. package/esm2022/typification/settings.mjs +1 -1
  105. package/fesm2022/bx-rest.mjs +800 -588
  106. package/fesm2022/bx-rest.mjs.map +1 -1
  107. package/functions/errors.d.ts +9 -0
  108. package/functions/uniqueElementCode.d.ts +12 -0
  109. package/map/pull/application/config.d.ts +3 -0
  110. package/package.json +1 -1
  111. package/public-api.d.ts +4 -2
  112. package/request-navvy/booking/v1/resource.d.ts +1 -1
  113. package/request-navvy/booking/v1/resourcetype.d.ts +1 -1
  114. package/request-navvy/catalog/catalog.d.ts +1 -1
  115. package/request-navvy/catalog/document/element.d.ts +1 -1
  116. package/request-navvy/catalog/document.d.ts +1 -1
  117. package/request-navvy/catalog/documentcontractor.d.ts +1 -1
  118. package/request-navvy/catalog/extra.d.ts +1 -1
  119. package/request-navvy/catalog/measure.d.ts +1 -1
  120. package/request-navvy/catalog/price.d.ts +1 -1
  121. package/request-navvy/catalog/pricetype.d.ts +1 -1
  122. package/request-navvy/catalog/pricetypegroup.d.ts +1 -1
  123. package/request-navvy/catalog/pricetypelang.d.ts +1 -1
  124. package/request-navvy/catalog/product/offer.d.ts +1 -1
  125. package/request-navvy/catalog/product/service.d.ts +1 -1
  126. package/request-navvy/catalog/product/sku.d.ts +1 -1
  127. package/request-navvy/catalog/product.d.ts +1 -1
  128. package/request-navvy/catalog/productproperty.d.ts +1 -1
  129. package/request-navvy/catalog/productpropertyenum.d.ts +1 -1
  130. package/request-navvy/catalog/productpropertyfeature.d.ts +1 -1
  131. package/request-navvy/catalog/productpropertysection.d.ts +1 -1
  132. package/request-navvy/catalog/ratio.d.ts +1 -1
  133. package/request-navvy/catalog/roundingrule.d.ts +1 -1
  134. package/request-navvy/catalog/section.d.ts +1 -1
  135. package/request-navvy/catalog/store.d.ts +1 -1
  136. package/request-navvy/catalog/storeproduct.d.ts +1 -1
  137. package/request-navvy/catalog/userfield/document.d.ts +1 -1
  138. package/request-navvy/catalog/vat.d.ts +1 -1
  139. package/request-navvy/crm/activity.d.ts +1 -1
  140. package/request-navvy/crm/deal/recurring.d.ts +1 -1
  141. package/request-navvy/crm/item/product/row.d.ts +5 -1
  142. package/request-navvy/crm/orderentity.d.ts +5 -1
  143. package/request-navvy/crm/requisite/link.d.ts +1 -1
  144. package/request-navvy/crm/stagehistory.d.ts +5 -1
  145. package/request-navvy/crm/timeline/bindings.d.ts +1 -1
  146. package/request-navvy/documentgenerator/document.d.ts +1 -1
  147. package/request-navvy/documentgenerator/numerator.d.ts +1 -1
  148. package/request-navvy/documentgenerator/role.d.ts +1 -1
  149. package/request-navvy/documentgenerator/template.d.ts +1 -1
  150. package/request-navvy/pull/application/config.d.ts +9 -3
  151. package/request-navvy/pull/application/event.d.ts +17 -0
  152. package/request-navvy/pull/application/push.d.ts +17 -0
  153. package/request-navvy/pull/config.d.ts +7 -3
  154. package/request-navvy/pull.d.ts +11 -0
  155. package/request-navvy/sale/basketitem.d.ts +1 -1
  156. package/request-navvy/sale/basketproperties.d.ts +1 -1
  157. package/request-navvy/sale/businessvaluepersondomain.d.ts +1 -1
  158. package/request-navvy/sale/order.d.ts +1 -1
  159. package/request-navvy/sale/payment.d.ts +1 -1
  160. package/request-navvy/sale/paymentitembasket.d.ts +1 -1
  161. package/request-navvy/sale/paymentitemshipment.d.ts +1 -1
  162. package/request-navvy/sale/persontype.d.ts +1 -1
  163. package/request-navvy/sale/property.d.ts +1 -1
  164. package/request-navvy/sale/propertyrelation.d.ts +1 -1
  165. package/request-navvy/sale/propertyvalue.d.ts +1 -1
  166. package/request-navvy/sale/propertyvariant.d.ts +1 -1
  167. package/request-navvy/sale/shipment.d.ts +1 -1
  168. package/request-navvy/sale/shipmentitem.d.ts +1 -1
  169. package/request-navvy/sale/shipmentproperty.d.ts +1 -1
  170. package/request-navvy/sale/shipmentpropertyvalue.d.ts +1 -1
  171. package/request-navvy/sale/status.d.ts +1 -1
  172. package/request-navvy/sale/statuslang.d.ts +1 -1
  173. package/request-navvy/sale/tradebinding.d.ts +1 -1
  174. package/request-navvy/sale/tradeplatform.d.ts +1 -1
  175. package/request-navvy/task/operation/elapseditem.d.ts +15 -10
  176. package/request-navvy/userfieldtype.d.ts +1 -1
  177. package/rest/navvy.d.ts +9 -0
  178. package/services/context.d.ts +43 -0
  179. package/services/http/HttpBX.d.ts +11 -0
  180. package/services/http/authRefresh.d.ts +5 -1
  181. package/services/http/fetch.d.ts +22 -0
  182. package/services/http/http.d.ts +20 -9
  183. package/services/http/middleware.d.ts +32 -0
  184. package/services/http/sessionKey.d.ts +10 -0
  185. package/services/http/transport.d.ts +28 -0
  186. package/services/navvy/navvy-pag-nav-keyed.d.ts +18 -0
  187. package/services/navvy/navvy-support.d.ts +0 -10
  188. package/services/navvy.d.ts +17 -0
  189. package/typification/rest/calendar/event/get.d.ts +1 -1
  190. package/typification/rest/crm/requisite.d.ts +1 -1
  191. package/typification/rest/crm/timeline/bindings.d.ts +2 -1
  192. package/typification/rest/pull/application/config/get.d.ts +1 -1
  193. package/typification/rest/pull/application/event/add.d.ts +24 -0
  194. package/typification/rest/pull/application/push/add.d.ts +16 -0
  195. package/typification/rest/pull/config/get.d.ts +28 -3
  196. package/typification/rest/pull.d.ts +2 -0
  197. package/typification/settings.d.ts +68 -0
  198. package/esm2022/functions/errorHandler.mjs +0 -34
  199. package/esm2022/request/app.mjs +0 -13
  200. package/esm2022/request/bizproc/activity.mjs +0 -3
  201. package/esm2022/request/bizproc/event.mjs +0 -3
  202. package/esm2022/request/bizproc/robot.mjs +0 -3
  203. package/esm2022/request/bizproc/task.mjs +0 -3
  204. package/esm2022/request/bizproc/workflow/instance.mjs +0 -3
  205. package/esm2022/request/bizproc/workflow/template.mjs +0 -3
  206. package/esm2022/request/bizproc/workflow.mjs +0 -18
  207. package/esm2022/request/bizproc.mjs +0 -15
  208. package/esm2022/request/department.mjs +0 -26
  209. package/esm2022/request/disk/attachedObject.mjs +0 -14
  210. package/esm2022/request/disk/file.mjs +0 -18
  211. package/esm2022/request/disk/folder.mjs +0 -117
  212. package/esm2022/request/disk.mjs +0 -11
  213. package/esm2022/request/lists/element.mjs +0 -18
  214. package/esm2022/request/lists/field.mjs +0 -35
  215. package/esm2022/request/lists.mjs +0 -86
  216. package/esm2022/request/log/blogcomment.mjs +0 -3
  217. package/esm2022/request/log/blogpost.mjs +0 -18
  218. package/esm2022/request/log.mjs +0 -9
  219. package/esm2022/request/pull/application/config.mjs +0 -11
  220. package/esm2022/request/pull/channel/public.mjs +0 -18
  221. package/esm2022/request/pull/config.mjs +0 -13
  222. package/esm2022/request/pull.mjs +0 -11
  223. package/esm2022/request/server.mjs +0 -14
  224. package/esm2022/request/socialnetwork/api/contentview.mjs +0 -14
  225. package/esm2022/request/socialnetwork/api/livefeed/blogpost/important.mjs +0 -14
  226. package/esm2022/request/socialnetwork/api/livefeed/blogpost.mjs +0 -7
  227. package/esm2022/request/socialnetwork/api/livefeed.mjs +0 -7
  228. package/esm2022/request/socialnetwork/api.mjs +0 -9
  229. package/esm2022/request/socialnetwork.mjs +0 -8
  230. package/esm2022/request/sonet_group.mjs +0 -24
  231. package/esm2022/request/task/commentitem.mjs +0 -32
  232. package/esm2022/request/task/elapseditem.mjs +0 -40
  233. package/esm2022/request/task/item/userfield.mjs +0 -14
  234. package/esm2022/request/task/item.mjs +0 -7
  235. package/esm2022/request/task/planner.mjs +0 -11
  236. package/esm2022/request/task.mjs +0 -13
  237. package/esm2022/request/tasks/task/result.mjs +0 -22
  238. package/esm2022/request/tasks/task.mjs +0 -110
  239. package/esm2022/request/tasks.mjs +0 -7
  240. package/esm2022/request/user/userfield.mjs +0 -14
  241. package/esm2022/request/user.mjs +0 -40
  242. package/esm2022/rest/base.mjs +0 -39
  243. package/esm2022/services/http/HttpData.mjs +0 -77
  244. package/esm2022/services/http/base/base.mjs +0 -4
  245. package/esm2022/services/http/httpNavvy.mjs +0 -14
  246. package/esm2022/typification/base/answers.mjs +0 -438
  247. package/esm2022/typification/base/params.mjs +0 -525
  248. package/esm2022/typification/base/workpiece/methods-list.mjs +0 -2
  249. package/esm2022/typification/base/workpiece/methods.mjs +0 -2
  250. package/functions/errorHandler.d.ts +0 -10
  251. package/request/app.d.ts +0 -8
  252. package/request/bizproc/activity.d.ts +0 -2
  253. package/request/bizproc/event.d.ts +0 -2
  254. package/request/bizproc/robot.d.ts +0 -2
  255. package/request/bizproc/task.d.ts +0 -2
  256. package/request/bizproc/workflow/instance.d.ts +0 -2
  257. package/request/bizproc/workflow/template.d.ts +0 -2
  258. package/request/bizproc/workflow.d.ts +0 -13
  259. package/request/bizproc.d.ts +0 -12
  260. package/request/department.d.ts +0 -18
  261. package/request/disk/attachedObject.d.ts +0 -8
  262. package/request/disk/file.d.ts +0 -10
  263. package/request/disk/folder.d.ts +0 -96
  264. package/request/disk.d.ts +0 -8
  265. package/request/lists/element.d.ts +0 -11
  266. package/request/lists/field.d.ts +0 -11
  267. package/request/lists.d.ts +0 -31
  268. package/request/log/blogcomment.d.ts +0 -2
  269. package/request/log/blogpost.d.ts +0 -11
  270. package/request/log.d.ts +0 -6
  271. package/request/pull/application/config.d.ts +0 -5
  272. package/request/pull/channel/public.d.ts +0 -5
  273. package/request/pull/config.d.ts +0 -7
  274. package/request/pull.d.ts +0 -8
  275. package/request/server.d.ts +0 -7
  276. package/request/socialnetwork/api/contentview.d.ts +0 -6
  277. package/request/socialnetwork/api/livefeed/blogpost/important.d.ts +0 -6
  278. package/request/socialnetwork/api/livefeed/blogpost.d.ts +0 -4
  279. package/request/socialnetwork/api/livefeed.d.ts +0 -4
  280. package/request/socialnetwork/api.d.ts +0 -6
  281. package/request/socialnetwork.d.ts +0 -4
  282. package/request/sonet_group.d.ts +0 -8
  283. package/request/task/commentitem.d.ts +0 -23
  284. package/request/task/elapseditem.d.ts +0 -26
  285. package/request/task/item/userfield.d.ts +0 -6
  286. package/request/task/item.d.ts +0 -4
  287. package/request/task/planner.d.ts +0 -4
  288. package/request/task.d.ts +0 -10
  289. package/request/tasks/task/result.d.ts +0 -13
  290. package/request/tasks/task.d.ts +0 -37
  291. package/request/tasks.d.ts +0 -4
  292. package/request/user/userfield.d.ts +0 -8
  293. package/request/user.d.ts +0 -24
  294. package/rest/base.d.ts +0 -33
  295. package/services/http/HttpData.d.ts +0 -7
  296. package/services/http/base/base.d.ts +0 -7
  297. package/services/http/httpNavvy.d.ts +0 -10
  298. package/typification/base/answers.d.ts +0 -12
  299. package/typification/base/params.d.ts +0 -16
  300. package/typification/base/workpiece/methods-list.d.ts +0 -247
  301. package/typification/base/workpiece/methods.d.ts +0 -20
@@ -6,6 +6,19 @@ import { mergeMap, of, throwError } from 'rxjs';
6
6
  import { BXRestNavvyUser } from '../../user';
7
7
  import { BXRestNavvyTasks } from '../../tasks';
8
8
  import { BXRestNavvyDelegateElapsedItem } from '../delegate/elapseditem';
9
+ import { instanceOfiBXRestAnswerSuccess } from '../../../functions/mapResult';
10
+ /** Результаты и `total` команд из ответов batch по ключам команд. Команды с ошибкой пропускаются. */
11
+ function batchValues(answers) {
12
+ const values = { result: {}, total: {} };
13
+ for (const answer of answers ?? []) {
14
+ if (instanceOfiBXRestAnswerSuccess(answer) && answer.result && typeof answer.result === 'object') {
15
+ const batch = answer.result;
16
+ Object.assign(values.result, batch.result);
17
+ Object.assign(values.total, batch.result_total);
18
+ }
19
+ }
20
+ return values;
21
+ }
9
22
  export class BXRestNavvyOperationElapsedItem {
10
23
  constructor(BXRestNavvyElapsedItem) {
11
24
  this.BXRestNavvyElapsedItem = BXRestNavvyElapsedItem;
@@ -34,35 +47,45 @@ export class BXRestNavvyOperationElapsedItem {
34
47
  };
35
48
  return this.delegate.getList(param);
36
49
  }
37
- // TODO: Сделать нормально
38
50
  /**
39
- * Возвращает список записей о затраченном времени по задаче.
51
+ * Возвращает все записи о затраченном времени по задачам `ids`: сначала записи первой задачи,
52
+ * затем второй и так далее.
53
+ *
54
+ * Портал отдаёт не больше 50 записей на страницу. Первые страницы всех задач уходят одним
55
+ * batch, остальные страницы запрашиваются только у задач, где записей больше 50.
40
56
  */
41
57
  getListByIDTask(ids) {
42
58
  // Пустой batch завершается без значения, и вызывающий код получил бы EmptyError
43
59
  if (!ids.length) {
44
60
  return of([]);
45
61
  }
46
- // Работает только потому что "nPageSize: 99999"
47
- return this.http.branch(ids.map(i => {
48
- return {
62
+ const pageSize = 50;
63
+ const key = (index, page) => `${index}_${page}`;
64
+ const commands = (pages) => Object.fromEntries(pages.map(({ index, page }) => [
65
+ key(index, page),
66
+ {
49
67
  name: this.http.getNameMethod([$task, $elapseditem, $getlist]),
50
- param: {
51
- TASKID: i,
52
- PARAMS: {
53
- NAV_PARAMS: {
54
- nPageSize: 99999,
55
- iNumPage: 1
56
- }
57
- }
58
- }
59
- };
60
- })).pipe(map(v => {
61
- if (v && v.length) {
62
- const res = this.http.mapBranchResultWithoutKey(v);
63
- return BXRestMapTaskElapsedItem.getList(res);
68
+ param: { TASKID: ids[index], PARAMS: { NAV_PARAMS: { nPageSize: pageSize, iNumPage: page } } }
64
69
  }
65
- return undefined;
70
+ ]));
71
+ const load = (pages) => pages.length
72
+ ? this.http.branch(commands(pages)).pipe(map(v => batchValues(v)))
73
+ : of({ result: {}, total: {} });
74
+ return load(ids.map((_, index) => ({ index, page: 1 }))).pipe(mergeMap(first => {
75
+ const rest = ids.flatMap((_, index) => {
76
+ const pages = Math.ceil((Number(first.total[key(index, 1)]) || 0) / pageSize);
77
+ return Array.from({ length: Math.max(pages - 1, 0) }, (_, i) => ({ index, page: i + 2 }));
78
+ });
79
+ return load(rest).pipe(map(more => ({ ...first.result, ...more.result })));
80
+ }), map(result => {
81
+ const items = ids.flatMap((_, index) => {
82
+ const list = [];
83
+ for (let page = 1; result[key(index, page)]; page++) {
84
+ list.push(...result[key(index, page)]);
85
+ }
86
+ return list;
87
+ });
88
+ return BXRestMapTaskElapsedItem.getList(items);
66
89
  }));
67
90
  }
68
91
  /**
@@ -190,12 +213,12 @@ export class BXRestNavvyOperationElapsedItem {
190
213
  return this.BXRestNavvyElapsedItem.add(param).res();
191
214
  }
192
215
  else {
193
- return throwError(() => new Error('Отсутствуют права на добавление записи затраченного времени'));
216
+ return throwError(() => new Error('No permission to add an elapsed time record to the task'));
194
217
  }
195
218
  }));
196
219
  }
197
220
  else {
198
- return throwError(() => new Error('Отсутствуют права на чтение задачи'));
221
+ return throwError(() => new Error('No permission to read the task'));
199
222
  }
200
223
  }));
201
224
  }
@@ -212,10 +235,10 @@ export class BXRestNavvyOperationElapsedItem {
212
235
  if (allowed) {
213
236
  return this.BXRestNavvyElapsedItem.update(param).res();
214
237
  }
215
- return throwError(() => new Error('Отсутствуют права на изменение записи затраченного времени'));
238
+ return throwError(() => new Error('No permission to update the elapsed time record'));
216
239
  }));
217
240
  }
218
- return throwError(() => new Error('Отсутствуют права на чтение задачи'));
241
+ return throwError(() => new Error('No permission to read the task'));
219
242
  }));
220
243
  }
221
244
  /**
@@ -243,7 +266,7 @@ export class BXRestNavvyOperationElapsedItem {
243
266
  if (canRead) {
244
267
  return this.BXRestNavvyElapsedItem.isActionAllowed(param).res();
245
268
  }
246
- return throwError(() => new Error('Отсутствуют права на чтение задачи'));
269
+ return throwError(() => new Error('No permission to read the task'));
247
270
  }));
248
271
  }
249
272
  /**
@@ -259,12 +282,12 @@ export class BXRestNavvyOperationElapsedItem {
259
282
  return this.BXRestNavvyElapsedItem.delete(param).res();
260
283
  }
261
284
  else {
262
- return throwError(() => new Error('Отсутствуют права на удаление записи затраченного времени'));
285
+ return throwError(() => new Error('No permission to delete the elapsed time record'));
263
286
  }
264
287
  }));
265
288
  }
266
289
  else {
267
- return throwError(() => new Error('Отсутствуют права на чтение задачи'));
290
+ return throwError(() => new Error('No permission to read the task'));
268
291
  }
269
292
  }));
270
293
  }
@@ -279,4 +302,4 @@ export class BXRestNavvyOperationElapsedItem {
279
302
  });
280
303
  }
281
304
  }
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhcHNlZGl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXF1ZXN0LW5hdnZ5L3Rhc2svb3BlcmF0aW9uL2VsYXBzZWRpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZILE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzlDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBSXhFLE1BQU0sT0FBTywrQkFBK0I7SUFPMUMsWUFBb0Isc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFMakQsU0FBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUE7UUFDM0IsYUFBUSxHQUFHLElBQUksOEJBQThCLEVBQUUsQ0FBQTtRQUMvQyxvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7UUFDdkMscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFBO0lBRzFELENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxRQUFrQixFQUFFLFNBQWUsRUFBRSxPQUFhO1FBQzlELE1BQU0sS0FB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S0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMxRCxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQ1osT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO29CQUN4RCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQyxDQUFBO29CQUNqRyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFBO1lBQzFFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZSxDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ3BELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FDekI7WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxNQUFNO1lBQ2QsUUFBUSxFQUFFLENBQUM7U0FDWixDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbUVsYXBzZWRpdGVtR2V0LFxyXG4gIGlCWFJlc3RUYXNrRWxhcHNlZEl0ZW1IdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MsXHJcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3MsXHJcbiAgaUlzQWN0aW9uQWxsb3dlZFBhcmFtLFxyXG4gIGlCWFJlc3RQYXJhbUFkZEVsYXBzZWRpdGVtLFxyXG4gIGlCWFJlc3RQYXJhbVVwZGF0ZUVsYXBzZWRpdGVtLFxyXG4gIGlCWFJlc3RQYXJhbURlbEVsYXBzZWRpdGVtXHJcbn0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFzaydcclxuaW1wb3J0IHsgSHR0cEJYU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwL0h0dHBCWCdcclxuaW1wb3J0IHsgJGVsYXBzZWRpdGVtLCAkZ2V0YWNjZXNzLCAkZ2V0bGlzdCwgJGlzYWN0aW9uYWxsb3dlZCwgJHRhc2ssICR0YXNrcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy9wYXJ0LW5hbWUtbWV0aG9kcydcclxuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2tFbGFwc2VkSXRlbSB9IGZyb20gJy4uLy4uLy4uL21hcC90YXNrL2VsYXBzZWRpdGVtJ1xyXG5pbXBvcnQgeyBtZXJnZU1hcCwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXIgfSBmcm9tICcuLi8uLi91c2VyJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzIH0gZnJvbSAnLi4vLi4vdGFza3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RGVsZWdhdGVFbGFwc2VkSXRlbSB9IGZyb20gJy4uL2RlbGVnYXRlL2VsYXBzZWRpdGVtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0VXNlciB9IGZyb20gJy4uLy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0gfSBmcm9tICcuLi9lbGFwc2VkaXRlbSdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eU9wZXJhdGlvbkVsYXBzZWRJdGVtIHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gbmV3IEh0dHBCWFNlcnZpY2VzKClcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlbGVnYXRlID0gbmV3IEJYUmVzdE5hdnZ5RGVsZWdhdGVFbGFwc2VkSXRlbSgpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBCWFJlc3ROYXZ2eVVzZXIgPSBuZXcgQlhSZXN0TmF2dnlVc2VyKClcclxuICBwcml2YXRlIHJlYWRvbmx5IEJYUmVzdE5hdnZ5VGFza3MgPSBuZXcgQlhSZXN0TmF2dnlUYXNrcygpXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgQlhSZXN0TmF2dnlFbGFwc2VkSXRlbTogQlhSZXN0TmF2dnlFbGFwc2VkSXRlbSkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LfQsNC/0LjRgdC4INC+INC30LDRgtGA0LDRh9C10L3QvdC+0Lwg0LLRgNC10LzQtdC90Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0LfQsCDQv9C10YDQuNC+0LQuXHJcbiAgICovXHJcbiAgZ2V0QnlJbnRlcnZhbChpZHNVc2VyczogbnVtYmVyW10sIGRhdGVTdGFydDogRGF0ZSwgZGF0ZUVuZDogRGF0ZSkge1xyXG4gICAgY29uc3QgcGFyYW06IGlCWFJlc3RQYXJhbUVsYXBzZWRpdGVtR2V0ID0ge1xyXG4gICAgICBPUkRFUjoge1xyXG4gICAgICAgIElEOiAnREVTQydcclxuICAgICAgfSxcclxuICAgICAgRklMVEVSOiB7XHJcbiAgICAgICAgVVNFUl9JRDogaWRzVXNlcnMsXHJcbiAgICAgICAgJz49Q1JFQVRFRF9EQVRFJzogZGF0ZVN0YXJ0LnRvTG9jYWxlU3RyaW5nKCdydS1SdScsIHtcclxuICAgICAgICAgIHRpbWVab25lTmFtZTogJ3Nob3J0J1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgICc8PUNSRUFURURfREFURSc6IGRhdGVFbmQudG9Mb2NhbGVTdHJpbmcoJ3J1LVJ1Jywge1xyXG4gICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmdldExpc3QocGFyYW0pXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiDQodC00LXQu9Cw0YLRjCDQvdC+0YDQvNCw0LvRjNC90L5cclxuICAvKipcclxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LfQsNC/0LjRgdC10Lkg0L4g0LfQsNGC0YDQsNGH0LXQvdC90L7QvCDQstGA0LXQvNC10L3QuCDQv9C+INC30LDQtNCw0YfQtS5cclxuICAgKi9cclxuICBnZXRMaXN0QnlJRFRhc2soaWRzOiBudW1iZXJbXSkge1xyXG4gICAgLy8g0J/Rg9GB0YLQvtC5IGJhdGNoINC30LDQstC10YDRiNCw0LXRgtGB0Y8g0LHQtdC3INC30L3QsNGH0LXQvdC40Y8sINC4INCy0YvQt9GL0LLQsNGO0YnQuNC5INC60L7QtCDQv9C+0LvRg9GH0LjQuyDQsdGLIEVtcHR5RXJyb3JcclxuICAgIGlmICghaWRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gb2YoW10pXHJcbiAgICB9XHJcbiAgICAvLyDQoNCw0LHQvtGC0LDQtdGCINGC0L7Qu9GM0LrQviDQv9C+0YLQvtC80YMg0YfRgtC+IFwiblBhZ2VTaXplOiA5OTk5OVwiXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmJyYW5jaDxpQlhSZXN0UGFyYW1FbGFwc2VkaXRlbUdldCwgaUJYUmVzdFRhc2tFbGFwc2VkSXRlbUh0dHA+XHJcbiAgICAoXHJcbiAgICAgIGlkcy5tYXAoaSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKFskdGFzaywgJGVsYXBzZWRpdGVtLCAkZ2V0bGlzdF0pLFxyXG4gICAgICAgICAgcGFyYW06IHtcclxuICAgICAgICAgICAgVEFTS0lEOiBpLFxyXG4gICAgICAgICAgICBQQVJBTVM6IHtcclxuICAgICAgICAgICAgICBOQVZfUEFSQU1TOiB7XHJcbiAgICAgICAgICAgICAgICBuUGFnZVNpemU6IDk5OTk5LFxyXG4gICAgICAgICAgICAgICAgaU51bVBhZ2U6IDFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICBpZiAodiAmJiB2Lmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gdGhpcy5odHRwLm1hcEJyYW5jaFJlc3VsdFdpdGhvdXRLZXkodilcclxuICAgICAgICAgIHJldHVybiBCWFJlc3RNYXBUYXNrRWxhcHNlZEl0ZW0uZ2V0TGlzdChyZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9GA0LDQstC+INC90LAg0LTQvtCx0LDQstC70LXQvdC40LUg0LfQsNGC0YDQsNGH0LXQvdC90L7Qs9C+INCy0YDQtdC80LXQvdC4INGB0YDQsNC30YMg0L/QviDQvdC10YHQutC+0LvRjNC60LjQvCDQt9Cw0LTQsNGH0LDQvC5cclxuICAgKi9cclxuICBjaGVja1Blcm1pc3Npb25BZGRFbGFwc2VkVGltZVRvVGFza0Fycih0YXNrczogbnVtYmVyW10sIHVzZXJDdXJyZW50OiBpQlhSZXN0VXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xyXG4gICAgLy8g0KPQsdC40YDQsNC10Lwg0LTRg9Cx0LvQuCwg0YfRgtC+0LHRiyDQvdC1INC/0YDQvtCy0LXRgNGP0YLRjCDQv9GA0LDQstCwINC/0L4g0L7QtNC90L7QuSDQt9Cw0LTQsNGH0LUg0L3QtdGB0LrQvtC70YzQutC+INGA0LDQty5cclxuICAgIGNvbnN0IGlkcyA9IFsuLi5uZXcgU2V0KHRhc2tzLmZpbHRlcihpID0+ICEhaSkpXVxyXG4gICAgLy8g0JXRgdC70Lgg0YLQtdC60YPRidC40Lkg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC90LUg0L/QtdGA0LXQtNCw0L0g0YHQvdCw0YDRg9C20LgsINC30LDQv9GA0LDRiNC40LLQsNC10Lwg0LXQs9C+INC+0LTQuNC9INGA0LDQtyDQvdCwINCy0LXRgdGMINC90LDQsdC+0YAg0LfQsNC00LDRhy5cclxuICAgIGNvbnN0IHVzZXIkID0gdXNlckN1cnJlbnQgPyBvZih1c2VyQ3VycmVudCkgOiB0aGlzLkJYUmVzdE5hdnZ5VXNlci5jdXJyZW50KCkucmVzKClcclxuXHJcbiAgICAvLyDQodGC0LDRgNGL0LkgYmF0Y2gg0YfQtdGA0LXQtyB0YXNrLmVsYXBzZWRpdGVtLmlzYWN0aW9uYWxsb3dlZC5cclxuICAgIC8vINCS0YvQt9GL0LLQsNC10Lwg0LXQs9C+INC90LjQttC1INGC0L7Qu9GM0LrQviDQtNC70Y8g0LfQsNC00LDRhywg0L/QviDQutC+0YLQvtGA0YvQvCBnZXRhY2Nlc3Mg0L3QtSDQstC10YDQvdGD0LsgRUxBUFNFRFRJTUUuQURELlxyXG4gICAgY29uc3QgbG9hZE1pc3NpbmdCeUFjdGlvbkFsbG93ZWQgPSAobWlzc2luZ0lkczogbnVtYmVyW10sIHJlc29sdmVkOiB7IGlkOiBudW1iZXIsIHZhbHVlOiBib29sZWFuIH1bXSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmJyYW5jaDxpSXNBY3Rpb25BbGxvd2VkUGFyYW0sIGJvb2xlYW4+KFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIC4uLm1pc3NpbmdJZHMubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgW2ldOiB7XHJcbiAgICAgICAgICAgICAgbmFtZTogdGhpcy5odHRwLmdldE5hbWVNZXRob2QoWyR0YXNrLCAkZWxhcHNlZGl0ZW0sICRpc2FjdGlvbmFsbG93ZWRdKSxcclxuICAgICAgICAgICAgICBwYXJhbToge1xyXG4gICAgICAgICAgICAgICAgVEFTS0lEOiBpLFxyXG4gICAgICAgICAgICAgICAgSVRFTUlEOiAxLFxyXG4gICAgICAgICAgICAgICAgQUNUSU9OSUQ6IDFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgICAgKS5waXBlKFxyXG4gICAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlczogUmVjb3JkPG51bWJlciwgYm9vbGVhbj4gPSB0aGlzLmh0dHAubWFwQnJhbmNoUmVzdWx0KHYpXHJcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlZCA9IE9iamVjdC5lbnRyaWVzKHJlcykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2lkOiBOdW1iZXIoa2V5KSwgdmFsdWV9XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICByZXR1cm4gWy4uLnJlc29sdmVkLCAuLi5sb2FkZWRdXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWlkcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1c2VyJC5waXBlKFxyXG4gICAgICB0YWtlKDEpLFxyXG4gICAgICBtZXJnZU1hcChzZWxmID0+IHtcclxuICAgICAgICBpZiAoIXNlbGYpIHtcclxuICAgICAgICAgIC8vINCh0YLRgNCw0YXQvtCy0L7Rh9C90LDRjyDQstC10YLQutCwOiDQtdGB0LvQuCB1c2VyLmN1cnJlbnQg0L3QtSDQstC10YDQvdGD0LvRgdGPLCBnZXRhY2Nlc3Mg0LLRi9C30LLQsNGC0Ywg0L3QtdC70YzQt9GPLlxyXG4gICAgICAgICAgcmV0dXJuIGxvYWRNaXNzaW5nQnlBY3Rpb25BbGxvd2VkKGlkcywgW10pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDQntGB0L3QvtCy0L3QvtC5INC/0YPRgtGMOiDQvtC00L3QuNC8IGJhdGNoLdC30LDQv9GA0L7RgdC+0Lwg0L/QvtC70YPRh9Cw0LXQvCDQv9GA0LDQstCwIEVMQVBTRURUSU1FLkFERCDQv9C+INCy0YHQtdC8INC30LDQtNCw0YfQsNC8LlxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuYnJhbmNoPGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MsIGlCWFJlc3RUYXNrR2V0QWNjZXNzPihcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIC4uLmlkcy5tYXAoaWQgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIFtpZF06IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKFskdGFza3MsICR0YXNrLCAkZ2V0YWNjZXNzXSksXHJcbiAgICAgICAgICAgICAgICBwYXJhbToge1xyXG4gICAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgICAgdXNlcnM6IFtzZWxmLklEXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgbWVyZ2VNYXAodiA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy5odHRwLm1hcEJyYW5jaFJlc3VsdDxpQlhSZXN0VGFza0dldEFjY2Vzcz4odilcclxuICAgICAgICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IGlkcy5tYXAoaWQgPT4gKHtcclxuICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc1tpZF0/LmFsbG93ZWRBY3Rpb25zPy5bc2VsZi5JRF0/LlsnRUxBUFNFRFRJTUUuQUREJ11cclxuICAgICAgICAgICAgICB9KSlcclxuXHJcbiAgICAgICAgICAgICAgLy8gZ2V0YWNjZXNzINC80L7QttC10YIg0LLQtdGA0L3Rg9GC0YwgdHJ1ZSDQuNC70LggZmFsc2UgLSDQvtCx0LAg0LfQvdCw0YfQtdC90LjRjyDRgdGH0LjRgtCw0LXQvCDQs9C+0YLQvtCy0YvQvCDQvtGC0LLQtdGC0L7QvC5cclxuICAgICAgICAgICAgICAvLyDQkiDRgdGC0LDRgNGL0LkgaXNhY3Rpb25hbGxvd2VkINC+0YLQv9GA0LDQstC70Y/QtdC8INGC0L7Qu9GM0LrQviDQt9Cw0LTQsNGH0Lgg0LHQtdC3INGP0LLQvdC+0LPQviBFTEFQU0VEVElNRS5BREQuXHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBwZXJtaXNzaW9ucy5maWx0ZXIoaSA9PiBpLnZhbHVlICE9PSB1bmRlZmluZWQpIGFzIHsgaWQ6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gfVtdXHJcbiAgICAgICAgICAgICAgY29uc3QgbWlzc2luZ0lkcyA9IHBlcm1pc3Npb25zLmZpbHRlcihpID0+IGkudmFsdWUgPT09IHVuZGVmaW5lZCkubWFwKGkgPT4gaS5pZClcclxuXHJcbiAgICAgICAgICAgICAgaWYgKG1pc3NpbmdJZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1pc3NpbmdCeUFjdGlvbkFsbG93ZWQobWlzc2luZ0lkcywgcmVzb2x2ZWQpXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICByZXR1cm4gb2YocGVybWlzc2lvbnMpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vINCV0YHQu9C4IGJhdGNoIGdldGFjY2VzcyDQvdC1INCy0LXRgNC90YPQu9GB0Y8sINGB0L7RhdGA0LDQvdGP0LXQvCDQv9C+0LLQtdC00LXQvdC40LUg0YHRgtCw0YDQvtCz0L4gZmFsbGJhY2suXHJcbiAgICAgICAgICAgIHJldHVybiBsb2FkTWlzc2luZ0J5QWN0aW9uQWxsb3dlZChpZHMsIFtdKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqINCf0YDQvtCy0LXRgNC60LAg0L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNC1INC30LDQv9C40YHQuCDRgtGA0LXQutCwINCyINGC0LDRgdC60YNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFRhc2tcclxuICAgKiBAcGFyYW0gdXNlckN1cnJlbnRcclxuICAgKi9cclxuICBjaGVja1Blcm1pc3Npb25BZGRFbGFwc2VkVGltZVRvVGFzayhpZFRhc2s6IG51bWJlciwgdXNlckN1cnJlbnQ6IGlCWFJlc3RVc2VyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XHJcbiAgICByZXR1cm4gKCh1c2VyQ3VycmVudCkgPyBvZih1c2VyQ3VycmVudCkgOiB0aGlzLkJYUmVzdE5hdnZ5VXNlci5jdXJyZW50KCkucmVzKCkpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKHNlbGYgPT4ge1xyXG4gICAgICAgIGlmIChzZWxmKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eVRhc2tzLnRhc2suZ2V0QWNjZXNzKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWQ6IGlkVGFzayxcclxuICAgICAgICAgICAgICB1c2VyczogW3NlbGYuSURdXHJcbiAgICAgICAgICAgIH0pLnJlcygpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKHYgJiYgdltzZWxmLklEXSkgPyB2W3NlbGYuSURdWydFTEFQU0VEVElNRS5BREQnXSA6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0J/RgNC+0LLQtdGA0LrQsCDQvdCwINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0L/RgNC+0YfRgtC10L3QuNGPINGC0LDQutGB0LrQuFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkVGFza1xyXG4gICAqIEBwYXJhbSB1c2VyQ3VycmVudFxyXG4gICAqL1xyXG4gIGNoZWNrUGVybWlzc2lvblJlYWRUYXNrKGlkVGFzazogbnVtYmVyLCB1c2VyQ3VycmVudDogaUJYUmVzdFVzZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcclxuICAgIHJldHVybiAoKHVzZXJDdXJyZW50KSA/IG9mKHVzZXJDdXJyZW50KSA6IHRoaXMuQlhSZXN0TmF2dnlVc2VyLmN1cnJlbnQoKS5yZXMoKSkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoc2VsZiA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGYpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5VGFza3MudGFzay5nZXRBY2Nlc3MoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZDogaWRUYXNrLFxyXG4gICAgICAgICAgICAgIHVzZXJzOiBbc2VsZi5JRF1cclxuICAgICAgICAgICAgfSkucmVzKCkucGlwZShcclxuICAgICAgICAgICAgbWFwKHYgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAodiAmJiB2W3NlbGYuSURdKSA/ICEhdltzZWxmLklEXSA6IGZhbHNlIC8vINC+0YLQtNC10LvRjNC90L7Qs9C+INGE0LvQsNCz0LAg0L3QsCDRh9GC0LXQvdC40LUg0L3QtdGCLCDQstGL0YXQvtC00LjRgiDRh9GC0L4g0LXRgdC70Lgg0L/RgNCw0LLQsCDQvtGC0LTQsNC70LjRgdGMINGC0L4g0Lgg0L/RgNCw0LLQsCDQtdGB0YLRjFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQutC+0L3Rh9C10L3QvdGL0Lkg0LzQtdGC0L7QtCDQtNC+0LHQsNCy0LvQtdC90LjRjyDQt9Cw0L/QuNGB0Lgg0YEg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtC5INC/0YDQvtCy0LXRgNC60L7QuSDQv9GA0LDQslxyXG4gICAqXHJcbiAgICogVE9ETzog0LTQvtCx0LDQstC40YLRjCDRgdC+0YXRgNCw0L3QtdC90LjQtSDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+INC/0YDQvtCy0LXRgNC10L3QvdGL0YUg0LfQsNC/0LjRgdC10LlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBhZGQocGFyYW06IGlCWFJlc3RQYXJhbUFkZEVsYXBzZWRpdGVtKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb25SZWFkVGFzayhwYXJhbS5UQVNLSUQpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKGFsbG93ZWRSZWFkVGFzayA9PiB7XHJcbiAgICAgICAgaWYgKGFsbG93ZWRSZWFkVGFzaykge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uQWRkRWxhcHNlZFRpbWVUb1Rhc2socGFyYW0uVEFTS0lEKS5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcChhbGxvd2VkID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWxsb3dlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQlhSZXN0TmF2dnlFbGFwc2VkSXRlbS5hZGQocGFyYW0pLnJlcygpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC90LAg0LTQvtCx0LDQstC70LXQvdC40LUg0LfQsNC/0LjRgdC4INC30LDRgtGA0LDRh9C10L3QvdC+0LPQviDQstGA0LXQvNC10L3QuCcpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC90LAg0YfRgtC10L3QuNC1INC30LDQtNCw0YfQuCcpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQl9Cw0LrQvtC90YfQtdC90L3Ri9C5INC80LXRgtC+0LQg0L7QsdC90L7QstC70LXQvdC40Y8g0LfQsNC/0LjRgdC4INGBINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L7QuSDQv9GA0L7QstC10YDQutC+0Lkg0L/RgNCw0LJcclxuICAgKlxyXG4gICAqIFRPRE86INC00L7QsdCw0LLQuNGC0Ywg0YHQvtGF0YDQsNC90LXQvdC40LUg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QviDQv9GA0L7QstC10YDQtdC90L3Ri9GFINC30LDQv9C40YHQtdC5XHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgdXBkYXRlKHBhcmFtOiBpQlhSZXN0UGFyYW1VcGRhdGVFbGFwc2VkaXRlbSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2socGFyYW0uVEFTS0lEKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcCgoYWxsb3dlZFJlYWRUYXNrKSA9PiB7XHJcbiAgICAgICAgaWYgKGFsbG93ZWRSZWFkVGFzaykge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNBbGxvd2VkTW9kaWZ5KHBhcmFtLlRBU0tJRCwgcGFyYW0uSVRFTUlEKS5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcChhbGxvd2VkID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWxsb3dlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQlhSZXN0TmF2dnlFbGFwc2VkSXRlbS51cGRhdGUocGFyYW0pLnJlcygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC90LAg0LjQt9C80LXQvdC10L3QuNC1INC30LDQv9C40YHQuCDQt9Cw0YLRgNCw0YfQtdC90L3QvtCz0L4g0LLRgNC10LzQtdC90LgnKSlcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC90LAg0YfRgtC10L3QuNC1INC30LDQtNCw0YfQuCcpKVxyXG4gICAgICB9KSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9GA0LDQstC+INC90LAg0LjQt9C80LXQvdC10L3QuNC1INC30LDQv9C40YHQuCDQviDQt9Cw0YLRgNCw0YfQtdC90L3QvtC8INCy0YDQtdC80LXQvdC4LlxyXG4gICAqL1xyXG4gIGlzQWxsb3dlZE1vZGlmeShpZFRhc2s6IG51bWJlciwgaWRJdGVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uaXNBY3Rpb25BbGxvd2VkKHtcclxuICAgICAgVEFTS0lEOiBpZFRhc2ssXHJcbiAgICAgIElURU1JRDogaWRJdGVtLFxyXG4gICAgICBBQ1RJT05JRDogMlxyXG4gICAgfSkucmVzKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGlzQWN0aW9uQWxsb3dlZCDRgSDRhNC40LrRgdC+0Lwg0L3QsCDQv9GA0L7QstC10YDQutGDINCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0YfRgtC10L3QuNGPINC30LDQtNCw0YfQuCDQt9Cw0L/QuNGB0LhcclxuICAgKiAo0LHQtdC3INC/0YDQvtCy0LXRgNC60Lgg0LTQsNGR0YIg0L7RiNC40LHQutGDKVxyXG4gICAqXHJcbiAgICogaWRBY3Rpb246XHJcbiAgICogMSAtIEFDVElPTl9FTEFQU0VEX1RJTUVfQUREXHJcbiAgICogMiAtIEFDVElPTl9FTEFQU0VEX1RJTUVfTU9ESUZZXHJcbiAgICogMyAtIEFDVElPTl9FTEFQU0VEX1RJTUVfUkVNT1ZFXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgaXNBY3Rpb25BbGxvd2VkKHBhcmFtOiBpSXNBY3Rpb25BbGxvd2VkUGFyYW0pIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvblJlYWRUYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoY2FuUmVhZCA9PiB7XHJcbiAgICAgICAgaWYgKGNhblJlYWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uaXNBY3Rpb25BbGxvd2VkKHBhcmFtKS5yZXMoKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGH0YLQtdC90LjQtSDQt9Cw0LTQsNGH0LgnKSlcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDQn9C+0LvQvdC+0YbQtdC90L3Ri9C5INC80LXRgtC+0LQg0YPQtNCw0LvQtdC90LjRj1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgZGVsKHBhcmFtOiBpQlhSZXN0UGFyYW1EZWxFbGFwc2VkaXRlbSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2socGFyYW0uVEFTS0lEKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcChhbGxvd2VkUmVhZFRhc2sgPT4ge1xyXG4gICAgICAgIGlmIChhbGxvd2VkUmVhZFRhc2spIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQWxsb3dlZFJlbW92ZShwYXJhbS5UQVNLSUQsIHBhcmFtLklURU1JRCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoYWxsb3dlZCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uZGVsZXRlKHBhcmFtKS5yZXMoKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGD0LTQsNC70LXQvdC40LUg0LfQsNC/0LjRgdC4INC30LDRgtGA0LDRh9C10L3QvdC+0LPQviDQstGA0LXQvNC10L3QuCcpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC90LAg0YfRgtC10L3QuNC1INC30LDQtNCw0YfQuCcpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9GA0LDQstC+INC90LAg0YPQtNCw0LvQtdC90LjQtSDQt9Cw0L/QuNGB0Lgg0L4g0LfQsNGC0YDQsNGH0LXQvdC90L7QvCDQstGA0LXQvNC10L3QuC5cclxuICAgKi9cclxuICBwcml2YXRlIGlzQWxsb3dlZFJlbW92ZShpZFRhc2s6IG51bWJlciwgaWRJdGVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmlzQWN0aW9uQWxsb3dlZChcclxuICAgICAge1xyXG4gICAgICAgIFRBU0tJRDogaWRUYXNrLFxyXG4gICAgICAgIElURU1JRDogaWRJdGVtLFxyXG4gICAgICAgIEFDVElPTklEOiAzXHJcbiAgICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhcHNlZGl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXF1ZXN0LW5hdnZ5L3Rhc2svb3BlcmF0aW9uL2VsYXBzZWRpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZILE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzlDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBSXhFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBTzdFLHFHQUFxRztBQUNyRyxTQUFTLFdBQVcsQ0FBSSxPQUE2QztJQUNuRSxNQUFNLE1BQU0sR0FBbUIsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUN4RCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQyxJQUFJLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxD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LEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFakMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFBO2dCQUM3RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQzNGLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUUsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxD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QUFBO0lBQ0gsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCxHQUFHLENBQUMsS0FBaUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDcEQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3pCLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQzFELFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDakIsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7b0JBQ3hELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLENBQUE7b0JBQ3ZGLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNQLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUE7WUFDdEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlLENBQUMsTUFBYyxFQUFFLE1BQWM7UUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QjtZQUNFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQTtJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlCWFJlc3RQYXJhbUVsYXBzZWRpdGVtR2V0LFxuICBpQlhSZXN0VGFza0VsYXBzZWRJdGVtSHR0cCxcbiAgaUJYUmVzdFBhcmFtVGFza0dldEFjY2VzcyxcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3MsXG4gIGlJc0FjdGlvbkFsbG93ZWRQYXJhbSxcbiAgaUJYUmVzdFBhcmFtQWRkRWxhcHNlZGl0ZW0sXG4gIGlCWFJlc3RQYXJhbVVwZGF0ZUVsYXBzZWRpdGVtLFxuICBpQlhSZXN0UGFyYW1EZWxFbGFwc2VkaXRlbVxufSBmcm9tICcuLi8uLi8uLi90eXBpZmljYXRpb24vcmVzdC90YXNrJ1xuaW1wb3J0IHsgSHR0cEJYU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwL0h0dHBCWCdcbmltcG9ydCB7ICRlbGFwc2VkaXRlbSwgJGdldGFjY2VzcywgJGdldGxpc3QsICRpc2FjdGlvbmFsbG93ZWQsICR0YXNrLCAkdGFza3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2tFbGFwc2VkSXRlbSB9IGZyb20gJy4uLy4uLy4uL21hcC90YXNrL2VsYXBzZWRpdGVtJ1xuaW1wb3J0IHsgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VXNlciB9IGZyb20gJy4uLy4uL3VzZXInXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzIH0gZnJvbSAnLi4vLi4vdGFza3MnXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eURlbGVnYXRlRWxhcHNlZEl0ZW0gfSBmcm9tICcuLi9kZWxlZ2F0ZS9lbGFwc2VkaXRlbSdcbmltcG9ydCB7IGlCWFJlc3RVc2VyIH0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdXNlcidcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0gfSBmcm9tICcuLi9lbGFwc2VkaXRlbSdcbmltcG9ydCB7IGlCYXRjaFJlcXVlc3RBbnN3ZXIgfSBmcm9tICcuLi8uLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXRjaC9iYXRjaFJlcXVlc3RQYXJhbSdcbmltcG9ydCB7IGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9tYXBSZXN1bHQnXG5cbmludGVyZmFjZSBCYXRjaFZhbHVlczxUPiB7XG4gIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVCB8IHVuZGVmaW5lZD5cbiAgdG90YWw6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHVuZGVmaW5lZD5cbn1cblxuLyoqINCg0LXQt9GD0LvRjNGC0LDRgtGLINC4IGB0b3RhbGAg0LrQvtC80LDQvdC0INC40Lcg0L7RgtCy0LXRgtC+0LIgYmF0Y2gg0L/QviDQutC70Y7Rh9Cw0Lwg0LrQvtC80LDQvdC0LiDQmtC+0LzQsNC90LTRiyDRgSDQvtGI0LjQsdC60L7QuSDQv9GA0L7Qv9GD0YHQutCw0Y7RgtGB0Y8uICovXG5mdW5jdGlvbiBiYXRjaFZhbHVlczxUPihhbnN3ZXJzOiBpQmF0Y2hSZXF1ZXN0QW5zd2VyPFQ+W10gfCB1bmRlZmluZWQpOiBCYXRjaFZhbHVlczxUPiB7XG4gIGNvbnN0IHZhbHVlczogQmF0Y2hWYWx1ZXM8VD4gPSB7IHJlc3VsdDoge30sIHRvdGFsOiB7fSB9XG4gIGZvciAoY29uc3QgYW5zd2VyIG9mIGFuc3dlcnMgPz8gW10pIHtcbiAgICBpZiAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGFuc3dlcikgJiYgYW5zd2VyLnJlc3VsdCAmJiB0eXBlb2YgYW5zd2VyLnJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGJhdGNoID0gYW5zd2VyLnJlc3VsdCBhcyB7IHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIFQ+LCByZXN1bHRfdG90YWw/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IH1cbiAgICAgIE9iamVjdC5hc3NpZ24odmFsdWVzLnJlc3VsdCwgYmF0Y2gucmVzdWx0KVxuICAgICAgT2JqZWN0LmFzc2lnbih2YWx1ZXMudG90YWwsIGJhdGNoLnJlc3VsdF90b3RhbClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlc1xufVxuXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnlPcGVyYXRpb25FbGFwc2VkSXRlbSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gbmV3IEh0dHBCWFNlcnZpY2VzKClcbiAgcHJpdmF0ZSByZWFkb25seSBkZWxlZ2F0ZSA9IG5ldyBCWFJlc3ROYXZ2eURlbGVnYXRlRWxhcHNlZEl0ZW0oKVxuICBwcml2YXRlIHJlYWRvbmx5IEJYUmVzdE5hdnZ5VXNlciA9IG5ldyBCWFJlc3ROYXZ2eVVzZXIoKVxuICBwcml2YXRlIHJlYWRvbmx5IEJYUmVzdE5hdnZ5VGFza3MgPSBuZXcgQlhSZXN0TmF2dnlUYXNrcygpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBCWFJlc3ROYXZ2eUVsYXBzZWRJdGVtOiBCWFJlc3ROYXZ2eUVsYXBzZWRJdGVtKSB7XG4gIH1cblxuICAvKipcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LfQsNC/0LjRgdC4INC+INC30LDRgtGA0LDRh9C10L3QvdC+0Lwg0LLRgNC10LzQtdC90Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0LfQsCDQv9C10YDQuNC+0LQuXG4gICAqL1xuICBnZXRCeUludGVydmFsKGlkc1VzZXJzOiBudW1iZXJbXSwgZGF0ZVN0YXJ0OiBEYXRlLCBkYXRlRW5kOiBEYXRlKSB7XG4gICAgY29uc3QgcGFyYW06IGlCWFJlc3RQYXJhbUVsYXBzZWRpdGVtR2V0ID0ge1xuICAgICAgT1JERVI6IHtcbiAgICAgICAgSUQ6ICdERVNDJ1xuICAgICAgfSxcbiAgICAgIEZJTFRFUjoge1xuICAgICAgICBVU0VSX0lEOiBpZHNVc2VycyxcbiAgICAgICAgJz49Q1JFQVRFRF9EQVRFJzogZGF0ZVN0YXJ0LnRvTG9jYWxlU3RyaW5nKCdydS1SdScsIHtcbiAgICAgICAgICB0aW1lWm9uZU5hbWU6ICdzaG9ydCdcbiAgICAgICAgfSksXG4gICAgICAgICc8PUNSRUFURURfREFURSc6IGRhdGVFbmQudG9Mb2NhbGVTdHJpbmcoJ3J1LVJ1Jywge1xuICAgICAgICAgIHRpbWVab25lTmFtZTogJ3Nob3J0J1xuICAgICAgICB9KSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZ2V0TGlzdChwYXJhbSlcbiAgfVxuXG4gIC8qKlxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQstGB0LUg0LfQsNC/0LjRgdC4INC+INC30LDRgtGA0LDRh9C10L3QvdC+0Lwg0LLRgNC10LzQtdC90Lgg0L/QviDQt9Cw0LTQsNGH0LDQvCBgaWRzYDog0YHQvdCw0YfQsNC70LAg0LfQsNC/0LjRgdC4INC/0LXRgNCy0L7QuSDQt9Cw0LTQsNGH0LgsXG4gICAqINC30LDRgtC10Lwg0LLRgtC+0YDQvtC5INC4INGC0LDQuiDQtNCw0LvQtdC1LlxuICAgKlxuICAgKiDQn9C+0YDRgtCw0Lsg0L7RgtC00LDRkdGCINC90LUg0LHQvtC70YzRiNC1IDUwINC30LDQv9C40YHQtdC5INC90LAg0YHRgtGA0LDQvdC40YbRgy4g0J/QtdGA0LLRi9C1INGB0YLRgNCw0L3QuNGG0Ysg0LLRgdC10YUg0LfQsNC00LDRhyDRg9GF0L7QtNGP0YIg0L7QtNC90LjQvFxuICAgKiBiYXRjaCwg0L7RgdGC0LDQu9GM0L3Ri9C1INGB0YLRgNCw0L3QuNGG0Ysg0LfQsNC/0YDQsNGI0LjQstCw0Y7RgtGB0Y8g0YLQvtC70YzQutC+INGDINC30LDQtNCw0YcsINCz0LTQtSDQt9Cw0L/QuNGB0LXQuSDQsdC+0LvRjNGI0LUgNTAuXG4gICAqL1xuICBnZXRMaXN0QnlJRFRhc2soaWRzOiBudW1iZXJbXSkge1xuICAgIC8vINCf0YPRgdGC0L7QuSBiYXRjaCDQt9Cw0LLQtdGA0YjQsNC10YLRgdGPINCx0LXQtyDQt9C90LDRh9C10L3QuNGPLCDQuCDQstGL0LfRi9Cy0LDRjtGJ0LjQuSDQutC+0LQg0L/QvtC70YPRh9C40Lsg0LHRiyBFbXB0eUVycm9yXG4gICAgaWYgKCFpZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YoW10pXG4gICAgfVxuICAgIGNvbnN0IHBhZ2VTaXplID0gNTBcbiAgICBjb25zdCBrZXkgPSAoaW5kZXg6IG51bWJlciwgcGFnZTogbnVtYmVyKSA9PiBgJHtpbmRleH1fJHtwYWdlfWBcbiAgICBjb25zdCBjb21tYW5kcyA9IChwYWdlczogeyBpbmRleDogbnVtYmVyLCBwYWdlOiBudW1iZXIgfVtdKSA9PiBPYmplY3QuZnJvbUVudHJpZXMocGFnZXMubWFwKCh7IGluZGV4LCBwYWdlIH0pID0+IFtcbiAgICAgIGtleShpbmRleCwgcGFnZSksXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKFskdGFzaywgJGVsYXBzZWRpdGVtLCAkZ2V0bGlzdF0pLFxuICAgICAgICBwYXJhbTogeyBUQVNLSUQ6IGlkc1tpbmRleF0sIFBBUkFNUzogeyBOQVZfUEFSQU1TOiB7IG5QYWdlU2l6ZTogcGFnZVNpemUsIGlOdW1QYWdlOiBwYWdlIH0gfSB9XG4gICAgICB9XG4gICAgXSkpXG4gICAgY29uc3QgbG9hZCA9IChwYWdlczogeyBpbmRleDogbnVtYmVyLCBwYWdlOiBudW1iZXIgfVtdKTogT2JzZXJ2YWJsZTxCYXRjaFZhbHVlczxpQlhSZXN0VGFza0VsYXBzZWRJdGVtSHR0cFtdPj4gPT4gcGFnZXMubGVuZ3RoXG4gICAgICA/IHRoaXMuaHR0cC5icmFuY2g8aUJYUmVzdFBhcmFtRWxhcHNlZGl0ZW1HZXQsIGlCWFJlc3RUYXNrRWxhcHNlZEl0ZW1IdHRwW10+KGNvbW1hbmRzKHBhZ2VzKSkucGlwZShtYXAodiA9PiBiYXRjaFZhbHVlcyh2KSkpXG4gICAgICA6IG9mKHsgcmVzdWx0OiB7fSwgdG90YWw6IHt9IH0pXG5cbiAgICByZXR1cm4gbG9hZChpZHMubWFwKChfLCBpbmRleCkgPT4gKHsgaW5kZXgsIHBhZ2U6IDEgfSkpKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoZmlyc3QgPT4ge1xuICAgICAgICBjb25zdCByZXN0ID0gaWRzLmZsYXRNYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFnZXMgPSBNYXRoLmNlaWwoKE51bWJlcihmaXJzdC50b3RhbFtrZXkoaW5kZXgsIDEpXSkgfHwgMCkgLyBwYWdlU2l6ZSlcbiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5tYXgocGFnZXMgLSAxLCAwKSB9LCAoXywgaSkgPT4gKHsgaW5kZXgsIHBhZ2U6IGkgKyAyIH0pKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gbG9hZChyZXN0KS5waXBlKG1hcChtb3JlID0+ICh7IC4uLmZpcnN0LnJlc3VsdCwgLi4ubW9yZS5yZXN1bHQgfSkpKVxuICAgICAgfSksXG4gICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBpZHMuZmxhdE1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBsaXN0OiBpQlhSZXN0VGFza0VsYXBzZWRJdGVtSHR0cFtdID0gW11cbiAgICAgICAgICBmb3IgKGxldCBwYWdlID0gMTsgcmVzdWx0W2tleShpbmRleCwgcGFnZSldOyBwYWdlKyspIHtcbiAgICAgICAgICAgIGxpc3QucHVzaCguLi5yZXN1bHRba2V5KGluZGV4LCBwYWdlKV0hKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbGlzdFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gQlhSZXN0TWFwVGFza0VsYXBzZWRJdGVtLmdldExpc3QoaXRlbXMpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiDQn9GA0L7QstC10YDRj9C10YIg0L/RgNCw0LLQviDQvdCwINC00L7QsdCw0LLQu9C10L3QuNC1INC30LDRgtGA0LDRh9C10L3QvdC+0LPQviDQstGA0LXQvNC10L3QuCDRgdGA0LDQt9GDINC/0L4g0L3QtdGB0LrQvtC70YzQutC40Lwg0LfQsNC00LDRh9Cw0LwuXG4gICAqL1xuICBjaGVja1Blcm1pc3Npb25BZGRFbGFwc2VkVGltZVRvVGFza0Fycih0YXNrczogbnVtYmVyW10sIHVzZXJDdXJyZW50OiBpQlhSZXN0VXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xuICAgIC8vINCj0LHQuNGA0LDQtdC8INC00YPQsdC70LgsINGH0YLQvtCx0Ysg0L3QtSDQv9GA0L7QstC10YDRj9GC0Ywg0L/RgNCw0LLQsCDQv9C+INC+0LTQvdC+0Lkg0LfQsNC00LDRh9C1INC90LXRgdC60L7Qu9GM0LrQviDRgNCw0LcuXG4gICAgY29uc3QgaWRzID0gWy4uLm5ldyBTZXQodGFza3MuZmlsdGVyKGkgPT4gISFpKSldXG4gICAgLy8g0JXRgdC70Lgg0YLQtdC60YPRidC40Lkg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC90LUg0L/QtdGA0LXQtNCw0L0g0YHQvdCw0YDRg9C20LgsINC30LDQv9GA0LDRiNC40LLQsNC10Lwg0LXQs9C+INC+0LTQuNC9INGA0LDQtyDQvdCwINCy0LXRgdGMINC90LDQsdC+0YAg0LfQsNC00LDRhy5cbiAgICBjb25zdCB1c2VyJCA9IHVzZXJDdXJyZW50ID8gb2YodXNlckN1cnJlbnQpIDogdGhpcy5CWFJlc3ROYXZ2eVVzZXIuY3VycmVudCgpLnJlcygpXG5cbiAgICAvLyDQodGC0LDRgNGL0LkgYmF0Y2gg0YfQtdGA0LXQtyB0YXNrLmVsYXBzZWRpdGVtLmlzYWN0aW9uYWxsb3dlZC5cbiAgICAvLyDQktGL0LfRi9Cy0LDQtdC8INC10LPQviDQvdC40LbQtSDRgtC+0LvRjNC60L4g0LTQu9GPINC30LDQtNCw0YcsINC/0L4g0LrQvtGC0L7RgNGL0LwgZ2V0YWNjZXNzINC90LUg0LLQtdGA0L3Rg9C7IEVMQVBTRURUSU1FLkFERC5cbiAgICBjb25zdCBsb2FkTWlzc2luZ0J5QWN0aW9uQWxsb3dlZCA9IChtaXNzaW5nSWRzOiBudW1iZXJbXSwgcmVzb2x2ZWQ6IHsgaWQ6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gfVtdKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmJyYW5jaDxpSXNBY3Rpb25BbGxvd2VkUGFyYW0sIGJvb2xlYW4+KFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCAuLi5taXNzaW5nSWRzLm1hcChpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW2ldOiB7XG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKFskdGFzaywgJGVsYXBzZWRpdGVtLCAkaXNhY3Rpb25hbGxvd2VkXSksXG4gICAgICAgICAgICAgIHBhcmFtOiB7XG4gICAgICAgICAgICAgICAgVEFTS0lEOiBpLFxuICAgICAgICAgICAgICAgIElURU1JRDogMSxcbiAgICAgICAgICAgICAgICBBQ1RJT05JRDogMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSlcbiAgICAgICkucGlwZShcbiAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZXM6IFJlY29yZDxudW1iZXIsIGJvb2xlYW4+ID0gdGhpcy5odHRwLm1hcEJyYW5jaFJlc3VsdCh2KVxuICAgICAgICAgICAgY29uc3QgbG9hZGVkID0gT2JqZWN0LmVudHJpZXMocmVzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge2lkOiBOdW1iZXIoa2V5KSwgdmFsdWV9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gWy4uLnJlc29sdmVkLCAuLi5sb2FkZWRdXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghaWRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKFtdKVxuICAgIH1cblxuICAgIHJldHVybiB1c2VyJC5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1lcmdlTWFwKHNlbGYgPT4ge1xuICAgICAgICBpZiAoIXNlbGYpIHtcbiAgICAgICAgICAvLyDQodGC0YDQsNGF0L7QstC+0YfQvdCw0Y8g0LLQtdGC0LrQsDog0LXRgdC70LggdXNlci5jdXJyZW50INC90LUg0LLQtdGA0L3Rg9C70YHRjywgZ2V0YWNjZXNzINCy0YvQt9Cy0LDRgtGMINC90LXQu9GM0LfRjy5cbiAgICAgICAgICByZXR1cm4gbG9hZE1pc3NpbmdCeUFjdGlvbkFsbG93ZWQoaWRzLCBbXSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCe0YHQvdC+0LLQvdC+0Lkg0L/Rg9GC0Yw6INC+0LTQvdC40LwgYmF0Y2gt0LfQsNC/0YDQvtGB0L7QvCDQv9C+0LvRg9GH0LDQtdC8INC/0YDQsNCy0LAgRUxBUFNFRFRJTUUuQUREINC/0L4g0LLRgdC10Lwg0LfQsNC00LDRh9Cw0LwuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuYnJhbmNoPGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MsIGlCWFJlc3RUYXNrR2V0QWNjZXNzPihcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCAuLi5pZHMubWFwKGlkID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIFtpZF06IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmh0dHAuZ2V0TmFtZU1ldGhvZChbJHRhc2tzLCAkdGFzaywgJGdldGFjY2Vzc10pLFxuICAgICAgICAgICAgICAgIHBhcmFtOiB7XG4gICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgIHVzZXJzOiBbc2VsZi5JRF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKHYgPT4ge1xuICAgICAgICAgICAgaWYgKHYgJiYgdi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy5odHRwLm1hcEJyYW5jaFJlc3VsdDxpQlhSZXN0VGFza0dldEFjY2Vzcz4odilcbiAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBpZHMubWFwKGlkID0+ICh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc1tpZF0/LmFsbG93ZWRBY3Rpb25zPy5bc2VsZi5JRF0/LlsnRUxBUFNFRFRJTUUuQUREJ11cbiAgICAgICAgICAgICAgfSkpXG5cbiAgICAgICAgICAgICAgLy8gZ2V0YWNjZXNzINC80L7QttC10YIg0LLQtdGA0L3Rg9GC0YwgdHJ1ZSDQuNC70LggZmFsc2UgLSDQvtCx0LAg0LfQvdCw0YfQtdC90LjRjyDRgdGH0LjRgtCw0LXQvCDQs9C+0YLQvtCy0YvQvCDQvtGC0LLQtdGC0L7QvC5cbiAgICAgICAgICAgICAgLy8g0JIg0YHRgtCw0YDRi9C5IGlzYWN0aW9uYWxsb3dlZCDQvtGC0L/RgNCw0LLQu9GP0LXQvCDRgtC+0LvRjNC60L4g0LfQsNC00LDRh9C4INCx0LXQtyDRj9Cy0L3QvtCz0L4gRUxBUFNFRFRJTUUuQURELlxuICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHBlcm1pc3Npb25zLmZpbHRlcihpID0+IGkudmFsdWUgIT09IHVuZGVmaW5lZCkgYXMgeyBpZDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbiB9W11cbiAgICAgICAgICAgICAgY29uc3QgbWlzc2luZ0lkcyA9IHBlcm1pc3Npb25zLmZpbHRlcihpID0+IGkudmFsdWUgPT09IHVuZGVmaW5lZCkubWFwKGkgPT4gaS5pZClcblxuICAgICAgICAgICAgICBpZiAobWlzc2luZ0lkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1pc3NpbmdCeUFjdGlvbkFsbG93ZWQobWlzc2luZ0lkcywgcmVzb2x2ZWQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gb2YocGVybWlzc2lvbnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vINCV0YHQu9C4IGJhdGNoIGdldGFjY2VzcyDQvdC1INCy0LXRgNC90YPQu9GB0Y8sINGB0L7RhdGA0LDQvdGP0LXQvCDQv9C+0LLQtdC00LXQvdC40LUg0YHRgtCw0YDQvtCz0L4gZmFsbGJhY2suXG4gICAgICAgICAgICByZXR1cm4gbG9hZE1pc3NpbmdCeUFjdGlvbkFsbG93ZWQoaWRzLCBbXSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuICAvKipcbiAgICog0J/RgNC+0LLQtdGA0LrQsCDQvdCwINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LTQvtCx0LDQstC70LXQvdC40LUg0LfQsNC/0LjRgdC4INGC0YDQtdC60LAg0LIg0YLQsNGB0LrRg1xuICAgKlxuICAgKiBAcGFyYW0gaWRUYXNrXG4gICAqIEBwYXJhbSB1c2VyQ3VycmVudFxuICAgKi9cbiAgY2hlY2tQZXJtaXNzaW9uQWRkRWxhcHNlZFRpbWVUb1Rhc2soaWRUYXNrOiBudW1iZXIsIHVzZXJDdXJyZW50OiBpQlhSZXN0VXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoKHVzZXJDdXJyZW50KSA/IG9mKHVzZXJDdXJyZW50KSA6IHRoaXMuQlhSZXN0TmF2dnlVc2VyLmN1cnJlbnQoKS5yZXMoKSkucGlwZShcbiAgICAgIG1lcmdlTWFwKHNlbGYgPT4ge1xuICAgICAgICBpZiAoc2VsZikge1xuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5VGFza3MudGFzay5nZXRBY2Nlc3MoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBpZFRhc2ssXG4gICAgICAgICAgICAgIHVzZXJzOiBbc2VsZi5JRF1cbiAgICAgICAgICAgIH0pLnJlcygpLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAodiAmJiB2W3NlbGYuSURdKSA/IHZbc2VsZi5JRF1bJ0VMQVBTRURUSU1FLkFERCddIDogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICog0J/RgNC+0LLQtdGA0LrQsCDQvdCwINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0L/RgNC+0YfRgtC10L3QuNGPINGC0LDQutGB0LrQuFxuICAgKlxuICAgKiBAcGFyYW0gaWRUYXNrXG4gICAqIEBwYXJhbSB1c2VyQ3VycmVudFxuICAgKi9cbiAgY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2soaWRUYXNrOiBudW1iZXIsIHVzZXJDdXJyZW50OiBpQlhSZXN0VXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoKHVzZXJDdXJyZW50KSA/IG9mKHVzZXJDdXJyZW50KSA6IHRoaXMuQlhSZXN0TmF2dnlVc2VyLmN1cnJlbnQoKS5yZXMoKSkucGlwZShcbiAgICAgIG1lcmdlTWFwKHNlbGYgPT4ge1xuICAgICAgICBpZiAoc2VsZikge1xuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5VGFza3MudGFzay5nZXRBY2Nlc3MoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBpZFRhc2ssXG4gICAgICAgICAgICAgIHVzZXJzOiBbc2VsZi5JRF1cbiAgICAgICAgICAgIH0pLnJlcygpLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAodiAmJiB2W3NlbGYuSURdKSA/ICEhdltzZWxmLklEXSA6IGZhbHNlIC8vINC+0YLQtNC10LvRjNC90L7Qs9C+INGE0LvQsNCz0LAg0L3QsCDRh9GC0LXQvdC40LUg0L3QtdGCLCDQstGL0YXQvtC00LjRgiDRh9GC0L4g0LXRgdC70Lgg0L/RgNCw0LLQsCDQvtGC0LTQsNC70LjRgdGMINGC0L4g0Lgg0L/RgNCw0LLQsCDQtdGB0YLRjFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiDQl9Cw0LrQvtC90YfQtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQvtCx0LDQstC70LXQvdC40Y8g0LfQsNC/0LjRgdC4INGBINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L7QuSDQv9GA0L7QstC10YDQutC+0Lkg0L/RgNCw0LJcbiAgICpcbiAgICogVE9ETzog0LTQvtCx0LDQstC40YLRjCDRgdC+0YXRgNCw0L3QtdC90LjQtSDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+INC/0YDQvtCy0LXRgNC10L3QvdGL0YUg0LfQsNC/0LjRgdC10LlcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuICBhZGQocGFyYW06IGlCWFJlc3RQYXJhbUFkZEVsYXBzZWRpdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2socGFyYW0uVEFTS0lEKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYWxsb3dlZFJlYWRUYXNrID0+IHtcbiAgICAgICAgaWYgKGFsbG93ZWRSZWFkVGFzaykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvbkFkZEVsYXBzZWRUaW1lVG9UYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKGFsbG93ZWQgPT4ge1xuICAgICAgICAgICAgICBpZiAoYWxsb3dlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uYWRkKHBhcmFtKS5yZXMoKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTm8gcGVybWlzc2lvbiB0byBhZGQgYW4gZWxhcHNlZCB0aW1lIHJlY29yZCB0byB0aGUgdGFzaycpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ05vIHBlcm1pc3Npb24gdG8gcmVhZCB0aGUgdGFzaycpKVxuICAgICAgICB9XG4gICAgICB9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiDQl9Cw0LrQvtC90YfQtdC90L3Ri9C5INC80LXRgtC+0LQg0L7QsdC90L7QstC70LXQvdC40Y8g0LfQsNC/0LjRgdC4INGBINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L7QuSDQv9GA0L7QstC10YDQutC+0Lkg0L/RgNCw0LJcbiAgICpcbiAgICogVE9ETzog0LTQvtCx0LDQstC40YLRjCDRgdC+0YXRgNCw0L3QtdC90LjQtSDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+INC/0YDQvtCy0LXRgNC10L3QvdGL0YUg0LfQsNC/0LjRgdC10LlcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuICB1cGRhdGUocGFyYW06IGlCWFJlc3RQYXJhbVVwZGF0ZUVsYXBzZWRpdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2socGFyYW0uVEFTS0lEKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGFsbG93ZWRSZWFkVGFzaykgPT4ge1xuICAgICAgICBpZiAoYWxsb3dlZFJlYWRUYXNrKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNBbGxvd2VkTW9kaWZ5KHBhcmFtLlRBU0tJRCwgcGFyYW0uSVRFTUlEKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoYWxsb3dlZCA9PiB7XG4gICAgICAgICAgICAgIGlmIChhbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQlhSZXN0TmF2dnlFbGFwc2VkSXRlbS51cGRhdGUocGFyYW0pLnJlcygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdObyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgZWxhcHNlZCB0aW1lIHJlY29yZCcpKVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdObyBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIHRhc2snKSlcbiAgICAgIH0pKVxuICB9XG5cbiAgLyoqXG4gICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9GA0LDQstC+INC90LAg0LjQt9C80LXQvdC10L3QuNC1INC30LDQv9C40YHQuCDQviDQt9Cw0YLRgNCw0YfQtdC90L3QvtC8INCy0YDQtdC80LXQvdC4LlxuICAgKi9cbiAgaXNBbGxvd2VkTW9kaWZ5KGlkVGFzazogbnVtYmVyLCBpZEl0ZW06IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uaXNBY3Rpb25BbGxvd2VkKHtcbiAgICAgIFRBU0tJRDogaWRUYXNrLFxuICAgICAgSVRFTUlEOiBpZEl0ZW0sXG4gICAgICBBQ1RJT05JRDogMlxuICAgIH0pLnJlcygpXG4gIH1cblxuICAvKipcbiAgICogaXNBY3Rpb25BbGxvd2VkINGBINGE0LjQutGB0L7QvCDQvdCwINC/0YDQvtCy0LXRgNC60YMg0LLQvtC30LzQvtC20L3QvtGB0YLQuCDRh9GC0LXQvdC40Y8g0LfQsNC00LDRh9C4INC30LDQv9C40YHQuFxuICAgKiAo0LHQtdC3INC/0YDQvtCy0LXRgNC60Lgg0LTQsNGR0YIg0L7RiNC40LHQutGDKVxuICAgKlxuICAgKiBpZEFjdGlvbjpcbiAgICogMSAtIEFDVElPTl9FTEFQU0VEX1RJTUVfQUREXG4gICAqIDIgLSBBQ1RJT05fRUxBUFNFRF9USU1FX01PRElGWVxuICAgKiAzIC0gQUNUSU9OX0VMQVBTRURfVElNRV9SRU1PVkVcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuICBpc0FjdGlvbkFsbG93ZWQocGFyYW06IGlJc0FjdGlvbkFsbG93ZWRQYXJhbSkge1xuICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvblJlYWRUYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcbiAgICAgIG1lcmdlTWFwKGNhblJlYWQgPT4ge1xuICAgICAgICBpZiAoY2FuUmVhZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uaXNBY3Rpb25BbGxvd2VkKHBhcmFtKS5yZXMoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTm8gcGVybWlzc2lvbiB0byByZWFkIHRoZSB0YXNrJykpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG5cbiAgLyoqXG4gICAqINCf0L7Qu9C90L7RhtC10L3QvdGL0Lkg0LzQtdGC0L7QtCDRg9C00LDQu9C10L3QuNGPXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbVxuICAgKi9cbiAgZGVsKHBhcmFtOiBpQlhSZXN0UGFyYW1EZWxFbGFwc2VkaXRlbSkge1xuICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvblJlYWRUYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcbiAgICAgIG1lcmdlTWFwKGFsbG93ZWRSZWFkVGFzayA9PiB7XG4gICAgICAgIGlmIChhbGxvd2VkUmVhZFRhc2spIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0FsbG93ZWRSZW1vdmUocGFyYW0uVEFTS0lELCBwYXJhbS5JVEVNSUQpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChhbGxvd2VkID0+IHtcbiAgICAgICAgICAgICAgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eUVsYXBzZWRJdGVtLmRlbGV0ZShwYXJhbSkucmVzKClcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ05vIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBlbGFwc2VkIHRpbWUgcmVjb3JkJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTm8gcGVybWlzc2lvbiB0byByZWFkIHRoZSB0YXNrJykpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9GA0LDQstC+INC90LAg0YPQtNCw0LvQtdC90LjQtSDQt9Cw0L/QuNGB0Lgg0L4g0LfQsNGC0YDQsNGH0LXQvdC90L7QvCDQstGA0LXQvNC10L3QuC5cbiAgICovXG4gIHByaXZhdGUgaXNBbGxvd2VkUmVtb3ZlKGlkVGFzazogbnVtYmVyLCBpZEl0ZW06IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmlzQWN0aW9uQWxsb3dlZChcbiAgICAgIHtcbiAgICAgICAgVEFTS0lEOiBpZFRhc2ssXG4gICAgICAgIElURU1JRDogaWRJdGVtLFxuICAgICAgICBBQ1RJT05JRDogM1xuICAgICAgfSlcbiAgfVxufVxuIl19
@@ -26,12 +26,6 @@ export class BXRestNavvyTasksTask {
26
26
  * Переводит задачу в статус «завершена»
27
27
  */
28
28
  complete: [$tasks, $task, $complete],
29
- // counters: {
30
- // /**
31
- // * Получает счетчики пользователя
32
- // */
33
- // get: [$tasks, $task, $counters, $get],
34
- // },
35
29
  /**
36
30
  * Переводит задачу в статус «отложена»
37
31
  */
@@ -44,30 +38,6 @@ export class BXRestNavvyTasksTask {
44
38
  * Возвращает информацию о конкретной задаче
45
39
  */
46
40
  get: [$tasks, $task, $get],
47
- // /**
48
- // * Удаляет задачу
49
- // */
50
- // delete: [$tasks, $task, $delete],
51
- // /**
52
- // * Позволяет отклонить задачу
53
- // */
54
- // disapprove: [$tasks, $task, $disapprove],
55
- // favorite: {
56
- // /**
57
- // * Добавляет задачи в "Избранное"
58
- // */
59
- // add: [$tasks, $task, $favorite, $add],
60
- // /**
61
- // * Удаляет задачи из "Избранного"
62
- // */
63
- // delete: [$tasks, $task, $favorite, $delete],
64
- // },
65
- // files: {
66
- // /**
67
- // * Прикрепляет загруженный на диск файл к задаче
68
- // */
69
- // attach: [$tasks, $task, $files, $attach],
70
- // },
71
41
  /**
72
42
  * Возвращает все доступные поля
73
43
  */
@@ -76,36 +46,10 @@ export class BXRestNavvyTasksTask {
76
46
  * Метод для проверки доступа к задаче
77
47
  */
78
48
  getAccess: [$tasks, $task, $getaccess],
79
- // history: {
80
- // /**
81
- // * Получает историю задачи
82
- // */
83
- // list: [$tasks, $task, $history, $list],
84
- // },
85
49
  /**
86
50
  * Возвращает массив задач, каждая из которых содержит массив полей
87
51
  */
88
52
  list: [$tasks, $task, $list],
89
- // /**
90
- // * Останавливает выполнение задачи, переводя ее в статус "ждет выполнения"
91
- // */
92
- // pause: [$tasks, $task, $pause],
93
- // /**
94
- // * Возобновляет задачу после ее завершения
95
- // */
96
- // renew: [$tasks, $task, $renew],
97
- // /**
98
- // * Переводит задачу в статус «выполняется»
99
- // */
100
- // start: [$tasks, $task, $start],
101
- // /**
102
- // * Позволяет наблюдать за задачей
103
- // */
104
- // startWatch: [$tasks, $task, 'startwatch'],
105
- // /**
106
- // * Останавливает наблюдение за задачей
107
- // */
108
- // stopwatch: [$tasks, $task, 'stopwatch'],
109
53
  /**
110
54
  * Обновляет задачу
111
55
  */
@@ -210,68 +154,6 @@ export class BXRestNavvyTasksTask {
210
154
  list(param = {}) {
211
155
  return this.Navvy.pagNavTasks(this.url.list, param, (BXRestMapTasksTask.list));
212
156
  }
213
- /*
214
- listArray(requestArray: RequestApiTaskListBX = {}) {
215
- return this.list(requestArray).pipe(
216
- map(v => this.http.mapResult(v)),
217
- map(v => (v && v.tasks) ? v.tasks : [])
218
- )
219
- }
220
-
221
- listAll(requestArray: RequestApiTaskListBX = {}, cache = false): Observable<TaskBX[]> {
222
- if (!requestArray.select) {
223
- requestArray.select = this.def.select
224
- if (cache) {
225
- return this.storeTask$.pipe(
226
- take(1),
227
- mergeMap(tasks => {
228
- if (tasks && tasks.data.http.list && requestArray.filter && requestArray.filter.ID) {
229
- const ids = (typeof requestArray.filter.ID === 'number') ? [requestArray.filter.ID] : requestArray.filter.ID
230
- let filter = tasks.data.http.list.filter(i => (i.id) ? ids.includes(i.id) : false)
231
- if (filter.length === ids.length) {
232
- return of(filter)
233
- }
234
- }
235
- return this.getEndListArray(requestArray)
236
- })
237
- )
238
- }
239
- return this.getEndListArray(requestArray)
240
- }
241
- return this.getEndListArray(requestArray)
242
- }
243
-
244
- getEndListArray(requestArray: RequestApiTaskListBX): Observable<TaskBX[]> {
245
- return this.list(requestArray).pipe(
246
- mergeMap((items: AnswerApiTaskBX | undefined): ObservableInput<any> | Observable<AnswerApiTaskBX[]> => {
247
- if (items && items.result && typeof items.result.tasks === 'object') {
248
- const items$ = of(items.result.tasks)
249
- if (items.next) {
250
- this.nowLoad$.next({
251
- total: (items.total) ? items.total : 0,
252
- next: items.next
253
- })
254
- requestArray.start = items.next
255
- return this.getEndListArray(requestArray).pipe(
256
- map(vEnd => {
257
- if (vEnd && items.result.tasks) {
258
- return [...items.result.tasks, ...vEnd]
259
- }
260
- return (items.result.tasks) ? items.result.tasks : []
261
- }))
262
- }
263
- this.nowLoad$.next({
264
- total: 0,
265
- next: 0
266
- })
267
- return items$
268
- } else {
269
- return of([])
270
- }
271
- })
272
- )
273
- }
274
- */
275
157
  /**
276
158
  * Возвращает список полей задачи.
277
159
  */
@@ -351,4 +233,4 @@ export class BXRestNavvyTasksTask {
351
233
  return this.Navvy.simple([$tasks, $task, $unpin], param);
352
234
  }
353
235
  }
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvdGFza3MvdGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQVN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbFQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFN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O0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBOEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgaUJYUmVzdFBhcmFtVGFza0FkZCxcclxuICBpQlhSZXN0UGFyYW1UYXNrc0xpc3QsXHJcbiAgaUJYUmVzdFRhc2tGaWVsZHNOYW1lLFxyXG4gIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyLFxyXG4gIGlCWFJlc3RUYXNrLCBpQlhSZXN0VGFza3NUYXNrR2V0RmllbGRzLCBpQlhSZXN0VGFza3NUYXNrRGVmZXJIdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0dldCwgaUJYUmVzdFRhc2tzVGFza0dldCwgaUJYUmVzdFRhc2tzVGFza0dldEh0dHAsIGlCWFJlc3RUYXNrc1Rhc2tHZXRIdHRwRGVmYXVsdCxcclxuICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tVcGRhdGVGaWVsZHMsXHJcbiAgaUJYUmVzdFRhc2tzVGFza0ZpZWxkc0NhblVwZGF0ZSxcclxuICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tBcHByb3ZlLFxyXG4gIGlCWFJlc3RUYXNrc1Rhc2tBcHByb3ZlSHR0cCxcclxuICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tDb21wbGV0ZSxcclxuICBpQlhSZXN0VGFza3NUYXNrQ29tcGxldGVIdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0RlZmVyLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkLFxyXG4gIGlCWFJlc3RUYXNrc09iamVjdFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3Rhc2tzJ1xyXG5pbXBvcnQgeyBOYXZ2eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25hdnZ5J1xyXG5pbXBvcnQgeyBCWFJlc3RNYXBUYXNrc1Rhc2sgfSBmcm9tICcuLi8uLi9tYXAvdGFza3MvdGFzaydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrc1Rhc2tSZXN1bHQgfSBmcm9tICcuL3Rhc2svcmVzdWx0J1xyXG5pbXBvcnQgY2FtZWxDYXNlIGZyb20gJ2p1c3QtY2FtZWwtY2FzZSdcclxuaW1wb3J0IHtcclxuICBpQlhSZXN0UGFyYW1UYXNrR2V0QWNjZXNzLFxyXG4gIGlCWFJlc3RUYXNrR2V0QWNjZXNzLFxyXG4gIGlCWFJlc3RUYXNrR2V0QWNjZXNzSXRlbVxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3Rhc2snXHJcbmltcG9ydCB7IFRvVXBwZXJDYXNlS2V5cyB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9iYXNlL3VwcGVyLWNhc2Uta2V5cydcclxuaW1wb3J0IHsgT2JqZWN0VG9TbmFrZSB9IGZyb20gJ3RzLWNhc2UtY29udmVydC9saWIvY2FzZUNvbnZlcnQnXHJcbmltcG9ydCB7IEFsbEtleUZyZWUgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vYmFzZS9hbGwta2V5LWZyZWUnXHJcbmltcG9ydCB7ICRhZGQsICRhZGRGcm9tQ29tbWVudCwgJGFwcHJvdmUsICRjb21wbGV0ZSwgJGRlZmVyLCAkZGVsZWdhdGUsICRkZWxldGUsICRkZWxldGVGcm9tQ29tbWVudCwgJGRpc2FwcHJvdmUsICRnZXQsICRnZXRGaWVsZHNFeGFjdCwgJGdldGFjY2VzcywgJGxpc3QsICRtdXRlLCAkcGF1c2UsICRwaW4sICRyZW5ldywgJHJlc3VsdCwgJHN0YXJ0LCAkc3RhcnR3YXRjaCwgJHN0b3B3YXRjaCwgJHRhc2ssICR0YXNrcywgJHVubXV0ZSwgJHVucGluLCAkdXBkYXRlIH0gZnJvbSAnLi4vLi4vY29uc3RzL3BhcnQtbmFtZS1tZXRob2RzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0FjY2VzcyB9IGZyb20gJy4vdGFzay9hY2Nlc3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ2hhdCB9IGZyb20gJy4vdGFzay9jaGF0J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0NvdW50ZXJzIH0gZnJvbSAnLi90YXNrL2NvdW50ZXJzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0Zhdm9yaXRlIH0gZnJvbSAnLi90YXNrL2Zhdm9yaXRlJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpZWxkIH0gZnJvbSAnLi90YXNrL2ZpZWxkJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpbGVzIH0gZnJvbSAnLi90YXNrL2ZpbGVzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0hpc3RvcnkgfSBmcm9tICcuL3Rhc2svaGlzdG9yeSdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGaWxlIH0gZnJvbSAnLi90YXNrL2ZpbGUnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnlUYXNrc1Rhc2sge1xyXG5cclxuICB1cmwgPSB7XHJcbiAgICAvKipcclxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQtNCw0YfRg1xyXG4gICAgICovXHJcbiAgICBhZGQ6IFskdGFza3MsICR0YXNrLCAkYWRkXSxcclxuICAgIC8qKlxyXG4gICAgICog0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQuNC90Y/RgtGMINC30LDQtNCw0YfRg1xyXG4gICAgICovXHJcbiAgICBhcHByb3ZlOiBbJHRhc2tzLCAkdGFzaywgJGFwcHJvdmVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9C30LDQstC10YDRiNC10L3QsMK7XHJcbiAgICAgKi9cclxuICAgIGNvbXBsZXRlOiBbJHRhc2tzLCAkdGFzaywgJGNvbXBsZXRlXSxcclxuICAgIC8vIGNvdW50ZXJzOiB7XHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQn9C+0LvRg9GH0LDQtdGCINGB0YfQtdGC0YfQuNC60Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPXHJcbiAgICAvLyAgICAqL1xyXG4gICAgLy8gICBnZXQ6IFskdGFza3MsICR0YXNrLCAkY291bnRlcnMsICRnZXRdLFxyXG4gICAgLy8gfSxcclxuICAgIC8qKlxyXG4gICAgICog0J/QtdGA0LXQstC+0LTQuNGCINC30LDQtNCw0YfRgyDQsiDRgdGC0LDRgtGD0YEgwqvQvtGC0LvQvtC20LXQvdCwwrtcclxuICAgICAqL1xyXG4gICAgZGVmZXI6IFskdGFza3MsICR0YXNrLCAkZGVmZXJdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQnNC10YLQvtC0INC00LvRjyDQtNC10LvQtdCz0LjRgNC+0LLQsNC90LjRjyDQt9Cw0LTQsNGH0LhcclxuICAgICAqL1xyXG4gICAgZGVsZWdhdGU6IFskdGFza3MsICR0YXNrLCAkZGVsZWdhdGVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQviDQutC+0L3QutGA0LXRgtC90L7QuSDQt9Cw0LTQsNGH0LVcclxuICAgICAqL1xyXG4gICAgZ2V0OiBbJHRhc2tzLCAkdGFzaywgJGdldF0sXHJcbiAgICAvLyAvKipcclxuICAgIC8vICAqINCj0LTQsNC70Y/QtdGCINC30LDQtNCw0YfRg1xyXG4gICAgLy8gICovXHJcbiAgICAvLyBkZWxldGU6IFskdGFza3MsICR0YXNrLCAkZGVsZXRlXSxcclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICog0J/QvtC30LLQvtC70Y/QtdGCINC+0YLQutC70L7QvdC40YLRjCDQt9Cw0LTQsNGH0YNcclxuICAgIC8vICAqL1xyXG4gICAgLy8gZGlzYXBwcm92ZTogWyR0YXNrcywgJHRhc2ssICRkaXNhcHByb3ZlXSxcclxuICAgIC8vIGZhdm9yaXRlOiB7XHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0LfQsNC00LDRh9C4INCyIFwi0JjQt9Cx0YDQsNC90L3QvtC1XCJcclxuICAgIC8vICAgICovXHJcbiAgICAvLyAgIGFkZDogWyR0YXNrcywgJHRhc2ssICRmYXZvcml0ZSwgJGFkZF0sXHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0LTQsNGH0Lgg0LjQtyBcItCY0LfQsdGA0LDQvdC90L7Qs9C+XCJcclxuICAgIC8vICAgICovXHJcbiAgICAvLyAgIGRlbGV0ZTogWyR0YXNrcywgJHRhc2ssICRmYXZvcml0ZSwgJGRlbGV0ZV0sXHJcbiAgICAvLyB9LFxyXG4gICAgLy8gZmlsZXM6IHtcclxuICAgIC8vICAgLyoqXHJcbiAgICAvLyAgICAqINCf0YDQuNC60YDQtdC/0LvRj9C10YIg0LfQsNCz0YDRg9C20LXQvdC90YvQuSDQvdCwINC00LjRgdC6INGE0LDQudC7INC6INC30LDQtNCw0YfQtVxyXG4gICAgLy8gICAgKi9cclxuICAgIC8vICAgYXR0YWNoOiBbJHRhc2tzLCAkdGFzaywgJGZpbGVzLCAkYXR0YWNoXSxcclxuICAgIC8vIH0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINCy0YHQtSDQtNC+0YHRgtGD0L/QvdGL0LUg0L/QvtC70Y9cclxuICAgICAqL1xyXG4gICAgZ2V0RmllbGRzOiBbJHRhc2tzLCAkdGFzaywgJGdldEZpZWxkc0V4YWN0XSxcclxuICAgIC8qKlxyXG4gICAgICog0JzQtdGC0L7QtCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQtNC+0YHRgtGD0L/QsCDQuiDQt9Cw0LTQsNGH0LVcclxuICAgICAqL1xyXG4gICAgZ2V0QWNjZXNzOiBbJHRhc2tzLCAkdGFzaywgJGdldGFjY2Vzc10sXHJcbiAgICAvLyBoaXN0b3J5OiB7XHJcbiAgICAvLyAgIC8qKlxyXG4gICAgLy8gICAgKiDQn9C+0LvRg9GH0LDQtdGCINC40YHRgtC+0YDQuNGOINC30LDQtNCw0YfQuFxyXG4gICAgLy8gICAgKi9cclxuICAgIC8vICAgbGlzdDogWyR0YXNrcywgJHRhc2ssICRoaXN0b3J5LCAkbGlzdF0sXHJcbiAgICAvLyB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvNCw0YHRgdC40LIg0LfQsNC00LDRhywg0LrQsNC20LTQsNGPINC40Lcg0LrQvtGC0L7RgNGL0YUg0YHQvtC00LXRgNC20LjRgiDQvNCw0YHRgdC40LIg0L/QvtC70LXQuVxyXG4gICAgICovXHJcbiAgICBsaXN0OiBbJHRhc2tzLCAkdGFzaywgJGxpc3RdLFxyXG4gICAgLy8gLyoqXHJcbiAgICAvLyAgKiDQntGB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstGL0L/QvtC70L3QtdC90LjQtSDQt9Cw0LTQsNGH0LgsINC/0LXRgNC10LLQvtC00Y8g0LXQtSDQsiDRgdGC0LDRgtGD0YEgXCLQttC00LXRgiDQstGL0L/QvtC70L3QtdC90LjRj1wiXHJcbiAgICAvLyAgKi9cclxuICAgIC8vIHBhdXNlOiBbJHRhc2tzLCAkdGFzaywgJHBhdXNlXSxcclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICog0JLQvtC30L7QsdC90L7QstC70Y/QtdGCINC30LDQtNCw0YfRgyDQv9C+0YHQu9C1INC10LUg0LfQsNCy0LXRgNGI0LXQvdC40Y9cclxuICAgIC8vICAqL1xyXG4gICAgLy8gcmVuZXc6IFskdGFza3MsICR0YXNrLCAkcmVuZXddLFxyXG4gICAgLy8gLyoqXHJcbiAgICAvLyAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9Cy0YvQv9C+0LvQvdGP0LXRgtGB0Y/Cu1xyXG4gICAgLy8gICovXHJcbiAgICAvLyBzdGFydDogWyR0YXNrcywgJHRhc2ssICRzdGFydF0sXHJcbiAgICAvLyAvKipcclxuICAgIC8vICAqINCf0L7Qt9Cy0L7Qu9GP0LXRgiDQvdCw0LHQu9GO0LTQsNGC0Ywg0LfQsCDQt9Cw0LTQsNGH0LXQuVxyXG4gICAgLy8gICovXHJcbiAgICAvLyBzdGFydFdhdGNoOiBbJHRhc2tzLCAkdGFzaywgJ3N0YXJ0d2F0Y2gnXSxcclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICog0J7RgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0L3QsNCx0LvRjtC00LXQvdC40LUg0LfQsCDQt9Cw0LTQsNGH0LXQuVxyXG4gICAgLy8gICovXHJcbiAgICAvLyBzdG9wd2F0Y2g6IFskdGFza3MsICR0YXNrLCAnc3RvcHdhdGNoJ10sXHJcbiAgICAvKipcclxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDQt9Cw0LTQsNGH0YNcclxuICAgICAqL1xyXG4gICAgdXBkYXRlOiBbJHRhc2tzLCAkdGFzaywgJHVwZGF0ZV0sXHJcbiAgICByZXN1bHQ6IHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqICDQn9GA0L7RgdC80L7RgtGAINGB0L/QuNGB0LrQsCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC6INC30LDQtNCw0YfQtVxyXG4gICAgICAgKi9cclxuICAgICAgbGlzdDogWyR0YXNrcywgJHRhc2ssICRyZXN1bHQsICRsaXN0XSxcclxuICAgICAgLyoqXHJcbiAgICAgICAqINCh0L7Qt9C00LDQvdC40LUg0YDQtdC30YPQu9GM0YLQsNGC0LAg0LfQsNC00LDRh9C4INC40Lcg0LrQvtC80LzQtdC90YLQsNGA0LjRj1xyXG4gICAgICAgKi9cclxuICAgICAgYWRkRnJvbUNvbW1lbnQ6IFskdGFza3MsICR0YXNrLCAkcmVzdWx0LCAkYWRkRnJvbUNvbW1lbnRdLFxyXG4gICAgICAvKipcclxuICAgICAgICog0KPQtNCw0LvQtdC90LjQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQt9Cw0LTQsNGH0Lgg0L/QviDQutC+0LzQvNC10L3RgtCw0YDQuNGOINC40Lcg0LrQvtGC0L7RgNC+0LPQviDQvtC9INCx0YvQuyDRgdC+0LfQtNCw0L1cclxuICAgICAgICovXHJcbiAgICAgIGRlbGV0ZUZyb21Db21tZW50OiBbJHRhc2tzLCAkdGFzaywgJHJlc3VsdCwgJGRlbGV0ZUZyb21Db21tZW50XSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQoNC10LfRg9C70YzRgtCw0YLRiyDQt9Cw0LTQsNGH0LggKGB0YXNrcy50YXNrLnJlc3VsdC4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzdWx0ID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrUmVzdWx0KClcclxuICAvKipcbiAgICog0J/RgNCw0LLQsCDQtNC+0YHRgtGD0L/QsCDQuiDQt9Cw0LTQsNGH0LUgKGB0YXNrcy50YXNrLmFjY2Vzcy4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrQWNjZXNzKClcclxuICAvKipcbiAgICog0KfQsNGCINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suY2hhdC4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhdCA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0NoYXQoKVxyXG4gIC8qKlxuICAgKiDQodGH0ZHRgtGH0LjQutC4INC30LDQtNCw0YcgKGB0YXNrcy50YXNrLmNvdW50ZXJzLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb3VudGVycyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0NvdW50ZXJzKClcclxuICAvKipcbiAgICog0JjQt9Cx0YDQsNC90L3Ri9C1INC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suZmF2b3JpdGUuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZhdm9yaXRlID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmF2b3JpdGUoKVxyXG4gIC8qKlxuICAgKiDQn9C+0LvRjyDQt9Cw0LTQsNGH0LggKGB0YXNrcy50YXNrLmZpZWxkLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWVsZCA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpZWxkKClcclxuICAvKipcbiAgICog0KTQsNC50LvRiyDQt9Cw0LTQsNGH0LgsIFJFU1QgMy4wIChgdGFza3MudGFzay5maWxlLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmlsZSgpXHJcbiAgLyoqXG4gICAqINCk0LDQudC70Ysg0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5maWxlcy4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZXMgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGaWxlcygpXHJcbiAgLyoqXG4gICAqINCY0YHRgtC+0YDQuNGPINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suaGlzdG9yeS4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaGlzdG9yeSA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0hpc3RvcnkoKVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IE5hdnZ5ID0gbmV3IE5hdnZ5KClcclxuXHJcbiAgYWRkPEN1c3RvbUZpZWxkcyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tBZGQ8Q3VzdG9tRmllbGRzPikge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrR2V0SHR0cERlZmF1bHQ+LFxyXG4gICAgICBpQlhSZXN0VGFzayxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza0FkZDxDdXN0b21GaWVsZHM+XHJcbiAgICA+KFxyXG4gICAgICB0aGlzLnVybC5hZGQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBUYXNrc1Rhc2suYWRkXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiDQv9C10YDQtdC/0LjRgdCw0YLRjCDQvdC+0YDQvNCw0LvRjNC90L5cclxuICAvKipcbiAgICog0J/RgNC40L3QuNC80LDQtdGCINC30LDQtNCw0YfRgy5cbiAgICovXG4gIGFwcHJvdmUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0FwcHJvdmUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0FwcHJvdmVIdHRwPixcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0FwcHJvdmVIdHRwPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrQXBwcm92ZVxyXG4gICAgPih0aGlzLnVybC5hcHByb3ZlLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9C30LDQstC10YDRiNC10L3QsMK7LlxuICAgKi9cbiAgY29tcGxldGUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0NvbXBsZXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tDb21wbGV0ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrQ29tcGxldGVIdHRwPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrQ29tcGxldGVcclxuICAgID4odGhpcy51cmwuY29tcGxldGUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0L7RgtC70L7QttC10L3QsMK7LlxuICAgKi9cbiAgZGVmZXIocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0RlZmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHA+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrRGVmZXJIdHRwPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrRGVmZXJcclxuICAgID4odGhpcy51cmwuZGVmZXIsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlPEN1c3RvbUZpZWxkcyBleHRlbmRzIG9iamVjdD4oXHJcbiAgICB0YXNrOiBBbGxLZXlGcmVlPGlCWFJlc3RUYXNrc1Rhc2tHZXQ8aUJYUmVzdFRhc2tGaWVsZHNOYW1lW10sIEN1c3RvbUZpZWxkcz4+LFxyXG4gICAgdXBkYXRlRmllbGRzOiAoaUJYUmVzdFRhc2tzVGFza0ZpZWxkc0NhblVwZGF0ZSB8IGtleW9mIFRvVXBwZXJDYXNlS2V5czxPYmplY3RUb1NuYWtlPEN1c3RvbUZpZWxkcz4+KVtdXHJcbiAgKSB7XHJcblxyXG4gICAgbGV0IHNlbmRUYXNrOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tVcGRhdGVGaWVsZHMgJiBBbGxLZXlGcmVlPEN1c3RvbUZpZWxkcz4gPSB7fVxyXG4gICAgbGV0IHRhc2tUUzogUmVjb3JkPHN0cmluZywgYW55PiA9IHRhc2tcclxuICAgIGlmICh1cGRhdGVGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IHVwZGF0ZUZpZWxkIG9mIHVwZGF0ZUZpZWxkcykge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyh1cGRhdGVGaWVsZClcclxuICAgICAgICBpZiAodGFza1RTW2NhbWVsQ2FzZShrZXkpXSkge1xyXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBDdXN0b20gZmllbGQga2V5cyBhcmUgc2VsZWN0ZWQgZHluYW1pY2FsbHkuXHJcbiAgICAgICAgICBzZW5kVGFza1trZXldID0gdGFza1RTW2NhbWVsQ2FzZShrZXkpXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoT2JqZWN0LnZhbHVlcyhzZW5kVGFzaykubGVuZ3RoICYmIHRhc2sgJiYgdGFzay5pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHA+LFxyXG4gICAgICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0RlZmVySHR0cD4sXHJcbiAgICAgICAgICBhbnlcclxuICAgICAgICA+KHRoaXMudXJsLnVwZGF0ZSwge3Rhc2tJZDogdGFzay5pZCwgZmllbGRzOiBzZW5kVGFza30pXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VwZGF0ZUZpZWxkcyBlbXB0eScpXHJcbiAgfVxyXG5cclxuICBnZXQ8UyBleHRlbmRzIGlCWFJlc3RUYXNrRmllbGRzTmFtZVtdLCBDdXN0b21GaWVsZHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+KHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tHZXQ8Q3VzdG9tRmllbGRzPikge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrR2V0SHR0cDxTLCBDdXN0b21GaWVsZHM+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrR2V0PFMsIEN1c3RvbUZpZWxkcz4sXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0dldDxDdXN0b21GaWVsZHM+XHJcbiAgICA+KFxyXG4gICAgICB0aGlzLnVybC5nZXQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBUYXNrc1Rhc2suZ2V0PFMsIEN1c3RvbUZpZWxkcz5cclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vINCS0L7Qt9C80L7QttC90L4g0LzQvtC20L3QviDQvtCx0L7QudGC0LjRgdGMINCx0LXQtyBcIlMgZXh0ZW5kcyBpQlhSZXN0VGFza0ZpZWxkc05hbWVbXVwiLFxyXG4gIC8vINC90LDQtNC+INGH0YLQviDQsdGLINC/0L7QvdGP0YLRjCDRgtC+INC60LDQuiDQs9C10L3QtdGA0LjRgNC+0LLQsNGC0Ywg0LjQvdGC0LXQudGE0LXQudGBINC90LAg0LvQtdGC0YMg0LjRgdGF0L7QtNGPINC40YUg0LLRhdC+0LTRj9GJ0LjRhSDQtNCw0L3QvdGL0YVcclxuICBsaXN0PFMgZXh0ZW5kcyBpQlhSZXN0VGFza0ZpZWxkc05hbWVbXSwgQ3VzdG9tRmllbGRzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihcclxuICAgIHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc0xpc3Q8Q3VzdG9tRmllbGRzPiA9IHt9XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5wYWdOYXZUYXNrcyhcclxuICAgICAgdGhpcy51cmwubGlzdCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5saXN0PFMsIEN1c3RvbUZpZWxkcz5cclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgbGlzdEFycmF5KHJlcXVlc3RBcnJheTogUmVxdWVzdEFwaVRhc2tMaXN0QlggPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMubGlzdChyZXF1ZXN0QXJyYXkpLnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+IHRoaXMuaHR0cC5tYXBSZXN1bHQodikpLFxyXG4gICAgICBtYXAodiA9PiAodiAmJiB2LnRhc2tzKSA/IHYudGFza3MgOiBbXSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGxpc3RBbGwocmVxdWVzdEFycmF5OiBSZXF1ZXN0QXBpVGFza0xpc3RCWCA9IHt9LCBjYWNoZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxUYXNrQlhbXT4ge1xyXG4gICAgaWYgKCFyZXF1ZXN0QXJyYXkuc2VsZWN0KSB7XHJcbiAgICAgIHJlcXVlc3RBcnJheS5zZWxlY3QgPSB0aGlzLmRlZi5zZWxlY3RcclxuICAgICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVUYXNrJC5waXBlKFxyXG4gICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIG1lcmdlTWFwKHRhc2tzID0+IHtcclxuICAgICAgICAgICAgaWYgKHRhc2tzICYmIHRhc2tzLmRhdGEuaHR0cC5saXN0ICYmIHJlcXVlc3RBcnJheS5maWx0ZXIgJiYgcmVxdWVzdEFycmF5LmZpbHRlci5JRCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGlkcyA9ICh0eXBlb2YgcmVxdWVzdEFycmF5LmZpbHRlci5JRCA9PT0gJ251bWJlcicpID8gW3JlcXVlc3RBcnJheS5maWx0ZXIuSURdIDogcmVxdWVzdEFycmF5LmZpbHRlci5JRFxyXG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSB0YXNrcy5kYXRhLmh0dHAubGlzdC5maWx0ZXIoaSA9PiAoaS5pZCkgPyBpZHMuaW5jbHVkZXMoaS5pZCkgOiBmYWxzZSlcclxuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gaWRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZpbHRlcilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW5kTGlzdEFycmF5KHJlcXVlc3RBcnJheSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEVuZExpc3RBcnJheShyZXF1ZXN0QXJyYXkpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRFbmRMaXN0QXJyYXkocmVxdWVzdEFycmF5KVxyXG4gIH1cclxuXHJcbiAgZ2V0RW5kTGlzdEFycmF5KHJlcXVlc3RBcnJheTogUmVxdWVzdEFwaVRhc2tMaXN0QlgpOiBPYnNlcnZhYmxlPFRhc2tCWFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0KHJlcXVlc3RBcnJheSkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKGl0ZW1zOiBBbnN3ZXJBcGlUYXNrQlggfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlSW5wdXQ8YW55PiB8IE9ic2VydmFibGU8QW5zd2VyQXBpVGFza0JYW10+ID0+IHtcclxuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMucmVzdWx0ICYmIHR5cGVvZiBpdGVtcy5yZXN1bHQudGFza3MgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyQgPSBvZihpdGVtcy5yZXN1bHQudGFza3MpXHJcbiAgICAgICAgICBpZiAoaXRlbXMubmV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vd0xvYWQkLm5leHQoe1xyXG4gICAgICAgICAgICAgIHRvdGFsOiAoaXRlbXMudG90YWwpID8gaXRlbXMudG90YWwgOiAwLFxyXG4gICAgICAgICAgICAgIG5leHQ6IGl0ZW1zLm5leHRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmVxdWVzdEFycmF5LnN0YXJ0ID0gaXRlbXMubmV4dFxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmRMaXN0QXJyYXkocmVxdWVzdEFycmF5KS5waXBlKFxyXG4gICAgICAgICAgICAgIG1hcCh2RW5kID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2RW5kICYmIGl0ZW1zLnJlc3VsdC50YXNrcykge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zLnJlc3VsdC50YXNrcywgLi4udkVuZF1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAoaXRlbXMucmVzdWx0LnRhc2tzKSA/IGl0ZW1zLnJlc3VsdC50YXNrcyA6IFtdXHJcbiAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm5vd0xvYWQkLm5leHQoe1xyXG4gICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgbmV4dDogMFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHJldHVybiBpdGVtcyRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQv9C+0LvQtdC5INC30LDQtNCw0YfQuC5cbiAgICovXG4gIGdldEZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza3NUYXNrR2V0RmllbGRzPihcclxuICAgICAgdGhpcy51cmwuZ2V0RmllbGRzXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC00L7RgdGC0YPQvyDQuiDQt9Cw0LTQsNGH0LUuXG4gICAqL1xuICBnZXRBY2Nlc3MocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza0dldEFjY2VzcywgUmVjb3JkPG51bWJlciwgaUJYUmVzdFRhc2tHZXRBY2Nlc3NJdGVtPiwgaUJYUmVzdFBhcmFtVGFza0dldEFjY2Vzcz4oXHJcbiAgICAgIHRoaXMudXJsLmdldEFjY2VzcyxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5nZXRBY2Nlc3NcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkZWxldGUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJGRlbGV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70L7QvdGP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkaXNhcHByb3ZlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRkaXNhcHByb3ZlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDRgNC10LbQuNC8IMKr0JHQtdC3INC30LLRg9C60LDCuyDQtNC70Y8g0LfQsNC00LDRh9C4LlxuICAgKi9cbiAgbXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkbXV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YvQv9C+0LvQvdC10L3QuNC1INC30LDQtNCw0YfQuCDQuCDQv9C10YDQtdCy0L7QtNC40YIg0LIg0YHRgtCw0YLRg9GBIMKr0LbQtNGR0YLCuy5cbiAgICovXG4gIHBhdXNlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRwYXVzZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCX0LDQutGA0LXQv9C70Y/QtdGCINC30LDQtNCw0YfRgyDQsiDRgdC/0LjRgdC60LUuXG4gICAqL1xuICBwaW4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9C+0LHQvdC+0LLQu9GP0LXRgiDQt9Cw0LTQsNGH0YMg0L/QvtGB0LvQtSDQt9Cw0LLQtdGA0YjQtdC90LjRjy5cbiAgICovXG4gIHJlbmV3KHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRyZW5ld10sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LLRi9C/0L7Qu9C90Y/QtdGC0YHRj8K7LlxuICAgKi9cbiAgc3RhcnQocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHN0YXJ0XSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RhcnRXYXRjaChwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkc3RhcnR3YXRjaF0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RvcFdhdGNoKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRzdG9wd2F0Y2hdLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQktGL0LrQu9GO0YfQsNC10YIg0YDQtdC20LjQvCDCq9CR0LXQtyDQt9Cy0YPQutCwwrsg0LTQu9GPINC30LDQtNCw0YfQuC5cbiAgICovXG4gIHVubXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkdW5tdXRlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J7RgtC60YDQtdC/0LvRj9C10YIg0LfQsNC00LDRh9GDINCyINGB0L/QuNGB0LrQtS5cbiAgICovXG4gIHVucGluKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICR1bnBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbn1cclxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvdGFza3MvdGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQVN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbFQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV0RCxNQUFNLE9BQU8sb0JBQW9CO0lBQWpDO1FBRUUsUUFBRyxHQUFHO1lBQ0o7O2VBRUc7WUFDSCxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztZQUMxQjs7ZUFFRztZQUNILE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1lBQ2xDOztlQUVHO1lBQ0gsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUM7WUFDcEM7O2VBRUc7WUFDSCxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUM5Qjs7ZUFFRztZQUNILFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQ3BDOztlQUVHO1lBQ0gsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDMUI7O2VBRUc7WUFDSCxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQztZQUMzQzs7ZUFFRztZQUNILFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO1lBQ3RDOztlQUVHO1lBQ0gsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDNUI7O2VBRUc7WUFDSCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUNoQyxNQUFNLEVBQUU7Z0JBQ047O21CQUVHO2dCQUNILElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQztnQkFDckM7O21CQUVHO2dCQUNILGNBQWMsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQztnQkFDekQ7O21CQUVHO2dCQUNILGlCQUFpQixFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsa0JBQWtCLENBQUM7YUFDaEU7U0FDRixDQUFBO1FBRUQ7O1dBRUc7UUFDYSxXQUFNLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFBO1FBQ3pEOztXQUVHO1FBQ2EsV0FBTSxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQTtRQUN6RDs7V0FFRztRQUNhLFNBQUksR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUE7UUFDckQ7O1dBRUc7UUFDYSxhQUFRLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFBO1FBQzdEOztXQUVHO1FBQ2EsYUFBUSxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQTtRQUM3RDs7V0FFRztRQUNhLFVBQUssR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUE7UUFDdkQ7O1dBRUc7UUFDYSxTQUFJLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFBO1FBQ3JEOztXQUVHO1FBQ2EsVUFBSyxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQTtRQUN2RDs7V0FFRztRQUNhLFlBQU8sR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUE7UUFFMUMsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUFnUHRDLENBQUM7SUE5T0MsR0FBRyxDQUF1QyxLQUF3QztRQUNoRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUt0QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFDWixLQUFLLEVBQ0wsa0JBQWtCLENBQUMsR0FBRyxDQUN2QixDQUFBO0lBQ0gsQ0FBQztJQUVELDZCQUE2QjtJQUM3Qjs7T0FFRztJQUNILE9BQU8sQ0FBQyxLQUFtQztRQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUl0QixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBb0M7UUFDM0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQWlDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBSXRCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQ0osSUFBNEUsRUFDNUUsWUFBc0c7UUFHdEcsSUFBSSxRQUFRLEdBQWlFLEVBQUUsQ0FBQTtRQUMvRSxJQUFJLE1BQU0sR0FBd0IsSUFBSSxDQUFBO1FBQ3RDLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLEtBQUssSUFBSSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDL0IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsK0RBQStEO29CQUMvRCxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQTtZQUN6RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsR0FBRyxDQUEwRSxLQUE2QztRQUN4SCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUt0QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFDWixLQUFLLEVBQ0wsQ0FBQSxrQkFBa0IsQ0FBQyxHQUFvQixDQUFBLENBQ3hDLENBQUE7SUFDSCxDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLHFGQUFxRjtJQUNyRixJQUFJLENBQ0YsUUFBNkMsRUFBRTtRQUUvQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFDYixLQUFLLEVBQ0wsQ0FBQSxrQkFBa0IsQ0FBQyxJQUFxQixDQUFBLENBQ3pDLENBQUE7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQ25CLENBQUE7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsS0FBZ0M7UUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQ2xCLEtBQUssRUFDTCxrQkFBa0IsQ0FBQyxTQUFTLENBQzdCLENBQUE7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBOEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUE4QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUl0QixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLEtBQThCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBSXRCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBOEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxLQUE4QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUl0QixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQThCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBSXRCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBOEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUE4QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUl0QixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLEtBQThCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBSXRCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBOEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUE4QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUl0QixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBpQlhSZXN0UGFyYW1UYXNrQWRkLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzTGlzdCxcclxuICBpQlhSZXN0VGFza0ZpZWxkc05hbWUsXHJcbiAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXIsXHJcbiAgaUJYUmVzdFRhc2ssIGlCWFJlc3RUYXNrc1Rhc2tHZXRGaWVsZHMsIGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHAsXHJcbiAgaUJYUmVzdFBhcmFtVGFza3NUYXNrR2V0LCBpQlhSZXN0VGFza3NUYXNrR2V0LCBpQlhSZXN0VGFza3NUYXNrR2V0SHR0cCwgaUJYUmVzdFRhc2tzVGFza0dldEh0dHBEZWZhdWx0LFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza1VwZGF0ZUZpZWxkcyxcclxuICBpQlhSZXN0VGFza3NUYXNrRmllbGRzQ2FuVXBkYXRlLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0FwcHJvdmUsXHJcbiAgaUJYUmVzdFRhc2tzVGFza0FwcHJvdmVIdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tzVGFza0NvbXBsZXRlLFxyXG4gIGlCWFJlc3RUYXNrc1Rhc2tDb21wbGV0ZUh0dHAsXHJcbiAgaUJYUmVzdFBhcmFtVGFza3NUYXNrRGVmZXIsXHJcbiAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQsXHJcbiAgaUJYUmVzdFRhc2tzT2JqZWN0XHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFza3MnXHJcbmltcG9ydCB7IE5hdnZ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2dnknXHJcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2tzVGFzayB9IGZyb20gJy4uLy4uL21hcC90YXNrcy90YXNrJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza1Jlc3VsdCB9IGZyb20gJy4vdGFzay9yZXN1bHQnXHJcbmltcG9ydCBjYW1lbENhc2UgZnJvbSAnanVzdC1jYW1lbC1jYXNlJ1xyXG5pbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MsXHJcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3MsXHJcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3NJdGVtXHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFzaydcclxuaW1wb3J0IHsgVG9VcHBlckNhc2VLZXlzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL2Jhc2UvdXBwZXItY2FzZS1rZXlzJ1xyXG5pbXBvcnQgeyBPYmplY3RUb1NuYWtlIH0gZnJvbSAndHMtY2FzZS1jb252ZXJ0L2xpYi9jYXNlQ29udmVydCdcclxuaW1wb3J0IHsgQWxsS2V5RnJlZSB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9iYXNlL2FsbC1rZXktZnJlZSdcclxuaW1wb3J0IHsgJGFkZCwgJGFkZEZyb21Db21tZW50LCAkYXBwcm92ZSwgJGNvbXBsZXRlLCAkZGVmZXIsICRkZWxlZ2F0ZSwgJGRlbGV0ZSwgJGRlbGV0ZUZyb21Db21tZW50LCAkZGlzYXBwcm92ZSwgJGdldCwgJGdldEZpZWxkc0V4YWN0LCAkZ2V0YWNjZXNzLCAkbGlzdCwgJG11dGUsICRwYXVzZSwgJHBpbiwgJHJlbmV3LCAkcmVzdWx0LCAkc3RhcnQsICRzdGFydHdhdGNoLCAkc3RvcHdhdGNoLCAkdGFzaywgJHRhc2tzLCAkdW5tdXRlLCAkdW5waW4sICR1cGRhdGUgfSBmcm9tICcuLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrQWNjZXNzIH0gZnJvbSAnLi90YXNrL2FjY2VzcydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlUYXNrc1Rhc2tDaGF0IH0gZnJvbSAnLi90YXNrL2NoYXQnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ291bnRlcnMgfSBmcm9tICcuL3Rhc2svY291bnRlcnMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmF2b3JpdGUgfSBmcm9tICcuL3Rhc2svZmF2b3JpdGUnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmllbGQgfSBmcm9tICcuL3Rhc2svZmllbGQnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmlsZXMgfSBmcm9tICcuL3Rhc2svZmlsZXMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3NUYXNrSGlzdG9yeSB9IGZyb20gJy4vdGFzay9oaXN0b3J5J1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpbGUgfSBmcm9tICcuL3Rhc2svZmlsZSdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eVRhc2tzVGFzayB7XHJcblxyXG4gIHVybCA9IHtcclxuICAgIC8qKlxyXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC00LDRh9GDXHJcbiAgICAgKi9cclxuICAgIGFkZDogWyR0YXNrcywgJHRhc2ssICRhZGRdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQn9C+0LfQstC+0LvRj9C10YIg0L/RgNC40L3Rj9GC0Ywg0LfQsNC00LDRh9GDXHJcbiAgICAgKi9cclxuICAgIGFwcHJvdmU6IFskdGFza3MsICR0YXNrLCAkYXBwcm92ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LfQsNCy0LXRgNGI0LXQvdCwwrtcclxuICAgICAqL1xyXG4gICAgY29tcGxldGU6IFskdGFza3MsICR0YXNrLCAkY29tcGxldGVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQn9C10YDQtdCy0L7QtNC40YIg0LfQsNC00LDRh9GDINCyINGB0YLQsNGC0YPRgSDCq9C+0YLQu9C+0LbQtdC90LDCu1xyXG4gICAgICovXHJcbiAgICBkZWZlcjogWyR0YXNrcywgJHRhc2ssICRkZWZlcl0sXHJcbiAgICAvKipcclxuICAgICAqINCc0LXRgtC+0LQg0LTQu9GPINC00LXQu9C10LPQuNGA0L7QstCw0L3QuNGPINC30LDQtNCw0YfQuFxyXG4gICAgICovXHJcbiAgICBkZWxlZ2F0ZTogWyR0YXNrcywgJHRhc2ssICRkZWxlZ2F0ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC60L7QvdC60YDQtdGC0L3QvtC5INC30LDQtNCw0YfQtVxyXG4gICAgICovXHJcbiAgICBnZXQ6IFskdGFza3MsICR0YXNrLCAkZ2V0XSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LLRgdC1INC00L7RgdGC0YPQv9C90YvQtSDQv9C+0LvRj1xyXG4gICAgICovXHJcbiAgICBnZXRGaWVsZHM6IFskdGFza3MsICR0YXNrLCAkZ2V0RmllbGRzRXhhY3RdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQnNC10YLQvtC0INC00LvRjyDQv9GA0L7QstC10YDQutC4INC00L7RgdGC0YPQv9CwINC6INC30LDQtNCw0YfQtVxyXG4gICAgICovXHJcbiAgICBnZXRBY2Nlc3M6IFskdGFza3MsICR0YXNrLCAkZ2V0YWNjZXNzXSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LzQsNGB0YHQuNCyINC30LDQtNCw0YcsINC60LDQttC00LDRjyDQuNC3INC60L7RgtC+0YDRi9GFINGB0L7QtNC10YDQttC40YIg0LzQsNGB0YHQuNCyINC/0L7Qu9C10LlcclxuICAgICAqL1xyXG4gICAgbGlzdDogWyR0YXNrcywgJHRhc2ssICRsaXN0XSxcclxuICAgIC8qKlxyXG4gICAgICog0J7QsdC90L7QstC70Y/QtdGCINC30LDQtNCw0YfRg1xyXG4gICAgICovXHJcbiAgICB1cGRhdGU6IFskdGFza3MsICR0YXNrLCAkdXBkYXRlXSxcclxuICAgIHJlc3VsdDoge1xyXG4gICAgICAvKipcclxuICAgICAgICogINCf0YDQvtGB0LzQvtGC0YAg0YHQv9C40YHQutCwINGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0Log0LfQsNC00LDRh9C1XHJcbiAgICAgICAqL1xyXG4gICAgICBsaXN0OiBbJHRhc2tzLCAkdGFzaywgJHJlc3VsdCwgJGxpc3RdLFxyXG4gICAgICAvKipcclxuICAgICAgICog0KHQvtC30LTQsNC90LjQtSDRgNC10LfRg9C70YzRgtCw0YLQsCDQt9Cw0LTQsNGH0Lgg0LjQtyDQutC+0LzQvNC10L3RgtCw0YDQuNGPXHJcbiAgICAgICAqL1xyXG4gICAgICBhZGRGcm9tQ29tbWVudDogWyR0YXNrcywgJHRhc2ssICRyZXN1bHQsICRhZGRGcm9tQ29tbWVudF0sXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiDQo9C00LDQu9C10L3QuNC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC30LDQtNCw0YfQuCDQv9C+INC60L7QvNC80LXQvdGC0LDRgNC40Y4g0LjQtyDQutC+0YLQvtGA0L7Qs9C+INC+0L0g0LHRi9C7INGB0L7Qt9C00LDQvVxyXG4gICAgICAgKi9cclxuICAgICAgZGVsZXRlRnJvbUNvbW1lbnQ6IFskdGFza3MsICR0YXNrLCAkcmVzdWx0LCAkZGVsZXRlRnJvbUNvbW1lbnRdLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCg0LXQt9GD0LvRjNGC0LDRgtGLINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2sucmVzdWx0LipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXN1bHQgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tSZXN1bHQoKVxyXG4gIC8qKlxuICAgKiDQn9GA0LDQstCwINC00L7RgdGC0YPQv9CwINC6INC30LDQtNCw0YfQtSAoYHRhc2tzLnRhc2suYWNjZXNzLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3MgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tBY2Nlc3MoKVxyXG4gIC8qKlxuICAgKiDQp9Cw0YIg0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5jaGF0LipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjaGF0ID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ2hhdCgpXHJcbiAgLyoqXG4gICAqINCh0YfRkdGC0YfQuNC60Lgg0LfQsNC00LDRhyAoYHRhc2tzLnRhc2suY291bnRlcnMuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvdW50ZXJzID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrQ291bnRlcnMoKVxyXG4gIC8qKlxuICAgKiDQmNC30LHRgNCw0L3QvdGL0LUg0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5mYXZvcml0ZS4qYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmF2b3JpdGUgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGYXZvcml0ZSgpXHJcbiAgLyoqXG4gICAqINCf0L7Qu9GPINC30LDQtNCw0YfQuCAoYHRhc2tzLnRhc2suZmllbGQuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrRmllbGQoKVxyXG4gIC8qKlxuICAgKiDQpNCw0LnQu9GLINC30LDQtNCw0YfQuCwgUkVTVCAzLjAgKGB0YXNrcy50YXNrLmZpbGUuKmApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGUgPSBuZXcgQlhSZXN0TmF2dnlUYXNrc1Rhc2tGaWxlKClcclxuICAvKipcbiAgICog0KTQsNC50LvRiyDQt9Cw0LTQsNGH0LggKGB0YXNrcy50YXNrLmZpbGVzLipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlcyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzVGFza0ZpbGVzKClcclxuICAvKipcbiAgICog0JjRgdGC0L7RgNC40Y8g0LfQsNC00LDRh9C4IChgdGFza3MudGFzay5oaXN0b3J5LipgKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBoaXN0b3J5ID0gbmV3IEJYUmVzdE5hdnZ5VGFza3NUYXNrSGlzdG9yeSgpXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgTmF2dnkgPSBuZXcgTmF2dnkoKVxyXG5cclxuICBhZGQ8Q3VzdG9tRmllbGRzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihwYXJhbTogaUJYUmVzdFBhcmFtVGFza0FkZDxDdXN0b21GaWVsZHM+KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tHZXRIdHRwRGVmYXVsdD4sXHJcbiAgICAgIGlCWFJlc3RUYXNrLFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrQWRkPEN1c3RvbUZpZWxkcz5cclxuICAgID4oXHJcbiAgICAgIHRoaXMudXJsLmFkZCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5hZGRcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vIFRPRE86INC/0LXRgNC10L/QuNGB0LDRgtGMINC90L7RgNC80LDQu9GM0L3QvlxyXG4gIC8qKlxuICAgKiDQn9GA0LjQvdC40LzQsNC10YIg0LfQsNC00LDRh9GDLlxuICAgKi9cbiAgYXBwcm92ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrQXBwcm92ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrQXBwcm92ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrQXBwcm92ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tBcHByb3ZlXHJcbiAgICA+KHRoaXMudXJsLmFwcHJvdmUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LfQsNCy0LXRgNGI0LXQvdCwwrsuXG4gICAqL1xuICBjb21wbGV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrQ29tcGxldGUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0NvbXBsZXRlSHR0cD4sXHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tDb21wbGV0ZUh0dHA+LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tDb21wbGV0ZVxyXG4gICAgPih0aGlzLnVybC5jb21wbGV0ZSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J/QtdGA0LXQstC+0LTQuNGCINC30LDQtNCw0YfRgyDQsiDRgdGC0LDRgtGD0YEgwqvQvtGC0LvQvtC20LXQvdCwwrsuXG4gICAqL1xuICBkZWZlcihwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrRGVmZXIpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0RlZmVySHR0cD4sXHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tCYXNlQW5zd2VyPGlCWFJlc3RUYXNrc1Rhc2tEZWZlckh0dHA+LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tEZWZlclxyXG4gICAgPih0aGlzLnVybC5kZWZlciwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICB1cGRhdGU8Q3VzdG9tRmllbGRzIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIHRhc2s6IEFsbEtleUZyZWU8aUJYUmVzdFRhc2tzVGFza0dldDxpQlhSZXN0VGFza0ZpZWxkc05hbWVbXSwgQ3VzdG9tRmllbGRzPj4sXHJcbiAgICB1cGRhdGVGaWVsZHM6IChpQlhSZXN0VGFza3NUYXNrRmllbGRzQ2FuVXBkYXRlIHwga2V5b2YgVG9VcHBlckNhc2VLZXlzPE9iamVjdFRvU25ha2U8Q3VzdG9tRmllbGRzPj4pW11cclxuICApIHtcclxuXHJcbiAgICBsZXQgc2VuZFRhc2s6IGlCWFJlc3RQYXJhbVRhc2tzVGFza1VwZGF0ZUZpZWxkcyAmIEFsbEtleUZyZWU8Q3VzdG9tRmllbGRzPiA9IHt9XHJcbiAgICBsZXQgdGFza1RTOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGFza1xyXG4gICAgaWYgKHVwZGF0ZUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgdXBkYXRlRmllbGQgb2YgdXBkYXRlRmllbGRzKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKHVwZGF0ZUZpZWxkKVxyXG4gICAgICAgIGlmICh0YXNrVFNbY2FtZWxDYXNlKGtleSldKSB7XHJcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEN1c3RvbSBmaWVsZCBrZXlzIGFyZSBzZWxlY3RlZCBkeW5hbWljYWxseS5cclxuICAgICAgICAgIHNlbmRUYXNrW2tleV0gPSB0YXNrVFNbY2FtZWxDYXNlKGtleSldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKHNlbmRUYXNrKS5sZW5ndGggJiYgdGFzayAmJiB0YXNrLmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICAgICAgaUJYUmVzdFRhc2tzVGFza0Jhc2VBbnN3ZXI8aUJYUmVzdFRhc2tzVGFza0RlZmVySHR0cD4sXHJcbiAgICAgICAgICBpQlhSZXN0VGFza3NUYXNrQmFzZUFuc3dlcjxpQlhSZXN0VGFza3NUYXNrRGVmZXJIdHRwPixcclxuICAgICAgICAgIGFueVxyXG4gICAgICAgID4odGhpcy51cmwudXBkYXRlLCB7dGFza0lkOiB0YXNrLmlkLCBmaWVsZHM6IHNlbmRUYXNrfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRocm93IG5ldyBFcnJvcigndXBkYXRlRmllbGRzIGVtcHR5JylcclxuICB9XHJcblxyXG4gIGdldDxTIGV4dGVuZHMgaUJYUmVzdFRhc2tGaWVsZHNOYW1lW10sIEN1c3RvbUZpZWxkcyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0dldDxDdXN0b21GaWVsZHM+KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tHZXRIdHRwPFMsIEN1c3RvbUZpZWxkcz4sXHJcbiAgICAgIGlCWFJlc3RUYXNrc1Rhc2tHZXQ8UywgQ3VzdG9tRmllbGRzPixcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrR2V0PEN1c3RvbUZpZWxkcz5cclxuICAgID4oXHJcbiAgICAgIHRoaXMudXJsLmdldCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5nZXQ8UywgQ3VzdG9tRmllbGRzPlxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLy8g0JLQvtC30LzQvtC20L3QviDQvNC+0LbQvdC+INC+0LHQvtC50YLQuNGB0Ywg0LHQtdC3IFwiUyBleHRlbmRzIGlCWFJlc3RUYXNrRmllbGRzTmFtZVtdXCIsXHJcbiAgLy8g0L3QsNC00L4g0YfRgtC+INCx0Ysg0L/QvtC90Y/RgtGMINGC0L4g0LrQsNC6INCz0LXQvdC10YDQuNGA0L7QstCw0YLRjCDQuNC90YLQtdC50YTQtdC50YEg0L3QsCDQu9C10YLRgyDQuNGB0YXQvtC00Y8g0LjRhSDQstGF0L7QtNGP0YnQuNGFINC00LDQvdC90YvRhVxyXG4gIGxpc3Q8UyBleHRlbmRzIGlCWFJlc3RUYXNrRmllbGRzTmFtZVtdLCBDdXN0b21GaWVsZHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+KFxyXG4gICAgcGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzTGlzdDxDdXN0b21GaWVsZHM+ID0ge31cclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnBhZ05hdlRhc2tzKFxyXG4gICAgICB0aGlzLnVybC5saXN0LFxyXG4gICAgICBwYXJhbSxcclxuICAgICAgQlhSZXN0TWFwVGFza3NUYXNrLmxpc3Q8UywgQ3VzdG9tRmllbGRzPlxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQv9C+0LvQtdC5INC30LDQtNCw0YfQuC5cbiAgICovXG4gIGdldEZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza3NUYXNrR2V0RmllbGRzPihcclxuICAgICAgdGhpcy51cmwuZ2V0RmllbGRzXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC00L7RgdGC0YPQvyDQuiDQt9Cw0LTQsNGH0LUuXG4gICAqL1xuICBnZXRBY2Nlc3MocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxpQlhSZXN0VGFza0dldEFjY2VzcywgUmVjb3JkPG51bWJlciwgaUJYUmVzdFRhc2tHZXRBY2Nlc3NJdGVtPiwgaUJYUmVzdFBhcmFtVGFza0dldEFjY2Vzcz4oXHJcbiAgICAgIHRoaXMudXJsLmdldEFjY2VzcyxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcFRhc2tzVGFzay5nZXRBY2Nlc3NcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkZWxldGUocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJGRlbGV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70L7QvdGP0LXRgiDQt9Cw0LTQsNGH0YMuXG4gICAqL1xuICBkaXNhcHByb3ZlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRkaXNhcHByb3ZlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDRgNC10LbQuNC8IMKr0JHQtdC3INC30LLRg9C60LDCuyDQtNC70Y8g0LfQsNC00LDRh9C4LlxuICAgKi9cbiAgbXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkbXV0ZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YvQv9C+0LvQvdC10L3QuNC1INC30LDQtNCw0YfQuCDQuCDQv9C10YDQtdCy0L7QtNC40YIg0LIg0YHRgtCw0YLRg9GBIMKr0LbQtNGR0YLCuy5cbiAgICovXG4gIHBhdXNlKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRwYXVzZV0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCX0LDQutGA0LXQv9C70Y/QtdGCINC30LDQtNCw0YfRgyDQsiDRgdC/0LjRgdC60LUuXG4gICAqL1xuICBwaW4ocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCS0L7Qt9C+0LHQvdC+0LLQu9GP0LXRgiDQt9Cw0LTQsNGH0YMg0L/QvtGB0LvQtSDQt9Cw0LLQtdGA0YjQtdC90LjRjy5cbiAgICovXG4gIHJlbmV3KHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRyZW5ld10sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCf0LXRgNC10LLQvtC00LjRgiDQt9Cw0LTQsNGH0YMg0LIg0YHRgtCw0YLRg9GBIMKr0LLRi9C/0L7Qu9C90Y/QtdGC0YHRj8K7LlxuICAgKi9cbiAgc3RhcnQocGFyYW06IGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZFxyXG4gICAgPihbJHRhc2tzLCAkdGFzaywgJHN0YXJ0XSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0JLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RhcnRXYXRjaChwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkc3RhcnR3YXRjaF0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXG4gICAqINCe0YLQutC70Y7Rh9Cw0LXRgiDQvdCw0LHQu9GO0LTQtdC90LjQtSDQt9CwINC30LDQtNCw0YfQtdC5LlxuICAgKi9cbiAgc3RvcFdhdGNoKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICRzdG9wd2F0Y2hdLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxuICAgKiDQktGL0LrQu9GO0YfQsNC10YIg0YDQtdC20LjQvCDCq9CR0LXQtyDQt9Cy0YPQutCwwrsg0LTQu9GPINC30LDQtNCw0YfQuC5cbiAgICovXG4gIHVubXV0ZShwYXJhbTogaUJYUmVzdFBhcmFtVGFza3NUYXNrSWQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxcclxuICAgICAgaUJYUmVzdFRhc2tzT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RQYXJhbVRhc2tzVGFza0lkXHJcbiAgICA+KFskdGFza3MsICR0YXNrLCAkdW5tdXRlXSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcbiAgICog0J7RgtC60YDQtdC/0LvRj9C10YIg0LfQsNC00LDRh9GDINCyINGB0L/QuNGB0LrQtS5cbiAgICovXG4gIHVucGluKHBhcmFtOiBpQlhSZXN0UGFyYW1UYXNrc1Rhc2tJZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0VGFza3NPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RUYXNrc09iamVjdCxcclxuICAgICAgaUJYUmVzdFBhcmFtVGFza3NUYXNrSWRcclxuICAgID4oWyR0YXNrcywgJHRhc2ssICR1bnBpbl0sIHBhcmFtKVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -20,7 +20,7 @@ export class BXRestNavvyUserFieldType {
20
20
  * Возвращает список типов пользовательских полей, зарегистрированных приложением.
21
21
  */
22
22
  list(param = {}) {
23
- return this.Navvy.simple([$userfieldtype, $list], param);
23
+ return this.Navvy.pagNav([$userfieldtype, $list], param);
24
24
  }
25
25
  /**
26
26
  * Изменяет настройки зарегистрированного приложением типа пользовательских полей.
@@ -29,4 +29,4 @@ export class BXRestNavvyUserFieldType {
29
29
  return this.Navvy.simple([$userfieldtype, $update], param);
30
30
  }
31
31
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcmZpZWxkdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvdXNlcmZpZWxkdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFekMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUUzRixNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ21CLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBMEN0QyxDQUFDO0lBeENDOztPQUVHO0lBQ0ksR0FBRyxDQUFDLFFBQThCLEVBQUU7UUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQThCLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLFFBQThCLEVBQUU7UUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQThCLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2dnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZ2eSdcclxuaW1wb3J0IHsgaUJYUmVzdEdlbmVyaWNPYmplY3QsIGlCWFJlc3RHZW5lcmljUGFyYW1zIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvY29tbW9uJ1xyXG5pbXBvcnQgeyAkYWRkLCAkZGVsZXRlLCAkbGlzdCwgJHVwZGF0ZSwgJHVzZXJmaWVsZHR5cGUgfSBmcm9tICcuLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnlVc2VyRmllbGRUeXBlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IE5hdnZ5ID0gbmV3IE5hdnZ5KClcclxuXHJcbiAgLyoqXG4gICAqINCg0LXQs9C40YHRgtGA0LjRgNGD0LXRgiDQvdC+0LLRi9C5INGC0LjQvyDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhSDQv9C+0LvQtdC5LlxuICAgKi9cbiAgcHVibGljIGFkZChwYXJhbTogaUJYUmVzdEdlbmVyaWNQYXJhbXMgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RHZW5lcmljUGFyYW1zXHJcbiAgICA+KFskdXNlcmZpZWxkdHlwZSwgJGFkZF0sIHBhcmFtKVxyXG4gIH1cclxuICAvKipcbiAgICog0KPQtNCw0LvRj9C10YIg0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90L3Ri9C5INC/0YDQuNC70L7QttC10L3QuNC10Lwg0YLQuNC/INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGFINC/0L7Qu9C10LkuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlKHBhcmFtOiBpQlhSZXN0R2VuZXJpY1BhcmFtcyA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RHZW5lcmljT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNQYXJhbXNcclxuICAgID4oWyR1c2VyZmllbGR0eXBlLCAkZGVsZXRlXSwgcGFyYW0pXHJcbiAgfVxyXG4gIC8qKlxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0YLQuNC/0L7QsiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhSDQv9C+0LvQtdC5LCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0YUg0L/RgNC40LvQvtC20LXQvdC40LXQvC5cbiAgICovXG4gIHB1YmxpYyBsaXN0KHBhcmFtOiBpQlhSZXN0R2VuZXJpY1BhcmFtcyA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RHZW5lcmljT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNQYXJhbXNcclxuICAgID4oWyR1c2VyZmllbGR0eXBlLCAkbGlzdF0sIHBhcmFtKVxyXG4gIH1cclxuICAvKipcbiAgICog0JjQt9C80LXQvdGP0LXRgiDQvdCw0YHRgtGA0L7QudC60Lgg0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90L3QvtCz0L4g0L/RgNC40LvQvtC20LXQvdC40LXQvCDRgtC40L/QsCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhSDQv9C+0LvQtdC5LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShwYXJhbTogaUJYUmVzdEdlbmVyaWNQYXJhbXMgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RHZW5lcmljUGFyYW1zXHJcbiAgICA+KFskdXNlcmZpZWxkdHlwZSwgJHVwZGF0ZV0sIHBhcmFtKVxyXG4gIH1cclxufVxyXG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcmZpZWxkdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvdXNlcmZpZWxkdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFekMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUUzRixNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ21CLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBMEN0QyxDQUFDO0lBeENDOztPQUVHO0lBQ0ksR0FBRyxDQUFDLFFBQThCLEVBQUU7UUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQThCLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLFFBQThCLEVBQUU7UUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQThCLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FJdEIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2dnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZ2eSdcclxuaW1wb3J0IHsgaUJYUmVzdEdlbmVyaWNPYmplY3QsIGlCWFJlc3RHZW5lcmljUGFyYW1zIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvY29tbW9uJ1xyXG5pbXBvcnQgeyAkYWRkLCAkZGVsZXRlLCAkbGlzdCwgJHVwZGF0ZSwgJHVzZXJmaWVsZHR5cGUgfSBmcm9tICcuLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnlVc2VyRmllbGRUeXBlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IE5hdnZ5ID0gbmV3IE5hdnZ5KClcclxuXHJcbiAgLyoqXHJcbiAgICog0KDQtdCz0LjRgdGC0YDQuNGA0YPQtdGCINC90L7QstGL0Lkg0YLQuNC/INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGFINC/0L7Qu9C10LkuXHJcbiAgICovXHJcbiAgcHVibGljIGFkZChwYXJhbTogaUJYUmVzdEdlbmVyaWNQYXJhbXMgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RHZW5lcmljUGFyYW1zXHJcbiAgICA+KFskdXNlcmZpZWxkdHlwZSwgJGFkZF0sIHBhcmFtKVxyXG4gIH1cclxuICAvKipcclxuICAgKiDQo9C00LDQu9GP0LXRgiDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0Lkg0L/RgNC40LvQvtC20LXQvdC40LXQvCDRgtC40L8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40YUg0L/QvtC70LXQuS5cclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKHBhcmFtOiBpQlhSZXN0R2VuZXJpY1BhcmFtcyA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8XHJcbiAgICAgIGlCWFJlc3RHZW5lcmljT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNQYXJhbXNcclxuICAgID4oWyR1c2VyZmllbGR0eXBlLCAkZGVsZXRlXSwgcGFyYW0pXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRgtC40L/QvtCyINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGFINC/0L7Qu9C10LksINC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdC90YvRhSDQv9GA0LjQu9C+0LbQtdC90LjQtdC8LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBsaXN0KHBhcmFtOiBpQlhSZXN0R2VuZXJpY1BhcmFtcyA9IHt9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5wYWdOYXY8XHJcbiAgICAgIGlCWFJlc3RHZW5lcmljT2JqZWN0LFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNQYXJhbXNcclxuICAgID4oWyR1c2VyZmllbGR0eXBlLCAkbGlzdF0sIHBhcmFtKVxyXG4gIH1cclxuICAvKipcclxuICAgKiDQmNC30LzQtdC90Y/QtdGCINC90LDRgdGC0YDQvtC50LrQuCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdC+0LPQviDQv9GA0LjQu9C+0LbQtdC90LjQtdC8INGC0LjQv9CwINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGFINC/0L7Qu9C10LkuXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZShwYXJhbTogaUJYUmVzdEdlbmVyaWNQYXJhbXMgPSB7fSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFxyXG4gICAgICBpQlhSZXN0R2VuZXJpY09iamVjdCxcclxuICAgICAgaUJYUmVzdEdlbmVyaWNPYmplY3QsXHJcbiAgICAgIGlCWFJlc3RHZW5lcmljUGFyYW1zXHJcbiAgICA+KFskdXNlcmZpZWxkdHlwZSwgJHVwZGF0ZV0sIHBhcmFtKVxyXG4gIH1cclxufVxyXG4iXX0=