taxtank-core 0.30.18 → 0.30.19

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 (619) hide show
  1. package/esm2020/lib/collections/allocation-rule.collection.mjs +14 -1
  2. package/esm2020/lib/models/chart-accounts/chart-accounts.mjs +4 -1
  3. package/esm2020/lib/models/transaction/allocation-rule-condition.mjs +32 -1
  4. package/esm2020/lib/models/transaction/allocation-rule-transaction.mjs +48 -9
  5. package/esm2020/lib/models/transaction/allocation-rule.mjs +64 -3
  6. package/fesm2015/taxtank-core.mjs +154 -13
  7. package/fesm2015/taxtank-core.mjs.map +1 -1
  8. package/fesm2020/taxtank-core.mjs +154 -13
  9. package/fesm2020/taxtank-core.mjs.map +1 -1
  10. package/lib/collections/account-setup-item.collection.d.ts.map +1 -0
  11. package/lib/collections/allocation-group.collection.d.ts.map +1 -0
  12. package/lib/collections/allocation-rule.collection.d.ts +8 -0
  13. package/lib/collections/allocation-rule.collection.d.ts.map +1 -0
  14. package/lib/collections/bank-account.collection.d.ts.map +1 -0
  15. package/lib/collections/bank-transaction.collection.d.ts.map +1 -0
  16. package/lib/collections/chart-accounts.collection.d.ts.map +1 -0
  17. package/lib/collections/client-invite.collection.d.ts.map +1 -0
  18. package/lib/collections/client-movement.collection.d.ts.map +1 -0
  19. package/lib/collections/client-portfolio-report.collection.d.ts.map +1 -0
  20. package/lib/collections/client.collection.d.ts.map +1 -0
  21. package/lib/collections/depreciation-forecast.collection.d.ts.map +1 -0
  22. package/lib/collections/depreciation.collection.d.ts.map +1 -0
  23. package/lib/collections/employee.collection.d.ts.map +1 -0
  24. package/lib/collections/exportable.collection.d.ts.map +1 -0
  25. package/lib/collections/income-source.collection.d.ts.map +1 -0
  26. package/lib/collections/index.d.ts.map +1 -0
  27. package/lib/collections/loan/index.d.ts.map +1 -0
  28. package/lib/collections/loan/loan-payment.collection.d.ts.map +1 -0
  29. package/lib/collections/loan/loan.collection.d.ts.map +1 -0
  30. package/lib/collections/property/index.d.ts.map +1 -0
  31. package/lib/collections/property/property-category-movement.collection.d.ts.map +1 -0
  32. package/lib/collections/property/property-sale/index.d.ts.map +1 -0
  33. package/lib/collections/property/property-sale/property-sale-tax-exemption-meta-field.collection.d.ts.map +1 -0
  34. package/lib/collections/property/property-sale/property-sale.collection.d.ts.map +1 -0
  35. package/lib/collections/property/property-share.collection.d.ts.map +1 -0
  36. package/lib/collections/property/property.collection.d.ts.map +1 -0
  37. package/lib/collections/report/depreciation/depreciation-lvp-report-item.collection.d.ts.map +1 -0
  38. package/lib/collections/report/depreciation/depreciation-report-item.collection.d.ts.map +1 -0
  39. package/lib/collections/report/index.d.ts.map +1 -0
  40. package/lib/collections/report/property/property-report-item-depreciation.collection.d.ts.map +1 -0
  41. package/lib/collections/report/property/property-report-item-transaction.collection.d.ts.map +1 -0
  42. package/lib/collections/report/property/property-report-item.collection.d.ts.map +1 -0
  43. package/lib/collections/report/vehicle-expense/vehicle-expense.collection.d.ts.map +1 -0
  44. package/lib/collections/sole/index.d.ts.map +1 -0
  45. package/lib/collections/sole/sole-business-losses.collection.d.ts.map +1 -0
  46. package/lib/collections/sole/sole-invoice-item.collection.d.ts.map +1 -0
  47. package/lib/collections/sole/sole-invoice.collection.d.ts.map +1 -0
  48. package/lib/collections/subscription/index.d.ts.map +1 -0
  49. package/lib/collections/subscription/service-price.collection.d.ts.map +1 -0
  50. package/lib/collections/subscription/service-product.collection.d.ts.map +1 -0
  51. package/lib/collections/subscription/service-subscription.collection.d.ts.map +1 -0
  52. package/lib/collections/subscription/subscription-item.collection.d.ts.map +1 -0
  53. package/lib/collections/tax-review.collection.d.ts.map +1 -0
  54. package/lib/collections/tax-summary/index.d.ts.map +1 -0
  55. package/lib/collections/tax-summary/report-item.collection.d.ts.map +1 -0
  56. package/lib/collections/tax-summary/tax-return-categories.const.d.ts.map +1 -0
  57. package/lib/collections/transaction/index.d.ts.map +1 -0
  58. package/lib/collections/transaction/transaction-allocation.collection.d.ts.map +1 -0
  59. package/lib/collections/transaction/transaction.collection.d.ts.map +1 -0
  60. package/lib/collections/user-event-setting.collection.d.ts.map +1 -0
  61. package/lib/collections/user-event-type-collection.d.ts.map +1 -0
  62. package/lib/collections/vehicle/index.d.ts.map +1 -0
  63. package/lib/collections/vehicle/vehicle-claim.collection.d.ts.map +1 -0
  64. package/lib/collections/vehicle/vehicle-logbook.collection.d.ts.map +1 -0
  65. package/lib/db/Enums/bank-popular.enum.d.ts.map +1 -0
  66. package/lib/db/Enums/depreciation-write-off-amount.enum.d.ts.map +1 -0
  67. package/lib/db/Enums/income-source-type-list-other.enum.d.ts.map +1 -0
  68. package/lib/db/Enums/income-source-type-list-sole.enum.d.ts.map +1 -0
  69. package/lib/db/Enums/income-source-type-list-work.enum.d.ts.map +1 -0
  70. package/lib/db/Enums/invite-status.enum.d.ts.map +1 -0
  71. package/lib/db/Enums/loan-bank-type.enum.d.ts.map +1 -0
  72. package/lib/db/Enums/loan-frequency.enum.d.ts.map +1 -0
  73. package/lib/db/Enums/property/property-category-list.enum.d.ts.map +1 -0
  74. package/lib/db/Enums/service-notification-status.enum.d.ts.map +1 -0
  75. package/lib/db/Enums/service-notification-type.enum.d.ts.map +1 -0
  76. package/lib/db/Enums/subscription/service-payment-method-card-brand.enum.d.ts.map +1 -0
  77. package/lib/db/Enums/subscription/service-payment-method-type.enum.d.ts.map +1 -0
  78. package/lib/db/Enums/tax-return-category-list.enum.d.ts.map +1 -0
  79. package/lib/db/Enums/tax-return-category-section.enum.d.ts.map +1 -0
  80. package/lib/db/Enums/tax-summary-list.enum.d.ts.map +1 -0
  81. package/lib/db/Enums/tax-summary-tax-summary.enum.d.ts.map +1 -0
  82. package/lib/db/Enums/ticket-types.enum.d.ts.map +1 -0
  83. package/lib/db/Enums/user-event-type-client-type.enum.d.ts.map +1 -0
  84. package/lib/db/Enums/user-event-type-employee-type.enum.d.ts.map +1 -0
  85. package/lib/db/Enums/user-event-type-type.enum.d.ts.map +1 -0
  86. package/lib/db/Enums/user-event-type-user-type.enum.d.ts.map +1 -0
  87. package/lib/db/Enums/user-medicare-exemption.enum.d.ts.map +1 -0
  88. package/lib/db/Enums/user-work-depreciation-calculation.enum.d.ts.map +1 -0
  89. package/lib/db/Enums/user-working-holiday-maker.enum.d.ts.map +1 -0
  90. package/lib/db/Models/bank/bank-connection.d.ts.map +1 -0
  91. package/lib/db/Models/bank/basiq-job.d.ts.map +1 -0
  92. package/lib/db/Models/observable-model.d.ts.map +1 -0
  93. package/lib/db/Models/property/property-category.d.ts.map +1 -0
  94. package/lib/db/Models/property/property.d.ts.map +1 -0
  95. package/lib/db/Models/subscription/service-payment-method.d.ts.map +1 -0
  96. package/lib/db/Models/transaction/allocation-rule-condition.d.ts.map +1 -0
  97. package/lib/db/Models/transaction/allocation-rule-transaction-meta-field.d.ts.map +1 -0
  98. package/lib/db/Models/transaction/allocation-rule-transaction.d.ts.map +1 -0
  99. package/lib/db/Models/transaction/allocation-rule.d.ts.map +1 -0
  100. package/lib/db/Models/user/user.d.ts.map +1 -0
  101. package/lib/db-static/chart-accounts/chart-accounts-values.d.ts.map +1 -0
  102. package/lib/forms/abstract.form.d.ts.map +1 -0
  103. package/lib/forms/address/address.form.d.ts.map +1 -0
  104. package/lib/forms/address/index.d.ts.map +1 -0
  105. package/lib/forms/bank/bank-account/bank-account-add-manual.form.d.ts.map +1 -0
  106. package/lib/forms/bank/bank-account/bank-account-allocation.form.d.ts.map +1 -0
  107. package/lib/forms/bank/bank-account/bank-account-import.form.d.ts.map +1 -0
  108. package/lib/forms/bank/bank-account/bank-account-properties.form.d.ts.map +1 -0
  109. package/lib/forms/bank/bank-account/bank-accounts-import.form.d.ts.map +1 -0
  110. package/lib/forms/bank/bank-login.form.d.ts.map +1 -0
  111. package/lib/forms/client/client-income-types.form.d.ts.map +1 -0
  112. package/lib/forms/depreciation/depreciation.form.d.ts.map +1 -0
  113. package/lib/forms/depreciation/index.d.ts.map +1 -0
  114. package/lib/forms/form-validations.enum.d.ts.map +1 -0
  115. package/lib/forms/index.d.ts.map +1 -0
  116. package/lib/forms/loan/index.d.ts.map +1 -0
  117. package/lib/forms/loan/loan.form.d.ts.map +1 -0
  118. package/lib/forms/login/login.form.d.ts.map +1 -0
  119. package/lib/forms/phone/index.d.ts.map +1 -0
  120. package/lib/forms/phone/phone.form.d.ts.map +1 -0
  121. package/lib/forms/property/index.d.ts.map +1 -0
  122. package/lib/forms/property/property-sale/index.d.ts.map +1 -0
  123. package/lib/forms/property/property-sale/property-sale-cost-base.form.d.ts.map +1 -0
  124. package/lib/forms/property/property-sale/property-sale-cost-sale.form.d.ts.map +1 -0
  125. package/lib/forms/property/property-sale/property-sale-exemptions.form.d.ts.map +1 -0
  126. package/lib/forms/register/register-client.form.d.ts.map +1 -0
  127. package/lib/forms/register/register-firm.form.d.ts.map +1 -0
  128. package/lib/forms/report/my-tax/index.d.ts.map +1 -0
  129. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-details/my-tax-business-details.form.d.ts.map +1 -0
  130. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income/my-tax-business-income.form.d.ts.map +1 -0
  131. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income-or-losses.form.d.ts.map +1 -0
  132. package/lib/forms/report/my-tax/my-tax-business-income-or-losses/my-tax-business-losses/my-tax-business-losses.form.d.ts.map +1 -0
  133. package/lib/forms/report/my-tax/my-tax-cgt.form.d.ts.map +1 -0
  134. package/lib/forms/report/my-tax/my-tax-deductions.form.d.ts.map +1 -0
  135. package/lib/forms/report/my-tax/my-tax-dividends.form.d.ts.map +1 -0
  136. package/lib/forms/report/my-tax/my-tax-income-statements.form.d.ts.map +1 -0
  137. package/lib/forms/report/my-tax/my-tax-income-tests.form.d.ts.map +1 -0
  138. package/lib/forms/report/my-tax/my-tax-interest.form.d.ts.map +1 -0
  139. package/lib/forms/report/my-tax/my-tax-losses.form.d.ts.map +1 -0
  140. package/lib/forms/report/my-tax/my-tax-medicare.form.d.ts.map +1 -0
  141. package/lib/forms/report/my-tax/my-tax-offsets.form.d.ts.map +1 -0
  142. package/lib/forms/report/my-tax/my-tax-other-income.form.d.ts.map +1 -0
  143. package/lib/forms/report/my-tax/my-tax-partnerships-and-trusts.form.d.ts.map +1 -0
  144. package/lib/forms/report/my-tax/my-tax-rent.form.d.ts.map +1 -0
  145. package/lib/forms/sole/bas-report.form.d.ts.map +1 -0
  146. package/lib/forms/sole/index.d.ts.map +1 -0
  147. package/lib/forms/sole/sole-business-allocations.form.d.ts.map +1 -0
  148. package/lib/forms/sole/sole-business-loss.form.d.ts.map +1 -0
  149. package/lib/forms/sole/sole-business.form.d.ts.map +1 -0
  150. package/lib/forms/sole/sole-contact.form.d.ts.map +1 -0
  151. package/lib/forms/sole/sole-depreciation-method.form.d.ts.map +1 -0
  152. package/lib/forms/sole/sole-details.form.d.ts.map +1 -0
  153. package/lib/forms/sole/sole-invoice-item.form.d.ts.map +1 -0
  154. package/lib/forms/sole/sole-invoice-template.form.d.ts.map +1 -0
  155. package/lib/forms/sole/sole-invoice.form.d.ts.map +1 -0
  156. package/lib/forms/transaction/allocation-rule-condition.form.d.ts.map +1 -0
  157. package/lib/forms/transaction/allocation-rule-transaction-meta-field.form.d.ts.map +1 -0
  158. package/lib/forms/transaction/allocation-rule-transaction.form.d.ts.map +1 -0
  159. package/lib/forms/transaction/allocation-rule.form.d.ts.map +1 -0
  160. package/lib/forms/transaction/index.d.ts.map +1 -0
  161. package/lib/forms/transaction/messages.enum.d.ts.map +1 -0
  162. package/lib/forms/transaction/transaction-base.form.d.ts.map +1 -0
  163. package/lib/forms/transaction/transaction.form.d.ts.map +1 -0
  164. package/lib/forms/transaction/work/work-expense.form.d.ts.map +1 -0
  165. package/lib/forms/transaction/work/work-income.form.d.ts.map +1 -0
  166. package/lib/forms/transaction/work/work-transaction.form.d.ts.map +1 -0
  167. package/lib/forms/user/index.d.ts.map +1 -0
  168. package/lib/forms/user/password.form.d.ts.map +1 -0
  169. package/lib/forms/user/reset-password.form.d.ts.map +1 -0
  170. package/lib/forms/user/user-invite.form.d.ts.map +1 -0
  171. package/lib/forms/vehicle/index.d.ts.map +1 -0
  172. package/lib/forms/vehicle/vehicle-claim-details.form.d.ts.map +1 -0
  173. package/lib/forms/vehicle/vehicle-claim.form.d.ts.map +1 -0
  174. package/lib/forms/vehicle/vehicle-logbook.form.d.ts.map +1 -0
  175. package/lib/forms/vehicle/vehicle.form.d.ts.map +1 -0
  176. package/lib/functions/clone-deep.d.ts.map +1 -0
  177. package/lib/functions/create-date.d.ts.map +1 -0
  178. package/lib/functions/enum-to-list.d.ts.map +1 -0
  179. package/lib/functions/get-doc-icon.d.ts.map +1 -0
  180. package/lib/functions/mat-options-functions.d.ts.map +1 -0
  181. package/lib/functions/mat-sort-options.d.ts.map +1 -0
  182. package/lib/functions/round-to.d.ts.map +1 -0
  183. package/lib/functions/tax-review-filter-predicate.d.ts.map +1 -0
  184. package/lib/interceptors/basiq-client-id.interceptor.d.ts.map +1 -0
  185. package/lib/interceptors/basiq-token.interceptor.d.ts.map +1 -0
  186. package/lib/interceptors/interceptors.module.d.ts.map +1 -0
  187. package/lib/interceptors/jwt-interceptor.d.ts.map +1 -0
  188. package/lib/interceptors/preloader.interceptor.d.ts.map +1 -0
  189. package/lib/interceptors/user-switcher-interceptor.d.ts.map +1 -0
  190. package/lib/interfaces/asset.interface.d.ts.map +1 -0
  191. package/lib/interfaces/auth-tokens.interface.d.ts.map +1 -0
  192. package/lib/interfaces/chart-data.interface.d.ts.map +1 -0
  193. package/lib/interfaces/chart-serie.interface.d.ts.map +1 -0
  194. package/lib/interfaces/event-listener.interface.d.ts.map +1 -0
  195. package/lib/interfaces/expense.interface.d.ts.map +1 -0
  196. package/lib/interfaces/income-source-forecast.interface.d.ts.map +1 -0
  197. package/lib/interfaces/index.d.ts.map +1 -0
  198. package/lib/interfaces/option.interface.d.ts.map +1 -0
  199. package/lib/interfaces/receipt.interface.d.ts.map +1 -0
  200. package/lib/interfaces/table-exportable.interface.d.ts.map +1 -0
  201. package/lib/interfaces/tank.interface.d.ts.map +1 -0
  202. package/lib/interfaces/updatable.interface.d.ts.map +1 -0
  203. package/lib/models/account-setup/account-setup-item.d.ts.map +1 -0
  204. package/lib/models/account-setup/account-setup-items.const.d.ts.map +1 -0
  205. package/lib/models/account-setup/account-setup-items.enum.d.ts.map +1 -0
  206. package/lib/models/badge/badge-color.enum.d.ts.map +1 -0
  207. package/lib/models/badge/badge.d.ts.map +1 -0
  208. package/lib/models/bank/allocation-group.d.ts.map +1 -0
  209. package/lib/models/bank/bank-account-chart-data.d.ts.map +1 -0
  210. package/lib/models/bank/bank-account-property.d.ts.map +1 -0
  211. package/lib/models/bank/bank-account-types.const.d.ts.map +1 -0
  212. package/lib/models/bank/bank-account.d.ts.map +1 -0
  213. package/lib/models/bank/bank-connection.d.ts.map +1 -0
  214. package/lib/models/bank/bank-external-stats.d.ts.map +1 -0
  215. package/lib/models/bank/bank-login-data.d.ts.map +1 -0
  216. package/lib/models/bank/bank-transaction-chart-data.d.ts.map +1 -0
  217. package/lib/models/bank/bank-transaction-summary-fields.enum.d.ts.map +1 -0
  218. package/lib/models/bank/bank-transaction.d.ts.map +1 -0
  219. package/lib/models/bank/bank.d.ts.map +1 -0
  220. package/lib/models/bank/basiq/basiq-job-response.d.ts.map +1 -0
  221. package/lib/models/bank/basiq/basiq-job-step.d.ts.map +1 -0
  222. package/lib/models/bank/basiq/basiq-job.d.ts.map +1 -0
  223. package/lib/models/bank/basiq/basiq-token-response.interface.d.ts.map +1 -0
  224. package/lib/models/bank/basiq/basiq-token.d.ts.map +1 -0
  225. package/lib/models/bank/basiq/index.d.ts.map +1 -0
  226. package/lib/models/bank/index.d.ts.map +1 -0
  227. package/lib/models/bank/type-loan.const.d.ts.map +1 -0
  228. package/lib/models/borrowing-expense/borrowing-expense-loan.d.ts.map +1 -0
  229. package/lib/models/borrowing-expense/borrowing-expense.d.ts.map +1 -0
  230. package/lib/models/borrowing-expense/index.d.ts.map +1 -0
  231. package/lib/models/chart/chart-data.d.ts.map +1 -0
  232. package/lib/models/chart/chart-serie.d.ts.map +1 -0
  233. package/lib/models/chart-accounts/chart-accounts-categories.const.d.ts.map +1 -0
  234. package/lib/models/chart-accounts/chart-accounts-category.e-collection.d.ts.map +1 -0
  235. package/lib/models/chart-accounts/chart-accounts-depreciation.d.ts.map +1 -0
  236. package/lib/models/chart-accounts/chart-accounts-heading.d.ts.map +1 -0
  237. package/lib/models/chart-accounts/chart-accounts-meta-field.d.ts.map +1 -0
  238. package/lib/models/chart-accounts/chart-accounts-tax-labels.enum.d.ts.map +1 -0
  239. package/lib/models/chart-accounts/chart-accounts-value.d.ts.map +1 -0
  240. package/lib/models/chart-accounts/chart-accounts.d.ts +1 -0
  241. package/lib/models/chart-accounts/chart-accounts.d.ts.map +1 -0
  242. package/lib/models/chart-accounts/index.d.ts.map +1 -0
  243. package/lib/models/chat/chat-view-type.enum.d.ts.map +1 -0
  244. package/lib/models/chat/chat.d.ts.map +1 -0
  245. package/lib/models/chat/index.d.ts.map +1 -0
  246. package/lib/models/chat/message-document.d.ts.map +1 -0
  247. package/lib/models/chat/message.d.ts.map +1 -0
  248. package/lib/models/client/client-income-types.d.ts.map +1 -0
  249. package/lib/models/client/client-invite.d.ts.map +1 -0
  250. package/lib/models/client/client-movement.d.ts.map +1 -0
  251. package/lib/models/client/client-portfolio-chart-data.d.ts.map +1 -0
  252. package/lib/models/client/client-portfolio-report.d.ts.map +1 -0
  253. package/lib/models/color/alphabet-colors.enum.d.ts.map +1 -0
  254. package/lib/models/depreciation/depreciation-capital-project.d.ts.map +1 -0
  255. package/lib/models/depreciation/depreciation-forecast.d.ts.map +1 -0
  256. package/lib/models/depreciation/depreciation-group-item.d.ts.map +1 -0
  257. package/lib/models/depreciation/depreciation-group.d.ts.map +1 -0
  258. package/lib/models/depreciation/depreciation-group.enum.d.ts.map +1 -0
  259. package/lib/models/depreciation/depreciation-groups.const.d.ts.map +1 -0
  260. package/lib/models/depreciation/depreciation-lvp-rate.enum.d.ts.map +1 -0
  261. package/lib/models/depreciation/depreciation-receipt.d.ts.map +1 -0
  262. package/lib/models/depreciation/depreciation.d.ts.map +1 -0
  263. package/lib/models/depreciation/index.d.ts.map +1 -0
  264. package/lib/models/dictionary/dictionary.d.ts.map +1 -0
  265. package/lib/models/dictionary/index.d.ts.map +1 -0
  266. package/lib/models/document/document-api-url-prefix.enum.d.ts.map +1 -0
  267. package/lib/models/document/document-file-types.const.d.ts.map +1 -0
  268. package/lib/models/document/document-folder.d.ts.map +1 -0
  269. package/lib/models/document/document.d.ts.map +1 -0
  270. package/lib/models/document/index.d.ts.map +1 -0
  271. package/lib/models/employee/employee-invite.d.ts.map +1 -0
  272. package/lib/models/endpoint/endpoint.d.ts.map +1 -0
  273. package/lib/models/endpoint/endpoints.const.d.ts.map +1 -0
  274. package/lib/models/event/index.d.ts.map +1 -0
  275. package/lib/models/export/export-format.enum.d.ts.map +1 -0
  276. package/lib/models/export/export-row-data-type.enum.d.ts.map +1 -0
  277. package/lib/models/export/export-row.d.ts.map +1 -0
  278. package/lib/models/file/file.d.ts.map +1 -0
  279. package/lib/models/file/icons-file.enum.d.ts.map +1 -0
  280. package/lib/models/file/index.d.ts.map +1 -0
  281. package/lib/models/financial-year/financial-year.d.ts.map +1 -0
  282. package/lib/models/financial-year/index.d.ts.map +1 -0
  283. package/lib/models/financial-year/month-name-short.enum.d.ts.map +1 -0
  284. package/lib/models/financial-year/month-number.enum.d.ts.map +1 -0
  285. package/lib/models/financial-year/months.const.d.ts.map +1 -0
  286. package/lib/models/income-position/income-position.d.ts.map +1 -0
  287. package/lib/models/income-source/income-source-chart-data.d.ts.map +1 -0
  288. package/lib/models/income-source/income-source-forecast.d.ts.map +1 -0
  289. package/lib/models/income-source/income-source-type.d.ts.map +1 -0
  290. package/lib/models/income-source/income-source.d.ts.map +1 -0
  291. package/lib/models/income-source/salary-forecast.d.ts.map +1 -0
  292. package/lib/models/income-source/sole-forecast.d.ts.map +1 -0
  293. package/lib/models/index.d.ts.map +1 -0
  294. package/lib/models/loan/index.d.ts.map +1 -0
  295. package/lib/models/loan/loan-max-number-of-payments.enum.d.ts.map +1 -0
  296. package/lib/models/loan/loan.d.ts.map +1 -0
  297. package/lib/models/notification/index.d.ts.map +1 -0
  298. package/lib/models/notification/notification.d.ts.map +1 -0
  299. package/lib/models/pdf/pdf-orientation.enum.d.ts.map +1 -0
  300. package/lib/models/pdf/pdf-settings.d.ts.map +1 -0
  301. package/lib/models/property/calculation-form-item.d.ts.map +1 -0
  302. package/lib/models/property/calculation-form-type.enum.d.ts.map +1 -0
  303. package/lib/models/property/capital-costs-itmes.const.d.ts.map +1 -0
  304. package/lib/models/property/index.d.ts.map +1 -0
  305. package/lib/models/property/property-category-movement.d.ts.map +1 -0
  306. package/lib/models/property/property-category.d.ts.map +1 -0
  307. package/lib/models/property/property-document.d.ts.map +1 -0
  308. package/lib/models/property/property-equity-chart-data.d.ts.map +1 -0
  309. package/lib/models/property/property-equity-chart-item.d.ts.map +1 -0
  310. package/lib/models/property/property-equity-chart-type.enum.d.ts.map +1 -0
  311. package/lib/models/property/property-forecast.d.ts.map +1 -0
  312. package/lib/models/property/property-sale/index.d.ts.map +1 -0
  313. package/lib/models/property/property-sale/property-sale-cost-base.d.ts.map +1 -0
  314. package/lib/models/property/property-sale/property-sale-tax-exemption-meta-field.d.ts.map +1 -0
  315. package/lib/models/property/property-sale/property-sale.d.ts.map +1 -0
  316. package/lib/models/property/property-sale/tax-exemption-meta-field.d.ts.map +1 -0
  317. package/lib/models/property/property-sale/tax-exemption.d.ts.map +1 -0
  318. package/lib/models/property/property-share.d.ts.map +1 -0
  319. package/lib/models/property/property-subscription.d.ts.map +1 -0
  320. package/lib/models/property/property-valuation.d.ts.map +1 -0
  321. package/lib/models/property/property.d.ts.map +1 -0
  322. package/lib/models/property/share-filter-options.enum.d.ts.map +1 -0
  323. package/lib/models/registration-invite/registration-invite.d.ts.map +1 -0
  324. package/lib/models/report/depreciation/depreciation-lvp-asset-type.enum.d.ts.map +1 -0
  325. package/lib/models/report/depreciation/depreciation-lvp-report-item.d.ts.map +1 -0
  326. package/lib/models/report/depreciation/depreciation-report-item.d.ts.map +1 -0
  327. package/lib/models/report/depreciation/index.d.ts.map +1 -0
  328. package/lib/models/report/index.d.ts.map +1 -0
  329. package/lib/models/report/my-tax/ato-links.d.ts.map +1 -0
  330. package/lib/models/report/my-tax/index.d.ts.map +1 -0
  331. package/lib/models/report/my-tax/my-tax-business-income-or-losses/business-income-or-losses-categories.const.d.ts.map +1 -0
  332. package/lib/models/report/my-tax/my-tax-business-income-or-losses/business-type.enum.d.ts.map +1 -0
  333. package/lib/models/report/my-tax/my-tax-business-income-or-losses/loss-type.enum.d.ts.map +1 -0
  334. package/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-details/my-tax-business-details.d.ts.map +1 -0
  335. package/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-income/my-tax-business-income.d.ts.map +1 -0
  336. package/lib/models/report/my-tax/my-tax-business-income-or-losses/my-tax-business-losses/my-tax-business-losses.d.ts.map +1 -0
  337. package/lib/models/report/my-tax/my-tax-cgt/cgt-exemption-and-rollover-code.enum.d.ts.map +1 -0
  338. package/lib/models/report/my-tax/my-tax-cgt/my-tax-cgt.d.ts.map +1 -0
  339. package/lib/models/report/my-tax/my-tax-deductions/deduction-clothing-type.enum.d.ts.map +1 -0
  340. package/lib/models/report/my-tax/my-tax-deductions/deduction-fields.const.d.ts.map +1 -0
  341. package/lib/models/report/my-tax/my-tax-deductions/deduction-self-education-type.enum.d.ts.map +1 -0
  342. package/lib/models/report/my-tax/my-tax-deductions/my-tax-deductions.d.ts.map +1 -0
  343. package/lib/models/report/my-tax/my-tax-dividends/my-tax-dividends.d.ts.map +1 -0
  344. package/lib/models/report/my-tax/my-tax-estimate/my-tax-estimate.d.ts.map +1 -0
  345. package/lib/models/report/my-tax/my-tax-income-statements/my-tax-income-statements.d.ts.map +1 -0
  346. package/lib/models/report/my-tax/my-tax-income-tests/my-tax-income-tests.d.ts.map +1 -0
  347. package/lib/models/report/my-tax/my-tax-interest/my-tax-interest.d.ts.map +1 -0
  348. package/lib/models/report/my-tax/my-tax-losses/my-tax-losses.d.ts.map +1 -0
  349. package/lib/models/report/my-tax/my-tax-offsets/my-tax-offsets.d.ts.map +1 -0
  350. package/lib/models/report/my-tax/my-tax-other-income/my-tax-other-income.d.ts.map +1 -0
  351. package/lib/models/report/my-tax/my-tax-partnerships-and-trusts/my-tax-partnerships-and-trusts.d.ts.map +1 -0
  352. package/lib/models/report/my-tax/my-tax-rent/my-tax-rent.d.ts.map +1 -0
  353. package/lib/models/report/property/index.d.ts.map +1 -0
  354. package/lib/models/report/property/property-report-item-depreciation.d.ts.map +1 -0
  355. package/lib/models/report/property/property-report-item-transaction.d.ts.map +1 -0
  356. package/lib/models/report/property/property-report-item.d.ts.map +1 -0
  357. package/lib/models/report/sole/index.d.ts.map +1 -0
  358. package/lib/models/report/sole/sole-business/sole-business-loss-report.d.ts.map +1 -0
  359. package/lib/models/report/vehicle-expense/vehicle-expense.d.ts.map +1 -0
  360. package/lib/models/service-subscription/index.d.ts.map +1 -0
  361. package/lib/models/service-subscription/module-url-list.const.d.ts.map +1 -0
  362. package/lib/models/service-subscription/payment-method-brand.enum.d.ts.map +1 -0
  363. package/lib/models/service-subscription/service-payment-method.d.ts.map +1 -0
  364. package/lib/models/service-subscription/service-payment.d.ts.map +1 -0
  365. package/lib/models/service-subscription/service-subscription.d.ts.map +1 -0
  366. package/lib/models/service-subscription/stripe-promo-code.d.ts.map +1 -0
  367. package/lib/models/sole/bas-report.d.ts.map +1 -0
  368. package/lib/models/sole/index.d.ts.map +1 -0
  369. package/lib/models/sole/sole-business-activity.d.ts.map +1 -0
  370. package/lib/models/sole/sole-business-allocation.d.ts.map +1 -0
  371. package/lib/models/sole/sole-business-loss-offset-rule.d.ts.map +1 -0
  372. package/lib/models/sole/sole-business-loss.d.ts.map +1 -0
  373. package/lib/models/sole/sole-business.d.ts.map +1 -0
  374. package/lib/models/sole/sole-contact.d.ts.map +1 -0
  375. package/lib/models/sole/sole-depreciation-method.d.ts.map +1 -0
  376. package/lib/models/sole/sole-details.d.ts.map +1 -0
  377. package/lib/models/sole/sole-invoice-item.d.ts.map +1 -0
  378. package/lib/models/sole/sole-invoice-template.d.ts.map +1 -0
  379. package/lib/models/sole/sole-invoice.d.ts.map +1 -0
  380. package/lib/models/tax-review/tax-review.d.ts.map +1 -0
  381. package/lib/models/tax-summary/report-item-details.d.ts.map +1 -0
  382. package/lib/models/tax-summary/report-item.d.ts.map +1 -0
  383. package/lib/models/tax-summary/tax-summary-section.d.ts.map +1 -0
  384. package/lib/models/tax-summary/tax-summary-type.enum.d.ts.map +1 -0
  385. package/lib/models/tax-summary/tax-summary.d.ts.map +1 -0
  386. package/lib/models/toast/toast-type.enum.d.ts.map +1 -0
  387. package/lib/models/toast/toast.d.ts.map +1 -0
  388. package/lib/models/transaction/allocation-rule-condition.d.ts +4 -0
  389. package/lib/models/transaction/allocation-rule-condition.d.ts.map +1 -0
  390. package/lib/models/transaction/allocation-rule-transaction-meta-field.d.ts.map +1 -0
  391. package/lib/models/transaction/allocation-rule-transaction.d.ts +5 -1
  392. package/lib/models/transaction/allocation-rule-transaction.d.ts.map +1 -0
  393. package/lib/models/transaction/allocation-rule.d.ts +19 -1
  394. package/lib/models/transaction/allocation-rule.d.ts.map +1 -0
  395. package/lib/models/transaction/income-amount-type.enum.d.ts.map +1 -0
  396. package/lib/models/transaction/index.d.ts.map +1 -0
  397. package/lib/models/transaction/transaction-allocation.d.ts.map +1 -0
  398. package/lib/models/transaction/transaction-category.enum.d.ts.map +1 -0
  399. package/lib/models/transaction/transaction-meta-field.d.ts.map +1 -0
  400. package/lib/models/transaction/transaction-receipt.d.ts.map +1 -0
  401. package/lib/models/transaction/transaction.d.ts.map +1 -0
  402. package/lib/models/user/index.d.ts.map +1 -0
  403. package/lib/models/user/my-account-history-initiated-by.enum.d.ts.map +1 -0
  404. package/lib/models/user/my-account-history-status.enum.d.ts.map +1 -0
  405. package/lib/models/user/my-account-history-type.enum.d.ts.map +1 -0
  406. package/lib/models/user/my-account-history.d.ts.map +1 -0
  407. package/lib/models/user/occupation.d.ts.map +1 -0
  408. package/lib/models/user/user-roles.const.d.ts.map +1 -0
  409. package/lib/models/user/user-to-register.d.ts.map +1 -0
  410. package/lib/models/user/user.d.ts.map +1 -0
  411. package/lib/models/user-event/user-event-setting-field.enum.d.ts.map +1 -0
  412. package/lib/models/user-event/user-event-setting.d.ts.map +1 -0
  413. package/lib/models/user-event/user-event-type-category.d.ts.map +1 -0
  414. package/lib/models/user-event/user-event-type.d.ts.map +1 -0
  415. package/lib/models/vehicle/index.d.ts.map +1 -0
  416. package/lib/models/vehicle/logbook-period.d.ts.map +1 -0
  417. package/lib/models/vehicle/vehicle-claim-details.d.ts.map +1 -0
  418. package/lib/models/vehicle/vehicle-claim.d.ts.map +1 -0
  419. package/lib/models/vehicle/vehicle-logbook.d.ts.map +1 -0
  420. package/lib/models/vehicle/vehicle.d.ts.map +1 -0
  421. package/lib/services/account-setup/account-setup.service.d.ts.map +1 -0
  422. package/lib/services/account-setup/index.d.ts.map +1 -0
  423. package/lib/services/affiliate/index.d.ts.map +1 -0
  424. package/lib/services/affiliate/rewardful/index.d.ts.map +1 -0
  425. package/lib/services/affiliate/rewardful/rewardful.service.d.ts.map +1 -0
  426. package/lib/services/asset/assets.service.d.ts.map +1 -0
  427. package/lib/services/asset/index.d.ts.map +1 -0
  428. package/lib/services/auth/auth.service.d.ts.map +1 -0
  429. package/lib/services/auth/index.d.ts.map +1 -0
  430. package/lib/services/auth/jwt.service.d.ts.map +1 -0
  431. package/lib/services/bank/bank-account-calculation.service.d.ts.map +1 -0
  432. package/lib/services/bank/bank-transaction-calculation.service.d.ts.map +1 -0
  433. package/lib/services/bank/index.d.ts.map +1 -0
  434. package/lib/services/export/export-formatter.service.d.ts.map +1 -0
  435. package/lib/services/export/index.d.ts.map +1 -0
  436. package/lib/services/header-title/header-title.service.d.ts.map +1 -0
  437. package/lib/services/header-title/index.d.ts.map +1 -0
  438. package/lib/services/http/address/address.service.d.ts.map +1 -0
  439. package/lib/services/http/address/index.d.ts.map +1 -0
  440. package/lib/services/http/bank/bank-account/bank-account.service.d.ts.map +1 -0
  441. package/lib/services/http/bank/bank-account/index.d.ts.map +1 -0
  442. package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts.map +1 -0
  443. package/lib/services/http/bank/bank-connection/index.d.ts.map +1 -0
  444. package/lib/services/http/bank/bank-transaction/bank-transaction.service.d.ts.map +1 -0
  445. package/lib/services/http/bank/bank-transaction/index.d.ts.map +1 -0
  446. package/lib/services/http/bank/bank.service.d.ts.map +1 -0
  447. package/lib/services/http/bank/basiq/basiq-token.service.d.ts.map +1 -0
  448. package/lib/services/http/bank/basiq/basiq.service.d.ts.map +1 -0
  449. package/lib/services/http/bank/basiq/index.d.ts.map +1 -0
  450. package/lib/services/http/bank/index.d.ts.map +1 -0
  451. package/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.d.ts.map +1 -0
  452. package/lib/services/http/chart-accounts/chart-accounts-depreciations/index.d.ts.map +1 -0
  453. package/lib/services/http/chart-accounts/chart-accounts.service.d.ts.map +1 -0
  454. package/lib/services/http/chart-accounts/index.d.ts.map +1 -0
  455. package/lib/services/http/chat/chat.service.d.ts.map +1 -0
  456. package/lib/services/http/chat/index.d.ts.map +1 -0
  457. package/lib/services/http/chat/message-document.service.d.ts.map +1 -0
  458. package/lib/services/http/chat/message.service.d.ts.map +1 -0
  459. package/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.d.ts.map +1 -0
  460. package/lib/services/http/depreciation/depreciation-capital-project/index.d.ts.map +1 -0
  461. package/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.d.ts.map +1 -0
  462. package/lib/services/http/depreciation/depreciation-receipt/index.d.ts.map +1 -0
  463. package/lib/services/http/depreciation/depreciation.service.d.ts.map +1 -0
  464. package/lib/services/http/depreciation/index.d.ts.map +1 -0
  465. package/lib/services/http/document/document-folder/document-folder.service.d.ts.map +1 -0
  466. package/lib/services/http/document/document.service.d.ts.map +1 -0
  467. package/lib/services/http/document/index.d.ts.map +1 -0
  468. package/lib/services/http/facebook/facebook-auth-options.interface.d.ts.map +1 -0
  469. package/lib/services/http/facebook/facebook-auth-response.interface.d.ts.map +1 -0
  470. package/lib/services/http/facebook/facebook-status-response.interface.d.ts.map +1 -0
  471. package/lib/services/http/facebook/facebook.service.d.ts.map +1 -0
  472. package/lib/services/http/facebook/index.d.ts.map +1 -0
  473. package/lib/services/http/file/file.service.d.ts.map +1 -0
  474. package/lib/services/http/file/index.d.ts.map +1 -0
  475. package/lib/services/http/firm/client-income/client-income-types.service.d.ts.map +1 -0
  476. package/lib/services/http/firm/client-income/index.d.ts.map +1 -0
  477. package/lib/services/http/firm/client-invite/client-invite.service.d.ts.map +1 -0
  478. package/lib/services/http/firm/client-invite/index.d.ts.map +1 -0
  479. package/lib/services/http/firm/client-movement/client-movement.service.d.ts.map +1 -0
  480. package/lib/services/http/firm/client-movement/index.d.ts.map +1 -0
  481. package/lib/services/http/firm/employee/employee.service.d.ts.map +1 -0
  482. package/lib/services/http/firm/employee/index.d.ts.map +1 -0
  483. package/lib/services/http/firm/employee-invite/employee-invite.service.d.ts.map +1 -0
  484. package/lib/services/http/firm/employee-invite/index.d.ts.map +1 -0
  485. package/lib/services/http/firm/firm.service.d.ts.map +1 -0
  486. package/lib/services/http/firm/index.d.ts.map +1 -0
  487. package/lib/services/http/firm/portfolio-report/client-portfolio-report.service.d.ts.map +1 -0
  488. package/lib/services/http/firm/portfolio-report/index.d.ts.map +1 -0
  489. package/lib/services/http/google/google.service.d.ts.map +1 -0
  490. package/lib/services/http/google/index.d.ts.map +1 -0
  491. package/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.d.ts.map +1 -0
  492. package/lib/services/http/income-source/income-source-forecast/index.d.ts.map +1 -0
  493. package/lib/services/http/income-source/income-source.service.d.ts.map +1 -0
  494. package/lib/services/http/income-source/index.d.ts.map +1 -0
  495. package/lib/services/http/income-source/salary-forecast/index.d.ts.map +1 -0
  496. package/lib/services/http/income-source/salary-forecast/salary-forecast.service.d.ts.map +1 -0
  497. package/lib/services/http/income-source/sole-forecast/index.d.ts.map +1 -0
  498. package/lib/services/http/income-source/sole-forecast/sole-forecast.service.d.ts.map +1 -0
  499. package/lib/services/http/index.d.ts.map +1 -0
  500. package/lib/services/http/loan/borrowing-expense/borrowing-expense.service.d.ts.map +1 -0
  501. package/lib/services/http/loan/borrowing-expense/index.d.ts.map +1 -0
  502. package/lib/services/http/loan/index.d.ts.map +1 -0
  503. package/lib/services/http/loan/loan.service.d.ts.map +1 -0
  504. package/lib/services/http/property/index.d.ts.map +1 -0
  505. package/lib/services/http/property/property-category/index.d.ts.map +1 -0
  506. package/lib/services/http/property/property-category/property-category.service.d.ts.map +1 -0
  507. package/lib/services/http/property/property-category-movement/index.d.ts.map +1 -0
  508. package/lib/services/http/property/property-category-movement/property-category-movement.service.d.ts.map +1 -0
  509. package/lib/services/http/property/property-document/index.d.ts.map +1 -0
  510. package/lib/services/http/property/property-document/property-document.service.d.ts.map +1 -0
  511. package/lib/services/http/property/property-sale/index.d.ts.map +1 -0
  512. package/lib/services/http/property/property-sale/property-sale.service.d.ts.map +1 -0
  513. package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts.map +1 -0
  514. package/lib/services/http/property/property-share/index.d.ts.map +1 -0
  515. package/lib/services/http/property/property-share/property-share.service.d.ts.map +1 -0
  516. package/lib/services/http/property/property.service.d.ts.map +1 -0
  517. package/lib/services/http/receipt/index.d.ts.map +1 -0
  518. package/lib/services/http/receipt/receipt.service.d.ts.map +1 -0
  519. package/lib/services/http/rest/http-method.type.d.ts.map +1 -0
  520. package/lib/services/http/rest/index.d.ts.map +1 -0
  521. package/lib/services/http/rest/rest-method.type.d.ts.map +1 -0
  522. package/lib/services/http/rest/rest-old.service.d.ts.map +1 -0
  523. package/lib/services/http/rest/rest.service.d.ts.map +1 -0
  524. package/lib/services/http/service-notification/index.d.ts.map +1 -0
  525. package/lib/services/http/service-notification/service-notification.service.d.ts.map +1 -0
  526. package/lib/services/http/sole/bas-report/bas-report.service.d.ts.map +1 -0
  527. package/lib/services/http/sole/index.d.ts.map +1 -0
  528. package/lib/services/http/sole/sole-business/messages.enum.d.ts.map +1 -0
  529. package/lib/services/http/sole/sole-business/sole-business.service.d.ts.map +1 -0
  530. package/lib/services/http/sole/sole-business-activity/sole-business-activity.service.d.ts.map +1 -0
  531. package/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.d.ts.map +1 -0
  532. package/lib/services/http/sole/sole-business-loss/sole-business-loss.service.d.ts.map +1 -0
  533. package/lib/services/http/sole/sole-contact/sole-contact.service.d.ts.map +1 -0
  534. package/lib/services/http/sole/sole-depreciation-method/sole-depreciation-method.service.d.ts.map +1 -0
  535. package/lib/services/http/sole/sole-details/sole-details.service.d.ts.map +1 -0
  536. package/lib/services/http/sole/sole-invoice/sole-invoice.service.d.ts.map +1 -0
  537. package/lib/services/http/sole/sole-invoice-template/sole-invoice-template.service.d.ts.map +1 -0
  538. package/lib/services/http/subscription/index.d.ts.map +1 -0
  539. package/lib/services/http/subscription/service-payment/service-payment.service.d.ts.map +1 -0
  540. package/lib/services/http/subscription/service-payment-method/service-payment-method.service.d.ts.map +1 -0
  541. package/lib/services/http/subscription/service-price/service-price.service.d.ts.map +1 -0
  542. package/lib/services/http/subscription/service-product/service-product.service.d.ts.map +1 -0
  543. package/lib/services/http/subscription/service-subscription/subscription.service.d.ts.map +1 -0
  544. package/lib/services/http/tax-review/index.d.ts.map +1 -0
  545. package/lib/services/http/tax-review/tax-review-history/tax-review-history.service.d.ts.map +1 -0
  546. package/lib/services/http/tax-review/tax-review.service.d.ts.map +1 -0
  547. package/lib/services/http/tax-summary/index.d.ts.map +1 -0
  548. package/lib/services/http/tax-summary/tax-summary.service.d.ts.map +1 -0
  549. package/lib/services/http/transaction/index.d.ts.map +1 -0
  550. package/lib/services/http/transaction/transaction-allocation/allocation-rule/allocation-rule.service.d.ts.map +1 -0
  551. package/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.d.ts.map +1 -0
  552. package/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.d.ts.map +1 -0
  553. package/lib/services/http/transaction/transaction.service.d.ts.map +1 -0
  554. package/lib/services/http/tutorial-video/index.d.ts.map +1 -0
  555. package/lib/services/http/tutorial-video/tutorial-video-response.interface.d.ts.map +1 -0
  556. package/lib/services/http/tutorial-video/tutorial-video.service.d.ts.map +1 -0
  557. package/lib/services/http/tutorial-video/video-source.interface.d.ts.map +1 -0
  558. package/lib/services/http/user/index.d.ts.map +1 -0
  559. package/lib/services/http/user/occupation/occupation.service.d.ts.map +1 -0
  560. package/lib/services/http/user/user-event-setting/user-event-setting.service.d.ts.map +1 -0
  561. package/lib/services/http/user/user-event-type/user-event-type.service.d.ts.map +1 -0
  562. package/lib/services/http/user/user.service.d.ts.map +1 -0
  563. package/lib/services/http/user/users-invite/users-invite.service.d.ts.map +1 -0
  564. package/lib/services/http/vehicle/index.d.ts.map +1 -0
  565. package/lib/services/http/vehicle/vehicle-claim-details.service.d.ts.map +1 -0
  566. package/lib/services/http/vehicle/vehicle-claim.service.d.ts.map +1 -0
  567. package/lib/services/http/vehicle/vehicle-logbook.service.d.ts.map +1 -0
  568. package/lib/services/http/vehicle/vehicle.service.d.ts.map +1 -0
  569. package/lib/services/index.d.ts.map +1 -0
  570. package/lib/services/intercom/index.d.ts.map +1 -0
  571. package/lib/services/intercom/intercom.service.d.ts.map +1 -0
  572. package/lib/services/pdf/index.d.ts.map +1 -0
  573. package/lib/services/pdf/js-pdf.d.ts.map +1 -0
  574. package/lib/services/pdf/pdf-from-dom-element/file-settings.d.ts.map +1 -0
  575. package/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.d.ts.map +1 -0
  576. package/lib/services/pdf/pdf-from-table/file-settings.d.ts.map +1 -0
  577. package/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.d.ts.map +1 -0
  578. package/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.d.ts.map +1 -0
  579. package/lib/services/pdf/pdf-from-table/pdf-from-table.service.d.ts.map +1 -0
  580. package/lib/services/preloader/index.d.ts.map +1 -0
  581. package/lib/services/preloader/preloader.service.d.ts.map +1 -0
  582. package/lib/services/property/corelogic/index.d.ts.map +1 -0
  583. package/lib/services/property/equity-position-chart/equity-position-chart.service.d.ts.map +1 -0
  584. package/lib/services/property/equity-position-chart/index.d.ts.map +1 -0
  585. package/lib/services/property/index.d.ts.map +1 -0
  586. package/lib/services/property/property-calculation/index.d.ts.map +1 -0
  587. package/lib/services/property/property-calculation/property-calculation.service.d.ts.map +1 -0
  588. package/lib/services/report/index.d.ts.map +1 -0
  589. package/lib/services/report/property/property-transaction-report.service.d.ts.map +1 -0
  590. package/lib/services/toast/index.d.ts.map +1 -0
  591. package/lib/services/toast/toast.service.d.ts.map +1 -0
  592. package/lib/services/transaction/index.d.ts.map +1 -0
  593. package/lib/services/transaction/transaction-calculation.service.d.ts.map +1 -0
  594. package/lib/services/user/index.d.ts.map +1 -0
  595. package/lib/services/user/user-switcher.service.d.ts.map +1 -0
  596. package/lib/services/vehicle/index.d.ts.map +1 -0
  597. package/lib/services/vehicle/logbook-best-period.service.d.ts.map +1 -0
  598. package/lib/services/xlsx/index.d.ts.map +1 -0
  599. package/lib/services/xlsx/xlsx.service.d.ts.map +1 -0
  600. package/lib/tt-core.module.d.ts.map +1 -0
  601. package/lib/validators/address-corelogic.validator.d.ts.map +1 -0
  602. package/lib/validators/at-least-one-enabled.validator.d.ts.map +1 -0
  603. package/lib/validators/at-least-one.validator.d.ts.map +1 -0
  604. package/lib/validators/autocomplete.validator.d.ts.map +1 -0
  605. package/lib/validators/conditional.validator.d.ts.map +1 -0
  606. package/lib/validators/current-fin-year.validator.d.ts.map +1 -0
  607. package/lib/validators/date-range.validator.d.ts.map +1 -0
  608. package/lib/validators/fields-sum.validator.d.ts.map +1 -0
  609. package/lib/validators/file.validator.d.ts.map +1 -0
  610. package/lib/validators/index.d.ts.map +1 -0
  611. package/lib/validators/min-date/messages.enum.d.ts.map +1 -0
  612. package/lib/validators/min-date/min-date.validator.d.ts.map +1 -0
  613. package/lib/validators/password-match.validator.d.ts.map +1 -0
  614. package/lib/validators/password.validator.d.ts.map +1 -0
  615. package/lib/validators/phone-number.validator.d.ts.map +1 -0
  616. package/lib/validators/required-length.validator.d.ts.map +1 -0
  617. package/package.json +1 -1
  618. package/public-api.d.ts.map +1 -0
  619. package/taxtank-core.d.ts.map +1 -0
@@ -1,5 +1,6 @@
1
1
  import { Collection } from './collection';
2
2
  import { AllocationRuleTypeEnum } from '../db/Enums';
3
+ import { CollectionDictionary } from './collection-dictionary';
3
4
  export class AllocationRuleCollection extends Collection {
4
5
  getExpense() {
5
6
  return this.filterBy('type', AllocationRuleTypeEnum.EXPENSE);
@@ -10,5 +11,17 @@ export class AllocationRuleCollection extends Collection {
10
11
  getTransfer() {
11
12
  return this.filterBy('type', AllocationRuleTypeEnum.TRANSFER);
12
13
  }
14
+ /**
15
+ * Get dictionary where key is bank transaction id and value is collection of matched rules.
16
+ * Group by this way for better performance
17
+ * @TODO Alex: break bank transactions by pagination in case of bad performance
18
+ */
19
+ groupByBankTransaction(bankTransactions) {
20
+ const rulesByBankTransaction = new CollectionDictionary(new AllocationRuleCollection([]));
21
+ bankTransactions.toArray().forEach((bankTransaction) => {
22
+ rulesByBankTransaction.add(bankTransaction.id, this.filter((rule) => rule.matchBankTransaction(bankTransaction)));
23
+ });
24
+ return rulesByBankTransaction;
25
+ }
13
26
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvYWxsb2NhdGlvbi1ydWxlLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFVBQTBCO0lBQ3RFLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBBbGxvY2F0aW9uUnVsZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvblJ1bGVDb2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxBbGxvY2F0aW9uUnVsZT4ge1xuICBnZXRFeHBlbnNlKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckJ5KCd0eXBlJywgQWxsb2NhdGlvblJ1bGVUeXBlRW51bS5FWFBFTlNFKTtcbiAgfVxuXG4gIGdldEluY29tZSgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJCeSgndHlwZScsIEFsbG9jYXRpb25SdWxlVHlwZUVudW0uSU5DT01FKTtcbiAgfVxuXG4gIGdldFRyYW5zZmVyKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckJ5KCd0eXBlJywgQWxsb2NhdGlvblJ1bGVUeXBlRW51bS5UUkFOU0ZFUik7XG4gIH1cbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvYWxsb2NhdGlvbi1ydWxlLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHL0QsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFVBQTBCO0lBQ3RFLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxzQkFBc0IsQ0FBQyxnQkFBMkM7UUFDaEUsTUFBTSxzQkFBc0IsR0FBbUQsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZ0MsRUFBRSxFQUFFO1lBQ3RFLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BJLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9jb2xsZWN0aW9uJztcbmltcG9ydCB7IEFsbG9jYXRpb25SdWxlLCBCYW5rVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGVUeXBlRW51bSB9IGZyb20gJy4uL2RiL0VudW1zJztcbmltcG9ydCB7IENvbGxlY3Rpb25EaWN0aW9uYXJ5IH0gZnJvbSAnLi9jb2xsZWN0aW9uLWRpY3Rpb25hcnknO1xuaW1wb3J0IHsgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4vYmFuay10cmFuc2FjdGlvbi5jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEFsbG9jYXRpb25SdWxlQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248QWxsb2NhdGlvblJ1bGU+IHtcbiAgZ2V0RXhwZW5zZSgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJCeSgndHlwZScsIEFsbG9jYXRpb25SdWxlVHlwZUVudW0uRVhQRU5TRSk7XG4gIH1cblxuICBnZXRJbmNvbWUoKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQnkoJ3R5cGUnLCBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLklOQ09NRSk7XG4gIH1cblxuICBnZXRUcmFuc2ZlcigpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJCeSgndHlwZScsIEFsbG9jYXRpb25SdWxlVHlwZUVudW0uVFJBTlNGRVIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkaWN0aW9uYXJ5IHdoZXJlIGtleSBpcyBiYW5rIHRyYW5zYWN0aW9uIGlkIGFuZCB2YWx1ZSBpcyBjb2xsZWN0aW9uIG9mIG1hdGNoZWQgcnVsZXMuXG4gICAqIEdyb3VwIGJ5IHRoaXMgd2F5IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2VcbiAgICogQFRPRE8gQWxleDogYnJlYWsgYmFuayB0cmFuc2FjdGlvbnMgYnkgcGFnaW5hdGlvbiBpbiBjYXNlIG9mIGJhZCBwZXJmb3JtYW5jZVxuICAgKi9cbiAgZ3JvdXBCeUJhbmtUcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb25zOiBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKTogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QWxsb2NhdGlvblJ1bGVDb2xsZWN0aW9uPiB7XG4gICAgY29uc3QgcnVsZXNCeUJhbmtUcmFuc2FjdGlvbjogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QWxsb2NhdGlvblJ1bGVDb2xsZWN0aW9uPiA9IG5ldyBDb2xsZWN0aW9uRGljdGlvbmFyeShuZXcgQWxsb2NhdGlvblJ1bGVDb2xsZWN0aW9uKFtdKSk7XG5cbiAgICBiYW5rVHJhbnNhY3Rpb25zLnRvQXJyYXkoKS5mb3JFYWNoKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgcnVsZXNCeUJhbmtUcmFuc2FjdGlvbi5hZGQoYmFua1RyYW5zYWN0aW9uLmlkLCB0aGlzLmZpbHRlcigocnVsZTogQWxsb2NhdGlvblJ1bGUpID0+IHJ1bGUubWF0Y2hCYW5rVHJhbnNhY3Rpb24oYmFua1RyYW5zYWN0aW9uKSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJ1bGVzQnlCYW5rVHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
@@ -202,6 +202,9 @@ export class ChartAccounts extends ChartAccountsBase {
202
202
  isTaxable() {
203
203
  return !this.isNRAS() && this.isWorkIncome();
204
204
  }
205
+ isTransfer() {
206
+ return this.id === ChartAccountsListEnum.TRANSFER;
207
+ }
205
208
  }
206
209
  /**
207
210
  * Australian GST percent value (VAT)
@@ -221,4 +224,4 @@ __decorate([
221
224
  Transform(() => null, { toPlainOnly: true }),
222
225
  Expose()
223
226
  ], ChartAccounts.prototype, "values", void 0);
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxJQUFJLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkcsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLG1DQUFtQyxFQUNyRiwrQkFBK0IsRUFBRSxxQ0FBcUMsRUFBRSxtQ0FBbUMsRUFDM0csNEJBQTRCLEVBQzdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFN0YsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFtQmxEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJ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QXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hELENBQUM7O0FBaFBEOztHQUVHO0FBQ0ksc0JBQVEsR0FBRyxHQUFHLENBQUM7QUFDZiw0QkFBYyxHQUFHLEdBQUcsQ0FBQztBQUNyQix3QkFBVSxHQUFHLEVBQUUsQ0FBQztBQUd2QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzs4Q0FDSDtBQUc5QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpREFDRTtBQUszQjtJQUhULElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM5QixTQUFTLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDNUMsTUFBTSxFQUFFOzZDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXJ0QWNjb3VudHMgYXMgQ2hhcnRBY2NvdW50c0Jhc2UgfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMnO1xyXG5pbXBvcnQgeyBUeXBlLCBUcmFuc2Zvcm0sIEV4cG9zZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0hlYWRpbmcgfSBmcm9tICcuL2NoYXJ0LWFjY291bnRzLWhlYWRpbmcnO1xyXG5pbXBvcnQgeyBDaGFydEFjY291bnRzTWV0YUZpZWxkIH0gZnJvbSAnLi9jaGFydC1hY2NvdW50cy1tZXRhLWZpZWxkJztcclxuaW1wb3J0IHtcclxuICBDaGFydEFjY291bnRzTGlzdEVudW0sIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0sIENoYXJ0QWNjb3VudHNIZWFkaW5nVmVoaWNsZUxpc3RFbnVtLFxyXG4gIENoYXJ0QWNjb3VudHNIZWFkaW5nVGF4YWJsZUVudW0sIENoYXJ0QWNjb3VudHNIZWFkaW5nVGF4RGVkdWN0aWJsZUVudW0sIENoYXJ0QWNjb3VudHNTYWxhcnlJbmNsdWRlZExpc3RFbnVtLFxyXG4gIENoYXJ0QWNjb3VudHNIZWFkaW5nTGlzdEVudW1cclxufSBmcm9tICcuLi8uLi9kYi9FbnVtcyc7XHJcbmltcG9ydCB7IENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMgfSBmcm9tICcuL2NoYXJ0LWFjY291bnRzLWNhdGVnb3JpZXMuY29uc3QnO1xyXG5pbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEZpbmFuY2lhbFllYXIgfSBmcm9tICcuLi9maW5hbmNpYWwteWVhcic7XHJcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNWYWx1ZSB9IGZyb20gJy4vY2hhcnQtYWNjb3VudHMtdmFsdWUnO1xyXG5pbXBvcnQge0NoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtfSBmcm9tICcuL2NoYXJ0LWFjY291bnRzLXRheC1sYWJlbHMuZW51bSc7XHJcbmltcG9ydCB7ZW51bVRvTGlzdH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2VudW0tdG8tbGlzdCc7XHJcbmltcG9ydCB7IENIQVJUX0FDQ09VTlRTX1ZBTFVFUyB9IGZyb20gJy4uLy4uL2RiLXN0YXRpYy9jaGFydC1hY2NvdW50cy9jaGFydC1hY2NvdW50cy12YWx1ZXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIENoYXJ0QWNjb3VudHMgZXh0ZW5kcyBDaGFydEFjY291bnRzQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQXVzdHJhbGlhbiBHU1QgcGVyY2VudCB2YWx1ZSAoVkFUKVxyXG4gICAqL1xyXG4gIHN0YXRpYyBHU1RSYXRpbyA9IDAuMTtcclxuICBzdGF0aWMgR1NUQ29lZmZpY2llbnQgPSAxLjE7XHJcbiAgc3RhdGljIEdTVFBlcmNlbnQgPSAxMDtcclxuXHJcbiAgQFR5cGUoKCkgPT4gQ2hhcnRBY2NvdW50c0hlYWRpbmcpXHJcbiAgaGVhZGluZzogQ2hhcnRBY2NvdW50c0hlYWRpbmc7XHJcblxyXG4gIEBUeXBlKCgpID0+IENoYXJ0QWNjb3VudHNNZXRhRmllbGQpXHJcbiAgbWV0YUZpZWxkczogQ2hhcnRBY2NvdW50c01ldGFGaWVsZFtdO1xyXG5cclxuICBAVHlwZSgoKSA9PiBDaGFydEFjY291bnRzVmFsdWUpXHJcbiAgQFRyYW5zZm9ybSgoe29ian0pID0+IENIQVJUX0FDQ09VTlRTX1ZBTFVFUy5nZXQob2JqLmlkKS50b0FycmF5KCksIHsgdG9DbGFzc09ubHk6IHRydWUgfSlcclxuICBAVHJhbnNmb3JtKCgpID0+IG51bGwsIHsgdG9QbGFpbk9ubHk6IHRydWUgfSlcclxuICBARXhwb3NlKCkgdmFsdWVzOiBDaGFydEFjY291bnRzVmFsdWVbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIG5hbWUgYXMgc3RyaW5nXHJcbiAgICovXHJcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm5hbWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpZCBpcyByZWxhdGVkIGZvciAnS21zIHRyYXZlbGxlZCBmb3Igd29yaycgY2F0ZWdvcnlcclxuICAgKi9cclxuICBpc0ttc0ZvcldvcmsoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLktMTVNfVFJBVkVMTEVEX0ZPUl9XT1JLO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaWQgaXMgcmVsYXRlZCBmb3IgJ0ttcyB0cmF2ZWxsZWQgZm9yIHNvbGUnIGNhdGVnb3J5XHJcbiAgICovXHJcbiAgaXNLbXNGb3JTb2xlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5LTE1TX1RSQVZFTExFRDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGFjY291bnRzIGlkIGlzIHJlbGF0ZWQgZm9yIEtNcyBjYXRlZ29yeSByZWxhdGVkIHRvIHBhc3NlZCB0YW5rIHR5cGVcclxuICAgKi9cclxuICBpc0tNc0J5VGFua1R5cGUodGFua1R5cGU6IFRhbmtUeXBlRW51bSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0YW5rVHlwZSkge1xyXG4gICAgICBjYXNlIFRhbmtUeXBlRW51bS5XT1JLOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzS21zRm9yV29yaygpO1xyXG4gICAgICBjYXNlIFRhbmtUeXBlRW51bS5TT0xFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzS21zRm9yU29sZSgpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHNwZWNpYWwgdHlwZSB1c2VkIGZvciBqdXN0IHByZS1wYXlpbmcgdGF4IHRvIHRoZSBBVE8sIHVzZXMgb24gdGF4IHN1bW1hcnlcclxuICAgKi9cclxuICBpc05SQVMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlRBWF9PRkZTRVRTX05fUl9BX1M7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpZCBpcyByZWxhdGVkIGZvciAnSW50ZXJlc3Qgb24gTG9hbicgY2F0ZWdvcnlcclxuICAgKi9cclxuICBpc0ludGVyZXN0T25Mb2FuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5JTlRFUkVTVF9PTl9MT0FOO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaWQgaXMgcmVsYXRlZCBmb3IgJ01vdG9yIFZlaGljbGVzJyBjYXRlZ29yeVxyXG4gICAqL1xyXG4gIGlzVmVoaWNsZXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlZFSElDTEVTO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaWQgaXMgcmVsYXRlZCBmb3IgJ0ludGVyZXN0IEVhcm5lZCcgY2F0ZWdvcnlcclxuICAgKi9cclxuICBpc0ludGVyZXN0RWFybmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5JTlRFUkVTVF9FQVJORUQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpZCBpcyByZWxhdGVkIGZvciAnVHJ1c3QgSW5jb21lJyBjYXRlZ29yeVxyXG4gICAqL1xyXG4gIGlzVHJ1c3RJbmNvbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlRSVVNUX0lOQ09NRTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlkIGlzIHJlbGF0ZWQgZm9yICdNb3RvciB2ZWhpY2xlcyAoY29tbWVyY2lhbCBjYXJzKScgY2F0ZWdvcnlcclxuICAgKi9cclxuICBpc0NvbW1lcmNpYWxWZWhpY2xlcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlkID09PSBDaGFydEFjY291bnRzTGlzdEVudW0uQ09NTUVSQ0lBTF9WRUhJQ0xFUztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlzIHdvcmsgaW5jb21lXHJcbiAgICovXHJcbiAgaXNXb3JrSW5jb21lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnkgPT09IENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uV09SS19JTkNPTUU7XHJcbiAgfVxyXG5cclxuICBpc1ZlaGljbGVFeHBlbnNlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhQ2hhcnRBY2NvdW50c0hlYWRpbmdWZWhpY2xlTGlzdEVudW1bdGhpcy5oZWFkaW5nPy5pZF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpcyBvdGhlciBpbmNvbWVcclxuICAgKi9cclxuICBpc090aGVySW5jb21lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnkgPT09IENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uT1RIRVJfSU5DT01FO1xyXG4gIH1cclxuXHJcbiAgaXNJbmNvbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQ0hBUlRfQUNDT1VOVFNfQ0FURUdPUklFUy5pbmNvbWUuaW5jbHVkZXModGhpcy5jYXRlZ29yeSk7XHJcbiAgfVxyXG5cclxuICBpc0V4cGVuc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQ0hBUlRfQUNDT1VOVFNfQ0FURUdPUklFUy5leHBlbnNlLmluY2x1ZGVzKHRoaXMuY2F0ZWdvcnkpO1xyXG4gIH1cclxuXHJcbiAgaXNQcm9wZXJ0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTLnByb3BlcnR5LmluY2x1ZGVzKHRoaXMuY2F0ZWdvcnkpO1xyXG4gIH1cclxuXHJcbiAgaXNXb3JrRXhwZW5zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBbQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5XT1JLX0VYUEVOU0UsIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uT1RIRVJfRVhQRU5TRSwgQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5XT1JLX0RFUFJFQ0lBVElPTl1cclxuICAgICAgLmluY2x1ZGVzKHRoaXMuY2F0ZWdvcnkpO1xyXG4gIH1cclxuXHJcbiAgaXNTb2xlRXhwZW5zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBbQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5TT0xFX0VYUEVOU0UsIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uU09MRV9ERVBSRUNJQVRJT05dXHJcbiAgICAgIC5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlzIHByb3BlcnR5IGV4cGVuc2VcclxuICAgKi9cclxuICBpc1Byb3BlcnR5RXhwZW5zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzUHJvcGVydHkoKSAmJiB0aGlzLmlzRXhwZW5zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaXMgcHJvcGVydHkgaW5jb21lXHJcbiAgICovXHJcbiAgaXNQcm9wZXJ0eUluY29tZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5ID09PSBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLlBST1BFUlRZX0lOQ09NRTtcclxuICB9XHJcblxyXG4gIGlzUGVyc29uYWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQ0hBUlRfQUNDT1VOVFNfQ0FURUdPUklFUy5wZXJzb25hbC5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIGlzUGVyc29uYWxFeHBlbnNlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnkgPT09IENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uUEVSU09OQUxfRVhQRU5TRTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGNhdGVnb3J5IGlzIGRlcHJlY2lhdGlvblxyXG4gICAqL1xyXG4gIGlzRGVwcmVjaWF0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMuZGVwcmVjaWF0aW9uLmluY2x1ZGVzKHRoaXMuY2F0ZWdvcnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdHJhbnNhY3Rpb24gY2hhcnQgYWNjb3VudCBpcyB3b3JrIHJlbGF0ZWQgY2FyIGV4cGVuc2VzXHJcbiAgICovXHJcbiAgaXNWZWhpY2xlTG9hbkV4cGVuc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlZFSElDTEVfTE9BTl9JTlRFUkVTVCB8fCB0aGlzLmlkID09PSBDaGFydEFjY291bnRzTGlzdEVudW0uVkVISUNMRV9MT0FOX1BSSU5DSVBBTDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjaGFydCBhY2NvdW50cyB2YWx1ZSBmb3IgY3VycmVudCBmaW5hbmNpYWwgeWVhclxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnRZZWFyVmFsdWUoKTogQ2hhcnRBY2NvdW50c1ZhbHVlIHtcclxuICAgIHJldHVybiB0aGlzLmdldFZhbHVlQnlZZWFyKG5ldyBGaW5hbmNpYWxZZWFyKCkueWVhcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY2hhcnQgYWNjb3VudHMgdmFsdWUgYnkgZmluYW5jaWFsIHllYXJcclxuICAgKi9cclxuICBnZXRWYWx1ZUJ5WWVhcih5ZWFyOiBudW1iZXIpOiBDaGFydEFjY291bnRzVmFsdWUge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmZpbmQoKHZhbHVlOiBDaGFydEFjY291bnRzVmFsdWUpOiBib29sZWFuID0+IHZhbHVlLmZpbmFuY2lhbFllYXIgPT09IHllYXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogbm8gd2F5IHRvIGNoZWNrIGhvdyBtdWNoIHVzZWQgZm9yIHdvcmsvc29sZSwgc28gd2UgbGV0IHVzZXIgYWRqdXN0IGl0XHJcbiAgICogZXhjZXB0IHZlaGljbGUgZXhwZW5zZSwgd2hpY2ggaXMgZXF1YWwgdG8gdmVoaWNsZUNsYWltLndvcmtVc2FnZSBhbmQgcGVyc29uYWwsIHdoaWNoIGlzIGVxdWFsIHRvIDBcclxuICAgKi9cclxuICBpc0NsYWltUGVyY2VudEVkaXRhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmlzV29ya0V4cGVuc2UoKSB8fCB0aGlzLmlzU29sZUV4cGVuc2UoKSkgJiYgKCF0aGlzLmlzVmVoaWNsZUV4cGVuc2UoKSAmJiAhdGhpcy5pc1BlcnNvbmFsRXhwZW5zZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBsYWJlbCBmb3IgdHJhbnNhY3Rpb24gdGF4IGZpZWxkIGRlcGVuZGVkIG9uIHNlbGVjdGVkIGNoYXJ0IGFjY291bnQuXHJcbiAgICogdGF4IHR5cGUgZGVwZW5kcyBvbiBjaGFydCBhY2NvdW50IGhlYWRpbmcgb3IgY2F0ZWdvcnkuXHJcbiAgICovXHJcbiAgZ2V0VGF4TGFiZWwoKTogQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0ge1xyXG4gICAgLy8gZ2V0IHNpbXBsZSBhcnJheSBvZiBpZHMgZnJvbSBlbnVtIHdpdGggdGF4YWJsZSBjaGFydCBhY2NvdW50cyBoZWFkaW5nc1xyXG4gICAgY29uc3QgdGF4YWJsZUNBSGVhZGluZ3NJZHM6IG51bWJlcltdID0gZW51bVRvTGlzdChDaGFydEFjY291bnRzSGVhZGluZ1RheGFibGVFbnVtKVxyXG4gICAgICAubWFwKChpdGVtOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkgPT4gaXRlbS52YWx1ZSk7XHJcbiAgICAvLyBnZXQgc2ltcGxlIGFycmF5IG9mIGlkcyBmcm9tIGVudW0gd2l0aCB0YXgtZGVkdWN0aWJsZSBjaGFydCBhY2NvdW50cyBoZWFkaW5nc1xyXG4gICAgY29uc3QgZGVkdWN0aWJsZUNBSGVhZGluZ3NJZHM6IG51bWJlcltdID0gZW51bVRvTGlzdChDaGFydEFjY291bnRzSGVhZGluZ1RheERlZHVjdGlibGVFbnVtKVxyXG4gICAgICAubWFwKChpdGVtOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkgPT4gaXRlbS52YWx1ZSk7XHJcblxyXG4gICAgLy8gY2hlY2sgaWYgb25lIG9mIGlkcyBhcnJheXMgaW5jbHVkZXMgY3VycmVudCBjaGFydCBhY2NvdW50cyBoZWFkaW5nIGlkIGFuZCBzZXQgdGF4IGxhYmVsXHJcbiAgICAvLyBvdGhlcndpc2UgbGFiZWwgaXMgZW1wdHkgZm9yIHRoaXMgY2xhc3NcclxuICAgIHN3aXRjaCAodHJ1ZSkge1xyXG4gICAgICBjYXNlIHRheGFibGVDQUhlYWRpbmdzSWRzLmluY2x1ZGVzKHRoaXMuaGVhZGluZz8uaWQpOlxyXG4gICAgICAgIHJldHVybiBDaGFydEFjY291bnRzVGF4TGFiZWxzRW51bS5UQVhfUEFJRDtcclxuICAgICAgY2FzZSBkZWR1Y3RpYmxlQ0FIZWFkaW5nc0lkcy5pbmNsdWRlcyh0aGlzLmhlYWRpbmc/LmlkKTpcclxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX0RFRFVDVEVEO1xyXG4gICAgICBjYXNlIENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMud29ya0luY29tZS5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTpcclxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX1dJVEhIRUxEO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNFVFAoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWFkaW5nLmlkID09PSBDaGFydEFjY291bnRzSGVhZGluZ0xpc3RFbnVtLkVUUFxyXG4gIH1cclxuXHJcbiAgaXNTYWxhcnkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlNBTEFSWV9PUl9XQUdFUztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoYXJ0IGFjY291bnRzIGluY2x1ZGVkIGluIHNhbGFyeSwgbGlrZSB0aXBzIG9yIGFsbG93YW5jZVxyXG4gICAqL1xyXG4gIGlzU2FsYXJ5SW5jbHVkZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCBpbiBDaGFydEFjY291bnRzU2FsYXJ5SW5jbHVkZWRMaXN0RW51bTtcclxuICB9XHJcblxyXG4gIGlzUHJvcGVydHlDYXBpdGFsV29ya3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yeSA9PT0gQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5QUk9QRVJUWV9DQVBJVEFMX1dPUktTXHJcbiAgfVxyXG5cclxuICBpc1RheGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gICF0aGlzLmlzTlJBUygpICYmIHRoaXMuaXNXb3JrSW5jb21lKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxJQUFJLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkcsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLG1DQUFtQyxFQUNyRiwrQkFBK0IsRUFBRSxxQ0FBcUMsRUFBRSxtQ0FBbUMsRUFDM0csNEJBQTRCLEVBQzdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFN0YsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFtQmxEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJ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QXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDOztBQXBQRDs7R0FFRztBQUNJLHNCQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ2YsNEJBQWMsR0FBRyxHQUFHLENBQUM7QUFDckIsd0JBQVUsR0FBRyxFQUFFLENBQUM7QUFHdkI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7OENBQ0g7QUFHOUI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aURBQ0U7QUFLM0I7SUFIVCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDOUIsU0FBUyxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzVDLE1BQU0sRUFBRTs2Q0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFydEFjY291bnRzIGFzIENoYXJ0QWNjb3VudHNCYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzJztcclxuaW1wb3J0IHsgVHlwZSwgVHJhbnNmb3JtLCBFeHBvc2UgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XHJcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNIZWFkaW5nIH0gZnJvbSAnLi9jaGFydC1hY2NvdW50cy1oZWFkaW5nJztcclxuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c01ldGFGaWVsZCB9IGZyb20gJy4vY2hhcnQtYWNjb3VudHMtbWV0YS1maWVsZCc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhcnRBY2NvdW50c0xpc3RFbnVtLCBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLCBDaGFydEFjY291bnRzSGVhZGluZ1ZlaGljbGVMaXN0RW51bSxcclxuICBDaGFydEFjY291bnRzSGVhZGluZ1RheGFibGVFbnVtLCBDaGFydEFjY291bnRzSGVhZGluZ1RheERlZHVjdGlibGVFbnVtLCBDaGFydEFjY291bnRzU2FsYXJ5SW5jbHVkZWRMaXN0RW51bSxcclxuICBDaGFydEFjY291bnRzSGVhZGluZ0xpc3RFbnVtXHJcbn0gZnJvbSAnLi4vLi4vZGIvRW51bXMnO1xyXG5pbXBvcnQgeyBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTIH0gZnJvbSAnLi9jaGFydC1hY2NvdW50cy1jYXRlZ29yaWVzLmNvbnN0JztcclxuaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvdGFuay10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBGaW5hbmNpYWxZZWFyIH0gZnJvbSAnLi4vZmluYW5jaWFsLXllYXInO1xyXG5pbXBvcnQgeyBDaGFydEFjY291bnRzVmFsdWUgfSBmcm9tICcuL2NoYXJ0LWFjY291bnRzLXZhbHVlJztcclxuaW1wb3J0IHtDaGFydEFjY291bnRzVGF4TGFiZWxzRW51bX0gZnJvbSAnLi9jaGFydC1hY2NvdW50cy10YXgtbGFiZWxzLmVudW0nO1xyXG5pbXBvcnQge2VudW1Ub0xpc3R9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9lbnVtLXRvLWxpc3QnO1xyXG5pbXBvcnQgeyBDSEFSVF9BQ0NPVU5UU19WQUxVRVMgfSBmcm9tICcuLi8uLi9kYi1zdGF0aWMvY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMtdmFsdWVzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGFydEFjY291bnRzIGV4dGVuZHMgQ2hhcnRBY2NvdW50c0Jhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEF1c3RyYWxpYW4gR1NUIHBlcmNlbnQgdmFsdWUgKFZBVClcclxuICAgKi9cclxuICBzdGF0aWMgR1NUUmF0aW8gPSAwLjE7XHJcbiAgc3RhdGljIEdTVENvZWZmaWNpZW50ID0gMS4xO1xyXG4gIHN0YXRpYyBHU1RQZXJjZW50ID0gMTA7XHJcblxyXG4gIEBUeXBlKCgpID0+IENoYXJ0QWNjb3VudHNIZWFkaW5nKVxyXG4gIGhlYWRpbmc6IENoYXJ0QWNjb3VudHNIZWFkaW5nO1xyXG5cclxuICBAVHlwZSgoKSA9PiBDaGFydEFjY291bnRzTWV0YUZpZWxkKVxyXG4gIG1ldGFGaWVsZHM6IENoYXJ0QWNjb3VudHNNZXRhRmllbGRbXTtcclxuXHJcbiAgQFR5cGUoKCkgPT4gQ2hhcnRBY2NvdW50c1ZhbHVlKVxyXG4gIEBUcmFuc2Zvcm0oKHtvYmp9KSA9PiBDSEFSVF9BQ0NPVU5UU19WQUxVRVMuZ2V0KG9iai5pZCkudG9BcnJheSgpLCB7IHRvQ2xhc3NPbmx5OiB0cnVlIH0pXHJcbiAgQFRyYW5zZm9ybSgoKSA9PiBudWxsLCB7IHRvUGxhaW5Pbmx5OiB0cnVlIH0pXHJcbiAgQEV4cG9zZSgpIHZhbHVlczogQ2hhcnRBY2NvdW50c1ZhbHVlW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBuYW1lIGFzIHN0cmluZ1xyXG4gICAqL1xyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaWQgaXMgcmVsYXRlZCBmb3IgJ0ttcyB0cmF2ZWxsZWQgZm9yIHdvcmsnIGNhdGVnb3J5XHJcbiAgICovXHJcbiAgaXNLbXNGb3JXb3JrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5LTE1TX1RSQVZFTExFRF9GT1JfV09SSztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlkIGlzIHJlbGF0ZWQgZm9yICdLbXMgdHJhdmVsbGVkIGZvciBzb2xlJyBjYXRlZ29yeVxyXG4gICAqL1xyXG4gIGlzS21zRm9yU29sZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlkID09PSBDaGFydEFjY291bnRzTGlzdEVudW0uS0xNU19UUkFWRUxMRUQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBhY2NvdW50cyBpZCBpcyByZWxhdGVkIGZvciBLTXMgY2F0ZWdvcnkgcmVsYXRlZCB0byBwYXNzZWQgdGFuayB0eXBlXHJcbiAgICovXHJcbiAgaXNLTXNCeVRhbmtUeXBlKHRhbmtUeXBlOiBUYW5rVHlwZUVudW0pOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAodGFua1R5cGUpIHtcclxuICAgICAgY2FzZSBUYW5rVHlwZUVudW0uV09SSzpcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ttc0ZvcldvcmsoKTtcclxuICAgICAgY2FzZSBUYW5rVHlwZUVudW0uU09MRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ttc0ZvclNvbGUoKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzcGVjaWFsIHR5cGUgdXNlZCBmb3IganVzdCBwcmUtcGF5aW5nIHRheCB0byB0aGUgQVRPLCB1c2VzIG9uIHRheCBzdW1tYXJ5XHJcbiAgICovXHJcbiAgaXNOUkFTKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5UQVhfT0ZGU0VUU19OX1JfQV9TO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaWQgaXMgcmVsYXRlZCBmb3IgJ0ludGVyZXN0IG9uIExvYW4nIGNhdGVnb3J5XHJcbiAgICovXHJcbiAgaXNJbnRlcmVzdE9uTG9hbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlkID09PSBDaGFydEFjY291bnRzTGlzdEVudW0uSU5URVJFU1RfT05fTE9BTjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlkIGlzIHJlbGF0ZWQgZm9yICdNb3RvciBWZWhpY2xlcycgY2F0ZWdvcnlcclxuICAgKi9cclxuICBpc1ZlaGljbGVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5WRUhJQ0xFUztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlkIGlzIHJlbGF0ZWQgZm9yICdJbnRlcmVzdCBFYXJuZWQnIGNhdGVnb3J5XHJcbiAgICovXHJcbiAgaXNJbnRlcmVzdEVhcm5lZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlkID09PSBDaGFydEFjY291bnRzTGlzdEVudW0uSU5URVJFU1RfRUFSTkVEO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaWQgaXMgcmVsYXRlZCBmb3IgJ1RydXN0IEluY29tZScgY2F0ZWdvcnlcclxuICAgKi9cclxuICBpc1RydXN0SW5jb21lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5UUlVTVF9JTkNPTUU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpZCBpcyByZWxhdGVkIGZvciAnTW90b3IgdmVoaWNsZXMgKGNvbW1lcmNpYWwgY2FycyknIGNhdGVnb3J5XHJcbiAgICovXHJcbiAgaXNDb21tZXJjaWFsVmVoaWNsZXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLkNPTU1FUkNJQUxfVkVISUNMRVM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpcyB3b3JrIGluY29tZVxyXG4gICAqL1xyXG4gIGlzV29ya0luY29tZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5ID09PSBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLldPUktfSU5DT01FO1xyXG4gIH1cclxuXHJcbiAgaXNWZWhpY2xlRXhwZW5zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIUNoYXJ0QWNjb3VudHNIZWFkaW5nVmVoaWNsZUxpc3RFbnVtW3RoaXMuaGVhZGluZz8uaWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY2hhcnQgYWNjb3VudHMgaXMgb3RoZXIgaW5jb21lXHJcbiAgICovXHJcbiAgaXNPdGhlckluY29tZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5ID09PSBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLk9USEVSX0lOQ09NRTtcclxuICB9XHJcblxyXG4gIGlzSW5jb21lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMuaW5jb21lLmluY2x1ZGVzKHRoaXMuY2F0ZWdvcnkpO1xyXG4gIH1cclxuXHJcbiAgaXNFeHBlbnNlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMuZXhwZW5zZS5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIGlzUHJvcGVydHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQ0hBUlRfQUNDT1VOVFNfQ0FURUdPUklFUy5wcm9wZXJ0eS5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIGlzV29ya0V4cGVuc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gW0NoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uV09SS19FWFBFTlNFLCBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLk9USEVSX0VYUEVOU0UsIENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uV09SS19ERVBSRUNJQVRJT05dXHJcbiAgICAgIC5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIGlzU29sZUV4cGVuc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gW0NoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uU09MRV9FWFBFTlNFLCBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLlNPTEVfREVQUkVDSUFUSU9OXVxyXG4gICAgICAuaW5jbHVkZXModGhpcy5jYXRlZ29yeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBpcyBwcm9wZXJ0eSBleHBlbnNlXHJcbiAgICovXHJcbiAgaXNQcm9wZXJ0eUV4cGVuc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1Byb3BlcnR5KCkgJiYgdGhpcy5pc0V4cGVuc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNoYXJ0IGFjY291bnRzIGlzIHByb3BlcnR5IGluY29tZVxyXG4gICAqL1xyXG4gIGlzUHJvcGVydHlJbmNvbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yeSA9PT0gQ2hhcnRBY2NvdW50c0NhdGVnb3J5RW51bS5QUk9QRVJUWV9JTkNPTUU7XHJcbiAgfVxyXG5cclxuICBpc1BlcnNvbmFsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMucGVyc29uYWwuaW5jbHVkZXModGhpcy5jYXRlZ29yeSk7XHJcbiAgfVxyXG5cclxuICBpc1BlcnNvbmFsRXhwZW5zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5ID09PSBDaGFydEFjY291bnRzQ2F0ZWdvcnlFbnVtLlBFUlNPTkFMX0VYUEVOU0U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjaGFydCBhY2NvdW50cyBjYXRlZ29yeSBpcyBkZXByZWNpYXRpb25cclxuICAgKi9cclxuICBpc0RlcHJlY2lhdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTLmRlcHJlY2lhdGlvbi5pbmNsdWRlcyh0aGlzLmNhdGVnb3J5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRyYW5zYWN0aW9uIGNoYXJ0IGFjY291bnQgaXMgd29yayByZWxhdGVkIGNhciBleHBlbnNlc1xyXG4gICAqL1xyXG4gIGlzVmVoaWNsZUxvYW5FeHBlbnNlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5WRUhJQ0xFX0xPQU5fSU5URVJFU1QgfHwgdGhpcy5pZCA9PT0gQ2hhcnRBY2NvdW50c0xpc3RFbnVtLlZFSElDTEVfTE9BTl9QUklOQ0lQQUw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY2hhcnQgYWNjb3VudHMgdmFsdWUgZm9yIGN1cnJlbnQgZmluYW5jaWFsIHllYXJcclxuICAgKi9cclxuICBnZXRDdXJyZW50WWVhclZhbHVlKCk6IENoYXJ0QWNjb3VudHNWYWx1ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUJ5WWVhcihuZXcgRmluYW5jaWFsWWVhcigpLnllYXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGNoYXJ0IGFjY291bnRzIHZhbHVlIGJ5IGZpbmFuY2lhbCB5ZWFyXHJcbiAgICovXHJcbiAgZ2V0VmFsdWVCeVllYXIoeWVhcjogbnVtYmVyKTogQ2hhcnRBY2NvdW50c1ZhbHVlIHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlcy5maW5kKCh2YWx1ZTogQ2hhcnRBY2NvdW50c1ZhbHVlKTogYm9vbGVhbiA9PiB2YWx1ZS5maW5hbmNpYWxZZWFyID09PSB5ZWFyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG5vIHdheSB0byBjaGVjayBob3cgbXVjaCB1c2VkIGZvciB3b3JrL3NvbGUsIHNvIHdlIGxldCB1c2VyIGFkanVzdCBpdFxyXG4gICAqIGV4Y2VwdCB2ZWhpY2xlIGV4cGVuc2UsIHdoaWNoIGlzIGVxdWFsIHRvIHZlaGljbGVDbGFpbS53b3JrVXNhZ2UgYW5kIHBlcnNvbmFsLCB3aGljaCBpcyBlcXVhbCB0byAwXHJcbiAgICovXHJcbiAgaXNDbGFpbVBlcmNlbnRFZGl0YWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5pc1dvcmtFeHBlbnNlKCkgfHwgdGhpcy5pc1NvbGVFeHBlbnNlKCkpICYmICghdGhpcy5pc1ZlaGljbGVFeHBlbnNlKCkgJiYgIXRoaXMuaXNQZXJzb25hbEV4cGVuc2UoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgbGFiZWwgZm9yIHRyYW5zYWN0aW9uIHRheCBmaWVsZCBkZXBlbmRlZCBvbiBzZWxlY3RlZCBjaGFydCBhY2NvdW50LlxyXG4gICAqIHRheCB0eXBlIGRlcGVuZHMgb24gY2hhcnQgYWNjb3VudCBoZWFkaW5nIG9yIGNhdGVnb3J5LlxyXG4gICAqL1xyXG4gIGdldFRheExhYmVsKCk6IENoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtIHtcclxuICAgIC8vIGdldCBzaW1wbGUgYXJyYXkgb2YgaWRzIGZyb20gZW51bSB3aXRoIHRheGFibGUgY2hhcnQgYWNjb3VudHMgaGVhZGluZ3NcclxuICAgIGNvbnN0IHRheGFibGVDQUhlYWRpbmdzSWRzOiBudW1iZXJbXSA9IGVudW1Ub0xpc3QoQ2hhcnRBY2NvdW50c0hlYWRpbmdUYXhhYmxlRW51bSlcclxuICAgICAgLm1hcCgoaXRlbTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH0pID0+IGl0ZW0udmFsdWUpO1xyXG4gICAgLy8gZ2V0IHNpbXBsZSBhcnJheSBvZiBpZHMgZnJvbSBlbnVtIHdpdGggdGF4LWRlZHVjdGlibGUgY2hhcnQgYWNjb3VudHMgaGVhZGluZ3NcclxuICAgIGNvbnN0IGRlZHVjdGlibGVDQUhlYWRpbmdzSWRzOiBudW1iZXJbXSA9IGVudW1Ub0xpc3QoQ2hhcnRBY2NvdW50c0hlYWRpbmdUYXhEZWR1Y3RpYmxlRW51bSlcclxuICAgICAgLm1hcCgoaXRlbTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH0pID0+IGl0ZW0udmFsdWUpO1xyXG5cclxuICAgIC8vIGNoZWNrIGlmIG9uZSBvZiBpZHMgYXJyYXlzIGluY2x1ZGVzIGN1cnJlbnQgY2hhcnQgYWNjb3VudHMgaGVhZGluZyBpZCBhbmQgc2V0IHRheCBsYWJlbFxyXG4gICAgLy8gb3RoZXJ3aXNlIGxhYmVsIGlzIGVtcHR5IGZvciB0aGlzIGNsYXNzXHJcbiAgICBzd2l0Y2ggKHRydWUpIHtcclxuICAgICAgY2FzZSB0YXhhYmxlQ0FIZWFkaW5nc0lkcy5pbmNsdWRlcyh0aGlzLmhlYWRpbmc/LmlkKTpcclxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX1BBSUQ7XHJcbiAgICAgIGNhc2UgZGVkdWN0aWJsZUNBSGVhZGluZ3NJZHMuaW5jbHVkZXModGhpcy5oZWFkaW5nPy5pZCk6XHJcbiAgICAgICAgcmV0dXJuIENoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtLlRBWF9ERURVQ1RFRDtcclxuICAgICAgY2FzZSBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTLndvcmtJbmNvbWUuaW5jbHVkZXModGhpcy5jYXRlZ29yeSk6XHJcbiAgICAgICAgcmV0dXJuIENoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtLlRBWF9XSVRISEVMRDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRVRQKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVhZGluZy5pZCA9PT0gQ2hhcnRBY2NvdW50c0hlYWRpbmdMaXN0RW51bS5FVFBcclxuICB9XHJcblxyXG4gIGlzU2FsYXJ5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5TQUxBUllfT1JfV0FHRVM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjaGFydCBhY2NvdW50cyBpbmNsdWRlZCBpbiBzYWxhcnksIGxpa2UgdGlwcyBvciBhbGxvd2FuY2VcclxuICAgKi9cclxuICBpc1NhbGFyeUluY2x1ZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgaW4gQ2hhcnRBY2NvdW50c1NhbGFyeUluY2x1ZGVkTGlzdEVudW07XHJcbiAgfVxyXG5cclxuICBpc1Byb3BlcnR5Q2FwaXRhbFdvcmtzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnkgPT09IENoYXJ0QWNjb3VudHNDYXRlZ29yeUVudW0uUFJPUEVSVFlfQ0FQSVRBTF9XT1JLU1xyXG4gIH1cclxuXHJcbiAgaXNUYXhhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICAhdGhpcy5pc05SQVMoKSAmJiB0aGlzLmlzV29ya0luY29tZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNUcmFuc2ZlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlkID09PSBDaGFydEFjY291bnRzTGlzdEVudW0uVFJBTlNGRVI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,4 +1,35 @@
1
1
  import { AllocationRuleCondition as AllocationRuleConditionBase } from '../../db/Models/transaction/allocation-rule-condition';
2
+ import { AllocationRuleConditionComparisonOperatorEnum, AllocationRuleConditionFieldEnum } from '../../db/Enums';
2
3
  export class AllocationRuleCondition extends AllocationRuleConditionBase {
4
+ matchBankTransaction(bankTransaction) {
5
+ return this.field === AllocationRuleConditionFieldEnum.AMOUNT ? this.matchBankTransactionByAmount(bankTransaction) : this.matchBankTransactionByDescription(bankTransaction);
6
+ }
7
+ matchBankTransactionByAmount(bankTransaction) {
8
+ // Amount should be compared as number
9
+ const value = +this.value;
10
+ switch (this.comparisonOperator) {
11
+ case AllocationRuleConditionComparisonOperatorEnum.EQUALS:
12
+ return bankTransaction.amount === value;
13
+ case AllocationRuleConditionComparisonOperatorEnum.EQUALS_OR_LESS:
14
+ return bankTransaction.amount <= value;
15
+ case AllocationRuleConditionComparisonOperatorEnum.EQUALS_OR_GREATER:
16
+ return bankTransaction.amount >= value;
17
+ }
18
+ return false;
19
+ }
20
+ matchBankTransactionByDescription(bankTransaction) {
21
+ // Prepare value and description for comparison
22
+ const description = bankTransaction.description.toLowerCase();
23
+ const value = this.value.trim().toLowerCase();
24
+ switch (this.comparisonOperator) {
25
+ case AllocationRuleConditionComparisonOperatorEnum.EQUALS:
26
+ return description === value;
27
+ case AllocationRuleConditionComparisonOperatorEnum.CONTAINS:
28
+ return description.includes(value);
29
+ case AllocationRuleConditionComparisonOperatorEnum.STARTS:
30
+ return description.startsWith(value);
31
+ }
32
+ return false;
33
+ }
3
34
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLWNvbmRpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvdHJhbnNhY3Rpb24vYWxsb2NhdGlvbi1ydWxlLWNvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLElBQUksMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUUvSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsMkJBQTJCO0NBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGVDb25kaXRpb24gYXMgQWxsb2NhdGlvblJ1bGVDb25kaXRpb25CYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3RyYW5zYWN0aW9uL2FsbG9jYXRpb24tcnVsZS1jb25kaXRpb24nO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvblJ1bGVDb25kaXRpb24gZXh0ZW5kcyBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkJhc2Uge1xufVxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLWNvbmRpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvdHJhbnNhY3Rpb24vYWxsb2NhdGlvbi1ydWxlLWNvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLElBQUksMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUUvSCxPQUFPLEVBQUUsNkNBQTZDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsMkJBQTJCO0lBQ3RFLG9CQUFvQixDQUFDLGVBQWdDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9LLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxlQUFnQztRQUMzRCxzQ0FBc0M7UUFDdEMsTUFBTSxLQUFLLEdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRWxDLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQy9CLEtBQUssNkNBQTZDLENBQUMsTUFBTTtnQkFDdkQsT0FBTyxlQUFlLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQztZQUMxQyxLQUFLLDZDQUE2QyxDQUFDLGNBQWM7Z0JBQy9ELE9BQU8sZUFBZSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7WUFDekMsS0FBSyw2Q0FBNkMsQ0FBQyxpQkFBaUI7Z0JBQ2xFLE9BQU8sZUFBZSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7U0FDMUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxpQ0FBaUMsQ0FBQyxlQUFnQztRQUNoRSwrQ0FBK0M7UUFDL0MsTUFBTSxXQUFXLEdBQVcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RSxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXRELFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQy9CLEtBQUssNkNBQTZDLENBQUMsTUFBTTtnQkFDdkQsT0FBTyxXQUFXLEtBQUssS0FBSyxDQUFDO1lBQy9CLEtBQUssNkNBQTZDLENBQUMsUUFBUTtnQkFDekQsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLEtBQUssNkNBQTZDLENBQUMsTUFBTTtnQkFDdkQsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbiBhcyBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkJhc2UgfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvdHJhbnNhY3Rpb24vYWxsb2NhdGlvbi1ydWxlLWNvbmRpdGlvbic7XG5pbXBvcnQgeyBCYW5rVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9iYW5rJztcbmltcG9ydCB7IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uQ29tcGFyaXNvbk9wZXJhdG9yRW51bSwgQWxsb2NhdGlvblJ1bGVDb25kaXRpb25GaWVsZEVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcyc7XG5cbmV4cG9ydCBjbGFzcyBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbiBleHRlbmRzIEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uQmFzZSB7XG4gIG1hdGNoQmFua1RyYW5zYWN0aW9uKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQgPT09IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uRmllbGRFbnVtLkFNT1VOVCA/IHRoaXMubWF0Y2hCYW5rVHJhbnNhY3Rpb25CeUFtb3VudChiYW5rVHJhbnNhY3Rpb24pIDogdGhpcy5tYXRjaEJhbmtUcmFuc2FjdGlvbkJ5RGVzY3JpcHRpb24oYmFua1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIG1hdGNoQmFua1RyYW5zYWN0aW9uQnlBbW91bnQoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuIHtcbiAgICAvLyBBbW91bnQgc2hvdWxkIGJlIGNvbXBhcmVkIGFzIG51bWJlclxuICAgIGNvbnN0IHZhbHVlOiBudW1iZXIgPSArdGhpcy52YWx1ZTtcblxuICAgIHN3aXRjaCAodGhpcy5jb21wYXJpc29uT3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgQWxsb2NhdGlvblJ1bGVDb25kaXRpb25Db21wYXJpc29uT3BlcmF0b3JFbnVtLkVRVUFMUzpcbiAgICAgICAgcmV0dXJuIGJhbmtUcmFuc2FjdGlvbi5hbW91bnQgPT09IHZhbHVlO1xuICAgICAgY2FzZSBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkNvbXBhcmlzb25PcGVyYXRvckVudW0uRVFVQUxTX09SX0xFU1M6XG4gICAgICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb24uYW1vdW50IDw9IHZhbHVlO1xuICAgICAgY2FzZSBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkNvbXBhcmlzb25PcGVyYXRvckVudW0uRVFVQUxTX09SX0dSRUFURVI6XG4gICAgICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb24uYW1vdW50ID49IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG1hdGNoQmFua1RyYW5zYWN0aW9uQnlEZXNjcmlwdGlvbihiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIC8vIFByZXBhcmUgdmFsdWUgYW5kIGRlc2NyaXB0aW9uIGZvciBjb21wYXJpc29uXG4gICAgY29uc3QgZGVzY3JpcHRpb246IHN0cmluZyA9IGJhbmtUcmFuc2FjdGlvbi5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgc3dpdGNoICh0aGlzLmNvbXBhcmlzb25PcGVyYXRvcikge1xuICAgICAgY2FzZSBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkNvbXBhcmlzb25PcGVyYXRvckVudW0uRVFVQUxTOlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24gPT09IHZhbHVlO1xuICAgICAgY2FzZSBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkNvbXBhcmlzb25PcGVyYXRvckVudW0uQ09OVEFJTlM6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbi5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICBjYXNlIEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uQ29tcGFyaXNvbk9wZXJhdG9yRW51bS5TVEFSVFM6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbi5zdGFydHNXaXRoKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -1,11 +1,13 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { AllocationRuleTransaction as AllocationRuleTransactionBase } from '../../db/Models/transaction/allocation-rule-transaction';
3
3
  import { ChartAccounts } from '../chart-accounts';
4
- import { Type, Transform } from 'class-transformer';
4
+ import { Type, Transform, plainToClass } from 'class-transformer';
5
5
  import { AllocationRuleTransactionMetaField } from './allocation-rule-transaction-meta-field';
6
- import { Loan, Property, SoleBusiness } from '../../models';
6
+ import { Loan, Property, SoleBusiness, Transaction, TransactionAllocation } from '../../models';
7
7
  import { IncomeSource } from '../income-source/income-source';
8
8
  import { ChartAccountsListEnum } from '../../db/Enums';
9
+ import { TransactionOperationEnum } from '../../db/Enums/transaction-operation.enum';
10
+ import { TransactionSourceEnum } from '../../db/Enums/transaction-source.enum';
9
11
  export class AllocationRuleTransaction extends AllocationRuleTransactionBase {
10
12
  calculateClaimPercent() {
11
13
  if (!this.chartAccounts) {
@@ -20,26 +22,63 @@ export class AllocationRuleTransaction extends AllocationRuleTransactionBase {
20
22
  }
21
23
  return claimPercent;
22
24
  }
25
+ /**
26
+ * Create Transaction instance based on passed bank transaction and rule transaction
27
+ */
28
+ toTransaction(bankTransaction) {
29
+ return plainToClass(Transaction, {
30
+ amount: bankTransaction.amount,
31
+ description: bankTransaction.description,
32
+ type: bankTransaction.type,
33
+ date: bankTransaction.date,
34
+ source: TransactionSourceEnum.BANK_TRANSACTION,
35
+ tax: this.tax,
36
+ claimPercent: this.claimPercent,
37
+ isGST: this.isGST,
38
+ chartAccounts: this.chartAccounts,
39
+ property: this.property,
40
+ loan: this.loan,
41
+ incomeSource: this.incomeSource,
42
+ metaFields: this.metaFields,
43
+ parentTransaction: this.parentTransaction,
44
+ childTransactions: this.childTransactions,
45
+ business: this.business,
46
+ operation: TransactionOperationEnum.ALLOCATE,
47
+ allocations: [TransactionAllocation.create(bankTransaction.amount, bankTransaction)],
48
+ });
49
+ }
23
50
  }
24
51
  __decorate([
25
- Type(() => ChartAccounts),
26
- Transform(({ value }) => { return { id: value.id }; }, { toPlainOnly: true })
52
+ Type(() => ChartAccounts)
53
+ // @TODO Alex: Create custom decorator for this transform
54
+ ,
55
+ Transform(({ value }) => {
56
+ return { id: value.id };
57
+ }, { toPlainOnly: true })
27
58
  ], AllocationRuleTransaction.prototype, "chartAccounts", void 0);
28
59
  __decorate([
29
60
  Type(() => Property),
30
- Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
61
+ Transform(({ value }) => {
62
+ return value ? { id: value.id } : null;
63
+ }, { toPlainOnly: true })
31
64
  ], AllocationRuleTransaction.prototype, "property", void 0);
32
65
  __decorate([
33
66
  Type(() => Loan),
34
- Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
67
+ Transform(({ value }) => {
68
+ return value ? { id: value.id } : null;
69
+ }, { toPlainOnly: true })
35
70
  ], AllocationRuleTransaction.prototype, "loan", void 0);
36
71
  __decorate([
37
72
  Type(() => IncomeSource),
38
- Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
73
+ Transform(({ value }) => {
74
+ return value ? { id: value.id } : null;
75
+ }, { toPlainOnly: true })
39
76
  ], AllocationRuleTransaction.prototype, "incomeSource", void 0);
40
77
  __decorate([
41
78
  Type(() => SoleBusiness),
42
- Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
79
+ Transform(({ value }) => {
80
+ return value ? { id: value.id } : null;
81
+ }, { toPlainOnly: true })
43
82
  ], AllocationRuleTransaction.prototype, "business", void 0);
44
83
  __decorate([
45
84
  Type(() => AllocationRuleTransactionMetaField)
@@ -53,4 +92,4 @@ __decorate([
53
92
  __decorate([
54
93
  Type(() => Number)
55
94
  ], AllocationRuleTransaction.prototype, "claimPercent", void 0);
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLXRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy90cmFuc2FjdGlvbi9hbGxvY2F0aW9uLXJ1bGUtdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx5QkFBeUIsSUFBSSw2QkFBNkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDZCQUE2QjtJQWlDMUUscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUVyRCwwRkFBMEY7UUFDMUYsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFFckQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUsscUJBQXFCLENBQUMsYUFBYSxFQUFFO2dCQUMzRyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQzthQUNqRDtTQUNGO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBL0NDO0lBRkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUN6QixTQUFTLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUUsR0FBRSxPQUFPLEVBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUMsQ0FBQSxDQUFBLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQztnRUFDeEM7QUFJN0I7SUFGQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ3BCLFNBQVMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBRSxHQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQzsyREFDakU7QUFJbkI7SUFGQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2hCLFNBQVMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBRSxHQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQzt1REFDekU7QUFJWDtJQUZDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFFLEdBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDOytEQUN4RDtBQUk1QjtJQUZDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFFLEdBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDOzJEQUM3RDtBQUd2QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQzs2REFDRTtBQUdqRDtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvRUFDTztBQUc3QztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvRUFDUztBQUcvQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7K0RBQ0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uIGFzIEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3RyYW5zYWN0aW9uL2FsbG9jYXRpb24tcnVsZS10cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzIH0gZnJvbSAnLi4vY2hhcnQtYWNjb3VudHMnO1xuaW1wb3J0IHsgVHlwZSwgVHJhbnNmb3JtIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbk1ldGFGaWVsZCB9IGZyb20gJy4vYWxsb2NhdGlvbi1ydWxlLXRyYW5zYWN0aW9uLW1ldGEtZmllbGQnO1xuaW1wb3J0IHsgTG9hbiwgUHJvcGVydHksIFNvbGVCdXNpbmVzcyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBJbmNvbWVTb3VyY2UgfSBmcm9tICcuLi9pbmNvbWUtc291cmNlL2luY29tZS1zb3VyY2UnO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0xpc3RFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbiBleHRlbmRzIEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb25CYXNlIHtcbiAgQFR5cGUoKCkgPT4gQ2hhcnRBY2NvdW50cylcbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4ge3JldHVybiB7aWQ6IHZhbHVlLmlkfX0sIHt0b1BsYWluT25seTogdHJ1ZX0pXG4gIGNoYXJ0QWNjb3VudHM6IENoYXJ0QWNjb3VudHM7XG5cbiAgQFR5cGUoKCkgPT4gUHJvcGVydHkpXG4gIEBUcmFuc2Zvcm0oKHt2YWx1ZX0pID0+IHtyZXR1cm4gdmFsdWUgPyB7aWQ6IHZhbHVlLmlkfSA6IG51bGx9LCB7dG9QbGFpbk9ubHk6IHRydWV9KVxuICBwcm9wZXJ0eTogUHJvcGVydHk7XG5cbiAgQFR5cGUoKCkgPT4gTG9hbilcbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4ge3JldHVybiB2YWx1ZSA/IHtpZDogdmFsdWUuaWR9IDogbnVsbH0sIHt0b1BsYWluT25seTogdHJ1ZX0pXG4gIGxvYW46IExvYW47XG5cbiAgQFR5cGUoKCkgPT4gSW5jb21lU291cmNlKVxuICBAVHJhbnNmb3JtKCh7dmFsdWV9KSA9PiB7cmV0dXJuIHZhbHVlID8ge2lkOiB2YWx1ZS5pZH0gOiBudWxsfSwge3RvUGxhaW5Pbmx5OiB0cnVlfSlcbiAgaW5jb21lU291cmNlPzogSW5jb21lU291cmNlO1xuXG4gIEBUeXBlKCgpID0+IFNvbGVCdXNpbmVzcylcbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4ge3JldHVybiB2YWx1ZSA/IHtpZDogdmFsdWUuaWR9IDogbnVsbH0sIHt0b1BsYWluT25seTogdHJ1ZX0pXG4gIGJ1c2luZXNzOiBTb2xlQnVzaW5lc3M7XG5cbiAgQFR5cGUoKCkgPT4gQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbk1ldGFGaWVsZClcbiAgbWV0YUZpZWxkczogQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbk1ldGFGaWVsZFtdO1xuXG4gIEBUeXBlKCgpID0+IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb24pXG4gIHBhcmVudFRyYW5zYWN0aW9uOiBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uO1xuXG4gIEBUeXBlKCgpID0+IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb24pXG4gIGNoaWxkVHJhbnNhY3Rpb25zOiBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uW107XG5cbiAgQFR5cGUoKCkgPT4gTnVtYmVyKVxuICBjbGFpbVBlcmNlbnQ6IG51bWJlcjtcblxuICBjYWxjdWxhdGVDbGFpbVBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuY2hhcnRBY2NvdW50cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGNsYWltUGVyY2VudCA9IHRoaXMuY2hhcnRBY2NvdW50cy50YXhhYmxlUGVyY2VudDtcblxuICAgIC8vIFByb3BlcnR5IGNsYWltIChvd25lcnNoaXAlIHggc2hhcmVkJSkgZm9yIHByb3BlcnR5IGV4cGVuc2VzLCB0YXhhYmxlIHBlcmNlbnQgZm9yIG90aGVyc1xuICAgIGlmICh0aGlzLmNoYXJ0QWNjb3VudHM/LmlzUHJvcGVydHkoKSAmJiB0aGlzLnByb3BlcnR5KSB7XG5cbiAgICAgIGlmICh0aGlzLmNoYXJ0QWNjb3VudHMuaXNQcm9wZXJ0eUV4cGVuc2UoKSAmJiB0aGlzLmNoYXJ0QWNjb3VudHMuaWQgIT09IENoYXJ0QWNjb3VudHNMaXN0RW51bS5QTEFURk9STV9GRUVTKSB7XG4gICAgICAgIGNsYWltUGVyY2VudCAqPSB0aGlzLnByb3BlcnR5Py5jbGFpbUNvZWZmaWNpZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbVBlcmNlbnQ7XG4gIH1cbn1cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLXRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy90cmFuc2FjdGlvbi9hbGxvY2F0aW9uLXJ1bGUtdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx5QkFBeUIsSUFBSSw2QkFBNkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RixPQUFPLEVBQW1CLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDZCQUE2QjtJQTRDMUUscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUVyRCwwRkFBMEY7UUFDMUYsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxR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QUUsSUFBSSxFQUFDLENBQUM7K0RBQ0s7QUFNNUI7SUFKQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBRTtRQUNyQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDOzJEQUNBO0FBR3ZCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtDQUFrQyxDQUFDOzZEQUNFO0FBR2pEO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29FQUNPO0FBRzdDO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29FQUNTO0FBRy9DO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQzsrREFDRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb24gYXMgQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbkJhc2UgfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvdHJhbnNhY3Rpb24vYWxsb2NhdGlvbi1ydWxlLXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHMgfSBmcm9tICcuLi9jaGFydC1hY2NvdW50cyc7XG5pbXBvcnQgeyBUeXBlLCBUcmFuc2Zvcm0sIHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb25NZXRhRmllbGQgfSBmcm9tICcuL2FsbG9jYXRpb24tcnVsZS10cmFuc2FjdGlvbi1tZXRhLWZpZWxkJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbiwgTG9hbiwgUHJvcGVydHksIFNvbGVCdXNpbmVzcywgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQWxsb2NhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBJbmNvbWVTb3VyY2UgfSBmcm9tICcuLi9pbmNvbWUtc291cmNlL2luY29tZS1zb3VyY2UnO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0xpc3RFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk9wZXJhdGlvbkVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90cmFuc2FjdGlvbi1vcGVyYXRpb24uZW51bSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblNvdXJjZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90cmFuc2FjdGlvbi1zb3VyY2UuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uIGV4dGVuZHMgQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbkJhc2Uge1xuICBAVHlwZSgoKSA9PiBDaGFydEFjY291bnRzKVxuICAvLyBAVE9ETyBBbGV4OiBDcmVhdGUgY3VzdG9tIGRlY29yYXRvciBmb3IgdGhpcyB0cmFuc2Zvcm1cbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4ge1xuICAgIHJldHVybiB7aWQ6IHZhbHVlLmlkfTtcbiAgfSwge3RvUGxhaW5Pbmx5OiB0cnVlfSlcbiAgY2hhcnRBY2NvdW50czogQ2hhcnRBY2NvdW50cztcblxuICBAVHlwZSgoKSA9PiBQcm9wZXJ0eSlcbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4ge1xuICAgIHJldHVybiB2YWx1ZSA/IHtpZDogdmFsdWUuaWR9IDogbnVsbDtcbiAgfSwge3RvUGxhaW5Pbmx5OiB0cnVlfSlcbiAgcHJvcGVydHk6IFByb3BlcnR5O1xuXG4gIEBUeXBlKCgpID0+IExvYW4pXG4gIEBUcmFuc2Zvcm0oKHt2YWx1ZX0pID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPyB7aWQ6IHZhbHVlLmlkfSA6IG51bGw7XG4gIH0sIHt0b1BsYWluT25seTogdHJ1ZX0pXG4gIGxvYW46IExvYW47XG5cbiAgQFR5cGUoKCkgPT4gSW5jb21lU291cmNlKVxuICBAVHJhbnNmb3JtKCh7dmFsdWV9KSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlID8ge2lkOiB2YWx1ZS5pZH0gOiBudWxsO1xuICB9LCB7dG9QbGFpbk9ubHk6IHRydWV9KVxuICBpbmNvbWVTb3VyY2U/OiBJbmNvbWVTb3VyY2U7XG5cbiAgQFR5cGUoKCkgPT4gU29sZUJ1c2luZXNzKVxuICBAVHJhbnNmb3JtKCh7dmFsdWV9KSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlID8ge2lkOiB2YWx1ZS5pZH0gOiBudWxsO1xuICB9LCB7dG9QbGFpbk9ubHk6IHRydWV9KVxuICBidXNpbmVzczogU29sZUJ1c2luZXNzO1xuXG4gIEBUeXBlKCgpID0+IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb25NZXRhRmllbGQpXG4gIG1ldGFGaWVsZHM6IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb25NZXRhRmllbGRbXTtcblxuICBAVHlwZSgoKSA9PiBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uKVxuICBwYXJlbnRUcmFuc2FjdGlvbjogQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uKVxuICBjaGlsZFRyYW5zYWN0aW9uczogQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbltdO1xuXG4gIEBUeXBlKCgpID0+IE51bWJlcilcbiAgY2xhaW1QZXJjZW50OiBudW1iZXI7XG5cbiAgY2FsY3VsYXRlQ2xhaW1QZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmNoYXJ0QWNjb3VudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjbGFpbVBlcmNlbnQgPSB0aGlzLmNoYXJ0QWNjb3VudHMudGF4YWJsZVBlcmNlbnQ7XG5cbiAgICAvLyBQcm9wZXJ0eSBjbGFpbSAob3duZXJzaGlwJSB4IHNoYXJlZCUpIGZvciBwcm9wZXJ0eSBleHBlbnNlcywgdGF4YWJsZSBwZXJjZW50IGZvciBvdGhlcnNcbiAgICBpZiAodGhpcy5jaGFydEFjY291bnRzPy5pc1Byb3BlcnR5KCkgJiYgdGhpcy5wcm9wZXJ0eSkge1xuXG4gICAgICBpZiAodGhpcy5jaGFydEFjY291bnRzLmlzUHJvcGVydHlFeHBlbnNlKCkgJiYgdGhpcy5jaGFydEFjY291bnRzLmlkICE9PSBDaGFydEFjY291bnRzTGlzdEVudW0uUExBVEZPUk1fRkVFUykge1xuICAgICAgICBjbGFpbVBlcmNlbnQgKj0gdGhpcy5wcm9wZXJ0eT8uY2xhaW1Db2VmZmljaWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xhaW1QZXJjZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBUcmFuc2FjdGlvbiBpbnN0YW5jZSBiYXNlZCBvbiBwYXNzZWQgYmFuayB0cmFuc2FjdGlvbiBhbmQgcnVsZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgdG9UcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKFxuICAgICAgVHJhbnNhY3Rpb24sXG4gICAgICB7XG4gICAgICAgIGFtb3VudDogYmFua1RyYW5zYWN0aW9uLmFtb3VudCxcbiAgICAgICAgZGVzY3JpcHRpb246IGJhbmtUcmFuc2FjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgdHlwZTogYmFua1RyYW5zYWN0aW9uLnR5cGUsXG4gICAgICAgIGRhdGU6IGJhbmtUcmFuc2FjdGlvbi5kYXRlLFxuICAgICAgICBzb3VyY2U6IFRyYW5zYWN0aW9uU291cmNlRW51bS5CQU5LX1RSQU5TQUNUSU9OLFxuICAgICAgICB0YXg6IHRoaXMudGF4LFxuICAgICAgICBjbGFpbVBlcmNlbnQ6IHRoaXMuY2xhaW1QZXJjZW50LFxuICAgICAgICBpc0dTVDogdGhpcy5pc0dTVCxcbiAgICAgICAgY2hhcnRBY2NvdW50czogdGhpcy5jaGFydEFjY291bnRzLFxuICAgICAgICBwcm9wZXJ0eTogdGhpcy5wcm9wZXJ0eSxcbiAgICAgICAgbG9hbjogdGhpcy5sb2FuLFxuICAgICAgICBpbmNvbWVTb3VyY2U6IHRoaXMuaW5jb21lU291cmNlLFxuICAgICAgICBtZXRhRmllbGRzOiB0aGlzLm1ldGFGaWVsZHMsXG4gICAgICAgIHBhcmVudFRyYW5zYWN0aW9uOiB0aGlzLnBhcmVudFRyYW5zYWN0aW9uLFxuICAgICAgICBjaGlsZFRyYW5zYWN0aW9uczogdGhpcy5jaGlsZFRyYW5zYWN0aW9ucyxcbiAgICAgICAgYnVzaW5lc3M6IHRoaXMuYnVzaW5lc3MsXG4gICAgICAgIG9wZXJhdGlvbjogVHJhbnNhY3Rpb25PcGVyYXRpb25FbnVtLkFMTE9DQVRFLFxuICAgICAgICBhbGxvY2F0aW9uczogW1RyYW5zYWN0aW9uQWxsb2NhdGlvbi5jcmVhdGUoYmFua1RyYW5zYWN0aW9uLmFtb3VudCwgYmFua1RyYW5zYWN0aW9uKV0sXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,11 +1,13 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { AllocationRule as AllocationRuleBase } from '../../db/Models/transaction/allocation-rule';
3
3
  import { BankAccount } from '../bank';
4
- import { Transform, Type } from 'class-transformer';
4
+ import { plainToClass, Transform, Type } from 'class-transformer';
5
5
  import { AllocationRuleCondition } from './allocation-rule-condition';
6
6
  import { AllocationRuleTransaction } from './allocation-rule-transaction';
7
- import { AllocationRuleConditionOperatorEnum, AllocationRuleTypeEnum } from '../../db/Enums';
7
+ import { AllocationRuleConditionComparisonOperatorEnum, AllocationRuleConditionFieldEnum, AllocationRuleConditionOperatorEnum, AllocationRuleTypeEnum, ChartAccountsListEnum } from '../../db/Enums';
8
8
  import { TankTypeEnum } from '../../db/Enums/tank-type.enum';
9
+ import { TransactionOperationEnum } from '../../db/Enums/transaction-operation.enum';
10
+ import { ChartAccounts } from '../chart-accounts';
9
11
  export class AllocationRule extends AllocationRuleBase {
10
12
  constructor() {
11
13
  super(...arguments);
@@ -61,6 +63,65 @@ export class AllocationRule extends AllocationRuleBase {
61
63
  isSoleIncome() {
62
64
  return this.isIncome() && this.isSoleTank();
63
65
  }
66
+ /**
67
+ * @TODO Alex: move to collection
68
+ */
69
+ matchBankTransaction(bankTransaction) {
70
+ return this.conditionOperator === AllocationRuleConditionOperatorEnum.AND ? this.checkAnd(bankTransaction) : this.checkOr(bankTransaction);
71
+ }
72
+ createTransaction(bankTransaction) {
73
+ if (this.isTransfer()) {
74
+ const transaction = bankTransaction.toTransaction();
75
+ transaction.operation = TransactionOperationEnum.TRANSFER;
76
+ transaction.chartAccounts = plainToClass(ChartAccounts, { id: ChartAccountsListEnum.TRANSFER });
77
+ return transaction;
78
+ }
79
+ return this.transaction.toTransaction(bankTransaction);
80
+ }
81
+ /**
82
+ * Rule is matched when all conditions matched
83
+ */
84
+ checkAnd(bankTransaction) {
85
+ for (let condition of this.conditions) {
86
+ if (!condition.matchBankTransaction(bankTransaction)) {
87
+ return false;
88
+ }
89
+ }
90
+ return true;
91
+ }
92
+ /**
93
+ * Rule is matched when at least one condition matched
94
+ */
95
+ checkOr(bankTransaction) {
96
+ for (let condition of this.conditions) {
97
+ if (condition.matchBankTransaction(bankTransaction)) {
98
+ return true;
99
+ }
100
+ }
101
+ return false;
102
+ }
103
+ /**
104
+ * Create allocation rule based on bank transaction (just prefill rule fields with bank transaction values)
105
+ */
106
+ static fromBankTransaction(bankTransaction) {
107
+ return plainToClass(AllocationRule, {
108
+ type: bankTransaction.isDebit() ? AllocationRuleTypeEnum.EXPENSE : AllocationRuleTypeEnum.INCOME,
109
+ bankAccount: bankTransaction.bankAccount,
110
+ conditionOperator: AllocationRuleConditionOperatorEnum.AND,
111
+ conditions: [
112
+ plainToClass(AllocationRuleCondition, {
113
+ field: AllocationRuleConditionFieldEnum.AMOUNT,
114
+ comparisonOperator: AllocationRuleConditionComparisonOperatorEnum.EQUALS,
115
+ value: bankTransaction.amount
116
+ }),
117
+ plainToClass(AllocationRuleCondition, {
118
+ field: AllocationRuleConditionFieldEnum.DESCRIPTION,
119
+ comparisonOperator: AllocationRuleConditionComparisonOperatorEnum.EQUALS,
120
+ value: bankTransaction.description
121
+ })
122
+ ]
123
+ });
124
+ }
64
125
  }
65
126
  __decorate([
66
127
  Type(() => BankAccount),
@@ -75,4 +136,4 @@ __decorate([
75
136
  __decorate([
76
137
  Type(() => BankAccount)
77
138
  ], AllocationRule.prototype, "transferBankAccount", void 0);
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy90cmFuc2FjdGlvbi9hbGxvY2F0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLElBQUksa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLHNCQUFzQixFQUF5QixNQUFNLGdCQUFnQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk3RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQUF0RDs7UUFjRSxTQUFJLEdBQTJCLHNCQUFzQixDQUFDLE9BQU8sQ0FBQztRQUM5RCxzQkFBaUIsR0FBd0MsbUNBQW1DLENBQUMsRUFBRSxDQUFDO0lBa0VsRyxDQUFDO0lBaEVDLElBQUksU0FBUztRQUNYLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLHNCQUFzQixDQUFDLE9BQU87Z0JBQ2pDLE9BQU8sU0FBUyxDQUFDO1lBRW5CLEtBQUssc0JBQXNCLENBQUMsTUFBTTtnQkFDaEMsT0FBTyxRQUFRLENBQUM7WUFFbEI7Z0JBQ0UsT0FBTyxVQUFVLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtZQUNqQyxLQUFLLFlBQVksQ0FBQyxJQUFJO2dCQUNwQixPQUFPLE1BQU0sQ0FBQztZQUVoQixLQUFLLFlBQVksQ0FBQyxRQUFRO2dCQUN4QixPQUFPLFVBQVUsQ0FBQztZQUVwQixLQUFLLFlBQVksQ0FBQyxJQUFJO2dCQUNwQixPQUFPLE1BQU0sQ0FBQztZQUVoQjtnQkFDRSxPQUFPLFVBQVUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7SUFDdEQsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssc0JBQXNCLENBQUMsUUFBUSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3pELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBOUVDO0lBRkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUN2QixTQUFTLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUUsR0FBRSxPQUFPLEVBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUMsQ0FBQSxDQUFBLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQzttREFDM0M7QUFHMUI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7a0RBQ0c7QUFHdkM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7bURBQ0U7QUFHeEM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDOzJEQUNVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGUgYXMgQWxsb2NhdGlvblJ1bGVCYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3RyYW5zYWN0aW9uL2FsbG9jYXRpb24tcnVsZSc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudCB9IGZyb20gJy4uL2JhbmsnO1xuaW1wb3J0IHsgVHJhbnNmb3JtLCBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGVDb25kaXRpb24gfSBmcm9tICcuL2FsbG9jYXRpb24tcnVsZS1jb25kaXRpb24nO1xuaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbiB9IGZyb20gJy4vYWxsb2NhdGlvbi1ydWxlLXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uT3BlcmF0b3JFbnVtLCBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLCBDaGFydEFjY291bnRzTGlzdEVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcyc7XG5pbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzIH0gZnJvbSAnLi4vY2hhcnQtYWNjb3VudHMnO1xuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICcuLi9wcm9wZXJ0eSc7XG5cbmV4cG9ydCBjbGFzcyBBbGxvY2F0aW9uUnVsZSBleHRlbmRzIEFsbG9jYXRpb25SdWxlQmFzZSB7XG4gIEBUeXBlKCgpID0+IEJhbmtBY2NvdW50KVxuICBAVHJhbnNmb3JtKCh7dmFsdWV9KSA9PiB7cmV0dXJuIHtpZDogdmFsdWUuaWR9fSwge3RvUGxhaW5Pbmx5OiB0cnVlfSlcbiAgYmFua0FjY291bnQ/OiBCYW5rQWNjb3VudDtcblxuICBAVHlwZSgoKSA9PiBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbilcbiAgY29uZGl0aW9ucz86IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uW107XG5cbiAgQFR5cGUoKCkgPT4gQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbilcbiAgdHJhbnNhY3Rpb24/OiBBbGxvY2F0aW9uUnVsZVRyYW5zYWN0aW9uO1xuXG4gIEBUeXBlKCgpID0+IEJhbmtBY2NvdW50KVxuICB0cmFuc2ZlckJhbmtBY2NvdW50PzogQmFua0FjY291bnQ7XG5cbiAgdHlwZTogQWxsb2NhdGlvblJ1bGVUeXBlRW51bSA9IEFsbG9jYXRpb25SdWxlVHlwZUVudW0uRVhQRU5TRTtcbiAgY29uZGl0aW9uT3BlcmF0b3I6IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uT3BlcmF0b3JFbnVtID0gQWxsb2NhdGlvblJ1bGVDb25kaXRpb25PcGVyYXRvckVudW0uT1I7XG5cbiAgZ2V0IHR5cGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIEFsbG9jYXRpb25SdWxlVHlwZUVudW0uRVhQRU5TRTpcbiAgICAgICAgcmV0dXJuICdleHBlbnNlJztcblxuICAgICAgY2FzZSBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLklOQ09NRTpcbiAgICAgICAgcmV0dXJuICdpbmNvbWUnO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3RyYW5zZmVyJztcbiAgICB9XG4gIH1cblxuICBnZXQgdGFua1R5cGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy50cmFuc2FjdGlvbi50YW5rVHlwZSkge1xuICAgICAgY2FzZSBUYW5rVHlwZUVudW0uV09SSzpcbiAgICAgICAgcmV0dXJuICd3b3JrJztcblxuICAgICAgY2FzZSBUYW5rVHlwZUVudW0uUFJPUEVSVFk6XG4gICAgICAgIHJldHVybiAncHJvcGVydHknO1xuXG4gICAgICBjYXNlIFRhbmtUeXBlRW51bS5TT0xFOlxuICAgICAgICByZXR1cm4gJ3NvbGUnO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3BlcnNvbmFsJztcbiAgICB9XG4gIH1cblxuICBpc0luY29tZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLklOQ09NRTtcbiAgfVxuXG4gIGlzRXhwZW5zZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLkVYUEVOU0U7XG4gIH1cblxuICBpc1RyYW5zZmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEFsbG9jYXRpb25SdWxlVHlwZUVudW0uVFJBTlNGRVI7XG4gIH1cblxuICBpc1Byb3BlcnR5VGFuaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50YW5rVHlwZSA9PT0gVGFua1R5cGVFbnVtLlBST1BFUlRZO1xuICB9XG5cbiAgaXNXb3JrVGFuaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50YW5rVHlwZSA9PT0gVGFua1R5cGVFbnVtLldPUks7XG4gIH1cblxuICBpc1NvbGVUYW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLnRhbmtUeXBlID09PSBUYW5rVHlwZUVudW0uU09MRTtcbiAgfVxuXG4gIGlzUHJvcGVydHlJbmNvbWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbmNvbWUoKSAmJiB0aGlzLmlzUHJvcGVydHlUYW5rKCk7XG4gIH1cblxuICBpc1dvcmtJbmNvbWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbmNvbWUoKSAmJiB0aGlzLmlzV29ya1RhbmsoKTtcbiAgfVxuXG4gIGlzU29sZUluY29tZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0luY29tZSgpICYmIHRoaXMuaXNTb2xlVGFuaygpO1xuICB9XG59XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy90cmFuc2FjdGlvbi9hbGxvY2F0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLElBQUksa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsNkNBQTZDLEVBQzdDLGdDQUFnQyxFQUNoQyxtQ0FBbUMsRUFDbkMsc0JBQXNCLEVBQUUscUJBQXFCLEVBQzlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQUF0RDs7UUFjRSxTQUFJLEdBQTJCLHNCQUFzQixDQUFDLE9BQU8sQ0FBQztRQUM5RCxzQkFBaUIsR0FBd0MsbUNBQW1DLENBQUMsRUFBRSxDQUFDO0lBdUlsRyxDQUFDO0lBcklDLElBQUksU0FBUztRQUNYLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLHNCQUFzQixDQUFDLE9BQU87Z0JBQ2pDLE9BQU8sU0FBUyxDQUFDO1lBRW5CLEtBQUssc0JBQXNCLENB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M0M7QUFHMUI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7a0RBQ0c7QUFHdkM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7bURBQ0U7QUFHeEM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDOzJEQUNVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxsb2NhdGlvblJ1bGUgYXMgQWxsb2NhdGlvblJ1bGVCYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3RyYW5zYWN0aW9uL2FsbG9jYXRpb24tcnVsZSc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudCwgQmFua1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vYmFuayc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MsIFRyYW5zZm9ybSwgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uIH0gZnJvbSAnLi9hbGxvY2F0aW9uLXJ1bGUtY29uZGl0aW9uJztcbmltcG9ydCB7IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2FsbG9jYXRpb24tcnVsZS10cmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbkNvbXBhcmlzb25PcGVyYXRvckVudW0sXG4gIEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uRmllbGRFbnVtLFxuICBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbk9wZXJhdG9yRW51bSxcbiAgQWxsb2NhdGlvblJ1bGVUeXBlRW51bSwgQ2hhcnRBY2NvdW50c0xpc3RFbnVtXG59IGZyb20gJy4uLy4uL2RiL0VudW1zJztcbmltcG9ydCB7IFRhbmtUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RhbmstdHlwZS5lbnVtJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk9wZXJhdGlvbkVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90cmFuc2FjdGlvbi1vcGVyYXRpb24uZW51bSc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzIH0gZnJvbSAnLi4vY2hhcnQtYWNjb3VudHMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvblJ1bGUgZXh0ZW5kcyBBbGxvY2F0aW9uUnVsZUJhc2Uge1xuICBAVHlwZSgoKSA9PiBCYW5rQWNjb3VudClcbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4ge3JldHVybiB7aWQ6IHZhbHVlLmlkfX0sIHt0b1BsYWluT25seTogdHJ1ZX0pXG4gIGJhbmtBY2NvdW50PzogQmFua0FjY291bnQ7XG5cbiAgQFR5cGUoKCkgPT4gQWxsb2NhdGlvblJ1bGVDb25kaXRpb24pXG4gIGNvbmRpdGlvbnM/OiBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbltdO1xuXG4gIEBUeXBlKCgpID0+IEFsbG9jYXRpb25SdWxlVHJhbnNhY3Rpb24pXG4gIHRyYW5zYWN0aW9uPzogQWxsb2NhdGlvblJ1bGVUcmFuc2FjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBCYW5rQWNjb3VudClcbiAgdHJhbnNmZXJCYW5rQWNjb3VudD86IEJhbmtBY2NvdW50O1xuXG4gIHR5cGU6IEFsbG9jYXRpb25SdWxlVHlwZUVudW0gPSBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLkVYUEVOU0U7XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBBbGxvY2F0aW9uUnVsZUNvbmRpdGlvbk9wZXJhdG9yRW51bSA9IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uT3BlcmF0b3JFbnVtLk9SO1xuXG4gIGdldCB0eXBlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLkVYUEVOU0U6XG4gICAgICAgIHJldHVybiAnZXhwZW5zZSc7XG5cbiAgICAgIGNhc2UgQWxsb2NhdGlvblJ1bGVUeXBlRW51bS5JTkNPTUU6XG4gICAgICAgIHJldHVybiAnaW5jb21lJztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd0cmFuc2Zlcic7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhbmtUeXBlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMudHJhbnNhY3Rpb24udGFua1R5cGUpIHtcbiAgICAgIGNhc2UgVGFua1R5cGVFbnVtLldPUks6XG4gICAgICAgIHJldHVybiAnd29yayc7XG5cbiAgICAgIGNhc2UgVGFua1R5cGVFbnVtLlBST1BFUlRZOlxuICAgICAgICByZXR1cm4gJ3Byb3BlcnR5JztcblxuICAgICAgY2FzZSBUYW5rVHlwZUVudW0uU09MRTpcbiAgICAgICAgcmV0dXJuICdzb2xlJztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdwZXJzb25hbCc7XG4gICAgfVxuICB9XG5cbiAgaXNJbmNvbWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gQWxsb2NhdGlvblJ1bGVUeXBlRW51bS5JTkNPTUU7XG4gIH1cblxuICBpc0V4cGVuc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gQWxsb2NhdGlvblJ1bGVUeXBlRW51bS5FWFBFTlNFO1xuICB9XG5cbiAgaXNUcmFuc2ZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLlRSQU5TRkVSO1xuICB9XG5cbiAgaXNQcm9wZXJ0eVRhbmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udGFua1R5cGUgPT09IFRhbmtUeXBlRW51bS5QUk9QRVJUWTtcbiAgfVxuXG4gIGlzV29ya1RhbmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udGFua1R5cGUgPT09IFRhbmtUeXBlRW51bS5XT1JLO1xuICB9XG5cbiAgaXNTb2xlVGFuaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi50YW5rVHlwZSA9PT0gVGFua1R5cGVFbnVtLlNPTEU7XG4gIH1cblxuICBpc1Byb3BlcnR5SW5jb21lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5jb21lKCkgJiYgdGhpcy5pc1Byb3BlcnR5VGFuaygpO1xuICB9XG5cbiAgaXNXb3JrSW5jb21lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5jb21lKCkgJiYgdGhpcy5pc1dvcmtUYW5rKCk7XG4gIH1cblxuICBpc1NvbGVJbmNvbWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbmNvbWUoKSAmJiB0aGlzLmlzU29sZVRhbmsoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyBBbGV4OiBtb3ZlIHRvIGNvbGxlY3Rpb25cbiAgICovXG4gIG1hdGNoQmFua1RyYW5zYWN0aW9uKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uT3BlcmF0b3IgPT09IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uT3BlcmF0b3JFbnVtLkFORCA/IHRoaXMuY2hlY2tBbmQoYmFua1RyYW5zYWN0aW9uKSA6IHRoaXMuY2hlY2tPcihiYW5rVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgY3JlYXRlVHJhbnNhY3Rpb24oYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuaXNUcmFuc2ZlcigpKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSAgYmFua1RyYW5zYWN0aW9uLnRvVHJhbnNhY3Rpb24oKTtcblxuICAgICAgdHJhbnNhY3Rpb24ub3BlcmF0aW9uID0gVHJhbnNhY3Rpb25PcGVyYXRpb25FbnVtLlRSQU5TRkVSO1xuICAgICAgdHJhbnNhY3Rpb24uY2hhcnRBY2NvdW50cyA9IHBsYWluVG9DbGFzcyhDaGFydEFjY291bnRzLCB7aWQ6IENoYXJ0QWNjb3VudHNMaXN0RW51bS5UUkFOU0ZFUn0pO1xuXG4gICAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24udG9UcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bGUgaXMgbWF0Y2hlZCB3aGVuIGFsbCBjb25kaXRpb25zIG1hdGNoZWRcbiAgICovXG4gIHByaXZhdGUgY2hlY2tBbmQoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBjb25kaXRpb24gb2YgdGhpcy5jb25kaXRpb25zKSB7XG4gICAgICBpZiAoIWNvbmRpdGlvbi5tYXRjaEJhbmtUcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdWxlIGlzIG1hdGNoZWQgd2hlbiBhdCBsZWFzdCBvbmUgY29uZGl0aW9uIG1hdGNoZWRcbiAgICovXG4gIHByaXZhdGUgY2hlY2tPcihiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGNvbmRpdGlvbiBvZiB0aGlzLmNvbmRpdGlvbnMpIHtcbiAgICAgIGlmIChjb25kaXRpb24ubWF0Y2hCYW5rVHJhbnNhY3Rpb24oYmFua1RyYW5zYWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFsbG9jYXRpb24gcnVsZSBiYXNlZCBvbiBiYW5rIHRyYW5zYWN0aW9uIChqdXN0IHByZWZpbGwgcnVsZSBmaWVsZHMgd2l0aCBiYW5rIHRyYW5zYWN0aW9uIHZhbHVlcylcbiAgICovXG4gIHN0YXRpYyBmcm9tQmFua1RyYW5zYWN0aW9uKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogQWxsb2NhdGlvblJ1bGUge1xuICAgIHJldHVybiBwbGFpblRvQ2xhc3MoQWxsb2NhdGlvblJ1bGUsIHtcbiAgICAgIHR5cGU6IGJhbmtUcmFuc2FjdGlvbi5pc0RlYml0KCkgPyBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLkVYUEVOU0UgOiBBbGxvY2F0aW9uUnVsZVR5cGVFbnVtLklOQ09NRSxcbiAgICAgIGJhbmtBY2NvdW50OiBiYW5rVHJhbnNhY3Rpb24uYmFua0FjY291bnQsXG4gICAgICBjb25kaXRpb25PcGVyYXRvcjogQWxsb2NhdGlvblJ1bGVDb25kaXRpb25PcGVyYXRvckVudW0uQU5ELFxuICAgICAgY29uZGl0aW9uczogW1xuICAgICAgICBwbGFpblRvQ2xhc3MoQWxsb2NhdGlvblJ1bGVDb25kaXRpb24sIHtcbiAgICAgICAgICBmaWVsZDogQWxsb2NhdGlvblJ1bGVDb25kaXRpb25GaWVsZEVudW0uQU1PVU5ULFxuICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQWxsb2NhdGlvblJ1bGVDb25kaXRpb25Db21wYXJpc29uT3BlcmF0b3JFbnVtLkVRVUFMUyxcbiAgICAgICAgICB2YWx1ZTogYmFua1RyYW5zYWN0aW9uLmFtb3VudFxuICAgICAgICB9KSxcbiAgICAgICAgcGxhaW5Ub0NsYXNzKEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uLCB7XG4gICAgICAgICAgZmllbGQ6IEFsbG9jYXRpb25SdWxlQ29uZGl0aW9uRmllbGRFbnVtLkRFU0NSSVBUSU9OLFxuICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQWxsb2NhdGlvblJ1bGVDb25kaXRpb25Db21wYXJpc29uT3BlcmF0b3JFbnVtLkVRVUFMUyxcbiAgICAgICAgICB2YWx1ZTogYmFua1RyYW5zYWN0aW9uLmRlc2NyaXB0aW9uXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==