taxtank-core 0.30.143 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/esm2020/lib/collections/collection.mjs +2 -2
  2. package/esm2020/lib/db/Models/depreciation/depreciation.mjs +1 -1
  3. package/esm2020/lib/db/Models/document/document-folder.mjs +1 -1
  4. package/esm2020/lib/db/Models/document/document.mjs +1 -1
  5. package/esm2020/lib/db/Models/document/property-document.mjs +1 -7
  6. package/esm2020/lib/db/Models/firm/firm.mjs +1 -1
  7. package/esm2020/lib/db/Models/index.mjs +1 -3
  8. package/esm2020/lib/db/Models/property/property-valuation.mjs +3 -8
  9. package/esm2020/lib/db/Models/property/property.mjs +1 -1
  10. package/esm2020/lib/db/Models/sole/sole-business.mjs +1 -1
  11. package/esm2020/lib/db/Models/transaction/transaction-base.mjs +10 -7
  12. package/esm2020/lib/db/Models/transaction/transaction.mjs +1 -1
  13. package/esm2020/lib/db/Models/user/user.mjs +1 -1
  14. package/esm2020/lib/forms/document-folder/document-folder.form.mjs +11 -0
  15. package/esm2020/lib/forms/document-folder/document.form.mjs +11 -0
  16. package/esm2020/lib/forms/document-folder/index.mjs +3 -0
  17. package/esm2020/lib/forms/firm/firm.form.mjs +17 -0
  18. package/esm2020/lib/forms/firm/index.mjs +2 -0
  19. package/esm2020/lib/forms/index.mjs +3 -1
  20. package/esm2020/lib/forms/property/index.mjs +5 -2
  21. package/esm2020/lib/forms/property/property-document.form.mjs +14 -0
  22. package/esm2020/lib/forms/property/property-edit.form.mjs +17 -0
  23. package/esm2020/lib/forms/property/property-valuation.form.mjs +17 -0
  24. package/esm2020/lib/forms/sole/sole-business.form.mjs +4 -3
  25. package/esm2020/lib/forms/transaction/transaction-base.form.mjs +4 -7
  26. package/esm2020/lib/forms/user/client-details.form.mjs +34 -0
  27. package/esm2020/lib/forms/user/index.mjs +3 -1
  28. package/esm2020/lib/forms/user/user.form.mjs +15 -0
  29. package/esm2020/lib/functions/get-doc-icon.mjs +3 -3
  30. package/esm2020/lib/interceptors/basiq-client-id.interceptor.mjs +3 -3
  31. package/esm2020/lib/interceptors/basiq-token.interceptor.mjs +3 -3
  32. package/esm2020/lib/interceptors/corelogic-interceptor.mjs +3 -3
  33. package/esm2020/lib/interceptors/financial-year-interceptor.mjs +3 -3
  34. package/esm2020/lib/interceptors/interceptors.module.mjs +4 -4
  35. package/esm2020/lib/interceptors/jwt-interceptor.mjs +3 -3
  36. package/esm2020/lib/interceptors/preloader.interceptor.mjs +3 -3
  37. package/esm2020/lib/interceptors/user-switcher-interceptor.mjs +3 -3
  38. package/esm2020/lib/interfaces/asset-type.enum.mjs +1 -3
  39. package/esm2020/lib/interfaces/document.interface.mjs +1 -1
  40. package/esm2020/lib/interfaces/documentable.interface.mjs +1 -1
  41. package/esm2020/lib/interfaces/fileable.interface.mjs +2 -0
  42. package/esm2020/lib/interfaces/index.mjs +2 -3
  43. package/esm2020/lib/models/bank/bank.mjs +5 -10
  44. package/esm2020/lib/models/chat/message-document.mjs +4 -3
  45. package/esm2020/lib/models/depreciation/depreciation.mjs +1 -1
  46. package/esm2020/lib/models/depreciation/index.mjs +1 -2
  47. package/esm2020/lib/models/document/document-folder.mjs +1 -7
  48. package/esm2020/lib/models/document/document.mjs +12 -19
  49. package/esm2020/lib/models/endpoint/endpoints.const.mjs +7 -8
  50. package/esm2020/lib/models/event/app-event-type.enum.mjs +45 -53
  51. package/esm2020/lib/models/file/file.mjs +5 -1
  52. package/esm2020/lib/models/firm/firm.mjs +5 -13
  53. package/esm2020/lib/models/property/property-document.mjs +12 -12
  54. package/esm2020/lib/models/property/property-valuation.mjs +2 -5
  55. package/esm2020/lib/models/property/property.mjs +5 -13
  56. package/esm2020/lib/models/registration-invite/registration-invite.mjs +7 -7
  57. package/esm2020/lib/models/sole/sole-business.mjs +6 -8
  58. package/esm2020/lib/models/sole/sole-contact.mjs +5 -8
  59. package/esm2020/lib/models/sole/sole-invoice-template.mjs +1 -1
  60. package/esm2020/lib/models/transaction/index.mjs +1 -2
  61. package/esm2020/lib/models/transaction/transaction.mjs +1 -5
  62. package/esm2020/lib/models/user/user.mjs +6 -14
  63. package/esm2020/lib/services/account-setup/account-setup.service.mjs +3 -3
  64. package/esm2020/lib/services/affiliate/rewardful/rewardful.service.mjs +3 -3
  65. package/esm2020/lib/services/asset/assets.service.mjs +3 -3
  66. package/esm2020/lib/services/auth/auth.service.mjs +3 -3
  67. package/esm2020/lib/services/auth/jwt.service.mjs +3 -3
  68. package/esm2020/lib/services/bank/bank-account-calculation.service.mjs +3 -3
  69. package/esm2020/lib/services/bank/bank-transaction-calculation.service.mjs +3 -3
  70. package/esm2020/lib/services/data.service.mjs +3 -3
  71. package/esm2020/lib/services/event/event-dispatcher.service.mjs +3 -3
  72. package/esm2020/lib/services/event/sse.service.mjs +3 -3
  73. package/esm2020/lib/services/export/export-formatter.service.mjs +3 -3
  74. package/esm2020/lib/services/header-title/header-title.service.mjs +3 -3
  75. package/esm2020/lib/services/http/address/address.service.mjs +3 -3
  76. package/esm2020/lib/services/http/bank/bank-account/bank-account.service.mjs +3 -3
  77. package/esm2020/lib/services/http/bank/bank-connection/bank-connection.service.mjs +3 -3
  78. package/esm2020/lib/services/http/bank/bank-transaction/bank-transaction.service.mjs +3 -3
  79. package/esm2020/lib/services/http/bank/bank.service.mjs +3 -3
  80. package/esm2020/lib/services/http/bank/basiq/basiq-token.service.mjs +3 -3
  81. package/esm2020/lib/services/http/bank/basiq/basiq.service.mjs +3 -3
  82. package/esm2020/lib/services/http/budget/budget.service.mjs +3 -3
  83. package/esm2020/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.mjs +3 -3
  84. package/esm2020/lib/services/http/chart-accounts/chart-accounts.service.mjs +3 -3
  85. package/esm2020/lib/services/http/chat/chat.service.mjs +3 -3
  86. package/esm2020/lib/services/http/chat/message-document.service.mjs +5 -5
  87. package/esm2020/lib/services/http/chat/message.service.mjs +3 -3
  88. package/esm2020/lib/services/http/client/capital-gain/annual-client-details.service.mjs +3 -3
  89. package/esm2020/lib/services/http/client/occupation/occupation.service.mjs +3 -3
  90. package/esm2020/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.mjs +3 -3
  91. package/esm2020/lib/services/http/depreciation/depreciation.service.mjs +7 -55
  92. package/esm2020/lib/services/http/depreciation/index.mjs +1 -2
  93. package/esm2020/lib/services/http/document/document-folder/document-folder-messages.enum.mjs +8 -0
  94. package/esm2020/lib/services/http/document/document-folder/document-folder.service.mjs +9 -59
  95. package/esm2020/lib/services/http/document/document-folder/index.mjs +3 -0
  96. package/esm2020/lib/services/http/document/document-messages.enum.mjs +8 -0
  97. package/esm2020/lib/services/http/document/document.service.mjs +10 -6
  98. package/esm2020/lib/services/http/document/index.mjs +3 -2
  99. package/esm2020/lib/services/http/facebook/facebook.service.mjs +3 -3
  100. package/esm2020/lib/services/http/file/file.service.mjs +10 -4
  101. package/esm2020/lib/services/http/firm/client-income/client-income-types.service.mjs +3 -3
  102. package/esm2020/lib/services/http/firm/client-invite/client-invite.service.mjs +3 -3
  103. package/esm2020/lib/services/http/firm/client-movement/client-movement.service.mjs +3 -3
  104. package/esm2020/lib/services/http/firm/employee/employee.service.mjs +3 -3
  105. package/esm2020/lib/services/http/firm/employee-invite/employee-invite.service.mjs +3 -3
  106. package/esm2020/lib/services/http/firm/firm-messages.enum.mjs +6 -0
  107. package/esm2020/lib/services/http/firm/firm.service.mjs +4 -12
  108. package/esm2020/lib/services/http/firm/index.mjs +2 -1
  109. package/esm2020/lib/services/http/firm/portfolio-report/client-portfolio-report.service.mjs +3 -3
  110. package/esm2020/lib/services/http/google/google.service.mjs +3 -3
  111. package/esm2020/lib/services/http/holding/holding-sale.service.mjs +3 -3
  112. package/esm2020/lib/services/http/holding/holding-type.service.mjs +3 -3
  113. package/esm2020/lib/services/http/holding/holding.service.mjs +3 -3
  114. package/esm2020/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.mjs +3 -3
  115. package/esm2020/lib/services/http/income-source/income-source.service.mjs +3 -3
  116. package/esm2020/lib/services/http/income-source/salary-forecast/salary-forecast.service.mjs +3 -3
  117. package/esm2020/lib/services/http/income-source/sole-forecast/sole-forecast.service.mjs +3 -3
  118. package/esm2020/lib/services/http/index.mjs +1 -2
  119. package/esm2020/lib/services/http/loan/borrowing-expense/borrowing-expense.service.mjs +3 -3
  120. package/esm2020/lib/services/http/loan/loan.service.mjs +3 -3
  121. package/esm2020/lib/services/http/property/borrowing-report/borrowing-report.service.mjs +3 -3
  122. package/esm2020/lib/services/http/property/index.mjs +3 -1
  123. package/esm2020/lib/services/http/property/property-category/property-category.service.mjs +3 -3
  124. package/esm2020/lib/services/http/property/property-category-movement/property-category-movement.service.mjs +3 -3
  125. package/esm2020/lib/services/http/property/property-document/index.mjs +2 -1
  126. package/esm2020/lib/services/http/property/property-document/property-document-messages.enum.mjs +8 -0
  127. package/esm2020/lib/services/http/property/property-document/property-document.service.mjs +7 -6
  128. package/esm2020/lib/services/http/property/property-messages.enum.mjs +6 -0
  129. package/esm2020/lib/services/http/property/property-sale/property-sale.service.mjs +3 -3
  130. package/esm2020/lib/services/http/property/property-share/property-share.service.mjs +3 -3
  131. package/esm2020/lib/services/http/property/property-valuation/index.mjs +3 -0
  132. package/esm2020/lib/services/http/property/property-valuation/property-valuation-messages.enum.mjs +6 -0
  133. package/esm2020/lib/services/http/property/property-valuation/property-valuation.service.mjs +39 -0
  134. package/esm2020/lib/services/http/property/property.service.mjs +9 -5
  135. package/esm2020/lib/services/http/rest/rest-old.service.mjs +3 -3
  136. package/esm2020/lib/services/http/rest/rest.service.mjs +9 -9
  137. package/esm2020/lib/services/http/service-notification/service-notification.service.mjs +3 -3
  138. package/esm2020/lib/services/http/sole/bas-report/bas-report.service.mjs +3 -3
  139. package/esm2020/lib/services/http/sole/index.mjs +2 -2
  140. package/esm2020/lib/services/http/sole/sole-business/index.mjs +3 -0
  141. package/esm2020/lib/services/http/sole/sole-business/sole-business-messages.enum.mjs +5 -0
  142. package/esm2020/lib/services/http/sole/sole-business/sole-business.service.mjs +5 -28
  143. package/esm2020/lib/services/http/sole/sole-business-activity/sole-business-activity.service.mjs +3 -3
  144. package/esm2020/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.mjs +3 -3
  145. package/esm2020/lib/services/http/sole/sole-business-loss/sole-business-loss.service.mjs +3 -3
  146. package/esm2020/lib/services/http/sole/sole-contact/sole-contact.service.mjs +3 -3
  147. package/esm2020/lib/services/http/sole/sole-depreciation-method/sole-depreciation-method.service.mjs +3 -3
  148. package/esm2020/lib/services/http/sole/sole-details/sole-details.service.mjs +3 -3
  149. package/esm2020/lib/services/http/sole/sole-invoice/sole-invoice.service.mjs +3 -3
  150. package/esm2020/lib/services/http/sole/sole-invoice-template/sole-invoice-template.service.mjs +3 -3
  151. package/esm2020/lib/services/http/subscription/service-payment/service-payment.service.mjs +3 -3
  152. package/esm2020/lib/services/http/subscription/service-payment-method/service-payment-method.service.mjs +3 -3
  153. package/esm2020/lib/services/http/subscription/service-price/service-price.service.mjs +3 -3
  154. package/esm2020/lib/services/http/subscription/service-product/service-product.service.mjs +3 -3
  155. package/esm2020/lib/services/http/subscription/service-subscription/subscription.service.mjs +3 -3
  156. package/esm2020/lib/services/http/tax-review/tax-review-history/tax-review-history.service.mjs +3 -3
  157. package/esm2020/lib/services/http/tax-review/tax-review.service.mjs +3 -3
  158. package/esm2020/lib/services/http/tax-summary/tax-summary.service.mjs +3 -3
  159. package/esm2020/lib/services/http/transaction/index.mjs +1 -2
  160. package/esm2020/lib/services/http/transaction/transaction-allocation/allocation-rule/allocation-rule.service.mjs +3 -3
  161. package/esm2020/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.mjs +3 -3
  162. package/esm2020/lib/services/http/transaction/transaction.service.mjs +6 -43
  163. package/esm2020/lib/services/http/tutorial-video/tutorial-video.service.mjs +3 -3
  164. package/esm2020/lib/services/http/user/financial-year/financial-year.service.mjs +3 -3
  165. package/esm2020/lib/services/http/user/index.mjs +2 -1
  166. package/esm2020/lib/services/http/user/user-event-setting/user-event-setting.service.mjs +3 -3
  167. package/esm2020/lib/services/http/user/user-event-type/user-event-type.service.mjs +3 -3
  168. package/esm2020/lib/services/http/user/user-messages.enum.mjs +7 -0
  169. package/esm2020/lib/services/http/user/user.service.mjs +3 -3
  170. package/esm2020/lib/services/http/user/users-invite/users-invite.service.mjs +3 -3
  171. package/esm2020/lib/services/http/vehicle/vehicle-claim-details.service.mjs +3 -3
  172. package/esm2020/lib/services/http/vehicle/vehicle-claim.service.mjs +3 -3
  173. package/esm2020/lib/services/http/vehicle/vehicle-logbook.service.mjs +3 -3
  174. package/esm2020/lib/services/http/vehicle/vehicle.service.mjs +3 -3
  175. package/esm2020/lib/services/intercom/intercom.service.mjs +3 -3
  176. package/esm2020/lib/services/json/chart-accounts/chart-accounts-value.service.mjs +3 -3
  177. package/esm2020/lib/services/json/holding/holding-type-exchange.service.mjs +3 -3
  178. package/esm2020/lib/services/json/income-source/income-source-type.service.mjs +3 -3
  179. package/esm2020/lib/services/json/tax-exemption/tax-exemption.service.mjs +3 -3
  180. package/esm2020/lib/services/json/tax-return/tax-return-item.service.mjs +3 -3
  181. package/esm2020/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.mjs +3 -3
  182. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.mjs +3 -3
  183. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.mjs +3 -3
  184. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-table.service.mjs +3 -3
  185. package/esm2020/lib/services/preloader/preloader.service.mjs +3 -3
  186. package/esm2020/lib/services/property/corelogic/corelogic.service.mjs +3 -3
  187. package/esm2020/lib/services/property/equity-position-chart/equity-position-chart.service.mjs +3 -3
  188. package/esm2020/lib/services/property/property-calculation/property-calculation.service.mjs +3 -3
  189. package/esm2020/lib/services/report/property/property-transaction-report.service.mjs +3 -3
  190. package/esm2020/lib/services/toast/toast.service.mjs +3 -3
  191. package/esm2020/lib/services/transaction/transaction-calculation.service.mjs +3 -3
  192. package/esm2020/lib/services/user/user-switcher.service.mjs +3 -3
  193. package/esm2020/lib/services/vehicle/logbook-best-period.service.mjs +3 -3
  194. package/esm2020/lib/services/xlsx/xlsx.service.mjs +3 -3
  195. package/esm2020/lib/tt-core.module.mjs +4 -4
  196. package/esm2020/public-api.mjs +2 -18
  197. package/fesm2015/taxtank-core.mjs +1124 -1306
  198. package/fesm2015/taxtank-core.mjs.map +1 -1
  199. package/fesm2020/taxtank-core.mjs +1111 -1289
  200. package/fesm2020/taxtank-core.mjs.map +1 -1
  201. package/lib/db/Models/depreciation/depreciation.d.ts +0 -2
  202. package/lib/db/Models/document/document-folder.d.ts +1 -2
  203. package/lib/db/Models/document/property-document.d.ts +6 -5
  204. package/lib/db/Models/firm/firm.d.ts +2 -0
  205. package/lib/db/Models/index.d.ts +0 -2
  206. package/lib/db/Models/property/property-valuation.d.ts +2 -2
  207. package/lib/db/Models/property/property.d.ts +2 -0
  208. package/lib/db/Models/sole/sole-business.d.ts +2 -0
  209. package/lib/db/Models/transaction/transaction-base.d.ts +5 -7
  210. package/lib/db/Models/transaction/transaction.d.ts +0 -2
  211. package/lib/db/Models/user/user.d.ts +2 -1
  212. package/lib/forms/document-folder/document-folder.form.d.ts +5 -0
  213. package/lib/forms/document-folder/document.form.d.ts +5 -0
  214. package/lib/forms/document-folder/index.d.ts +2 -0
  215. package/lib/forms/firm/firm.form.d.ts +5 -0
  216. package/lib/forms/firm/index.d.ts +1 -0
  217. package/lib/forms/index.d.ts +2 -0
  218. package/lib/forms/property/index.d.ts +4 -1
  219. package/lib/forms/property/property-document.form.d.ts +6 -0
  220. package/lib/forms/property/property-edit.form.d.ts +5 -0
  221. package/lib/forms/property/property-valuation.form.d.ts +6 -0
  222. package/lib/forms/user/client-details.form.d.ts +7 -0
  223. package/lib/forms/user/index.d.ts +2 -0
  224. package/lib/forms/user/user.form.d.ts +5 -0
  225. package/lib/functions/get-doc-icon.d.ts +2 -2
  226. package/lib/interfaces/asset-type.enum.d.ts +0 -2
  227. package/lib/interfaces/document.interface.d.ts +4 -14
  228. package/lib/interfaces/documentable.interface.d.ts +2 -2
  229. package/lib/interfaces/fileable.interface.d.ts +8 -0
  230. package/lib/interfaces/index.d.ts +1 -2
  231. package/lib/models/bank/bank.d.ts +4 -4
  232. package/lib/models/chat/message-document.d.ts +2 -1
  233. package/lib/models/depreciation/depreciation.d.ts +2 -4
  234. package/lib/models/depreciation/index.d.ts +0 -1
  235. package/lib/models/document/document-folder.d.ts +1 -5
  236. package/lib/models/document/document.d.ts +5 -17
  237. package/lib/models/event/app-event-type.enum.d.ts +44 -52
  238. package/lib/models/file/file.d.ts +2 -0
  239. package/lib/models/firm/firm.d.ts +4 -10
  240. package/lib/models/property/property-document.d.ts +5 -10
  241. package/lib/models/property/property-valuation.d.ts +0 -1
  242. package/lib/models/property/property.d.ts +4 -10
  243. package/lib/models/registration-invite/registration-invite.d.ts +4 -4
  244. package/lib/models/sole/sole-business.d.ts +4 -4
  245. package/lib/models/sole/sole-contact.d.ts +4 -4
  246. package/lib/models/transaction/index.d.ts +0 -1
  247. package/lib/models/transaction/transaction.d.ts +2 -5
  248. package/lib/models/user/user.d.ts +6 -12
  249. package/lib/services/http/depreciation/depreciation.service.d.ts +1 -7
  250. package/lib/services/http/depreciation/index.d.ts +0 -1
  251. package/lib/services/http/document/document-folder/document-folder-messages.enum.d.ts +6 -0
  252. package/lib/services/http/document/document-folder/document-folder.service.d.ts +6 -24
  253. package/lib/services/http/document/document-folder/index.d.ts +2 -0
  254. package/lib/services/http/document/document-messages.enum.d.ts +6 -0
  255. package/lib/services/http/document/document.service.d.ts +7 -3
  256. package/lib/services/http/document/index.d.ts +2 -1
  257. package/lib/services/http/file/file.service.d.ts +2 -0
  258. package/lib/services/http/firm/firm-messages.enum.d.ts +4 -0
  259. package/lib/services/http/firm/firm.service.d.ts +0 -1
  260. package/lib/services/http/firm/index.d.ts +1 -0
  261. package/lib/services/http/index.d.ts +0 -1
  262. package/lib/services/http/property/index.d.ts +2 -0
  263. package/lib/services/http/property/property-document/index.d.ts +1 -0
  264. package/lib/services/http/property/property-document/property-document-messages.enum.d.ts +6 -0
  265. package/lib/services/http/property/property-document/property-document.service.d.ts +1 -0
  266. package/lib/services/http/property/property-messages.enum.d.ts +4 -0
  267. package/lib/services/http/property/property-valuation/index.d.ts +2 -0
  268. package/lib/services/http/property/property-valuation/property-valuation-messages.enum.d.ts +4 -0
  269. package/lib/services/http/property/property-valuation/property-valuation.service.d.ts +21 -0
  270. package/lib/services/http/property/property.service.d.ts +1 -0
  271. package/lib/services/http/rest/rest.service.d.ts +2 -2
  272. package/lib/services/http/sole/index.d.ts +1 -1
  273. package/lib/services/http/sole/sole-business/index.d.ts +2 -0
  274. package/lib/services/http/sole/sole-business/sole-business-messages.enum.d.ts +3 -0
  275. package/lib/services/http/sole/sole-business/sole-business.service.d.ts +0 -1
  276. package/lib/services/http/transaction/index.d.ts +0 -1
  277. package/lib/services/http/transaction/transaction.service.d.ts +1 -5
  278. package/lib/services/http/user/index.d.ts +1 -0
  279. package/lib/services/http/user/user-messages.enum.d.ts +5 -0
  280. package/package.json +1 -1
  281. package/public-api.d.ts +1 -17
  282. package/esm2020/lib/db/Models/depreciation/depreciation-receipt.mjs +0 -4
  283. package/esm2020/lib/db/Models/transaction/transaction-receipt.mjs +0 -4
  284. package/esm2020/lib/interfaces/photoable.mjs +0 -2
  285. package/esm2020/lib/interfaces/receipt.interface.mjs +0 -2
  286. package/esm2020/lib/models/depreciation/depreciation-receipt.mjs +0 -11
  287. package/esm2020/lib/models/transaction/transaction-receipt.mjs +0 -11
  288. package/esm2020/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.mjs +0 -40
  289. package/esm2020/lib/services/http/depreciation/depreciation-receipt/index.mjs +0 -2
  290. package/esm2020/lib/services/http/receipt/index.mjs +0 -2
  291. package/esm2020/lib/services/http/receipt/receipt.service.mjs +0 -76
  292. package/esm2020/lib/services/http/sole/sole-business/messages.enum.mjs +0 -7
  293. package/esm2020/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.mjs +0 -40
  294. package/lib/db/Models/depreciation/depreciation-receipt.d.ts +0 -12
  295. package/lib/db/Models/transaction/transaction-receipt.d.ts +0 -12
  296. package/lib/interfaces/photoable.d.ts +0 -13
  297. package/lib/interfaces/receipt.interface.d.ts +0 -12
  298. package/lib/models/depreciation/depreciation-receipt.d.ts +0 -8
  299. package/lib/models/transaction/transaction-receipt.d.ts +0 -8
  300. package/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.d.ts +0 -28
  301. package/lib/services/http/depreciation/depreciation-receipt/index.d.ts +0 -1
  302. package/lib/services/http/receipt/index.d.ts +0 -1
  303. package/lib/services/http/receipt/receipt.service.d.ts +0 -62
  304. package/lib/services/http/sole/sole-business/messages.enum.d.ts +0 -5
  305. package/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.d.ts +0 -28
@@ -1,14 +1,9 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { RestService } from '../../rest/rest-old.service';
3
3
  import { SoleBusiness } from '../../../../models';
4
- import { catchError, map } from 'rxjs/operators';
4
+ import { map } from 'rxjs/operators';
5
5
  import { AppEvent } from '../../../../models/event/app-event';
6
6
  import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
7
- import cloneDeep from 'lodash/cloneDeep';
8
- import { replace } from '../../../../functions/array';
9
- import { MessagesEnum } from './messages.enum';
10
- import { plainToClass } from 'class-transformer';
11
- import { throwError as observableThrowError } from 'rxjs';
12
7
  import * as i0 from "@angular/core";
13
8
  export class SoleBusinessService extends RestService {
14
9
  constructor() {
@@ -23,31 +18,13 @@ export class SoleBusinessService extends RestService {
23
18
  return business;
24
19
  }));
25
20
  }
26
- uploadLogo(business, file) {
27
- const formData = new FormData();
28
- formData.append('file', file);
29
- return this.http.post(`${this.environment.apiV2}/${this.url}/${business.id}/logo`, formData)
30
- .pipe(map((updatedBusiness) => {
31
- const tempCache = cloneDeep(this.cache);
32
- replace(tempCache, plainToClass(SoleBusiness, updatedBusiness));
33
- this.cache = tempCache;
34
- this.cacheSubject.next(this.cache);
35
- this.toastService.success(MessagesEnum.LOGO_UPDATED);
36
- }), catchError((error) => {
37
- // Show error when user provided wrong image (format or size)
38
- if (error.status === 422) {
39
- this.toastService.error(error.error.violations[0].message);
40
- }
41
- return observableThrowError(error);
42
- }));
43
- }
44
21
  }
45
- SoleBusinessService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
46
- SoleBusinessService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessService, providedIn: 'root' });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessService, decorators: [{
22
+ SoleBusinessService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
23
+ SoleBusinessService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessService, providedIn: 'root' });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessService, decorators: [{
48
25
  type: Injectable,
49
26
  args: [{
50
27
  providedIn: 'root'
51
28
  }]
52
29
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1idXNpbmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvc29sZS9zb2xlLWJ1c2luZXNzL3NvbGUtYnVzaW5lc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDaEYsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQTJDO0lBSHBGOztRQUlFLGVBQVUsR0FBd0IsWUFBWSxDQUFDO1FBQy9DLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxDQUFDO0tBbUNoQjtJQWpDQyxHQUFHLENBQUMsWUFBMEI7UUFDNUIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLENBQUMsUUFBc0IsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUVyRyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFzQixFQUFFLElBQVU7UUFDM0MsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDO2FBQ3pGLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxlQUFpQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxTQUFTLEdBQW1CLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDdEMsNkRBQTZEO1lBQzdELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVEO1lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs7Z0hBckNVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IFNvbGVCdXNpbmVzcyBhcyBTb2xlQnVzaW5lc3NCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL3NvbGUvc29sZS1idXNpbmVzcyc7XG5pbXBvcnQgeyBTb2xlQnVzaW5lc3MgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBNZXNzYWdlc0VudW0gfSBmcm9tICcuL21lc3NhZ2VzLmVudW0nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNvbGVCdXNpbmVzc1NlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxTb2xlQnVzaW5lc3NCYXNlLCBTb2xlQnVzaW5lc3M+e1xuICBtb2RlbENsYXNzOiB0eXBlb2YgU29sZUJ1c2luZXNzID0gU29sZUJ1c2luZXNzO1xuICB1cmwgPSAnc29sZS1idXNpbmVzc2VzJztcbiAgaXNIeWRyYSA9IHRydWU7XG5cbiAgYWRkKHNvbGVCdXNpbmVzczogU29sZUJ1c2luZXNzKTogT2JzZXJ2YWJsZTxTb2xlQnVzaW5lc3M+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKHNvbGVCdXNpbmVzcykucGlwZShcbiAgICAgIG1hcCgoYnVzaW5lc3M6IFNvbGVCdXNpbmVzcykgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU09MRV9CVVNJTkVTU19DUkVBVEVELCBidXNpbmVzcykpO1xuXG4gICAgICAgIHJldHVybiBidXNpbmVzcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZExvZ28oYnVzaW5lc3M6IFNvbGVCdXNpbmVzcywgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7YnVzaW5lc3MuaWR9L2xvZ29gLCBmb3JtRGF0YSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHVwZGF0ZWRCdXNpbmVzczogU29sZUJ1c2luZXNzQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlbXBDYWNoZTogU29sZUJ1c2luZXNzW10gPSBjbG9uZURlZXAodGhpcy5jYWNoZSk7XG4gICAgICAgICAgcmVwbGFjZSh0ZW1wQ2FjaGUsIHBsYWluVG9DbGFzcyhTb2xlQnVzaW5lc3MsIHVwZGF0ZWRCdXNpbmVzcykpO1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0ZW1wQ2FjaGU7XG4gICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKE1lc3NhZ2VzRW51bS5MT0dPX1VQREFURUQpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gU2hvdyBlcnJvciB3aGVuIHVzZXIgcHJvdmlkZWQgd3JvbmcgaW1hZ2UgKGZvcm1hdCBvciBzaXplKVxuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQyMikge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZXJyb3IoZXJyb3IuZXJyb3IudmlvbGF0aW9uc1swXS5tZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1idXNpbmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvc29sZS9zb2xlLWJ1c2luZXNzL3NvbGUtYnVzaW5lc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFLaEYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQTJDO0lBSHBGOztRQUlFLGVBQVUsR0FBd0IsWUFBWSxDQUFDO1FBQy9DLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxDQUFDO0tBV2hCO0lBVEMsR0FBRyxDQUFDLFlBQTBCO1FBQzVCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFckcsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O2dIQWJVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IFNvbGVCdXNpbmVzcyBhcyBTb2xlQnVzaW5lc3NCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL3NvbGUvc29sZS1idXNpbmVzcyc7XG5pbXBvcnQgeyBTb2xlQnVzaW5lc3MgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNvbGVCdXNpbmVzc1NlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxTb2xlQnVzaW5lc3NCYXNlLCBTb2xlQnVzaW5lc3M+e1xuICBtb2RlbENsYXNzOiB0eXBlb2YgU29sZUJ1c2luZXNzID0gU29sZUJ1c2luZXNzO1xuICB1cmwgPSAnc29sZS1idXNpbmVzc2VzJztcbiAgaXNIeWRyYSA9IHRydWU7XG5cbiAgYWRkKHNvbGVCdXNpbmVzczogU29sZUJ1c2luZXNzKTogT2JzZXJ2YWJsZTxTb2xlQnVzaW5lc3M+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKHNvbGVCdXNpbmVzcykucGlwZShcbiAgICAgIG1hcCgoYnVzaW5lc3M6IFNvbGVCdXNpbmVzcykgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU09MRV9CVVNJTkVTU19DUkVBVEVELCBidXNpbmVzcykpO1xuXG4gICAgICAgIHJldHVybiBidXNpbmVzcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -10,9 +10,9 @@ export class SoleBusinessActivityService extends RestService {
10
10
  this.isHydra = true;
11
11
  }
12
12
  }
13
- SoleBusinessActivityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessActivityService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
- SoleBusinessActivityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessActivityService, providedIn: 'root' });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessActivityService, decorators: [{
13
+ SoleBusinessActivityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessActivityService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
+ SoleBusinessActivityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessActivityService, providedIn: 'root' });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessActivityService, decorators: [{
16
16
  type: Injectable,
17
17
  args: [{
18
18
  providedIn: 'root'
@@ -13,9 +13,9 @@ export class SoleBusinessLossOffsetRuleService extends RestService {
13
13
  this.isHydra = true;
14
14
  }
15
15
  }
16
- SoleBusinessLossOffsetRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessLossOffsetRuleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
- SoleBusinessLossOffsetRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessLossOffsetRuleService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessLossOffsetRuleService, decorators: [{
16
+ SoleBusinessLossOffsetRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessLossOffsetRuleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
+ SoleBusinessLossOffsetRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessLossOffsetRuleService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessLossOffsetRuleService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root'
@@ -22,9 +22,9 @@ export class SoleBusinessLossService extends RestService {
22
22
  });
23
23
  }
24
24
  }
25
- SoleBusinessLossService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessLossService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
26
- SoleBusinessLossService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessLossService, providedIn: 'root' });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleBusinessLossService, decorators: [{
25
+ SoleBusinessLossService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessLossService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
26
+ SoleBusinessLossService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessLossService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleBusinessLossService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root'
@@ -10,9 +10,9 @@ export class SoleContactService extends RestService {
10
10
  this.isHydra = true;
11
11
  }
12
12
  }
13
- SoleContactService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleContactService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
- SoleContactService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleContactService, providedIn: 'root' });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleContactService, decorators: [{
13
+ SoleContactService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleContactService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
+ SoleContactService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleContactService, providedIn: 'root' });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleContactService, decorators: [{
16
16
  type: Injectable,
17
17
  args: [{
18
18
  providedIn: 'root'
@@ -59,9 +59,9 @@ export class SoleDepreciationMethodService {
59
59
  });
60
60
  }
61
61
  }
62
- SoleDepreciationMethodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleDepreciationMethodService, deps: [{ token: i1.HttpClient }, { token: 'environment' }, { token: i2.EventDispatcherService }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
63
- SoleDepreciationMethodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleDepreciationMethodService, providedIn: 'root' });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleDepreciationMethodService, decorators: [{
62
+ SoleDepreciationMethodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleDepreciationMethodService, deps: [{ token: i1.HttpClient }, { token: 'environment' }, { token: i2.EventDispatcherService }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ SoleDepreciationMethodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleDepreciationMethodService, providedIn: 'root' });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleDepreciationMethodService, decorators: [{
65
65
  type: Injectable,
66
66
  args: [{
67
67
  providedIn: 'root'
@@ -50,9 +50,9 @@ export class SoleDetailsService {
50
50
  }));
51
51
  }
52
52
  }
53
- SoleDetailsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleDetailsService, deps: [{ token: i1.HttpClient }, { token: 'environment' }, { token: i2.EventDispatcherService }], target: i0.ɵɵFactoryTarget.Injectable });
54
- SoleDetailsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleDetailsService, providedIn: 'root' });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleDetailsService, decorators: [{
53
+ SoleDetailsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleDetailsService, deps: [{ token: i1.HttpClient }, { token: 'environment' }, { token: i2.EventDispatcherService }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ SoleDetailsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleDetailsService, providedIn: 'root' });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleDetailsService, decorators: [{
56
56
  type: Injectable,
57
57
  args: [{
58
58
  providedIn: 'root'
@@ -71,9 +71,9 @@ export class SoleInvoiceService extends RestService {
71
71
  });
72
72
  }
73
73
  }
74
- SoleInvoiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleInvoiceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
75
- SoleInvoiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleInvoiceService, providedIn: 'root' });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleInvoiceService, decorators: [{
74
+ SoleInvoiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleInvoiceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
75
+ SoleInvoiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleInvoiceService, providedIn: 'root' });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleInvoiceService, decorators: [{
77
77
  type: Injectable,
78
78
  args: [{
79
79
  providedIn: 'root'
@@ -10,9 +10,9 @@ export class SoleInvoiceTemplateService extends RestService {
10
10
  this.isHydra = true;
11
11
  }
12
12
  }
13
- SoleInvoiceTemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleInvoiceTemplateService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
- SoleInvoiceTemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleInvoiceTemplateService, providedIn: 'root' });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SoleInvoiceTemplateService, decorators: [{
13
+ SoleInvoiceTemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleInvoiceTemplateService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
+ SoleInvoiceTemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleInvoiceTemplateService, providedIn: 'root' });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SoleInvoiceTemplateService, decorators: [{
16
16
  type: Injectable,
17
17
  args: [{
18
18
  providedIn: 'root'
@@ -23,9 +23,9 @@ export class ServicePaymentService extends RestService {
23
23
  return this.http.get(`${this.environment.apiV2}/service-payments/${payment.id}/invoice-url`);
24
24
  }
25
25
  }
26
- ServicePaymentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePaymentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
27
- ServicePaymentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePaymentService, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePaymentService, decorators: [{
26
+ ServicePaymentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePaymentService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
27
+ ServicePaymentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePaymentService, providedIn: 'root' });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePaymentService, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{
31
31
  providedIn: 'root'
@@ -48,9 +48,9 @@ export class ServicePaymentMethodService extends RestService {
48
48
  });
49
49
  }
50
50
  }
51
- ServicePaymentMethodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePaymentMethodService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i2.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
52
- ServicePaymentMethodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePaymentMethodService, providedIn: 'root' });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePaymentMethodService, decorators: [{
51
+ ServicePaymentMethodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePaymentMethodService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i2.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
52
+ ServicePaymentMethodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePaymentMethodService, providedIn: 'root' });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePaymentMethodService, decorators: [{
54
54
  type: Injectable,
55
55
  args: [{
56
56
  providedIn: 'root'
@@ -16,9 +16,9 @@ export class ServicePriceService extends RestService {
16
16
  this.disabledMethods = ['post', 'postBatch', 'put', 'putBatch', 'delete', 'deleteBatch'];
17
17
  }
18
18
  }
19
- ServicePriceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePriceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
20
- ServicePriceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePriceService, providedIn: 'root' });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServicePriceService, decorators: [{
19
+ ServicePriceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePriceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
20
+ ServicePriceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePriceService, providedIn: 'root' });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServicePriceService, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{
24
24
  providedIn: 'root'
@@ -13,9 +13,9 @@ export class ServiceProductService extends RestService {
13
13
  this.isApiPlatform = true;
14
14
  }
15
15
  }
16
- ServiceProductService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceProductService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
- ServiceProductService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceProductService, providedIn: 'root' });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceProductService, decorators: [{
16
+ ServiceProductService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServiceProductService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
17
+ ServiceProductService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServiceProductService, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: ServiceProductService, decorators: [{
19
19
  type: Injectable,
20
20
  args: [{
21
21
  providedIn: 'root'
@@ -117,9 +117,9 @@ export class SubscriptionService extends RestService {
117
117
  });
118
118
  }
119
119
  }
120
- SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: i2.SseService }, { token: i3.ToastService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
121
- SubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SubscriptionService, providedIn: 'root' });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SubscriptionService, decorators: [{
120
+ SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: i2.SseService }, { token: i3.ToastService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
121
+ SubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SubscriptionService, providedIn: 'root' });
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: SubscriptionService, decorators: [{
123
123
  type: Injectable,
124
124
  args: [{
125
125
  providedIn: 'root'
@@ -29,9 +29,9 @@ export class TaxReviewHistoryService extends RestService {
29
29
  });
30
30
  }
31
31
  }
32
- TaxReviewHistoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxReviewHistoryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
33
- TaxReviewHistoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxReviewHistoryService, providedIn: 'root' });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxReviewHistoryService, decorators: [{
32
+ TaxReviewHistoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxReviewHistoryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
33
+ TaxReviewHistoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxReviewHistoryService, providedIn: 'root' });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxReviewHistoryService, decorators: [{
35
35
  type: Injectable,
36
36
  args: [{
37
37
  providedIn: 'root'
@@ -91,9 +91,9 @@ export class TaxReviewService extends RestService {
91
91
  });
92
92
  }
93
93
  }
94
- TaxReviewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxReviewService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
95
- TaxReviewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxReviewService, providedIn: 'root' });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxReviewService, decorators: [{
94
+ TaxReviewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxReviewService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
95
+ TaxReviewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxReviewService, providedIn: 'root' });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxReviewService, decorators: [{
97
97
  type: Injectable,
98
98
  args: [{
99
99
  providedIn: 'root'
@@ -57,9 +57,9 @@ export class TaxSummaryService {
57
57
  });
58
58
  }
59
59
  }
60
- TaxSummaryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxSummaryService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
61
- TaxSummaryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxSummaryService, providedIn: 'root' });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TaxSummaryService, decorators: [{
60
+ TaxSummaryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxSummaryService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
61
+ TaxSummaryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxSummaryService, providedIn: 'root' });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TaxSummaryService, decorators: [{
63
63
  type: Injectable,
64
64
  args: [{
65
65
  providedIn: 'root'
@@ -1,5 +1,4 @@
1
1
  export * from './transaction-allocation/allocation-rule/allocation-rule.service';
2
2
  export * from './transaction-allocation/transaction-allocation.service';
3
- export * from './transaction-receipt/transaction-receipt.service';
4
3
  export * from './transaction.service';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC90cmFuc2FjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbi1hbGxvY2F0aW9uL2FsbG9jYXRpb24tcnVsZS9hbGxvY2F0aW9uLXJ1bGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uLWFsbG9jYXRpb24vdHJhbnNhY3Rpb24tYWxsb2NhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24tcmVjZWlwdC90cmFuc2FjdGlvbi1yZWNlaXB0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbi5zZXJ2aWNlJztcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC90cmFuc2FjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24tYWxsb2NhdGlvbi9hbGxvY2F0aW9uLXJ1bGUvYWxsb2NhdGlvbi1ydWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbi1hbGxvY2F0aW9uL3RyYW5zYWN0aW9uLWFsbG9jYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xuIl19
@@ -12,9 +12,9 @@ export class AllocationRuleService extends RestService {
12
12
  this.isApiPlatform = true;
13
13
  }
14
14
  }
15
- AllocationRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AllocationRuleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
16
- AllocationRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AllocationRuleService, providedIn: 'root' });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AllocationRuleService, decorators: [{
15
+ AllocationRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: AllocationRuleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
16
+ AllocationRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: AllocationRuleService, providedIn: 'root' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: AllocationRuleService, decorators: [{
18
18
  type: Injectable,
19
19
  args: [{
20
20
  providedIn: 'root'
@@ -89,9 +89,9 @@ export class TransactionAllocationService extends RestService {
89
89
  });
90
90
  }
91
91
  }
92
- TransactionAllocationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TransactionAllocationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
93
- TransactionAllocationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TransactionAllocationService, providedIn: 'root' });
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TransactionAllocationService, decorators: [{
92
+ TransactionAllocationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TransactionAllocationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
93
+ TransactionAllocationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TransactionAllocationService, providedIn: 'root' });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TransactionAllocationService, decorators: [{
95
95
  type: Injectable,
96
96
  args: [{
97
97
  providedIn: 'root'
@@ -12,18 +12,16 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/common/http";
13
13
  import * as i2 from "../../event";
14
14
  import * as i3 from "../../toast";
15
- import * as i4 from "./transaction-receipt/transaction-receipt.service";
16
15
  /**
17
16
  * Service for transactions business logic
18
17
  */
19
18
  export class TransactionService extends RestService {
20
- constructor(http, eventDispatcherService, environment, toastService, transactionReceiptService) {
19
+ constructor(http, eventDispatcherService, environment, toastService) {
21
20
  super(http, eventDispatcherService, environment, toastService);
22
21
  this.http = http;
23
22
  this.eventDispatcherService = eventDispatcherService;
24
23
  this.environment = environment;
25
24
  this.toastService = toastService;
26
- this.transactionReceiptService = transactionReceiptService;
27
25
  // url part for Transaction API
28
26
  this.url = 'transactions';
29
27
  this.modelClass = Transaction;
@@ -35,8 +33,6 @@ export class TransactionService extends RestService {
35
33
  listenEvents() {
36
34
  this.listenDepreciationChange();
37
35
  this.listenPropertyShareUpdate();
38
- this.listenReceiptAdded();
39
- this.listenReceiptDeleted();
40
36
  this.listenVehicleClaimChanges();
41
37
  this.listenPropertyForecastUpdate();
42
38
  this.listenInvoicesPublish();
@@ -111,13 +107,6 @@ export class TransactionService extends RestService {
111
107
  .pipe(map((response) => {
112
108
  const addedTransactions = response.map((item) => this.createModelInstance(item));
113
109
  transactions.forEach((transaction, index) => {
114
- // @TODO backend: need to upload file in the same backend endpoint with transaction add/update
115
- // check if passed receipt and upload file
116
- if (transaction.file) {
117
- transaction.id = response[index].id;
118
- addedTransactions[index].file = transaction.file;
119
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_RECEIPT, addedTransactions[index]));
120
- }
121
110
  // @TODO Viktor: implement API for saving of nested transactions
122
111
  // add child transactions if exist
123
112
  if (transaction.transactions.length) {
@@ -147,16 +136,6 @@ export class TransactionService extends RestService {
147
136
  return this.http.put(`${this.environment.apiV2}/${this.url}/${transaction.id}`, classToPlain(transaction))
148
137
  .pipe(map((response) => {
149
138
  const updatedTransaction = this.createModelInstance(response);
150
- // @TODO need to upload file in the same backend endpoint with transaction add/update
151
- // check if passed new receipt and upload file
152
- if (transaction.file) {
153
- updatedTransaction.file = transaction.file;
154
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_RECEIPT, updatedTransaction));
155
- // receipt file was removed from form - we should delete receipt from transaction
156
- }
157
- else if (!transaction.file && transaction.receipt) {
158
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_DELETED_RECEIPT, updatedTransaction));
159
- }
160
139
  // @TODO Viktor: implement API for saving of nested transactions
161
140
  if (transaction.transactions.length) {
162
141
  // add parent transaction to child transactions
@@ -255,22 +234,6 @@ export class TransactionService extends RestService {
255
234
  listenPropertyShareUpdate() {
256
235
  this.eventDispatcherService.on(AppEventTypeEnum.PROPERTY_SHARE_UPDATED).subscribe(() => this.refreshCache());
257
236
  }
258
- listenReceiptAdded() {
259
- this.eventDispatcherService.on(AppEventTypeEnum.TRANSACTION_RECEIPT_CREATED).subscribe((transactionReceipt) => {
260
- const transactionToUpdate = this.find(transactionReceipt.transaction.id);
261
- // we don't need to keep file after save
262
- transactionToUpdate.file = null;
263
- transactionToUpdate.receipt = transactionReceipt;
264
- this.replaceInCache(transactionToUpdate);
265
- });
266
- }
267
- listenReceiptDeleted() {
268
- this.eventDispatcherService.on(AppEventTypeEnum.TRANSACTION_RECEIPT_DELETED).subscribe((transaction) => {
269
- const transactionToUpdate = this.find(transaction.id);
270
- transactionToUpdate.receipt = null;
271
- this.replaceInCache(transactionToUpdate);
272
- });
273
- }
274
237
  listenVehicleClaimChanges() {
275
238
  this.eventDispatcherService.on([
276
239
  AppEventTypeEnum.VEHICLE_CLAIM_CREATED,
@@ -299,9 +262,9 @@ export class TransactionService extends RestService {
299
262
  });
300
263
  }
301
264
  }
302
- TransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TransactionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }, { token: i4.TransactionReceiptService }], target: i0.ɵɵFactoryTarget.Injectable });
303
- TransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TransactionService, providedIn: 'root' });
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TransactionService, decorators: [{
265
+ TransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TransactionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
266
+ TransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TransactionService, providedIn: 'root' });
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TransactionService, decorators: [{
305
268
  type: Injectable,
306
269
  args: [{
307
270
  providedIn: 'root'
@@ -309,5 +272,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
309
272
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
310
273
  type: Inject,
311
274
  args: ['environment']
312
- }] }, { type: i3.ToastService }, { type: i4.TransactionReceiptService }]; } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQXNCLE1BQU0saUJBQWlCLENBQUM7QUFDNUcsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBS2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBQ2pEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQXlDO0lBTS9FLFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCLEVBQ3ZDLFlBQTBCLEVBQzVCLHlCQUFvRDtRQUU1RCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQU5yRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0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MEJBVUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyByZXBsYWNlLCBzb3J0IH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL3RyYW5zYWN0aW9uLW9wZXJhdGlvbi5lbnVtJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50LCBBcHBFdmVudFR5cGVFbnVtLCBEZXByZWNpYXRpb24sIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblJlY2VpcHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFByb3BlcnR5Q2F0ZWdvcnlMaXN0RW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5LWxpc3QuZW51bSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHRTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2FjdGlvbi1yZWNlaXB0L3RyYW5zYWN0aW9uLXJlY2VpcHQuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2V2ZW50JztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3RvYXN0JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4gfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG4vKipcbiAqIFNlcnZpY2UgZm9yIHRyYW5zYWN0aW9ucyBidXNpbmVzcyBsb2dpY1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxUcmFuc2FjdGlvbkJhc2UsIFRyYW5zYWN0aW9uPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgLy8gdXJsIHBhcnQgZm9yIFRyYW5zYWN0aW9uIEFQSVxuICB1cmwgPSAndHJhbnNhY3Rpb25zJztcbiAgbW9kZWxDbGFzcyA9IFRyYW5zYWN0aW9uO1xuICB0cmFuc2FjdGlvbkRlbGV0ZWQ6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyYW5zYWN0aW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJvdGVjdGVkIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNhY3Rpb25SZWNlaXB0U2VydmljZTogVHJhbnNhY3Rpb25SZWNlaXB0U2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCwgdG9hc3RTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZXZlbnRzIGZyb20gRXZlbnQgRGlzcGF0Y2hlciBzZXJ2aWNlc1xuICAgKi9cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuRGVwcmVjaWF0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5saXN0ZW5Qcm9wZXJ0eVNoYXJlVXBkYXRlKCk7XG4gICAgdGhpcy5saXN0ZW5SZWNlaXB0QWRkZWQoKTtcbiAgICB0aGlzLmxpc3RlblJlY2VpcHREZWxldGVkKCk7XG4gICAgdGhpcy5saXN0ZW5WZWhpY2xlQ2xhaW1DaGFuZ2VzKCk7XG4gICAgdGhpcy5saXN0ZW5Qcm9wZXJ0eUZvcmVjYXN0VXBkYXRlKCk7XG4gICAgdGhpcy5saXN0ZW5JbnZvaWNlc1B1Ymxpc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiBhbGwgdXNlcidzIFRheFRhbmsgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXQoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldCgpLnBpcGUoXG4gICAgICAvLyBhc3NpZ24gY2hpbGQgdHJhbnNhY3Rpb25zIChmZWVzKSB0byBwYXJlbnQgdHJhbnNhY3Rpb25zXG4gICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4ge1xuICAgICAgICB0cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAvLyBnZXQgbGlzdCBvZiBjaGlsZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHQ6IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB0LnBhcmVudFRyYW5zYWN0aW9uICYmIHQucGFyZW50VHJhbnNhY3Rpb24uaWQgPT09IHRyYW5zYWN0aW9uLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNvcnQodHJhbnNhY3Rpb25zLCAnZGF0ZScsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9ucztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc2luZ2xlIG5ldyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gbW9kZWwgTmV3IFRyYW5zYWN0aW9uIGluc3RhbmNlIGZvciBzYXZpbmdcbiAgICovXG4gIGFkZChtb2RlbDogVHJhbnNhY3Rpb24pOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uPiB7XG4gICAgLy8gd2UgZG9uJ3QgaGF2ZSBQT1NUIEFQSSBlbmRwb2ludCBmb3Igc2luZ2xlIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHRoaXMuYWRkQmF0Y2goW21vZGVsXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKG5ld1RyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uID0+IHtcbiAgICAgICAgICAvLyBAVE9ETyBhbGV4XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKFxuICAgICAgICAgICAgbmV3IEFwcEV2ZW50PFRyYW5zYWN0aW9uPihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX0NSRUFURUQsIG5ld1RyYW5zYWN0aW9uc1swXSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIG5ld1RyYW5zYWN0aW9uc1swXTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRyYW5zYWN0aW9ucyByZWxhdGVkIHdpdGggcHJvcGVydHlcbiAgICovXG4gIGdldEJ5UHJvcGVydHlJZChwcm9wZXJ0eUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSA9PiB0cmFuc2FjdGlvbnMuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHRyYW5zYWN0aW9uLnByb3BlcnR5Py5pZCA9PT0gcHJvcGVydHlJZCkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIHRyYW5zYWN0aW9ucyB3aXRoIHRhbmsgdHlwZSAnV29yaydcbiAgICovXG4gIGdldFdvcmtUcmFuc2FjdGlvbnMoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4gdHJhbnNhY3Rpb25zLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB0cmFuc2FjdGlvbi5pc1dvcmtUYW5rKCkpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBwcm9wZXJ0eSBob2xkaW5nIGNvc3RzICh0cmFuc2FjdGlvbnMgcmVsYXRlZCB0byB2YWNhbnQgbGFuZCBwcm9wZXJ0eSlcbiAgICovXG4gIGdldFByb3BlcnR5SG9sZGluZ0Nvc3RzKHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdID0+IG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24odHJhbnNhY3Rpb25zKVxuICAgICAgICAgIC5maWx0ZXJCeSgncHJvcGVydHkuaWQnLCBwcm9wZXJ0eUlkKVxuICAgICAgICAgIC5maWx0ZXJCeSgncHJvcGVydHkuY2F0ZWdvcnkuaWQnLCBQcm9wZXJ0eUNhdGVnb3J5TGlzdEVudW0uVkFDQU5UX0xBTkQpXG4gICAgICAgICAgLnRvQXJyYXkoKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdGF4YWJsZSB0cmFuc2FjdGlvbnMgd2l0aCB0YW5rIHR5cGUgJ1dvcmsnXG4gICAqL1xuICBnZXRUYXhhYmxlV29ya1RyYW5zYWN0aW9ucygpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXb3JrVHJhbnNhY3Rpb25zKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4gdHJhbnNhY3Rpb25zLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiAhIXRyYW5zYWN0aW9uLmNoYXJ0QWNjb3VudHMudGF4UmV0dXJuSXRlbSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBtdWx0aXBsZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9ucyBMaXN0IG9mIG5ldyBUcmFuc2FjdGlvbiBpbnN0YW5jZXMgZm9yIHNhdmluZ1xuICAgKi9cbiAgYWRkQmF0Y2godHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgdHJhbnNhY3Rpb25zID0gXy5jbG9uZURlZXAodHJhbnNhY3Rpb25zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH1gLCBjbGFzc1RvUGxhaW4odHJhbnNhY3Rpb25zKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFkZGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdID0gcmVzcG9uc2UubWFwKChpdGVtOiBUcmFuc2FjdGlvbkJhc2UpID0+IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZShpdGVtKSk7XG5cbiAgICAgICAgICB0cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAvLyBAVE9ETyBiYWNrZW5kOiBuZWVkIHRvIHVwbG9hZCBmaWxlIGluIHRoZSBzYW1lIGJhY2tlbmQgZW5kcG9pbnQgd2l0aCB0cmFuc2FjdGlvbiBhZGQvdXBkYXRlXG4gICAgICAgICAgICAvLyBjaGVjayBpZiBwYXNzZWQgcmVjZWlwdCBhbmQgdXBsb2FkIGZpbGVcbiAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvbi5maWxlKSB7XG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uLmlkID0gcmVzcG9uc2VbaW5kZXhdLmlkO1xuICAgICAgICAgICAgICBhZGRlZFRyYW5zYWN0aW9uc1tpbmRleF0uZmlsZSA9IHRyYW5zYWN0aW9uLmZpbGU7XG4gICAgICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9VUERBVEVEX1dJVEhfUkVDRUlQVCwgYWRkZWRUcmFuc2FjdGlvbnNbaW5kZXhdKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEBUT0RPIFZpa3RvcjogaW1wbGVtZW50IEFQSSBmb3Igc2F2aW5nIG9mIG5lc3RlZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIC8vIGFkZCBjaGlsZCB0cmFuc2FjdGlvbnMgaWYgZXhpc3RcbiAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5mb3JFYWNoKChjaGlsZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNoaWxkVHJhbnNhY3Rpb24ucGFyZW50VHJhbnNhY3Rpb24gPSB0aGlzLmNyZWF0ZU1vZGVsSW5zdGFuY2Uoe2lkOiBhZGRlZFRyYW5zYWN0aW9uc1tpbmRleF0uaWR9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkQmF0Y2godHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYWRkIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHRvIGNhY2hlXG4gICAgICAgICAgICBpZiAodHJhbnNhY3Rpb24ub3BlcmF0aW9uID09PSBUcmFuc2FjdGlvbk9wZXJhdGlvbkVudW0uVFJBTlNGRVIpIHtcbiAgICAgICAgICAgICAgYWRkZWRUcmFuc2FjdGlvbnMucHVzaChhZGRlZFRyYW5zYWN0aW9uc1swXS50cmFuc2Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5jYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5wdXNoKC4uLmFkZGVkVHJhbnNhY3Rpb25zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2goXG4gICAgICAgICAgICBuZXcgQXBwRXZlbnQ8VHJhbnNhY3Rpb25bXT4oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTlNfQ1JFQVRFRCwgYWRkZWRUcmFuc2FjdGlvbnMpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBhZGRlZFRyYW5zYWN0aW9ucztcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlIGV4aXN0aW5nIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiBUcmFuc2FjdGlvbiBpbnN0YW5jZSBmb3IgdXBkYXRpbmdcbiAgICovXG4gIHVwZGF0ZSh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vJHt0cmFuc2FjdGlvbi5pZH1gLCBjbGFzc1RvUGxhaW4odHJhbnNhY3Rpb24pKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IFRyYW5zYWN0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSB0aGlzLmNyZWF0ZU1vZGVsSW5zdGFuY2UocmVzcG9uc2UpO1xuXG4gICAgICAgICAgLy8gQFRPRE8gbmVlZCB0byB1cGxvYWQgZmlsZSBpbiB0aGUgc2FtZSBiYWNrZW5kIGVuZHBvaW50IHdpdGggdHJhbnNhY3Rpb24gYWRkL3VwZGF0ZVxuICAgICAgICAgIC8vIGNoZWNrIGlmIHBhc3NlZCBuZXcgcmVjZWlwdCBhbmQgdXBsb2FkIGZpbGVcbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb24uZmlsZSkge1xuICAgICAgICAgICAgdXBkYXRlZFRyYW5zYWN0aW9uLmZpbGUgPSB0cmFuc2FjdGlvbi5maWxlO1xuICAgICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1VQREFURURfV0lUSF9SRUNFSVBULCB1cGRhdGVkVHJhbnNhY3Rpb24pKTtcbiAgICAgICAgICAgIC8vIHJlY2VpcHQgZmlsZSB3YXMgcmVtb3ZlZCBmcm9tIGZvcm0gLSB3ZSBzaG91bGQgZGVsZXRlIHJlY2VpcHQgZnJvbSB0cmFuc2FjdGlvblxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRyYW5zYWN0aW9uLmZpbGUgJiYgdHJhbnNhY3Rpb24ucmVjZWlwdCkge1xuICAgICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1VQREFURURfV0lUSF9ERUxFVEVEX1JFQ0VJUFQsIHVwZGF0ZWRUcmFuc2FjdGlvbikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEBUT0RPIFZpa3RvcjogaW1wbGVtZW50IEFQSSBmb3Igc2F2aW5nIG9mIG5lc3RlZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gYWRkIHBhcmVudCB0cmFuc2FjdGlvbiB0byBjaGlsZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5mb3JFYWNoKChjaGlsZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgICBjaGlsZFRyYW5zYWN0aW9uLnBhcmVudFRyYW5zYWN0aW9uID0gdGhpcy5jcmVhdGVNb2RlbEluc3RhbmNlKHtpZDogdXBkYXRlZFRyYW5zYWN0aW9uLmlkfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHNlcGFyYXRlIGNoaWxkIHRyYW5zYWN0aW9ucyBieSBpZCBleGlzdGluZyB0byBkZWZpbmUgYWRkIG9yIHVwZGF0ZSBhY3Rpb24uXG4gICAgICAgICAgICBjb25zdCBjaGlsZFRyYW5zYWN0aW9uc1RvVXBkYXRlOiBUcmFuc2FjdGlvbltdID0gdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLmZpbHRlcigodDogVHJhbnNhY3Rpb24pID0+IHQuaWQpO1xuICAgICAgICAgICAgY29uc3QgY2hpbGRUcmFuc2FjdGlvbnNUb0FkZDogVHJhbnNhY3Rpb25bXSA9IHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5maWx0ZXIoKHQ6IFRyYW5zYWN0aW9uKSA9PiAhdC5pZCk7XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBjaGlsZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIGlmIChjaGlsZFRyYW5zYWN0aW9uc1RvVXBkYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJhdGNoKGNoaWxkVHJhbnNhY3Rpb25zVG9VcGRhdGUpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhZGQgY2hpbGQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICBpZiAoY2hpbGRUcmFuc2FjdGlvbnNUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRCYXRjaChjaGlsZFRyYW5zYWN0aW9uc1RvQWRkKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnJlcGxhY2VJbkNhY2hlKHVwZGF0ZWRUcmFuc2FjdGlvbik7XG5cbiAgICAgICAgICByZXR1cm4gdXBkYXRlZFRyYW5zYWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGUgbXVsdGlwbGUgdHJhbnNhY3Rpb25zXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbnMgbGlzdCBvZiB0cmFuc2FjdGlvbnMgZm9yIHVwZGF0aW5nXG4gICAqL1xuICB1cGRhdGVCYXRjaCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfWAsIGNsYXNzVG9QbGFpbih0cmFuc2FjdGlvbnMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IFRyYW5zYWN0aW9uQmFzZVtdKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZFRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSA9IHJlc3BvbnNlLm1hcCgoaXRlbTogVHJhbnNhY3Rpb25CYXNlKSA9PiB0aGlzLmNyZWF0ZU1vZGVsSW5zdGFuY2UoaXRlbSkpO1xuXG4gICAgICAgICAgdXBkYXRlZFRyYW5zYWN0aW9ucy5mb3JFYWNoKCh1cGRhdGVkVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXBsYWNlKHRoaXMuY2FjaGUsIHVwZGF0ZWRUcmFuc2FjdGlvbik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRUcmFuc2FjdGlvbnM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSB0cmFuc2FjdGlvbiBhbmQgcmVsYXRlZCB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqL1xuICBkZWxldGUobW9kZWw6IFRyYW5zYWN0aW9uKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vJHttb2RlbC5pZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIC8vIHdoZW4gZGVsZXRlIHRyYW5zZmVyIHdlIGRlbGV0ZSBhY3R1YWxseSAyIHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgaWYgKG1vZGVsLmlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFttb2RlbC5pZF07XG5cbiAgICAgICAgICAgICAgLy8gZ2V0IGlkIG9mIHJlbGF0ZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgaWYgKG1vZGVsLnRyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgLy8ganVzdCB0YWtlIGlkIGlmIHdlIGRlbGV0ZSBzb3VyY2UgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICBpZHMucHVzaChtb2RlbC50cmFuc2Zlci5pZCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZmluZCBzb3VyY2UgdHJhbnNhY3Rpb24gaWQgaWYgd2UgZGVsZXRlIGRlc3RpbmF0aW9uIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgICAgaWRzLnB1c2godGhpcy5jYWNoZS5maW5kKCh0OiBUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4gdC50cmFuc2Zlci5pZCA9PT0gbW9kZWwuaWQpLmlkKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAhaWRzLmluY2x1ZGVzKHRyYW5zYWN0aW9uLmlkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLmlkICE9PSBtb2RlbC5pZCAmJiB0cmFuc2FjdGlvbi5wYXJlbnRUcmFuc2FjdGlvbj8uaWQgIT09IG1vZGVsLmlkO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKFxuICAgICAgICAgICAgbmV3IEFwcEV2ZW50PFRyYW5zYWN0aW9uPihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX0RFTEVURUQsIG1vZGVsKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRlbGV0ZWQuZW1pdChtb2RlbCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIEFsZXggd3JvbmcgcGxhY2UgZm9yIHRoaXMgbG9naWMsIG1vdmUgdG8gbW9kZWxcbiAgICogY2FsY3VsYXRlIGdyb3NzIGluY29tZSBhbW91bnQgYmFzZWQgb24gdHJhbnNhY3Rpb24gYW1vdW50IGFuZCB0YXhlcyAoZmVlcylcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIGluc3RhbmNlIGZvciBjYWxjdWxhdGlvblxuICAgKi9cbiAgY2FsY3VsYXRlR3Jvc3NBbW91bnQodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogbnVtYmVyIHtcbiAgICBsZXQgYW1vdW50OiBudW1iZXIgPSB0cmFuc2FjdGlvbi5hbW91bnQgfHwgMDtcblxuICAgIC8vIGdyb3NzIGluY29tZSBhbW91bnQgaW5jbHVkZXMgYW1vdW50IG9mIGZlZXMgZm9yIHByb3BlcnR5IHRhbmsgYW5kIHRheCBmb3Igd29yayB0YW5rXG4gICAgaWYgKHRyYW5zYWN0aW9uLmlzUHJvcGVydHlUYW5rKCkpIHtcbiAgICAgIGFtb3VudCArPSB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMucmVkdWNlKChzdW06IG51bWJlciwgaXRlbTogVHJhbnNhY3Rpb24pID0+IHN1bSArIGl0ZW0uYW1vdW50LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQFRPRE8gQWxleDogZml4IGxvZ2ljIGFmdGVyIFRULTY0MSByZWFkeVxuICAgICAgYW1vdW50ICs9ICh0cmFuc2FjdGlvbi50YXggfHwgMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFtb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIERlcHJlY2lhdGlvbiBjaGFuZ2luZ1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5EZXByZWNpYXRpb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgLy8gQFRPRE8gcmVzZXQgY2FjaGUgb25seSB3aGVuIHJlcXVpcmVkIChkZXByZWNpYXRpb24gaGFzIHRyYW5zYWN0aW9uKVxuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbjIoLi4uRGVwcmVjaWF0aW9uLmdldEV2ZW50TmFtZXMoJ3Bvc3QnLCAnZGVsZXRlJykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hDYWNoZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIGV2ZW50IHJlbGF0ZWQgdG8gUHJvcGVydHkgU2hhcmUgY2hhbmdpbmdcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuUHJvcGVydHlTaGFyZVVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5QUk9QRVJUWV9TSEFSRV9VUERBVEVEKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoQ2FjaGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblJlY2VpcHRBZGRlZCgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9SRUNFSVBUX0NSRUFURUQpLnN1YnNjcmliZSgodHJhbnNhY3Rpb25SZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHQpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uVG9VcGRhdGU6IFRyYW5zYWN0aW9uID0gdGhpcy5maW5kKHRyYW5zYWN0aW9uUmVjZWlwdC50cmFuc2FjdGlvbi5pZCk7XG5cbiAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8ga2VlcCBmaWxlIGFmdGVyIHNhdmVcbiAgICAgIHRyYW5zYWN0aW9uVG9VcGRhdGUuZmlsZSA9IG51bGw7XG4gICAgICB0cmFuc2FjdGlvblRvVXBkYXRlLnJlY2VpcHQgPSB0cmFuc2FjdGlvblJlY2VpcHQ7XG4gICAgICB0aGlzLnJlcGxhY2VJbkNhY2hlKHRyYW5zYWN0aW9uVG9VcGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5SZWNlaXB0RGVsZXRlZCgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9SRUNFSVBUX0RFTEVURUQpLnN1YnNjcmliZSgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvblRvVXBkYXRlOiBUcmFuc2FjdGlvbiA9IHRoaXMuZmluZCh0cmFuc2FjdGlvbi5pZCk7XG5cbiAgICAgIHRyYW5zYWN0aW9uVG9VcGRhdGUucmVjZWlwdCA9IG51bGw7XG4gICAgICB0aGlzLnJlcGxhY2VJbkNhY2hlKHRyYW5zYWN0aW9uVG9VcGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5WZWhpY2xlQ2xhaW1DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihbXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fQ1JFQVRFRCxcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9VUERBVEVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX0RFVEFJTFNfVVBEQVRFRFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hDYWNoZSgpO1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogcHJvcGVydHkgZm9yZWNhc3QgaW5jbHVkZXMgY2xhaW1QZXJjZW50IHdoaWNoIGFmZmVjdHMgcHJvcGVydHkgcmVsYXRlZCBleHBlbnNlc1xuICAgKiBAVE9ETyBBbGV4IG1vdmUgdG8gZm9yZWNhc3QgYXBpIGluc3RlYWQgb2YgcHJvcGVydHlcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuUHJvcGVydHlGb3JlY2FzdFVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW0FwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfVVBEQVRFRF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hDYWNoZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlSW5DYWNoZSh0cmFuc2FjdGlvblRvUmVwbGFjZTogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICByZXBsYWNlKHRoaXMuY2FjaGUsIHRyYW5zYWN0aW9uVG9SZXBsYWNlKTtcbiAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3Rlbkludm9pY2VzUHVibGlzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5TT0xFX0lOVk9JQ0VfUFVCTElTSEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoQ2FjaGUoKTtcbiAgICB9KVxuICB9XG59XG4iXX0=
275
+ }] }, { type: i3.ToastService }]; } });
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFJbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUNqRDs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUF5QztJQU0vRSxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQixFQUN2QyxZQUEwQjtRQUVwQyxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUxyRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDdkMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFUdEMsK0JBQStCO1FBQy9CLFFBQUcsR0FBRyxjQUFjLENBQUM7UUFDckIsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQUN6Qix1QkFBa0IsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQVNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRztRQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUk7UUFDckIsMERBQTBEO1FBQzFELEdBQUcsQ0FBQyxDQUFDLFlBQTJCLEVBQWlCLEVBQUU7WUFDakQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQXdCLEVBQVEsRUFBRTtnQkFDdEQsV0FBVyxDQUFDLFlBQVksR0FBRyxZQUFZO29CQUNyQyxpQ0FBaUM7cUJBQ2hDLE1BQU0sQ0FBQyxDQUFDLENBQWMsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEMsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsS0FBa0I7UUFDcEIseURBQXlEO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzFCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxlQUE4QixFQUFlLEVBQUU7WUFDbEQsYUFBYTtZQUNiLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQ2xDLElBQUksUUFBUSxDQUFjLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNwRixDQUFDO1lBRUYsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxVQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUU7YUFDZCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsWUFBMkIsRUFBaUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUF3QixFQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUN6SixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRTthQUNkLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxZQUEyQixFQUFpQixFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQzFJLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxVQUFrQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUU7YUFDZCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsWUFBMkIsRUFBaUIsRUFBRSxDQUFDLElBQUkscUJBQXFCLENBQUMsWUFBWSxDQUFDO2FBQ3hGLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO2FBQ25DLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXLENBQUM7YUFDdEUsT0FBTyxFQUFFLENBQUMsQ0FDZCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFO2FBQzlCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxZQUEyQixFQUFpQixFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQzNKLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLFlBQTJCO1FBQ2xDLFlBQVksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZGLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUEyQixFQUFFLEVBQUU7WUFDbEMsTUFBTSxpQkFBaUIsR0FBa0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRWpILFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUF3QixFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUMvRCxnRUFBZ0U7Z0JBQ2hFLGtDQUFrQztnQkFDbEMsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtvQkFDbkMsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBNkIsRUFBRSxFQUFFO3dCQUNqRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztvQkFDbkcsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ3JEO2dCQUVELG9DQUFvQztnQkFDcEMsSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLHdCQUF3QixDQUFDLFFBQVEsRUFBRTtvQkFDL0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN2RDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1lBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FDbEMsSUFBSSxRQUFRLENBQWdCLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLENBQ3RGLENBQUM7WUFFRixPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFdBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDdkcsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQXlCLEVBQUUsRUFBRTtZQUNoQyxNQUFNLGtCQUFrQixHQUFnQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0UsZ0VBQWdFO1lBQ2hFLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25DLCtDQUErQztnQkFDL0MsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBNkIsRUFBRSxFQUFFO29CQUNqRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztnQkFDN0YsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsNkVBQTZFO2dCQUM3RSxNQUFNLHlCQUF5QixHQUFrQixXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRyxNQUFNLHNCQUFzQixHQUFrQixXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXpHLDRCQUE0QjtnQkFDNUIsSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDekQ7Z0JBRUQseUJBQXlCO2dCQUN6QixJQUFJLHNCQUFzQixDQUFDLE1BQU0sRUFBRTtvQkFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUNuRDthQUNGO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXhDLE9BQU8sa0JBQWtCLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsWUFBMkI7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdEYsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQTJCLEVBQUUsRUFBRTtZQUNsQyxNQUFNLG1CQUFtQixHQUFrQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFbkgsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQStCLEVBQUUsRUFBRTtnQkFDOUQsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixPQUFPLG1CQUFtQixDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN6RSxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUF3QixFQUFXLEVBQUU7Z0JBQ25FLHlEQUF5RDtnQkFDekQsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO29CQUNwQixNQUFNLEdBQUcsR0FBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFFakMseUNBQXlDO29CQUN6QyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7d0JBQ2xCLCtDQUErQzt3QkFDL0MsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUM3Qjt5QkFBTTt3QkFDTCxrRUFBa0U7d0JBQ2xFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFjLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDdkY7b0JBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN0QztnQkFFRCxPQUFPLFdBQVcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsSUFBSSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkYsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUNsQyxJQUFJLFFBQVEsQ0FBYyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FDdkUsQ0FBQztZQUVGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLFdBQXdCO1FBQzNDLElBQUksTUFBTSxHQUFXLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRTdDLHNGQUFzRjtRQUN0RixJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUNoQyxNQUFNLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsSUFBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDckc7YUFBTTtZQUNMLDJDQUEyQztZQUMzQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QjtRQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztZQUM3QixnQkFBZ0IsQ0FBQyxxQkFBcUI7WUFDdEMsZ0JBQWdCLENBQUMscUJBQXFCO1lBQ3RDLGdCQUFnQixDQUFDLDZCQUE2QjtTQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssNEJBQTRCO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYyxDQUFDLG9CQUFpQztRQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OytHQW5UVSxrQkFBa0Isa0ZBU25CLGFBQWE7bUhBVFosa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBVUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyByZXBsYWNlLCBzb3J0IH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL3RyYW5zYWN0aW9uLW9wZXJhdGlvbi5lbnVtJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50LCBBcHBFdmVudFR5cGVFbnVtLCBEZXByZWNpYXRpb24sIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQcm9wZXJ0eUNhdGVnb3J5TGlzdEVudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy9wcm9wZXJ0eS9wcm9wZXJ0eS1jYXRlZ29yeS1saXN0LmVudW0nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9ldmVudCc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b2FzdCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2xhc3NUb1BsYWluIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuLyoqXG4gKiBTZXJ2aWNlIGZvciB0cmFuc2FjdGlvbnMgYnVzaW5lc3MgbG9naWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8VHJhbnNhY3Rpb25CYXNlLCBUcmFuc2FjdGlvbj4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIC8vIHVybCBwYXJ0IGZvciBUcmFuc2FjdGlvbiBBUElcbiAgdXJsID0gJ3RyYW5zYWN0aW9ucyc7XG4gIG1vZGVsQ2xhc3MgPSBUcmFuc2FjdGlvbjtcbiAgdHJhbnNhY3Rpb25EZWxldGVkOiBFdmVudEVtaXR0ZXI8VHJhbnNhY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55LFxuICAgIHByb3RlY3RlZCB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCwgdG9hc3RTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZXZlbnRzIGZyb20gRXZlbnQgRGlzcGF0Y2hlciBzZXJ2aWNlc1xuICAgKi9cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuRGVwcmVjaWF0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5saXN0ZW5Qcm9wZXJ0eVNoYXJlVXBkYXRlKCk7XG4gICAgdGhpcy5saXN0ZW5WZWhpY2xlQ2xhaW1DaGFuZ2VzKCk7XG4gICAgdGhpcy5saXN0ZW5Qcm9wZXJ0eUZvcmVjYXN0VXBkYXRlKCk7XG4gICAgdGhpcy5saXN0ZW5JbnZvaWNlc1B1Ymxpc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiBhbGwgdXNlcidzIFRheFRhbmsgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXQoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldCgpLnBpcGUoXG4gICAgICAvLyBhc3NpZ24gY2hpbGQgdHJhbnNhY3Rpb25zIChmZWVzKSB0byBwYXJlbnQgdHJhbnNhY3Rpb25zXG4gICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4ge1xuICAgICAgICB0cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAvLyBnZXQgbGlzdCBvZiBjaGlsZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHQ6IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB0LnBhcmVudFRyYW5zYWN0aW9uICYmIHQucGFyZW50VHJhbnNhY3Rpb24uaWQgPT09IHRyYW5zYWN0aW9uLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNvcnQodHJhbnNhY3Rpb25zLCAnZGF0ZScsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9ucztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc2luZ2xlIG5ldyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gbW9kZWwgTmV3IFRyYW5zYWN0aW9uIGluc3RhbmNlIGZvciBzYXZpbmdcbiAgICovXG4gIGFkZChtb2RlbDogVHJhbnNhY3Rpb24pOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uPiB7XG4gICAgLy8gd2UgZG9uJ3QgaGF2ZSBQT1NUIEFQSSBlbmRwb2ludCBmb3Igc2luZ2xlIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHRoaXMuYWRkQmF0Y2goW21vZGVsXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKG5ld1RyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uID0+IHtcbiAgICAgICAgICAvLyBAVE9ETyBhbGV4XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKFxuICAgICAgICAgICAgbmV3IEFwcEV2ZW50PFRyYW5zYWN0aW9uPihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX0NSRUFURUQsIG5ld1RyYW5zYWN0aW9uc1swXSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIG5ld1RyYW5zYWN0aW9uc1swXTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRyYW5zYWN0aW9ucyByZWxhdGVkIHdpdGggcHJvcGVydHlcbiAgICovXG4gIGdldEJ5UHJvcGVydHlJZChwcm9wZXJ0eUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSA9PiB0cmFuc2FjdGlvbnMuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHRyYW5zYWN0aW9uLnByb3BlcnR5Py5pZCA9PT0gcHJvcGVydHlJZCkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIHRyYW5zYWN0aW9ucyB3aXRoIHRhbmsgdHlwZSAnV29yaydcbiAgICovXG4gIGdldFdvcmtUcmFuc2FjdGlvbnMoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4gdHJhbnNhY3Rpb25zLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB0cmFuc2FjdGlvbi5pc1dvcmtUYW5rKCkpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBwcm9wZXJ0eSBob2xkaW5nIGNvc3RzICh0cmFuc2FjdGlvbnMgcmVsYXRlZCB0byB2YWNhbnQgbGFuZCBwcm9wZXJ0eSlcbiAgICovXG4gIGdldFByb3BlcnR5SG9sZGluZ0Nvc3RzKHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdID0+IG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24odHJhbnNhY3Rpb25zKVxuICAgICAgICAgIC5maWx0ZXJCeSgncHJvcGVydHkuaWQnLCBwcm9wZXJ0eUlkKVxuICAgICAgICAgIC5maWx0ZXJCeSgncHJvcGVydHkuY2F0ZWdvcnkuaWQnLCBQcm9wZXJ0eUNhdGVnb3J5TGlzdEVudW0uVkFDQU5UX0xBTkQpXG4gICAgICAgICAgLnRvQXJyYXkoKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdGF4YWJsZSB0cmFuc2FjdGlvbnMgd2l0aCB0YW5rIHR5cGUgJ1dvcmsnXG4gICAqL1xuICBnZXRUYXhhYmxlV29ya1RyYW5zYWN0aW9ucygpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXb3JrVHJhbnNhY3Rpb25zKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4gdHJhbnNhY3Rpb25zLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiAhIXRyYW5zYWN0aW9uLmNoYXJ0QWNjb3VudHMudGF4UmV0dXJuSXRlbSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBtdWx0aXBsZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9ucyBMaXN0IG9mIG5ldyBUcmFuc2FjdGlvbiBpbnN0YW5jZXMgZm9yIHNhdmluZ1xuICAgKi9cbiAgYWRkQmF0Y2godHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgdHJhbnNhY3Rpb25zID0gXy5jbG9uZURlZXAodHJhbnNhY3Rpb25zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH1gLCBjbGFzc1RvUGxhaW4odHJhbnNhY3Rpb25zKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFkZGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdID0gcmVzcG9uc2UubWFwKChpdGVtOiBUcmFuc2FjdGlvbkJhc2UpID0+IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZShpdGVtKSk7XG5cbiAgICAgICAgICB0cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAvLyBAVE9ETyBWaWt0b3I6IGltcGxlbWVudCBBUEkgZm9yIHNhdmluZyBvZiBuZXN0ZWQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAvLyBhZGQgY2hpbGQgdHJhbnNhY3Rpb25zIGlmIGV4aXN0XG4gICAgICAgICAgICBpZiAodHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZm9yRWFjaCgoY2hpbGRUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBjaGlsZFRyYW5zYWN0aW9uLnBhcmVudFRyYW5zYWN0aW9uID0gdGhpcy5jcmVhdGVNb2RlbEluc3RhbmNlKHtpZDogYWRkZWRUcmFuc2FjdGlvbnNbaW5kZXhdLmlkfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmFkZEJhdGNoKHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGFkZCB0cmFuc2ZlciB0cmFuc2FjdGlvbiB0byBjYWNoZVxuICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uLm9wZXJhdGlvbiA9PT0gVHJhbnNhY3Rpb25PcGVyYXRpb25FbnVtLlRSQU5TRkVSKSB7XG4gICAgICAgICAgICAgIGFkZGVkVHJhbnNhY3Rpb25zLnB1c2goYWRkZWRUcmFuc2FjdGlvbnNbMF0udHJhbnNmZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUucHVzaCguLi5hZGRlZFRyYW5zYWN0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKFxuICAgICAgICAgICAgbmV3IEFwcEV2ZW50PFRyYW5zYWN0aW9uW10+KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05TX0NSRUFURUQsIGFkZGVkVHJhbnNhY3Rpb25zKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gYWRkZWRUcmFuc2FjdGlvbnM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBleGlzdGluZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gVHJhbnNhY3Rpb24gaW5zdGFuY2UgZm9yIHVwZGF0aW5nXG4gICAqL1xuICB1cGRhdGUodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7dHJhbnNhY3Rpb24uaWR9YCwgY2xhc3NUb1BsYWluKHRyYW5zYWN0aW9uKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkJhc2UpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uID0gdGhpcy5jcmVhdGVNb2RlbEluc3RhbmNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAvLyBAVE9ETyBWaWt0b3I6IGltcGxlbWVudCBBUEkgZm9yIHNhdmluZyBvZiBuZXN0ZWQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgaWYgKHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGFkZCBwYXJlbnQgdHJhbnNhY3Rpb24gdG8gY2hpbGQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZm9yRWFjaCgoY2hpbGRUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgY2hpbGRUcmFuc2FjdGlvbi5wYXJlbnRUcmFuc2FjdGlvbiA9IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZSh7aWQ6IHVwZGF0ZWRUcmFuc2FjdGlvbi5pZH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBzZXBhcmF0ZSBjaGlsZCB0cmFuc2FjdGlvbnMgYnkgaWQgZXhpc3RpbmcgdG8gZGVmaW5lIGFkZCBvciB1cGRhdGUgYWN0aW9uLlxuICAgICAgICAgICAgY29uc3QgY2hpbGRUcmFuc2FjdGlvbnNUb1VwZGF0ZTogVHJhbnNhY3Rpb25bXSA9IHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5maWx0ZXIoKHQ6IFRyYW5zYWN0aW9uKSA9PiB0LmlkKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkVHJhbnNhY3Rpb25zVG9BZGQ6IFRyYW5zYWN0aW9uW10gPSB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZmlsdGVyKCh0OiBUcmFuc2FjdGlvbikgPT4gIXQuaWQpO1xuXG4gICAgICAgICAgICAvLyB1cGRhdGUgY2hpbGQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICBpZiAoY2hpbGRUcmFuc2FjdGlvbnNUb1VwZGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVCYXRjaChjaGlsZFRyYW5zYWN0aW9uc1RvVXBkYXRlKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYWRkIGNoaWxkIHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgaWYgKGNoaWxkVHJhbnNhY3Rpb25zVG9BZGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkQmF0Y2goY2hpbGRUcmFuc2FjdGlvbnNUb0FkZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5yZXBsYWNlSW5DYWNoZSh1cGRhdGVkVHJhbnNhY3Rpb24pO1xuXG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRUcmFuc2FjdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlIG11bHRpcGxlIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25zIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGZvciB1cGRhdGluZ1xuICAgKi9cbiAgdXBkYXRlQmF0Y2godHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH1gLCBjbGFzc1RvUGxhaW4odHJhbnNhY3Rpb25zKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10gPSByZXNwb25zZS5tYXAoKGl0ZW06IFRyYW5zYWN0aW9uQmFzZSkgPT4gdGhpcy5jcmVhdGVNb2RlbEluc3RhbmNlKGl0ZW0pKTtcblxuICAgICAgICAgIHVwZGF0ZWRUcmFuc2FjdGlvbnMuZm9yRWFjaCgodXBkYXRlZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgcmVwbGFjZSh0aGlzLmNhY2hlLCB1cGRhdGVkVHJhbnNhY3Rpb24pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkVHJhbnNhY3Rpb25zO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWxldGUgdHJhbnNhY3Rpb24gYW5kIHJlbGF0ZWQgdHJhbnNhY3Rpb25zXG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cbiAgZGVsZXRlKG1vZGVsOiBUcmFuc2FjdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7bW9kZWwuaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICAvLyB3aGVuIGRlbGV0ZSB0cmFuc2ZlciB3ZSBkZWxldGUgYWN0dWFsbHkgMiB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIGlmIChtb2RlbC5pc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSBbbW9kZWwuaWRdO1xuXG4gICAgICAgICAgICAgIC8vIGdldCBpZCBvZiByZWxhdGVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgIGlmIChtb2RlbC50cmFuc2Zlcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgdGFrZSBpZCBpZiB3ZSBkZWxldGUgc291cmNlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgICAgaWRzLnB1c2gobW9kZWwudHJhbnNmZXIuaWQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgc291cmNlIHRyYW5zYWN0aW9uIGlkIGlmIHdlIGRlbGV0ZSBkZXN0aW5hdGlvbiB0cmFuc2FjdGlvblxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKHRoaXMuY2FjaGUuZmluZCgodDogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHQudHJhbnNmZXIuaWQgPT09IG1vZGVsLmlkKS5pZCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gIWlkcy5pbmNsdWRlcyh0cmFuc2FjdGlvbi5pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5pZCAhPT0gbW9kZWwuaWQgJiYgdHJhbnNhY3Rpb24ucGFyZW50VHJhbnNhY3Rpb24/LmlkICE9PSBtb2RlbC5pZDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBBcHBFdmVudDxUcmFuc2FjdGlvbj4oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9ERUxFVEVELCBtb2RlbClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25EZWxldGVkLmVtaXQobW9kZWwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyBBbGV4IHdyb25nIHBsYWNlIGZvciB0aGlzIGxvZ2ljLCBtb3ZlIHRvIG1vZGVsXG4gICAqIGNhbGN1bGF0ZSBncm9zcyBpbmNvbWUgYW1vdW50IGJhc2VkIG9uIHRyYW5zYWN0aW9uIGFtb3VudCBhbmQgdGF4ZXMgKGZlZXMpXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiBUcmFuc2FjdGlvbiBpbnN0YW5jZSBmb3IgY2FsY3VsYXRpb25cbiAgICovXG4gIGNhbGN1bGF0ZUdyb3NzQW1vdW50KHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IG51bWJlciB7XG4gICAgbGV0IGFtb3VudDogbnVtYmVyID0gdHJhbnNhY3Rpb24uYW1vdW50IHx8IDA7XG5cbiAgICAvLyBncm9zcyBpbmNvbWUgYW1vdW50IGluY2x1ZGVzIGFtb3VudCBvZiBmZWVzIGZvciBwcm9wZXJ0eSB0YW5rIGFuZCB0YXggZm9yIHdvcmsgdGFua1xuICAgIGlmICh0cmFuc2FjdGlvbi5pc1Byb3BlcnR5VGFuaygpKSB7XG4gICAgICBhbW91bnQgKz0gdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IFRyYW5zYWN0aW9uKSA9PiBzdW0gKyBpdGVtLmFtb3VudCwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEBUT0RPIEFsZXg6IGZpeCBsb2dpYyBhZnRlciBUVC02NDEgcmVhZHlcbiAgICAgIGFtb3VudCArPSAodHJhbnNhY3Rpb24udGF4IHx8IDApO1xuICAgIH1cblxuICAgIHJldHVybiBhbW91bnQ7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgZXZlbnQgcmVsYXRlZCB0byBEZXByZWNpYXRpb24gY2hhbmdpbmdcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuRGVwcmVjaWF0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIEBUT0RPIHJlc2V0IGNhY2hlIG9ubHkgd2hlbiByZXF1aXJlZCAoZGVwcmVjaWF0aW9uIGhhcyB0cmFuc2FjdGlvbilcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24yKC4uLkRlcHJlY2lhdGlvbi5nZXRFdmVudE5hbWVzKCdwb3N0JywgJ2RlbGV0ZScpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoQ2FjaGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIFByb3BlcnR5IFNoYXJlIGNoYW5naW5nXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblByb3BlcnR5U2hhcmVVcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfU0hBUkVfVVBEQVRFRCkuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVmcmVzaENhY2hlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5WZWhpY2xlQ2xhaW1DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihbXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fQ1JFQVRFRCxcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9VUERBVEVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX0RFVEFJTFNfVVBEQVRFRFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hDYWNoZSgpO1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogcHJvcGVydHkgZm9yZWNhc3QgaW5jbHVkZXMgY2xhaW1QZXJjZW50IHdoaWNoIGFmZmVjdHMgcHJvcGVydHkgcmVsYXRlZCBleHBlbnNlc1xuICAgKiBAVE9ETyBBbGV4IG1vdmUgdG8gZm9yZWNhc3QgYXBpIGluc3RlYWQgb2YgcHJvcGVydHlcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuUHJvcGVydHlGb3JlY2FzdFVwZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW0FwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfVVBEQVRFRF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hDYWNoZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlSW5DYWNoZSh0cmFuc2FjdGlvblRvUmVwbGFjZTogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICByZXBsYWNlKHRoaXMuY2FjaGUsIHRyYW5zYWN0aW9uVG9SZXBsYWNlKTtcbiAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3Rlbkludm9pY2VzUHVibGlzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5TT0xFX0lOVk9JQ0VfUFVCTElTSEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoQ2FjaGUoKTtcbiAgICB9KVxuICB9XG59XG4iXX0=