@vality/swag-payments 0.1.3-e658db3.0 → 0.1.3-fd6802c.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (761) hide show
  1. package/README.md +224 -12
  2. package/{lib/api → api}/api.d.ts +1 -3
  3. package/{lib/api → api}/categories.service.d.ts +16 -15
  4. package/{lib/api → api}/contracts.service.d.ts +52 -33
  5. package/{lib/api → api}/countries.service.d.ts +16 -15
  6. package/{lib/api → api}/customers.service.d.ts +58 -36
  7. package/{lib/api → api}/invoiceTemplates.service.d.ts +40 -27
  8. package/{lib/api → api}/invoices.service.d.ts +58 -36
  9. package/{lib/api → api}/parties.service.d.ts +40 -27
  10. package/api/paymentInstitutions.service.d.ts +132 -0
  11. package/{lib/api → api}/payments.service.d.ts +88 -51
  12. package/{lib/api → api}/search.service.d.ts +22 -57
  13. package/{lib/api → api}/shops.service.d.ts +52 -33
  14. package/{lib/api → api}/tokens.service.d.ts +10 -12
  15. package/{lib/api → api}/tradeBlocs.service.d.ts +16 -15
  16. package/{lib/api → api}/webhooks.service.d.ts +34 -24
  17. package/api.base.service.d.ts +12 -0
  18. package/{lib/configuration.d.ts → configuration.d.ts} +3 -1
  19. package/fesm2022/vality-swag-payments.mjs +1187 -4352
  20. package/fesm2022/vality-swag-payments.mjs.map +1 -1
  21. package/index.d.ts +6 -5
  22. package/model/accessToken.d.ts +15 -0
  23. package/model/allocationFee.d.ts +24 -0
  24. package/model/allocationFeeTarget.d.ts +21 -0
  25. package/model/allocationTarget.d.ts +21 -0
  26. package/model/allocationTargetShop.d.ts +21 -0
  27. package/model/allocationTransaction.d.ts +32 -0
  28. package/model/apiExtensionRequest.d.ts +16 -0
  29. package/model/applePay.d.ts +22 -0
  30. package/model/articlesOfAssociation.d.ts +17 -0
  31. package/model/bankAccount.d.ts +27 -0
  32. package/model/bankCard.d.ts +23 -0
  33. package/model/bankCardDetails.d.ts +42 -0
  34. package/{lib/model → model}/bankCardTokenProviderData.d.ts +0 -2
  35. package/model/bankCardTokenizationMethod.d.ts +17 -0
  36. package/model/browserGetRequest.d.ts +16 -0
  37. package/model/browserPostRequest.d.ts +21 -0
  38. package/model/browserRequest.d.ts +15 -0
  39. package/model/cancelPayment400Response.d.ts +30 -0
  40. package/model/captureParams.d.ts +33 -0
  41. package/model/capturePayment400Response.d.ts +35 -0
  42. package/model/cardData.d.ts +30 -0
  43. package/model/category.d.ts +14 -0
  44. package/model/chargeback.d.ts +58 -0
  45. package/model/clientInfo.d.ts +26 -0
  46. package/model/contactInfo.d.ts +58 -0
  47. package/model/contract.d.ts +52 -0
  48. package/model/contractAdjustment.d.ts +30 -0
  49. package/model/contractor.d.ts +26 -0
  50. package/model/costAmountRange.d.ts +19 -0
  51. package/model/country.d.ts +20 -0
  52. package/model/createBinding400Response.d.ts +32 -0
  53. package/model/createCustomer400Response.d.ts +32 -0
  54. package/model/createInvoice400Response.d.ts +36 -0
  55. package/model/createInvoiceTemplate400Response.d.ts +32 -0
  56. package/model/createInvoiceWithTemplate400Response.d.ts +29 -0
  57. package/model/createPayment400Response.d.ts +36 -0
  58. package/model/createRefund400Response.d.ts +39 -0
  59. package/model/createWebhook400Response.d.ts +29 -0
  60. package/model/createWebhook429Response.d.ts +15 -0
  61. package/model/cryptoCurrencyTransferRequest.d.ts +24 -0
  62. package/model/cryptoWallet.d.ts +18 -0
  63. package/model/cryptoWalletData.d.ts +18 -0
  64. package/model/cryptoWalletDetails.d.ts +15 -0
  65. package/model/customer.d.ts +44 -0
  66. package/model/customerAndToken.d.ts +15 -0
  67. package/model/customerBinding.d.ts +35 -0
  68. package/model/customerBindingError.d.ts +16 -0
  69. package/model/customerBindingInteractionCompleted.d.ts +20 -0
  70. package/model/customerBindingInteractionRequested.d.ts +20 -0
  71. package/model/customerBindingParams.d.ts +17 -0
  72. package/model/customerBindingStarted.d.ts +16 -0
  73. package/model/customerBindingStatus.d.ts +25 -0
  74. package/model/customerBindingStatusChanged.d.ts +27 -0
  75. package/model/customerChange.d.ts +21 -0
  76. package/model/customerEvent.d.ts +15 -0
  77. package/model/customerParams.d.ts +29 -0
  78. package/model/customerPayer.d.ts +21 -0
  79. package/model/customersTopic.d.ts +34 -0
  80. package/model/decimal.d.ts +22 -0
  81. package/model/defaultLogicError.d.ts +26 -0
  82. package/model/deleteCustomer400Response.d.ts +28 -0
  83. package/model/digitalWallet.d.ts +18 -0
  84. package/model/digitalWalletData.d.ts +26 -0
  85. package/model/digitalWalletDetails.d.ts +15 -0
  86. package/model/externalIDConflictError.d.ts +23 -0
  87. package/model/fulfillInvoice400Response.d.ts +29 -0
  88. package/model/generalError.d.ts +12 -0
  89. package/model/googlePay.d.ts +22 -0
  90. package/model/internationalBankAccount.d.ts +26 -0
  91. package/model/internationalBankDetails.d.ts +34 -0
  92. package/model/internationalCorrespondentBankAccount.d.ts +22 -0
  93. package/model/internationalLegalEntity.d.ts +41 -0
  94. package/{lib/model → model}/invoice.d.ts +2 -2
  95. package/model/invoiceAmountRandomized.d.ts +22 -0
  96. package/model/invoiceAndToken.d.ts +15 -0
  97. package/model/invoiceBankAccount.d.ts +24 -0
  98. package/model/invoiceChange.d.ts +25 -0
  99. package/model/invoiceClientInfo.d.ts +25 -0
  100. package/model/invoiceCreated.d.ts +16 -0
  101. package/model/invoiceEvent.d.ts +15 -0
  102. package/model/invoiceLine.d.ts +32 -0
  103. package/model/invoiceLineTaxMode.d.ts +24 -0
  104. package/model/invoiceLineTaxVAT.d.ts +28 -0
  105. package/{lib/model → model}/invoiceParams.d.ts +2 -2
  106. package/model/invoiceParamsWithTemplate.d.ts +27 -0
  107. package/model/invoiceRandomizeAmount.d.ts +46 -0
  108. package/model/invoiceRussianBankAccount.d.ts +22 -0
  109. package/model/invoiceStatus.d.ts +28 -0
  110. package/model/invoiceStatusChanged.d.ts +29 -0
  111. package/model/invoiceTemplate.d.ts +45 -0
  112. package/model/invoiceTemplateAndToken.d.ts +15 -0
  113. package/model/invoiceTemplateCreateParams.d.ts +41 -0
  114. package/model/invoiceTemplateDetails.d.ts +12 -0
  115. package/model/invoiceTemplateLineCost.d.ts +15 -0
  116. package/model/invoiceTemplateLineCostFixed.d.ts +20 -0
  117. package/model/invoiceTemplateLineCostRange.d.ts +18 -0
  118. package/model/invoiceTemplateLineCostUnlim.d.ts +12 -0
  119. package/model/invoiceTemplateMultiLine.d.ts +21 -0
  120. package/model/invoiceTemplateSingleLine.d.ts +20 -0
  121. package/model/invoiceTemplateUpdateParams.d.ts +29 -0
  122. package/{lib/model → model}/invoicesTopic.d.ts +0 -2
  123. package/model/legalAgreement.d.ts +26 -0
  124. package/model/legalEntity.d.ts +26 -0
  125. package/model/lifetimeInterval.d.ts +17 -0
  126. package/model/logicError.d.ts +16 -0
  127. package/model/mobileCommerce.d.ts +18 -0
  128. package/model/mobileCommerceData.d.ts +16 -0
  129. package/model/mobileCommerceDetails.d.ts +15 -0
  130. package/model/mobileCommercePhone.d.ts +22 -0
  131. package/{lib/model → model}/models.d.ts +2 -73
  132. package/model/party.d.ts +14 -0
  133. package/model/payer.d.ts +17 -0
  134. package/model/payerSessionInfo.d.ts +18 -0
  135. package/{lib/model → model}/payment.d.ts +0 -2
  136. package/model/paymentError.d.ts +20 -0
  137. package/model/paymentFlow.d.ts +22 -0
  138. package/model/paymentFlowHold.d.ts +27 -0
  139. package/model/paymentFlowInstant.d.ts +14 -0
  140. package/model/paymentInstitution.d.ts +29 -0
  141. package/model/paymentInteractionCompleted.d.ts +20 -0
  142. package/model/paymentInteractionRequested.d.ts +20 -0
  143. package/model/paymentMethod.d.ts +25 -0
  144. package/model/paymentParams.d.ts +31 -0
  145. package/model/paymentRecurrentParent.d.ts +22 -0
  146. package/model/paymentResource.d.ts +26 -0
  147. package/model/paymentResourceClientInfo.d.ts +23 -0
  148. package/model/paymentResourceParams.d.ts +15 -0
  149. package/model/paymentResourcePayer.d.ts +29 -0
  150. package/model/paymentResourceResult.d.ts +34 -0
  151. package/{lib/model → model}/paymentSearchResult.d.ts +0 -2
  152. package/model/paymentStarted.d.ts +16 -0
  153. package/model/paymentStatus.d.ts +28 -0
  154. package/model/paymentStatusChanged.d.ts +30 -0
  155. package/model/paymentTerminal.d.ts +18 -0
  156. package/model/paymentTerminalData.d.ts +22 -0
  157. package/model/paymentTerminalDetails.d.ts +15 -0
  158. package/model/paymentTerminalReceipt.d.ts +20 -0
  159. package/model/paymentTerms.d.ts +13 -0
  160. package/model/paymentTool.d.ts +26 -0
  161. package/model/paymentToolDetails.d.ts +18 -0
  162. package/model/paymentToolDetailsBankCard.d.ts +43 -0
  163. package/model/paymentToolDetailsCryptoWallet.d.ts +16 -0
  164. package/model/paymentToolDetailsDigitalWallet.d.ts +16 -0
  165. package/model/paymentToolDetailsMobileCommerce.d.ts +16 -0
  166. package/model/paymentToolDetailsPaymentTerminal.d.ts +16 -0
  167. package/model/powerOfAttorney.d.ts +26 -0
  168. package/model/privateEntity.d.ts +25 -0
  169. package/model/qrCodeDisplayRequest.d.ts +16 -0
  170. package/model/realmMode.d.ts +17 -0
  171. package/model/reason.d.ts +15 -0
  172. package/model/recurrentPayer.d.ts +21 -0
  173. package/model/redirect.d.ts +14 -0
  174. package/{lib/model → model}/refund.d.ts +0 -2
  175. package/model/refundError.d.ts +22 -0
  176. package/model/refundParams.d.ts +37 -0
  177. package/{lib/model → model}/refundSearchResult.d.ts +8 -10
  178. package/model/refundStarted.d.ts +17 -0
  179. package/model/refundStatus.d.ts +25 -0
  180. package/model/refundStatusChanged.d.ts +28 -0
  181. package/model/registeredUser.d.ts +21 -0
  182. package/model/reportLink.d.ts +15 -0
  183. package/model/reportParams.d.ts +29 -0
  184. package/model/reportingPreferences.d.ts +16 -0
  185. package/model/representative.d.ts +24 -0
  186. package/model/representativeDocument.d.ts +22 -0
  187. package/model/rescindInvoice400Response.d.ts +30 -0
  188. package/{lib/model → model}/russianLegalEntity.d.ts +0 -2
  189. package/model/russianPrivateEntity.d.ts +31 -0
  190. package/model/samsungPay.d.ts +22 -0
  191. package/model/schedule.d.ts +17 -0
  192. package/model/searchInvoices200Response.d.ts +17 -0
  193. package/model/searchPayments200Response.d.ts +17 -0
  194. package/model/searchRefunds200Response.d.ts +14 -0
  195. package/model/serviceAcceptanceActPreferences.d.ts +20 -0
  196. package/model/serviceProvider.d.ts +30 -0
  197. package/model/shop.d.ts +46 -0
  198. package/model/shopDetails.d.ts +19 -0
  199. package/model/shopLocation.d.ts +18 -0
  200. package/model/shopLocationUrl.d.ts +19 -0
  201. package/model/subError.d.ts +19 -0
  202. package/model/tokenizedCardData.d.ts +22 -0
  203. package/model/tradeBloc.d.ts +17 -0
  204. package/model/transactionInfo.d.ts +22 -0
  205. package/model/updateInvoiceTemplate400Response.d.ts +29 -0
  206. package/model/userInteraction.d.ts +15 -0
  207. package/model/userInteractionFormInner.d.ts +19 -0
  208. package/model/webhook.d.ts +33 -0
  209. package/model/webhookScope.d.ts +25 -0
  210. package/model/yandexPay.d.ts +22 -0
  211. package/package.json +14 -10
  212. package/esm2022/lib/api/api.mjs +0 -32
  213. package/esm2022/lib/api/categories.service.mjs +0 -212
  214. package/esm2022/lib/api/contracts.service.mjs +0 -592
  215. package/esm2022/lib/api/countries.service.mjs +0 -212
  216. package/esm2022/lib/api/customers.service.mjs +0 -675
  217. package/esm2022/lib/api/invoiceTemplates.service.mjs +0 -491
  218. package/esm2022/lib/api/invoices.service.mjs +0 -698
  219. package/esm2022/lib/api/parties.service.mjs +0 -444
  220. package/esm2022/lib/api/paymentInstitutions.service.mjs +0 -622
  221. package/esm2022/lib/api/payments.service.mjs +0 -1056
  222. package/esm2022/lib/api/payouts.service.mjs +0 -541
  223. package/esm2022/lib/api/search.service.mjs +0 -616
  224. package/esm2022/lib/api/shops.service.mjs +0 -584
  225. package/esm2022/lib/api/tokens.service.mjs +0 -165
  226. package/esm2022/lib/api/tradeBlocs.service.mjs +0 -212
  227. package/esm2022/lib/api/webhooks.service.mjs +0 -401
  228. package/esm2022/lib/api.module.mjs +0 -40
  229. package/esm2022/lib/configuration.mjs +0 -102
  230. package/esm2022/lib/encoder.mjs +0 -19
  231. package/esm2022/lib/index.mjs +0 -7
  232. package/esm2022/lib/model/accessToken.mjs +0 -13
  233. package/esm2022/lib/model/allocationBodyAmount.mjs +0 -2
  234. package/esm2022/lib/model/allocationBodyAmountAllOf.mjs +0 -13
  235. package/esm2022/lib/model/allocationBodyTotal.mjs +0 -2
  236. package/esm2022/lib/model/allocationBodyTotalAllOf.mjs +0 -2
  237. package/esm2022/lib/model/allocationFee.mjs +0 -8
  238. package/esm2022/lib/model/allocationFeeFixed.mjs +0 -2
  239. package/esm2022/lib/model/allocationFeeFixedAllOf.mjs +0 -13
  240. package/esm2022/lib/model/allocationFeeShare.mjs +0 -2
  241. package/esm2022/lib/model/allocationFeeShareAllOf.mjs +0 -2
  242. package/esm2022/lib/model/allocationFeeTarget.mjs +0 -18
  243. package/esm2022/lib/model/allocationTarget.mjs +0 -18
  244. package/esm2022/lib/model/allocationTargetShop.mjs +0 -2
  245. package/esm2022/lib/model/allocationTargetShopAllOf.mjs +0 -13
  246. package/esm2022/lib/model/allocationTransaction.mjs +0 -8
  247. package/esm2022/lib/model/apiExtensionRequest.mjs +0 -2
  248. package/esm2022/lib/model/apiExtensionRequestAllOf.mjs +0 -13
  249. package/esm2022/lib/model/applePay.mjs +0 -2
  250. package/esm2022/lib/model/applePayAllOf.mjs +0 -13
  251. package/esm2022/lib/model/articlesOfAssociation.mjs +0 -2
  252. package/esm2022/lib/model/bankAccount.mjs +0 -13
  253. package/esm2022/lib/model/bankCard.mjs +0 -2
  254. package/esm2022/lib/model/bankCardAllOf.mjs +0 -2
  255. package/esm2022/lib/model/bankCardAllOfTokenProviderData.mjs +0 -19
  256. package/esm2022/lib/model/bankCardDetails.mjs +0 -19
  257. package/esm2022/lib/model/bankCardTokenProviderData.mjs +0 -19
  258. package/esm2022/lib/model/bankCardTokenizationMethod.mjs +0 -16
  259. package/esm2022/lib/model/browserGetRequest.mjs +0 -2
  260. package/esm2022/lib/model/browserGetRequestAllOf.mjs +0 -13
  261. package/esm2022/lib/model/browserPostRequest.mjs +0 -2
  262. package/esm2022/lib/model/browserPostRequestAllOf.mjs +0 -2
  263. package/esm2022/lib/model/browserRequest.mjs +0 -13
  264. package/esm2022/lib/model/cancelPayment400Response.mjs +0 -23
  265. package/esm2022/lib/model/captureParams.mjs +0 -2
  266. package/esm2022/lib/model/captureParamsAllOf.mjs +0 -2
  267. package/esm2022/lib/model/capturePayment400Response.mjs +0 -28
  268. package/esm2022/lib/model/cardData.mjs +0 -2
  269. package/esm2022/lib/model/cardDataAllOf.mjs +0 -13
  270. package/esm2022/lib/model/category.mjs +0 -13
  271. package/esm2022/lib/model/chargeback.mjs +0 -26
  272. package/esm2022/lib/model/clientInfo.mjs +0 -13
  273. package/esm2022/lib/model/contactInfo.mjs +0 -13
  274. package/esm2022/lib/model/contract.mjs +0 -8
  275. package/esm2022/lib/model/contractAdjustment.mjs +0 -13
  276. package/esm2022/lib/model/contractor.mjs +0 -20
  277. package/esm2022/lib/model/costAmountRange.mjs +0 -13
  278. package/esm2022/lib/model/country.mjs +0 -13
  279. package/esm2022/lib/model/createBinding400Response.mjs +0 -25
  280. package/esm2022/lib/model/createCustomer400Response.mjs +0 -25
  281. package/esm2022/lib/model/createInvoice400Response.mjs +0 -29
  282. package/esm2022/lib/model/createInvoiceTemplate400Response.mjs +0 -25
  283. package/esm2022/lib/model/createInvoiceWithTemplate400Response.mjs +0 -22
  284. package/esm2022/lib/model/createPayment400Response.mjs +0 -29
  285. package/esm2022/lib/model/createPayout400Response.mjs +0 -23
  286. package/esm2022/lib/model/createRefund400Response.mjs +0 -32
  287. package/esm2022/lib/model/createWebhook400Response.mjs +0 -22
  288. package/esm2022/lib/model/createWebhook429Response.mjs +0 -13
  289. package/esm2022/lib/model/cryptoCurrencyTransferRequest.mjs +0 -2
  290. package/esm2022/lib/model/cryptoCurrencyTransferRequestAllOf.mjs +0 -13
  291. package/esm2022/lib/model/cryptoWallet.mjs +0 -2
  292. package/esm2022/lib/model/cryptoWalletAllOf.mjs +0 -13
  293. package/esm2022/lib/model/cryptoWalletData.mjs +0 -2
  294. package/esm2022/lib/model/cryptoWalletDetails.mjs +0 -13
  295. package/esm2022/lib/model/customer.mjs +0 -8
  296. package/esm2022/lib/model/customerAndToken.mjs +0 -2
  297. package/esm2022/lib/model/customerBinding.mjs +0 -9
  298. package/esm2022/lib/model/customerBindingError.mjs +0 -13
  299. package/esm2022/lib/model/customerBindingInteractionCompleted.mjs +0 -2
  300. package/esm2022/lib/model/customerBindingInteractionCompletedAllOf.mjs +0 -2
  301. package/esm2022/lib/model/customerBindingInteractionRequested.mjs +0 -2
  302. package/esm2022/lib/model/customerBindingInteractionRequestedAllOf.mjs +0 -2
  303. package/esm2022/lib/model/customerBindingParams.mjs +0 -2
  304. package/esm2022/lib/model/customerBindingStarted.mjs +0 -2
  305. package/esm2022/lib/model/customerBindingStartedAllOf.mjs +0 -2
  306. package/esm2022/lib/model/customerBindingStatus.mjs +0 -9
  307. package/esm2022/lib/model/customerBindingStatusChanged.mjs +0 -9
  308. package/esm2022/lib/model/customerBindingStatusChangedAllOf.mjs +0 -13
  309. package/esm2022/lib/model/customerChange.mjs +0 -21
  310. package/esm2022/lib/model/customerEvent.mjs +0 -2
  311. package/esm2022/lib/model/customerParams.mjs +0 -2
  312. package/esm2022/lib/model/customerPayer.mjs +0 -2
  313. package/esm2022/lib/model/customerPayerAllOf.mjs +0 -2
  314. package/esm2022/lib/model/customersTopic.mjs +0 -12
  315. package/esm2022/lib/model/customersTopicAllOf.mjs +0 -23
  316. package/esm2022/lib/model/decimal.mjs +0 -13
  317. package/esm2022/lib/model/defaultLogicError.mjs +0 -19
  318. package/esm2022/lib/model/deleteCustomer400Response.mjs +0 -21
  319. package/esm2022/lib/model/digitalWallet.mjs +0 -2
  320. package/esm2022/lib/model/digitalWalletAllOf.mjs +0 -13
  321. package/esm2022/lib/model/digitalWalletData.mjs +0 -2
  322. package/esm2022/lib/model/digitalWalletDataAllOf.mjs +0 -13
  323. package/esm2022/lib/model/digitalWalletDetails.mjs +0 -13
  324. package/esm2022/lib/model/externalIDConflictError.mjs +0 -13
  325. package/esm2022/lib/model/fulfillInvoice400Response.mjs +0 -22
  326. package/esm2022/lib/model/generalError.mjs +0 -13
  327. package/esm2022/lib/model/googlePay.mjs +0 -2
  328. package/esm2022/lib/model/googlePayAllOf.mjs +0 -13
  329. package/esm2022/lib/model/internationalBankAccount.mjs +0 -2
  330. package/esm2022/lib/model/internationalBankDetails.mjs +0 -13
  331. package/esm2022/lib/model/internationalCorrespondentBankAccount.mjs +0 -2
  332. package/esm2022/lib/model/internationalLegalEntity.mjs +0 -2
  333. package/esm2022/lib/model/internationalLegalEntityAllOf.mjs +0 -13
  334. package/esm2022/lib/model/invoice.mjs +0 -10
  335. package/esm2022/lib/model/invoiceAndToken.mjs +0 -2
  336. package/esm2022/lib/model/invoiceBankAccount.mjs +0 -18
  337. package/esm2022/lib/model/invoiceChange.mjs +0 -25
  338. package/esm2022/lib/model/invoiceClientInfo.mjs +0 -19
  339. package/esm2022/lib/model/invoiceCreated.mjs +0 -2
  340. package/esm2022/lib/model/invoiceCreatedAllOf.mjs +0 -2
  341. package/esm2022/lib/model/invoiceEvent.mjs +0 -2
  342. package/esm2022/lib/model/invoiceLine.mjs +0 -2
  343. package/esm2022/lib/model/invoiceLineTaxMode.mjs +0 -18
  344. package/esm2022/lib/model/invoiceLineTaxVAT.mjs +0 -13
  345. package/esm2022/lib/model/invoiceLineTaxVATAllOf.mjs +0 -24
  346. package/esm2022/lib/model/invoiceParams.mjs +0 -2
  347. package/esm2022/lib/model/invoiceParamsWithTemplate.mjs +0 -13
  348. package/esm2022/lib/model/invoiceRussianBankAccount.mjs +0 -2
  349. package/esm2022/lib/model/invoiceRussianBankAccountAllOf.mjs +0 -13
  350. package/esm2022/lib/model/invoiceStatus.mjs +0 -21
  351. package/esm2022/lib/model/invoiceStatusChanged.mjs +0 -10
  352. package/esm2022/lib/model/invoiceTemplate.mjs +0 -2
  353. package/esm2022/lib/model/invoiceTemplateAndToken.mjs +0 -2
  354. package/esm2022/lib/model/invoiceTemplateCreateParams.mjs +0 -2
  355. package/esm2022/lib/model/invoiceTemplateDetails.mjs +0 -13
  356. package/esm2022/lib/model/invoiceTemplateLineCost.mjs +0 -13
  357. package/esm2022/lib/model/invoiceTemplateLineCostFixed.mjs +0 -2
  358. package/esm2022/lib/model/invoiceTemplateLineCostFixedAllOf.mjs +0 -13
  359. package/esm2022/lib/model/invoiceTemplateLineCostRange.mjs +0 -2
  360. package/esm2022/lib/model/invoiceTemplateLineCostRangeAllOf.mjs +0 -2
  361. package/esm2022/lib/model/invoiceTemplateLineCostUnlim.mjs +0 -2
  362. package/esm2022/lib/model/invoiceTemplateMultiLine.mjs +0 -2
  363. package/esm2022/lib/model/invoiceTemplateMultiLineAllOf.mjs +0 -2
  364. package/esm2022/lib/model/invoiceTemplateSingleLine.mjs +0 -2
  365. package/esm2022/lib/model/invoiceTemplateSingleLineAllOf.mjs +0 -2
  366. package/esm2022/lib/model/invoiceTemplateUpdateParams.mjs +0 -2
  367. package/esm2022/lib/model/invoicesTopic.mjs +0 -21
  368. package/esm2022/lib/model/invoicesTopicAllOf.mjs +0 -32
  369. package/esm2022/lib/model/legalAgreement.mjs +0 -13
  370. package/esm2022/lib/model/legalEntity.mjs +0 -2
  371. package/esm2022/lib/model/legalEntityAllOf.mjs +0 -19
  372. package/esm2022/lib/model/lifetimeInterval.mjs +0 -13
  373. package/esm2022/lib/model/logicError.mjs +0 -13
  374. package/esm2022/lib/model/mobileCommerce.mjs +0 -2
  375. package/esm2022/lib/model/mobileCommerceAllOf.mjs +0 -13
  376. package/esm2022/lib/model/mobileCommerceData.mjs +0 -2
  377. package/esm2022/lib/model/mobileCommerceDataAllOf.mjs +0 -2
  378. package/esm2022/lib/model/mobileCommerceDetails.mjs +0 -13
  379. package/esm2022/lib/model/mobileCommercePhone.mjs +0 -13
  380. package/esm2022/lib/model/models.mjs +0 -264
  381. package/esm2022/lib/model/party.mjs +0 -13
  382. package/esm2022/lib/model/payer.mjs +0 -2
  383. package/esm2022/lib/model/payerSessionInfo.mjs +0 -13
  384. package/esm2022/lib/model/payment.mjs +0 -12
  385. package/esm2022/lib/model/paymentError.mjs +0 -2
  386. package/esm2022/lib/model/paymentFlow.mjs +0 -19
  387. package/esm2022/lib/model/paymentFlowHold.mjs +0 -8
  388. package/esm2022/lib/model/paymentFlowHoldAllOf.mjs +0 -19
  389. package/esm2022/lib/model/paymentFlowInstant.mjs +0 -2
  390. package/esm2022/lib/model/paymentInstitution.mjs +0 -19
  391. package/esm2022/lib/model/paymentInteractionCompleted.mjs +0 -2
  392. package/esm2022/lib/model/paymentInteractionCompletedAllOf.mjs +0 -2
  393. package/esm2022/lib/model/paymentInteractionRequested.mjs +0 -2
  394. package/esm2022/lib/model/paymentInteractionRequestedAllOf.mjs +0 -2
  395. package/esm2022/lib/model/paymentMethod.mjs +0 -22
  396. package/esm2022/lib/model/paymentParams.mjs +0 -2
  397. package/esm2022/lib/model/paymentRecurrentParent.mjs +0 -13
  398. package/esm2022/lib/model/paymentResource.mjs +0 -2
  399. package/esm2022/lib/model/paymentResourceClientInfo.mjs +0 -13
  400. package/esm2022/lib/model/paymentResourceParams.mjs +0 -2
  401. package/esm2022/lib/model/paymentResourcePayer.mjs +0 -2
  402. package/esm2022/lib/model/paymentResourcePayerAllOf.mjs +0 -2
  403. package/esm2022/lib/model/paymentResourceResult.mjs +0 -2
  404. package/esm2022/lib/model/paymentSearchResult.mjs +0 -12
  405. package/esm2022/lib/model/paymentSearchResultAllOf.mjs +0 -2
  406. package/esm2022/lib/model/paymentStarted.mjs +0 -2
  407. package/esm2022/lib/model/paymentStartedAllOf.mjs +0 -2
  408. package/esm2022/lib/model/paymentStatus.mjs +0 -12
  409. package/esm2022/lib/model/paymentStatusChanged.mjs +0 -12
  410. package/esm2022/lib/model/paymentStatusChangedAllOf.mjs +0 -13
  411. package/esm2022/lib/model/paymentTerminal.mjs +0 -2
  412. package/esm2022/lib/model/paymentTerminalAllOf.mjs +0 -13
  413. package/esm2022/lib/model/paymentTerminalData.mjs +0 -2
  414. package/esm2022/lib/model/paymentTerminalDataAllOf.mjs +0 -13
  415. package/esm2022/lib/model/paymentTerminalDetails.mjs +0 -13
  416. package/esm2022/lib/model/paymentTerminalReceipt.mjs +0 -2
  417. package/esm2022/lib/model/paymentTerminalReceiptAllOf.mjs +0 -13
  418. package/esm2022/lib/model/paymentTerms.mjs +0 -13
  419. package/esm2022/lib/model/paymentTool.mjs +0 -23
  420. package/esm2022/lib/model/paymentToolDetails.mjs +0 -13
  421. package/esm2022/lib/model/paymentToolDetailsBankCard.mjs +0 -8
  422. package/esm2022/lib/model/paymentToolDetailsCryptoWallet.mjs +0 -2
  423. package/esm2022/lib/model/paymentToolDetailsDigitalWallet.mjs +0 -2
  424. package/esm2022/lib/model/paymentToolDetailsMobileCommerce.mjs +0 -2
  425. package/esm2022/lib/model/paymentToolDetailsPaymentTerminal.mjs +0 -2
  426. package/esm2022/lib/model/payout.mjs +0 -2
  427. package/esm2022/lib/model/payoutParams.mjs +0 -13
  428. package/esm2022/lib/model/payoutTool.mjs +0 -2
  429. package/esm2022/lib/model/payoutToolAllOf.mjs +0 -13
  430. package/esm2022/lib/model/payoutToolDetails.mjs +0 -13
  431. package/esm2022/lib/model/payoutToolDetailsBankAccount.mjs +0 -2
  432. package/esm2022/lib/model/payoutToolDetailsInternationalBankAccount.mjs +0 -2
  433. package/esm2022/lib/model/payoutToolDetailsPaymentInstitutionAccount.mjs +0 -2
  434. package/esm2022/lib/model/payoutToolDetailsWalletInfo.mjs +0 -2
  435. package/esm2022/lib/model/payoutToolDetailsWalletInfoAllOf.mjs +0 -13
  436. package/esm2022/lib/model/payoutToolParams.mjs +0 -2
  437. package/esm2022/lib/model/powerOfAttorney.mjs +0 -2
  438. package/esm2022/lib/model/privateEntity.mjs +0 -2
  439. package/esm2022/lib/model/privateEntityAllOf.mjs +0 -18
  440. package/esm2022/lib/model/qrCodeDisplayRequest.mjs +0 -2
  441. package/esm2022/lib/model/qrCodeDisplayRequestAllOf.mjs +0 -13
  442. package/esm2022/lib/model/realmMode.mjs +0 -16
  443. package/esm2022/lib/model/reason.mjs +0 -13
  444. package/esm2022/lib/model/recurrentPayer.mjs +0 -2
  445. package/esm2022/lib/model/recurrentPayerAllOf.mjs +0 -2
  446. package/esm2022/lib/model/redirect.mjs +0 -2
  447. package/esm2022/lib/model/redirectAllOf.mjs +0 -2
  448. package/esm2022/lib/model/refund.mjs +0 -9
  449. package/esm2022/lib/model/refundError.mjs +0 -13
  450. package/esm2022/lib/model/refundParams.mjs +0 -2
  451. package/esm2022/lib/model/refundSearchResult.mjs +0 -9
  452. package/esm2022/lib/model/refundSearchResultAllOf.mjs +0 -13
  453. package/esm2022/lib/model/refundStarted.mjs +0 -2
  454. package/esm2022/lib/model/refundStartedAllOf.mjs +0 -2
  455. package/esm2022/lib/model/refundStatus.mjs +0 -9
  456. package/esm2022/lib/model/refundStatusChanged.mjs +0 -9
  457. package/esm2022/lib/model/refundStatusChangedAllOf.mjs +0 -13
  458. package/esm2022/lib/model/registeredUser.mjs +0 -2
  459. package/esm2022/lib/model/registeredUserAllOf.mjs +0 -13
  460. package/esm2022/lib/model/reportLink.mjs +0 -13
  461. package/esm2022/lib/model/reportParams.mjs +0 -18
  462. package/esm2022/lib/model/reportingPreferences.mjs +0 -2
  463. package/esm2022/lib/model/representative.mjs +0 -2
  464. package/esm2022/lib/model/representativeDocument.mjs +0 -19
  465. package/esm2022/lib/model/rescindInvoice400Response.mjs +0 -23
  466. package/esm2022/lib/model/russianLegalEntity.mjs +0 -2
  467. package/esm2022/lib/model/russianLegalEntityAllOf.mjs +0 -2
  468. package/esm2022/lib/model/russianPrivateEntity.mjs +0 -2
  469. package/esm2022/lib/model/russianPrivateEntityAllOf.mjs +0 -2
  470. package/esm2022/lib/model/samsungPay.mjs +0 -2
  471. package/esm2022/lib/model/samsungPayAllOf.mjs +0 -13
  472. package/esm2022/lib/model/schedule.mjs +0 -13
  473. package/esm2022/lib/model/searchInvoices200Response.mjs +0 -2
  474. package/esm2022/lib/model/searchPayments200Response.mjs +0 -2
  475. package/esm2022/lib/model/searchPayouts200Response.mjs +0 -2
  476. package/esm2022/lib/model/searchRefunds200Response.mjs +0 -2
  477. package/esm2022/lib/model/serviceAcceptanceActPreferences.mjs +0 -2
  478. package/esm2022/lib/model/serviceProvider.mjs +0 -13
  479. package/esm2022/lib/model/shop.mjs +0 -2
  480. package/esm2022/lib/model/shopDetails.mjs +0 -13
  481. package/esm2022/lib/model/shopLocation.mjs +0 -13
  482. package/esm2022/lib/model/shopLocationUrl.mjs +0 -2
  483. package/esm2022/lib/model/shopLocationUrlAllOf.mjs +0 -13
  484. package/esm2022/lib/model/subError.mjs +0 -13
  485. package/esm2022/lib/model/tokenizedCardData.mjs +0 -2
  486. package/esm2022/lib/model/tokenizedCardDataAllOf.mjs +0 -21
  487. package/esm2022/lib/model/tradeBloc.mjs +0 -13
  488. package/esm2022/lib/model/transactionInfo.mjs +0 -13
  489. package/esm2022/lib/model/updateInvoiceTemplate400Response.mjs +0 -22
  490. package/esm2022/lib/model/userInteraction.mjs +0 -13
  491. package/esm2022/lib/model/userInteractionFormInner.mjs +0 -13
  492. package/esm2022/lib/model/webhook.mjs +0 -2
  493. package/esm2022/lib/model/webhookScope.mjs +0 -19
  494. package/esm2022/lib/model/yandexPay.mjs +0 -2
  495. package/esm2022/lib/model/yandexPayAllOf.mjs +0 -13
  496. package/esm2022/lib/param.mjs +0 -2
  497. package/esm2022/lib/variables.mjs +0 -9
  498. package/esm2022/public-api.mjs +0 -2
  499. package/esm2022/vality-swag-payments.mjs +0 -5
  500. package/lib/api/paymentInstitutions.service.d.ts +0 -245
  501. package/lib/api/payouts.service.d.ts +0 -209
  502. package/lib/index.d.ts +0 -6
  503. package/lib/model/accessToken.d.ts +0 -17
  504. package/lib/model/allocationBodyAmountAllOf.d.ts +0 -21
  505. package/lib/model/allocationBodyTotalAllOf.d.ts +0 -27
  506. package/lib/model/allocationFee.d.ts +0 -26
  507. package/lib/model/allocationFeeFixedAllOf.d.ts +0 -17
  508. package/lib/model/allocationFeeShareAllOf.d.ts +0 -19
  509. package/lib/model/allocationFeeTarget.d.ts +0 -23
  510. package/lib/model/allocationTarget.d.ts +0 -23
  511. package/lib/model/allocationTargetShop.d.ts +0 -23
  512. package/lib/model/allocationTargetShopAllOf.d.ts +0 -17
  513. package/lib/model/allocationTransaction.d.ts +0 -34
  514. package/lib/model/apiExtensionRequest.d.ts +0 -18
  515. package/lib/model/apiExtensionRequestAllOf.d.ts +0 -17
  516. package/lib/model/applePay.d.ts +0 -24
  517. package/lib/model/applePayAllOf.d.ts +0 -24
  518. package/lib/model/articlesOfAssociation.d.ts +0 -19
  519. package/lib/model/bankAccount.d.ts +0 -29
  520. package/lib/model/bankCard.d.ts +0 -26
  521. package/lib/model/bankCardAllOf.d.ts +0 -23
  522. package/lib/model/bankCardAllOfTokenProviderData.d.ts +0 -36
  523. package/lib/model/bankCardDetails.d.ts +0 -44
  524. package/lib/model/bankCardTokenizationMethod.d.ts +0 -19
  525. package/lib/model/browserGetRequest.d.ts +0 -18
  526. package/lib/model/browserGetRequestAllOf.d.ts +0 -17
  527. package/lib/model/browserPostRequest.d.ts +0 -23
  528. package/lib/model/browserPostRequestAllOf.d.ts +0 -22
  529. package/lib/model/browserRequest.d.ts +0 -17
  530. package/lib/model/cancelPayment400Response.d.ts +0 -32
  531. package/lib/model/captureParams.d.ts +0 -35
  532. package/lib/model/captureParamsAllOf.d.ts +0 -34
  533. package/lib/model/capturePayment400Response.d.ts +0 -37
  534. package/lib/model/cardData.d.ts +0 -32
  535. package/lib/model/cardDataAllOf.d.ts +0 -32
  536. package/lib/model/category.d.ts +0 -16
  537. package/lib/model/chargeback.d.ts +0 -60
  538. package/lib/model/clientInfo.d.ts +0 -28
  539. package/lib/model/contactInfo.d.ts +0 -52
  540. package/lib/model/contract.d.ts +0 -54
  541. package/lib/model/contractAdjustment.d.ts +0 -32
  542. package/lib/model/contractor.d.ts +0 -28
  543. package/lib/model/costAmountRange.d.ts +0 -21
  544. package/lib/model/country.d.ts +0 -22
  545. package/lib/model/createBinding400Response.d.ts +0 -34
  546. package/lib/model/createCustomer400Response.d.ts +0 -34
  547. package/lib/model/createInvoice400Response.d.ts +0 -38
  548. package/lib/model/createInvoiceTemplate400Response.d.ts +0 -34
  549. package/lib/model/createInvoiceWithTemplate400Response.d.ts +0 -31
  550. package/lib/model/createPayment400Response.d.ts +0 -38
  551. package/lib/model/createPayout400Response.d.ts +0 -32
  552. package/lib/model/createRefund400Response.d.ts +0 -41
  553. package/lib/model/createWebhook400Response.d.ts +0 -31
  554. package/lib/model/createWebhook429Response.d.ts +0 -17
  555. package/lib/model/cryptoCurrencyTransferRequest.d.ts +0 -26
  556. package/lib/model/cryptoCurrencyTransferRequestAllOf.d.ts +0 -25
  557. package/lib/model/cryptoWallet.d.ts +0 -20
  558. package/lib/model/cryptoWalletAllOf.d.ts +0 -17
  559. package/lib/model/cryptoWalletData.d.ts +0 -20
  560. package/lib/model/cryptoWalletDetails.d.ts +0 -17
  561. package/lib/model/customer.d.ts +0 -46
  562. package/lib/model/customerAndToken.d.ts +0 -17
  563. package/lib/model/customerBinding.d.ts +0 -37
  564. package/lib/model/customerBindingError.d.ts +0 -18
  565. package/lib/model/customerBindingInteractionCompleted.d.ts +0 -22
  566. package/lib/model/customerBindingInteractionCompletedAllOf.d.ts +0 -22
  567. package/lib/model/customerBindingInteractionRequested.d.ts +0 -22
  568. package/lib/model/customerBindingInteractionRequestedAllOf.d.ts +0 -22
  569. package/lib/model/customerBindingParams.d.ts +0 -19
  570. package/lib/model/customerBindingStarted.d.ts +0 -18
  571. package/lib/model/customerBindingStartedAllOf.d.ts +0 -15
  572. package/lib/model/customerBindingStatus.d.ts +0 -27
  573. package/lib/model/customerBindingStatusChanged.d.ts +0 -29
  574. package/lib/model/customerBindingStatusChangedAllOf.d.ts +0 -14
  575. package/lib/model/customerChange.d.ts +0 -23
  576. package/lib/model/customerEvent.d.ts +0 -17
  577. package/lib/model/customerParams.d.ts +0 -31
  578. package/lib/model/customerPayer.d.ts +0 -23
  579. package/lib/model/customerPayerAllOf.d.ts +0 -19
  580. package/lib/model/customersTopic.d.ts +0 -36
  581. package/lib/model/customersTopicAllOf.d.ts +0 -32
  582. package/lib/model/decimal.d.ts +0 -24
  583. package/lib/model/defaultLogicError.d.ts +0 -28
  584. package/lib/model/deleteCustomer400Response.d.ts +0 -30
  585. package/lib/model/digitalWallet.d.ts +0 -20
  586. package/lib/model/digitalWalletAllOf.d.ts +0 -17
  587. package/lib/model/digitalWalletData.d.ts +0 -28
  588. package/lib/model/digitalWalletDataAllOf.d.ts +0 -28
  589. package/lib/model/digitalWalletDetails.d.ts +0 -17
  590. package/lib/model/externalIDConflictError.d.ts +0 -25
  591. package/lib/model/fulfillInvoice400Response.d.ts +0 -31
  592. package/lib/model/generalError.d.ts +0 -14
  593. package/lib/model/googlePay.d.ts +0 -24
  594. package/lib/model/googlePayAllOf.d.ts +0 -24
  595. package/lib/model/internationalBankAccount.d.ts +0 -28
  596. package/lib/model/internationalBankDetails.d.ts +0 -36
  597. package/lib/model/internationalCorrespondentBankAccount.d.ts +0 -24
  598. package/lib/model/internationalLegalEntity.d.ts +0 -43
  599. package/lib/model/internationalLegalEntityAllOf.d.ts +0 -37
  600. package/lib/model/invoiceAndToken.d.ts +0 -17
  601. package/lib/model/invoiceBankAccount.d.ts +0 -26
  602. package/lib/model/invoiceChange.d.ts +0 -27
  603. package/lib/model/invoiceClientInfo.d.ts +0 -27
  604. package/lib/model/invoiceCreated.d.ts +0 -18
  605. package/lib/model/invoiceCreatedAllOf.d.ts +0 -15
  606. package/lib/model/invoiceEvent.d.ts +0 -17
  607. package/lib/model/invoiceLine.d.ts +0 -34
  608. package/lib/model/invoiceLineTaxMode.d.ts +0 -26
  609. package/lib/model/invoiceLineTaxVAT.d.ts +0 -30
  610. package/lib/model/invoiceLineTaxVATAllOf.d.ts +0 -32
  611. package/lib/model/invoiceParamsWithTemplate.d.ts +0 -29
  612. package/lib/model/invoiceRussianBankAccount.d.ts +0 -24
  613. package/lib/model/invoiceRussianBankAccountAllOf.d.ts +0 -24
  614. package/lib/model/invoiceStatus.d.ts +0 -30
  615. package/lib/model/invoiceStatusChanged.d.ts +0 -31
  616. package/lib/model/invoiceTemplate.d.ts +0 -45
  617. package/lib/model/invoiceTemplateAndToken.d.ts +0 -17
  618. package/lib/model/invoiceTemplateCreateParams.d.ts +0 -41
  619. package/lib/model/invoiceTemplateDetails.d.ts +0 -14
  620. package/lib/model/invoiceTemplateLineCost.d.ts +0 -17
  621. package/lib/model/invoiceTemplateLineCostFixed.d.ts +0 -22
  622. package/lib/model/invoiceTemplateLineCostFixedAllOf.d.ts +0 -21
  623. package/lib/model/invoiceTemplateLineCostRange.d.ts +0 -20
  624. package/lib/model/invoiceTemplateLineCostRangeAllOf.d.ts +0 -19
  625. package/lib/model/invoiceTemplateLineCostUnlim.d.ts +0 -14
  626. package/lib/model/invoiceTemplateMultiLine.d.ts +0 -23
  627. package/lib/model/invoiceTemplateMultiLineAllOf.d.ts +0 -22
  628. package/lib/model/invoiceTemplateSingleLine.d.ts +0 -22
  629. package/lib/model/invoiceTemplateSingleLineAllOf.d.ts +0 -21
  630. package/lib/model/invoiceTemplateUpdateParams.d.ts +0 -29
  631. package/lib/model/invoicesTopicAllOf.d.ts +0 -41
  632. package/lib/model/legalAgreement.d.ts +0 -28
  633. package/lib/model/legalEntity.d.ts +0 -20
  634. package/lib/model/legalEntityAllOf.d.ts +0 -24
  635. package/lib/model/lifetimeInterval.d.ts +0 -19
  636. package/lib/model/logicError.d.ts +0 -18
  637. package/lib/model/mobileCommerce.d.ts +0 -20
  638. package/lib/model/mobileCommerceAllOf.d.ts +0 -17
  639. package/lib/model/mobileCommerceData.d.ts +0 -6
  640. package/lib/model/mobileCommerceDataAllOf.d.ts +0 -18
  641. package/lib/model/mobileCommerceDetails.d.ts +0 -17
  642. package/lib/model/mobileCommercePhone.d.ts +0 -24
  643. package/lib/model/party.d.ts +0 -16
  644. package/lib/model/payer.d.ts +0 -19
  645. package/lib/model/payerSessionInfo.d.ts +0 -20
  646. package/lib/model/paymentError.d.ts +0 -22
  647. package/lib/model/paymentFlow.d.ts +0 -24
  648. package/lib/model/paymentFlowHold.d.ts +0 -29
  649. package/lib/model/paymentFlowHoldAllOf.d.ts +0 -28
  650. package/lib/model/paymentFlowInstant.d.ts +0 -16
  651. package/lib/model/paymentInstitution.d.ts +0 -31
  652. package/lib/model/paymentInteractionCompleted.d.ts +0 -22
  653. package/lib/model/paymentInteractionCompletedAllOf.d.ts +0 -22
  654. package/lib/model/paymentInteractionRequested.d.ts +0 -22
  655. package/lib/model/paymentInteractionRequestedAllOf.d.ts +0 -22
  656. package/lib/model/paymentMethod.d.ts +0 -27
  657. package/lib/model/paymentParams.d.ts +0 -33
  658. package/lib/model/paymentRecurrentParent.d.ts +0 -24
  659. package/lib/model/paymentResource.d.ts +0 -28
  660. package/lib/model/paymentResourceClientInfo.d.ts +0 -25
  661. package/lib/model/paymentResourceParams.d.ts +0 -17
  662. package/lib/model/paymentResourcePayer.d.ts +0 -31
  663. package/lib/model/paymentResourcePayerAllOf.d.ts +0 -15
  664. package/lib/model/paymentResourceResult.d.ts +0 -36
  665. package/lib/model/paymentSearchResultAllOf.d.ts +0 -73
  666. package/lib/model/paymentStarted.d.ts +0 -18
  667. package/lib/model/paymentStartedAllOf.d.ts +0 -15
  668. package/lib/model/paymentStatus.d.ts +0 -30
  669. package/lib/model/paymentStatusChanged.d.ts +0 -32
  670. package/lib/model/paymentStatusChangedAllOf.d.ts +0 -14
  671. package/lib/model/paymentTerminal.d.ts +0 -20
  672. package/lib/model/paymentTerminalAllOf.d.ts +0 -17
  673. package/lib/model/paymentTerminalData.d.ts +0 -24
  674. package/lib/model/paymentTerminalDataAllOf.d.ts +0 -24
  675. package/lib/model/paymentTerminalDetails.d.ts +0 -17
  676. package/lib/model/paymentTerminalReceipt.d.ts +0 -22
  677. package/lib/model/paymentTerminalReceiptAllOf.d.ts +0 -21
  678. package/lib/model/paymentTerms.d.ts +0 -15
  679. package/lib/model/paymentTool.d.ts +0 -28
  680. package/lib/model/paymentToolDetails.d.ts +0 -20
  681. package/lib/model/paymentToolDetailsBankCard.d.ts +0 -45
  682. package/lib/model/paymentToolDetailsCryptoWallet.d.ts +0 -18
  683. package/lib/model/paymentToolDetailsDigitalWallet.d.ts +0 -18
  684. package/lib/model/paymentToolDetailsMobileCommerce.d.ts +0 -18
  685. package/lib/model/paymentToolDetailsPaymentTerminal.d.ts +0 -18
  686. package/lib/model/payout.d.ts +0 -47
  687. package/lib/model/payoutParams.d.ts +0 -37
  688. package/lib/model/payoutTool.d.ts +0 -26
  689. package/lib/model/payoutToolAllOf.d.ts +0 -17
  690. package/lib/model/payoutToolDetails.d.ts +0 -20
  691. package/lib/model/payoutToolDetailsBankAccount.d.ts +0 -27
  692. package/lib/model/payoutToolDetailsInternationalBankAccount.d.ts +0 -26
  693. package/lib/model/payoutToolDetailsPaymentInstitutionAccount.d.ts +0 -14
  694. package/lib/model/payoutToolDetailsWalletInfo.d.ts +0 -18
  695. package/lib/model/payoutToolDetailsWalletInfoAllOf.d.ts +0 -17
  696. package/lib/model/payoutToolParams.d.ts +0 -19
  697. package/lib/model/powerOfAttorney.d.ts +0 -28
  698. package/lib/model/privateEntity.d.ts +0 -20
  699. package/lib/model/privateEntityAllOf.d.ts +0 -23
  700. package/lib/model/qrCodeDisplayRequest.d.ts +0 -18
  701. package/lib/model/qrCodeDisplayRequestAllOf.d.ts +0 -17
  702. package/lib/model/realmMode.d.ts +0 -19
  703. package/lib/model/reason.d.ts +0 -17
  704. package/lib/model/recurrentPayer.d.ts +0 -23
  705. package/lib/model/recurrentPayerAllOf.d.ts +0 -19
  706. package/lib/model/redirect.d.ts +0 -16
  707. package/lib/model/redirectAllOf.d.ts +0 -15
  708. package/lib/model/refundError.d.ts +0 -24
  709. package/lib/model/refundParams.d.ts +0 -39
  710. package/lib/model/refundSearchResultAllOf.d.ts +0 -21
  711. package/lib/model/refundStarted.d.ts +0 -19
  712. package/lib/model/refundStartedAllOf.d.ts +0 -16
  713. package/lib/model/refundStatus.d.ts +0 -27
  714. package/lib/model/refundStatusChanged.d.ts +0 -30
  715. package/lib/model/refundStatusChangedAllOf.d.ts +0 -15
  716. package/lib/model/registeredUser.d.ts +0 -23
  717. package/lib/model/registeredUserAllOf.d.ts +0 -17
  718. package/lib/model/reportLink.d.ts +0 -17
  719. package/lib/model/reportParams.d.ts +0 -31
  720. package/lib/model/reportingPreferences.d.ts +0 -18
  721. package/lib/model/representative.d.ts +0 -26
  722. package/lib/model/representativeDocument.d.ts +0 -24
  723. package/lib/model/rescindInvoice400Response.d.ts +0 -32
  724. package/lib/model/russianLegalEntityAllOf.d.ts +0 -47
  725. package/lib/model/russianPrivateEntity.d.ts +0 -33
  726. package/lib/model/russianPrivateEntityAllOf.d.ts +0 -27
  727. package/lib/model/samsungPay.d.ts +0 -24
  728. package/lib/model/samsungPayAllOf.d.ts +0 -24
  729. package/lib/model/schedule.d.ts +0 -19
  730. package/lib/model/searchInvoices200Response.d.ts +0 -19
  731. package/lib/model/searchPayments200Response.d.ts +0 -19
  732. package/lib/model/searchPayouts200Response.d.ts +0 -16
  733. package/lib/model/searchRefunds200Response.d.ts +0 -16
  734. package/lib/model/serviceAcceptanceActPreferences.d.ts +0 -22
  735. package/lib/model/serviceProvider.d.ts +0 -32
  736. package/lib/model/shop.d.ts +0 -56
  737. package/lib/model/shopDetails.d.ts +0 -21
  738. package/lib/model/shopLocation.d.ts +0 -20
  739. package/lib/model/shopLocationUrl.d.ts +0 -21
  740. package/lib/model/shopLocationUrlAllOf.d.ts +0 -17
  741. package/lib/model/subError.d.ts +0 -21
  742. package/lib/model/tokenizedCardData.d.ts +0 -17
  743. package/lib/model/tokenizedCardDataAllOf.d.ts +0 -26
  744. package/lib/model/tradeBloc.d.ts +0 -19
  745. package/lib/model/transactionInfo.d.ts +0 -24
  746. package/lib/model/updateInvoiceTemplate400Response.d.ts +0 -31
  747. package/lib/model/userInteraction.d.ts +0 -17
  748. package/lib/model/userInteractionFormInner.d.ts +0 -21
  749. package/lib/model/webhook.d.ts +0 -35
  750. package/lib/model/webhookScope.d.ts +0 -27
  751. package/lib/model/yandexPay.d.ts +0 -24
  752. package/lib/model/yandexPayAllOf.d.ts +0 -24
  753. package/public-api.d.ts +0 -1
  754. /package/{lib/api.module.d.ts → api.module.d.ts} +0 -0
  755. /package/{lib/encoder.d.ts → encoder.d.ts} +0 -0
  756. /package/{lib/model → model}/allocationBodyAmount.d.ts +0 -0
  757. /package/{lib/model → model}/allocationBodyTotal.d.ts +0 -0
  758. /package/{lib/model → model}/allocationFeeFixed.d.ts +0 -0
  759. /package/{lib/model → model}/allocationFeeShare.d.ts +0 -0
  760. /package/{lib/param.d.ts → param.d.ts} +0 -0
  761. /package/{lib/variables.d.ts → variables.d.ts} +0 -0
@@ -1,541 +0,0 @@
1
- /**
2
- * Vality Payments API
3
- * ## Description API is designed for the merchants who accept payments via user interface such as a website or a mobile app and it is the only interaction point with the system for goods and services payment transactions. ## Interaction details Whenever an API is accessed, its unique ID must be passed in the header X-Request-ID of the corresponding request: ``` X-Request-ID: 37d735d4-0f42-4f05-89fa-eaa478fb5aa9 ``` ### Content type and coding The system accepts and returns data in JSON format and UTF-8 coding: ``` Content-Type: application/json; charset=utf-8 ``` ### Date formats The system accepts and returns timestamp values in the format date-time, described in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339): ``` 2017-01-01T00:00:00Z 2017-01-01T00:00:01+00:00 ``` ### Maximum request processing time Whenever an API is accessed, the time cutoff parameters, that define maximum request processing time of the transaction completion, can be passed in the header `X-Request-Deadline` of the corresponding request: ``` X-Request-Deadline: 10s ``` The system stops processing the request upon the specified time. It is recommended to specify a value that is not more than one minute and not less than three seconds. `X-Request-Deadline` can be: * specified in the format `date-time` according to [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339); * specified in relative values: in milliseconds (`150000ms`), in seconds (`540s`) or in minutes (`3.5m`).
4
- *
5
- * The version of the OpenAPI document: 2.0.1
6
- *
7
- *
8
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
- * https://openapi-generator.tech
10
- * Do not edit the class manually.
11
- */
12
- /* tslint:disable:no-unused-variable member-ordering */
13
- import { Inject, Injectable, Optional } from '@angular/core';
14
- import { HttpHeaders, HttpContext } from '@angular/common/http';
15
- import { CustomHttpParameterCodec } from '../encoder';
16
- // @ts-ignore
17
- import { BASE_PATH } from '../variables';
18
- import { Configuration } from '../configuration';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/common/http";
21
- import * as i2 from "../configuration";
22
- export class PayoutsService {
23
- constructor(httpClient, basePath, configuration) {
24
- this.httpClient = httpClient;
25
- this.basePath = '/v2';
26
- this.defaultHeaders = new HttpHeaders();
27
- this.configuration = new Configuration();
28
- if (configuration) {
29
- this.configuration = configuration;
30
- }
31
- if (typeof this.configuration.basePath !== 'string') {
32
- if (Array.isArray(basePath) && basePath.length > 0) {
33
- basePath = basePath[0];
34
- }
35
- if (typeof basePath !== 'string') {
36
- basePath = this.basePath;
37
- }
38
- this.configuration.basePath = basePath;
39
- }
40
- this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
41
- }
42
- // @ts-ignore
43
- addToHttpParams(httpParams, value, key) {
44
- if (typeof value === "object" && value instanceof Date === false) {
45
- httpParams = this.addToHttpParamsRecursive(httpParams, value);
46
- }
47
- else {
48
- httpParams = this.addToHttpParamsRecursive(httpParams, value, key);
49
- }
50
- return httpParams;
51
- }
52
- addToHttpParamsRecursive(httpParams, value, key) {
53
- if (value == null) {
54
- return httpParams;
55
- }
56
- if (typeof value === "object") {
57
- if (Array.isArray(value)) {
58
- value.forEach(elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));
59
- }
60
- else if (value instanceof Date) {
61
- if (key != null) {
62
- httpParams = httpParams.append(key, value.toISOString().substr(0, 10));
63
- }
64
- else {
65
- throw Error("key may not be null if value is Date");
66
- }
67
- }
68
- else {
69
- Object.keys(value).forEach(k => httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k));
70
- }
71
- }
72
- else if (key != null) {
73
- httpParams = httpParams.append(key, value);
74
- }
75
- else {
76
- throw Error("key may not be null if value is not object or array");
77
- }
78
- return httpParams;
79
- }
80
- createPayout(requestParameters, observe = 'body', reportProgress = false, options) {
81
- const xRequestID = requestParameters.xRequestID;
82
- if (xRequestID === null || xRequestID === undefined) {
83
- throw new Error('Required parameter xRequestID was null or undefined when calling createPayout.');
84
- }
85
- const payoutParams = requestParameters.payoutParams;
86
- if (payoutParams === null || payoutParams === undefined) {
87
- throw new Error('Required parameter payoutParams was null or undefined when calling createPayout.');
88
- }
89
- const xRequestDeadline = requestParameters.xRequestDeadline;
90
- let localVarHeaders = this.defaultHeaders;
91
- if (xRequestID !== undefined && xRequestID !== null) {
92
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
93
- }
94
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
95
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
96
- }
97
- let localVarCredential;
98
- // authentication (bearer) required
99
- localVarCredential = this.configuration.lookupCredential('bearer');
100
- if (localVarCredential) {
101
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
102
- }
103
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
104
- if (localVarHttpHeaderAcceptSelected === undefined) {
105
- // to determine the Accept header
106
- const httpHeaderAccepts = [
107
- 'application/json; charset=utf-8'
108
- ];
109
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
110
- }
111
- if (localVarHttpHeaderAcceptSelected !== undefined) {
112
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
113
- }
114
- let localVarHttpContext = options && options.context;
115
- if (localVarHttpContext === undefined) {
116
- localVarHttpContext = new HttpContext();
117
- }
118
- // to determine the Content-Type header
119
- const consumes = [
120
- 'application/json; charset=utf-8'
121
- ];
122
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
123
- if (httpContentTypeSelected !== undefined) {
124
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
125
- }
126
- let responseType_ = 'json';
127
- if (localVarHttpHeaderAcceptSelected) {
128
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
129
- responseType_ = 'text';
130
- }
131
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
132
- responseType_ = 'json';
133
- }
134
- else {
135
- responseType_ = 'blob';
136
- }
137
- }
138
- let localVarPath = `/processing/payouts`;
139
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
140
- context: localVarHttpContext,
141
- body: payoutParams,
142
- responseType: responseType_,
143
- withCredentials: this.configuration.withCredentials,
144
- headers: localVarHeaders,
145
- observe: observe,
146
- reportProgress: reportProgress
147
- });
148
- }
149
- getPayout(requestParameters, observe = 'body', reportProgress = false, options) {
150
- const xRequestID = requestParameters.xRequestID;
151
- if (xRequestID === null || xRequestID === undefined) {
152
- throw new Error('Required parameter xRequestID was null or undefined when calling getPayout.');
153
- }
154
- const payoutID = requestParameters.payoutID;
155
- if (payoutID === null || payoutID === undefined) {
156
- throw new Error('Required parameter payoutID was null or undefined when calling getPayout.');
157
- }
158
- const xRequestDeadline = requestParameters.xRequestDeadline;
159
- let localVarHeaders = this.defaultHeaders;
160
- if (xRequestID !== undefined && xRequestID !== null) {
161
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
162
- }
163
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
164
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
165
- }
166
- let localVarCredential;
167
- // authentication (bearer) required
168
- localVarCredential = this.configuration.lookupCredential('bearer');
169
- if (localVarCredential) {
170
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
171
- }
172
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
173
- if (localVarHttpHeaderAcceptSelected === undefined) {
174
- // to determine the Accept header
175
- const httpHeaderAccepts = [
176
- 'application/json; charset=utf-8'
177
- ];
178
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
179
- }
180
- if (localVarHttpHeaderAcceptSelected !== undefined) {
181
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
182
- }
183
- let localVarHttpContext = options && options.context;
184
- if (localVarHttpContext === undefined) {
185
- localVarHttpContext = new HttpContext();
186
- }
187
- let responseType_ = 'json';
188
- if (localVarHttpHeaderAcceptSelected) {
189
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
190
- responseType_ = 'text';
191
- }
192
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
193
- responseType_ = 'json';
194
- }
195
- else {
196
- responseType_ = 'blob';
197
- }
198
- }
199
- let localVarPath = `/processing/payouts/${this.configuration.encodeParam({ name: "payoutID", value: payoutID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
200
- return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
201
- context: localVarHttpContext,
202
- responseType: responseType_,
203
- withCredentials: this.configuration.withCredentials,
204
- headers: localVarHeaders,
205
- observe: observe,
206
- reportProgress: reportProgress
207
- });
208
- }
209
- getPayoutToolByID(requestParameters, observe = 'body', reportProgress = false, options) {
210
- const xRequestID = requestParameters.xRequestID;
211
- if (xRequestID === null || xRequestID === undefined) {
212
- throw new Error('Required parameter xRequestID was null or undefined when calling getPayoutToolByID.');
213
- }
214
- const contractID = requestParameters.contractID;
215
- if (contractID === null || contractID === undefined) {
216
- throw new Error('Required parameter contractID was null or undefined when calling getPayoutToolByID.');
217
- }
218
- const payoutToolID = requestParameters.payoutToolID;
219
- if (payoutToolID === null || payoutToolID === undefined) {
220
- throw new Error('Required parameter payoutToolID was null or undefined when calling getPayoutToolByID.');
221
- }
222
- const xRequestDeadline = requestParameters.xRequestDeadline;
223
- let localVarHeaders = this.defaultHeaders;
224
- if (xRequestID !== undefined && xRequestID !== null) {
225
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
226
- }
227
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
228
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
229
- }
230
- let localVarCredential;
231
- // authentication (bearer) required
232
- localVarCredential = this.configuration.lookupCredential('bearer');
233
- if (localVarCredential) {
234
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
235
- }
236
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
237
- if (localVarHttpHeaderAcceptSelected === undefined) {
238
- // to determine the Accept header
239
- const httpHeaderAccepts = [
240
- 'application/json; charset=utf-8'
241
- ];
242
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
243
- }
244
- if (localVarHttpHeaderAcceptSelected !== undefined) {
245
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
246
- }
247
- let localVarHttpContext = options && options.context;
248
- if (localVarHttpContext === undefined) {
249
- localVarHttpContext = new HttpContext();
250
- }
251
- let responseType_ = 'json';
252
- if (localVarHttpHeaderAcceptSelected) {
253
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
254
- responseType_ = 'text';
255
- }
256
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
257
- responseType_ = 'json';
258
- }
259
- else {
260
- responseType_ = 'blob';
261
- }
262
- }
263
- let localVarPath = `/processing/contracts/${this.configuration.encodeParam({ name: "contractID", value: contractID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/payout_tools/${this.configuration.encodeParam({ name: "payoutToolID", value: payoutToolID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
264
- return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
265
- context: localVarHttpContext,
266
- responseType: responseType_,
267
- withCredentials: this.configuration.withCredentials,
268
- headers: localVarHeaders,
269
- observe: observe,
270
- reportProgress: reportProgress
271
- });
272
- }
273
- getPayoutToolByIDForParty(requestParameters, observe = 'body', reportProgress = false, options) {
274
- const xRequestID = requestParameters.xRequestID;
275
- if (xRequestID === null || xRequestID === undefined) {
276
- throw new Error('Required parameter xRequestID was null or undefined when calling getPayoutToolByIDForParty.');
277
- }
278
- const contractID = requestParameters.contractID;
279
- if (contractID === null || contractID === undefined) {
280
- throw new Error('Required parameter contractID was null or undefined when calling getPayoutToolByIDForParty.');
281
- }
282
- const payoutToolID = requestParameters.payoutToolID;
283
- if (payoutToolID === null || payoutToolID === undefined) {
284
- throw new Error('Required parameter payoutToolID was null or undefined when calling getPayoutToolByIDForParty.');
285
- }
286
- const partyID = requestParameters.partyID;
287
- if (partyID === null || partyID === undefined) {
288
- throw new Error('Required parameter partyID was null or undefined when calling getPayoutToolByIDForParty.');
289
- }
290
- const xRequestDeadline = requestParameters.xRequestDeadline;
291
- let localVarHeaders = this.defaultHeaders;
292
- if (xRequestID !== undefined && xRequestID !== null) {
293
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
294
- }
295
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
296
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
297
- }
298
- let localVarCredential;
299
- // authentication (bearer) required
300
- localVarCredential = this.configuration.lookupCredential('bearer');
301
- if (localVarCredential) {
302
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
303
- }
304
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
305
- if (localVarHttpHeaderAcceptSelected === undefined) {
306
- // to determine the Accept header
307
- const httpHeaderAccepts = [
308
- 'application/json; charset=utf-8'
309
- ];
310
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
311
- }
312
- if (localVarHttpHeaderAcceptSelected !== undefined) {
313
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
314
- }
315
- let localVarHttpContext = options && options.context;
316
- if (localVarHttpContext === undefined) {
317
- localVarHttpContext = new HttpContext();
318
- }
319
- let responseType_ = 'json';
320
- if (localVarHttpHeaderAcceptSelected) {
321
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
322
- responseType_ = 'text';
323
- }
324
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
325
- responseType_ = 'json';
326
- }
327
- else {
328
- responseType_ = 'blob';
329
- }
330
- }
331
- let localVarPath = `/processing/parties/${this.configuration.encodeParam({ name: "partyID", value: partyID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/contracts/${this.configuration.encodeParam({ name: "contractID", value: contractID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/payout_tools/${this.configuration.encodeParam({ name: "payoutToolID", value: payoutToolID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
332
- return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
333
- context: localVarHttpContext,
334
- responseType: responseType_,
335
- withCredentials: this.configuration.withCredentials,
336
- headers: localVarHeaders,
337
- observe: observe,
338
- reportProgress: reportProgress
339
- });
340
- }
341
- getPayoutTools(requestParameters, observe = 'body', reportProgress = false, options) {
342
- const xRequestID = requestParameters.xRequestID;
343
- if (xRequestID === null || xRequestID === undefined) {
344
- throw new Error('Required parameter xRequestID was null or undefined when calling getPayoutTools.');
345
- }
346
- const contractID = requestParameters.contractID;
347
- if (contractID === null || contractID === undefined) {
348
- throw new Error('Required parameter contractID was null or undefined when calling getPayoutTools.');
349
- }
350
- const xRequestDeadline = requestParameters.xRequestDeadline;
351
- let localVarHeaders = this.defaultHeaders;
352
- if (xRequestID !== undefined && xRequestID !== null) {
353
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
354
- }
355
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
356
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
357
- }
358
- let localVarCredential;
359
- // authentication (bearer) required
360
- localVarCredential = this.configuration.lookupCredential('bearer');
361
- if (localVarCredential) {
362
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
363
- }
364
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
365
- if (localVarHttpHeaderAcceptSelected === undefined) {
366
- // to determine the Accept header
367
- const httpHeaderAccepts = [
368
- 'application/json; charset=utf-8'
369
- ];
370
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
371
- }
372
- if (localVarHttpHeaderAcceptSelected !== undefined) {
373
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
374
- }
375
- let localVarHttpContext = options && options.context;
376
- if (localVarHttpContext === undefined) {
377
- localVarHttpContext = new HttpContext();
378
- }
379
- let responseType_ = 'json';
380
- if (localVarHttpHeaderAcceptSelected) {
381
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
382
- responseType_ = 'text';
383
- }
384
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
385
- responseType_ = 'json';
386
- }
387
- else {
388
- responseType_ = 'blob';
389
- }
390
- }
391
- let localVarPath = `/processing/contracts/${this.configuration.encodeParam({ name: "contractID", value: contractID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/payout_tools`;
392
- return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
393
- context: localVarHttpContext,
394
- responseType: responseType_,
395
- withCredentials: this.configuration.withCredentials,
396
- headers: localVarHeaders,
397
- observe: observe,
398
- reportProgress: reportProgress
399
- });
400
- }
401
- getPayoutToolsForParty(requestParameters, observe = 'body', reportProgress = false, options) {
402
- const xRequestID = requestParameters.xRequestID;
403
- if (xRequestID === null || xRequestID === undefined) {
404
- throw new Error('Required parameter xRequestID was null or undefined when calling getPayoutToolsForParty.');
405
- }
406
- const contractID = requestParameters.contractID;
407
- if (contractID === null || contractID === undefined) {
408
- throw new Error('Required parameter contractID was null or undefined when calling getPayoutToolsForParty.');
409
- }
410
- const partyID = requestParameters.partyID;
411
- if (partyID === null || partyID === undefined) {
412
- throw new Error('Required parameter partyID was null or undefined when calling getPayoutToolsForParty.');
413
- }
414
- const xRequestDeadline = requestParameters.xRequestDeadline;
415
- let localVarHeaders = this.defaultHeaders;
416
- if (xRequestID !== undefined && xRequestID !== null) {
417
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
418
- }
419
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
420
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
421
- }
422
- let localVarCredential;
423
- // authentication (bearer) required
424
- localVarCredential = this.configuration.lookupCredential('bearer');
425
- if (localVarCredential) {
426
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
427
- }
428
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
429
- if (localVarHttpHeaderAcceptSelected === undefined) {
430
- // to determine the Accept header
431
- const httpHeaderAccepts = [
432
- 'application/json; charset=utf-8'
433
- ];
434
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
435
- }
436
- if (localVarHttpHeaderAcceptSelected !== undefined) {
437
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
438
- }
439
- let localVarHttpContext = options && options.context;
440
- if (localVarHttpContext === undefined) {
441
- localVarHttpContext = new HttpContext();
442
- }
443
- let responseType_ = 'json';
444
- if (localVarHttpHeaderAcceptSelected) {
445
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
446
- responseType_ = 'text';
447
- }
448
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
449
- responseType_ = 'json';
450
- }
451
- else {
452
- responseType_ = 'blob';
453
- }
454
- }
455
- let localVarPath = `/processing/parties/${this.configuration.encodeParam({ name: "partyID", value: partyID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/contracts/${this.configuration.encodeParam({ name: "contractID", value: contractID, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/payout_tools`;
456
- return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
457
- context: localVarHttpContext,
458
- responseType: responseType_,
459
- withCredentials: this.configuration.withCredentials,
460
- headers: localVarHeaders,
461
- observe: observe,
462
- reportProgress: reportProgress
463
- });
464
- }
465
- getScheduleByRef(requestParameters, observe = 'body', reportProgress = false, options) {
466
- const xRequestID = requestParameters.xRequestID;
467
- if (xRequestID === null || xRequestID === undefined) {
468
- throw new Error('Required parameter xRequestID was null or undefined when calling getScheduleByRef.');
469
- }
470
- const scheduleID = requestParameters.scheduleID;
471
- if (scheduleID === null || scheduleID === undefined) {
472
- throw new Error('Required parameter scheduleID was null or undefined when calling getScheduleByRef.');
473
- }
474
- const xRequestDeadline = requestParameters.xRequestDeadline;
475
- let localVarHeaders = this.defaultHeaders;
476
- if (xRequestID !== undefined && xRequestID !== null) {
477
- localVarHeaders = localVarHeaders.set('X-Request-ID', String(xRequestID));
478
- }
479
- if (xRequestDeadline !== undefined && xRequestDeadline !== null) {
480
- localVarHeaders = localVarHeaders.set('X-Request-Deadline', String(xRequestDeadline));
481
- }
482
- let localVarCredential;
483
- // authentication (bearer) required
484
- localVarCredential = this.configuration.lookupCredential('bearer');
485
- if (localVarCredential) {
486
- localVarHeaders = localVarHeaders.set('Authorization', localVarCredential);
487
- }
488
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
489
- if (localVarHttpHeaderAcceptSelected === undefined) {
490
- // to determine the Accept header
491
- const httpHeaderAccepts = [
492
- 'application/json; charset=utf-8'
493
- ];
494
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
495
- }
496
- if (localVarHttpHeaderAcceptSelected !== undefined) {
497
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
498
- }
499
- let localVarHttpContext = options && options.context;
500
- if (localVarHttpContext === undefined) {
501
- localVarHttpContext = new HttpContext();
502
- }
503
- let responseType_ = 'json';
504
- if (localVarHttpHeaderAcceptSelected) {
505
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
506
- responseType_ = 'text';
507
- }
508
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
509
- responseType_ = 'json';
510
- }
511
- else {
512
- responseType_ = 'blob';
513
- }
514
- }
515
- let localVarPath = `/processing/schedules/${this.configuration.encodeParam({ name: "scheduleID", value: scheduleID, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: "int32" })}`;
516
- return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
517
- context: localVarHttpContext,
518
- responseType: responseType_,
519
- withCredentials: this.configuration.withCredentials,
520
- headers: localVarHeaders,
521
- observe: observe,
522
- reportProgress: reportProgress
523
- });
524
- }
525
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: PayoutsService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
526
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: PayoutsService, providedIn: 'root' }); }
527
- }
528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: PayoutsService, decorators: [{
529
- type: Injectable,
530
- args: [{
531
- providedIn: 'root'
532
- }]
533
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
534
- type: Optional
535
- }, {
536
- type: Inject,
537
- args: [BASE_PATH]
538
- }] }, { type: i2.Configuration, decorators: [{
539
- type: Optional
540
- }] }] });
541
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5b3V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsaXR5L3N3YWctcGF5bWVudHMvc3JjL2xpYi9hcGkvcGF5b3V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQTJCLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWMsV0FBVyxFQUNzQixXQUFXLEVBQ3hELE1BQVksc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQStCLFlBQVksQ0FBQztBQWtCL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7O0FBNkVyRixNQUFNLE9BQU8sY0FBYztJQU92QixZQUFzQixVQUFzQixFQUFnQyxRQUF5QixFQUFjLGFBQTRCO1FBQXpILGVBQVUsR0FBVixVQUFVLENBQVk7UUFMbEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBSXZDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFD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eSBQYXltZW50cyBBUElcbiAqICMjIERlc2NyaXB0aW9uIEFQSSBpcyBkZXNpZ25lZCBmb3IgdGhlIG1lcmNoYW50cyB3aG8gYWNjZXB0IHBheW1lbnRzIHZpYSB1c2VyIGludGVyZmFjZSBzdWNoIGFzIGEgd2Vic2l0ZSBvciBhIG1vYmlsZSBhcHAgYW5kIGl0IGlzIHRoZSBvbmx5IGludGVyYWN0aW9uIHBvaW50IHdpdGggdGhlIHN5c3RlbSBmb3IgZ29vZHMgYW5kIHNlcnZpY2VzIHBheW1lbnQgdHJhbnNhY3Rpb25zLiAjIyBJbnRlcmFjdGlvbiBkZXRhaWxzIFdoZW5ldmVyIGFuIEFQSSBpcyBhY2Nlc3NlZCwgaXRzIHVuaXF1ZSBJRCBtdXN0IGJlIHBhc3NlZCBpbiB0aGUgaGVhZGVyIFgtUmVxdWVzdC1JRCBvZiB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0OiBgYGAgIFgtUmVxdWVzdC1JRDogMzdkNzM1ZDQtMGY0Mi00ZjA1LTg5ZmEtZWFhNDc4ZmI1YWE5IGBgYCAjIyMgQ29udGVudCB0eXBlIGFuZCBjb2RpbmcgVGhlIHN5c3RlbSBhY2NlcHRzIGFuZCByZXR1cm5zIGRhdGEgaW4gSlNPTiBmb3JtYXQgYW5kIFVURi04IGNvZGluZzogYGBgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04IGBgYCAjIyMgRGF0ZSBmb3JtYXRzIFRoZSBzeXN0ZW0gYWNjZXB0cyBhbmQgcmV0dXJucyB0aW1lc3RhbXAgdmFsdWVzIGluIHRoZSBmb3JtYXQgZGF0ZS10aW1lLCBkZXNjcmliZWQgaW4gW1JGQyAzMzM5XShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzMzMzkpOiBgYGAgICAyMDE3LTAxLTAxVDAwOjAwOjAwWiAgIDIwMTctMDEtMDFUMDA6MDA6MDErMDA6MDAgYGBgICMjIyBNYXhpbXVtIHJlcXVlc3QgcHJvY2Vzc2luZyB0aW1lIFdoZW5ldmVyIGFuIEFQSSBpcyBhY2Nlc3NlZCwgdGhlIHRpbWUgY3V0b2ZmIHBhcmFtZXRlcnMsIHRoYXQgZGVmaW5lIG1heGltdW0gcmVxdWVzdCBwcm9jZXNzaW5nIHRpbWUgb2YgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24sIGNhbiBiZSBwYXNzZWQgaW4gdGhlIGhlYWRlciBgWC1SZXF1ZXN0LURlYWRsaW5lYCBvZiB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0OiBgYGAgIFgtUmVxdWVzdC1EZWFkbGluZTogMTBzIGBgYCBUaGUgc3lzdGVtIHN0b3BzIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgdXBvbiB0aGUgc3BlY2lmaWVkIHRpbWUuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIG5vdCBtb3JlIHRoYW4gb25lIG1pbnV0ZSBhbmQgbm90IGxlc3MgdGhhbiB0aHJlZSBzZWNvbmRzLiBgWC1SZXF1ZXN0LURlYWRsaW5lYCBjYW4gYmU6ICAqIHNwZWNpZmllZCBpbiB0aGUgZm9ybWF0IGBkYXRlLXRpbWVgIGFjY29yZGluZyB0byBbUkZDIDMzMzldKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzMzOSk7ICogc3BlY2lmaWVkIGluIHJlbGF0aXZlIHZhbHVlczogaW4gbWlsbGlzZWNvbmRzIChgMTUwMDAwbXNgKSwgaW4gc2Vjb25kcyAoYDU0MHNgKSBvciBpbiBtaW51dGVzIChgMy41bWApLiBcbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMi4wLjFcbiAqIFxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcbiAgICAgICAgIEh0dHBSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwUGFyYW1ldGVyQ29kZWMsIEh0dHBDb250ZXh0IFxuICAgICAgICB9ICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9lbmNvZGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdyeGpzJztcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQ3JlYXRlUGF5b3V0NDAwUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbC9jcmVhdGVQYXlvdXQ0MDBSZXNwb25zZSc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBEZWZhdWx0TG9naWNFcnJvciB9IGZyb20gJy4uL21vZGVsL2RlZmF1bHRMb2dpY0Vycm9yJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL21vZGVsL2dlbmVyYWxFcnJvcic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBQYXlvdXQgfSBmcm9tICcuLi9tb2RlbC9wYXlvdXQnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgUGF5b3V0UGFyYW1zIH0gZnJvbSAnLi4vbW9kZWwvcGF5b3V0UGFyYW1zJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFBheW91dFRvb2wgfSBmcm9tICcuLi9tb2RlbC9wYXlvdXRUb29sJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFNjaGVkdWxlIH0gZnJvbSAnLi4vbW9kZWwvc2NoZWR1bGUnO1xuXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBCQVNFX1BBVEgsIENPTExFQ1RJT05fRk9STUFUUyB9ICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vdmFyaWFibGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVBheW91dFJlcXVlc3RQYXJhbXMge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVxdWVzdCB0byB0aGUgc3lzdGVtICovXG4gICAgeFJlcXVlc3RJRDogc3RyaW5nO1xuICAgIHBheW91dFBhcmFtczogUGF5b3V0UGFyYW1zO1xuICAgIC8qKiBNYXhpbXVtIHJlcXVlc3QgcHJvY2Vzc2luZyB0aW1lICovXG4gICAgeFJlcXVlc3REZWFkbGluZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQYXlvdXRSZXF1ZXN0UGFyYW1zIHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlcXVlc3QgdG8gdGhlIHN5c3RlbSAqL1xuICAgIHhSZXF1ZXN0SUQ6IHN0cmluZztcbiAgICAvKiogV2l0aGRyYXdhbCBJRCAqL1xuICAgIHBheW91dElEOiBzdHJpbmc7XG4gICAgLyoqIE1heGltdW0gcmVxdWVzdCBwcm9jZXNzaW5nIHRpbWUgKi9cbiAgICB4UmVxdWVzdERlYWRsaW5lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFBheW91dFRvb2xCeUlEUmVxdWVzdFBhcmFtcyB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByZXF1ZXN0IHRvIHRoZSBzeXN0ZW0gKi9cbiAgICB4UmVxdWVzdElEOiBzdHJpbmc7XG4gICAgLyoqIENvbnRyYWN0IElEICovXG4gICAgY29udHJhY3RJRDogc3RyaW5nO1xuICAgIC8qKiBQYXlvdXQgdG9vbCBJRCAqL1xuICAgIHBheW91dFRvb2xJRDogc3RyaW5nO1xuICAgIC8qKiBNYXhpbXVtIHJlcXVlc3QgcHJvY2Vzc2luZyB0aW1lICovXG4gICAgeFJlcXVlc3REZWFkbGluZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQYXlvdXRUb29sQnlJREZvclBhcnR5UmVxdWVzdFBhcmFtcyB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByZXF1ZXN0IHRvIHRoZSBzeXN0ZW0gKi9cbiAgICB4UmVxdWVzdElEOiBzdHJpbmc7XG4gICAgLyoqIENvbnRyYWN0IElEICovXG4gICAgY29udHJhY3RJRDogc3RyaW5nO1xuICAgIC8qKiBQYXlvdXQgdG9vbCBJRCAqL1xuICAgIHBheW91dFRvb2xJRDogc3RyaW5nO1xuICAgIC8qKiBUaGUgcGFydGljaXBhbnRcXCYjMzk7cyB1bmlxdWUgaWRlbnRpZmllciB3aXRoaW4gdGhlIHN5c3RlbS4gKi9cbiAgICBwYXJ0eUlEOiBzdHJpbmc7XG4gICAgLyoqIE1heGltdW0gcmVxdWVzdCBwcm9jZXNzaW5nIHRpbWUgKi9cbiAgICB4UmVxdWVzdERlYWRsaW5lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFBheW91dFRvb2xzUmVxdWVzdFBhcmFtcyB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByZXF1ZXN0IHRvIHRoZSBzeXN0ZW0gKi9cbiAgICB4UmVxdWVzdElEOiBzdHJpbmc7XG4gICAgLyoqIENvbnRyYWN0IElEICovXG4gICAgY29udHJhY3RJRDogc3RyaW5nO1xuICAgIC8qKiBNYXhpbXVtIHJlcXVlc3QgcHJvY2Vzc2luZyB0aW1lICovXG4gICAgeFJlcXVlc3REZWFkbGluZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQYXlvdXRUb29sc0ZvclBhcnR5UmVxdWVzdFBhcmFtcyB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByZXF1ZXN0IHRvIHRoZSBzeXN0ZW0gKi9cbiAgICB4UmVxdWVzdElEOiBzdHJpbmc7XG4gICAgLyoqIENvbnRyYWN0IElEICovXG4gICAgY29udHJhY3RJRDogc3RyaW5nO1xuICAgIC8qKiBUaGUgcGFydGljaXBhbnRcXCYjMzk7cyB1bmlxdWUgaWRlbnRpZmllciB3aXRoaW4gdGhlIHN5c3RlbS4gKi9cbiAgICBwYXJ0eUlEOiBzdHJpbmc7XG4gICAgLyoqIE1heGltdW0gcmVxdWVzdCBwcm9jZXNzaW5nIHRpbWUgKi9cbiAgICB4UmVxdWVzdERlYWRsaW5lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFNjaGVkdWxlQnlSZWZSZXF1ZXN0UGFyYW1zIHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlcXVlc3QgdG8gdGhlIHN5c3RlbSAqL1xuICAgIHhSZXF1ZXN0SUQ6IHN0cmluZztcbiAgICAvKiogU2NoZWR1bGUgcmVmZXJlbmNlICovXG4gICAgc2NoZWR1bGVJRDogbnVtYmVyO1xuICAgIC8qKiBNYXhpbXVtIHJlcXVlc3QgcHJvY2Vzc2luZyB0aW1lICovXG4gICAgeFJlcXVlc3REZWFkbGluZT86IHN0cmluZztcbn1cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQYXlvdXRzU2VydmljZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnL3YyJztcbiAgICBwdWJsaWMgZGVmYXVsdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBwdWJsaWMgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XG4gICAgcHVibGljIGVuY29kZXI6IEh0dHBQYXJhbWV0ZXJDb2RlYztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBAT3B0aW9uYWwoKUBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nfHN0cmluZ1tdLCBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYmFzZVBhdGgpICYmIGJhc2VQYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBiYXNlUGF0aCA9IGJhc2VQYXRoWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGJhc2VQYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGJhc2VQYXRoID0gdGhpcy5iYXNlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5jb2RlciA9IHRoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVyIHx8IG5ldyBDdXN0b21IdHRwUGFyYW1ldGVyQ29kZWMoKTtcbiAgICB9XG5cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtcyhodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZTogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXM6IEh0dHBQYXJhbXMsIHZhbHVlPzogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueVtdKS5mb3JFYWNoKCBlbGVtID0+IGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCBlbGVtLCBrZXkpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksICh2YWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpLnN1YnN0cigwLCAxMCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJrZXkgbWF5IG5vdCBiZSBudWxsIGlmIHZhbHVlIGlzIERhdGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaCggayA9PiBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMsIHZhbHVlW2tdLCBrZXkgIT0gbnVsbCA/IGAke2tleX0uJHtrfWAgOiBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwia2V5IG1heSBub3QgYmUgbnVsbCBpZiB2YWx1ZSBpcyBub3Qgb2JqZWN0IG9yIGFycmF5XCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBwYXlvdXQgYW5kIHNlbmQgaXQgdG8gcHJlLW1vZGVyYXRpb24uIFxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVQYXlvdXQocmVxdWVzdFBhcmFtZXRlcnM6IENyZWF0ZVBheW91dFJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPFBheW91dD47XG4gICAgcHVibGljIGNyZWF0ZVBheW91dChyZXF1ZXN0UGFyYW1ldGVyczogQ3JlYXRlUGF5b3V0UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxQYXlvdXQ+PjtcbiAgICBwdWJsaWMgY3JlYXRlUGF5b3V0KHJlcXVlc3RQYXJhbWV0ZXJzOiBDcmVhdGVQYXlvdXRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxQYXlvdXQ+PjtcbiAgICBwdWJsaWMgY3JlYXRlUGF5b3V0KHJlcXVlc3RQYXJhbWV0ZXJzOiBDcmVhdGVQYXlvdXRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgeFJlcXVlc3RJRCA9IHJlcXVlc3RQYXJhbWV0ZXJzLnhSZXF1ZXN0SUQ7XG4gICAgICAgIGlmICh4UmVxdWVzdElEID09PSBudWxsIHx8IHhSZXF1ZXN0SUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgeFJlcXVlc3RJRCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGNyZWF0ZVBheW91dC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXlvdXRQYXJhbXMgPSByZXF1ZXN0UGFyYW1ldGVycy5wYXlvdXRQYXJhbXM7XG4gICAgICAgIGlmIChwYXlvdXRQYXJhbXMgPT09IG51bGwgfHwgcGF5b3V0UGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHBheW91dFBhcmFtcyB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGNyZWF0ZVBheW91dC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4UmVxdWVzdERlYWRsaW5lID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3REZWFkbGluZTtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgIT09IHVuZGVmaW5lZCAmJiB4UmVxdWVzdElEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdYLVJlcXVlc3QtSUQnLCBTdHJpbmcoeFJlcXVlc3RJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4UmVxdWVzdERlYWRsaW5lICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3REZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LURlYWRsaW5lJywgU3RyaW5nKHhSZXF1ZXN0RGVhZGxpbmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKGJlYXJlcikgcmVxdWlyZWRcbiAgICAgICAgbG9jYWxWYXJDcmVkZW50aWFsID0gdGhpcy5jb25maWd1cmF0aW9uLmxvb2t1cENyZWRlbnRpYWwoJ2JlYXJlcicpO1xuICAgICAgICBpZiAobG9jYWxWYXJDcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgbG9jYWxWYXJDcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL3Byb2Nlc3NpbmcvcGF5b3V0c2A7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxQYXlvdXQ+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICBib2R5OiBwYXlvdXRQYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBwYXlvdXQgZGF0YVxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYXlvdXQocmVxdWVzdFBhcmFtZXRlcnM6IEdldFBheW91dFJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPFBheW91dD47XG4gICAgcHVibGljIGdldFBheW91dChyZXF1ZXN0UGFyYW1ldGVyczogR2V0UGF5b3V0UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxQYXlvdXQ+PjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxQYXlvdXQ+PjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgeFJlcXVlc3RJRCA9IHJlcXVlc3RQYXJhbWV0ZXJzLnhSZXF1ZXN0SUQ7XG4gICAgICAgIGlmICh4UmVxdWVzdElEID09PSBudWxsIHx8IHhSZXF1ZXN0SUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgeFJlcXVlc3RJRCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldFBheW91dC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXlvdXRJRCA9IHJlcXVlc3RQYXJhbWV0ZXJzLnBheW91dElEO1xuICAgICAgICBpZiAocGF5b3V0SUQgPT09IG51bGwgfHwgcGF5b3V0SUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgcGF5b3V0SUQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRQYXlvdXQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeFJlcXVlc3REZWFkbGluZSA9IHJlcXVlc3RQYXJhbWV0ZXJzLnhSZXF1ZXN0RGVhZGxpbmU7XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmICh4UmVxdWVzdElEICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3RJRCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LUlEJywgU3RyaW5nKHhSZXF1ZXN0SUQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeFJlcXVlc3REZWFkbGluZSAhPT0gdW5kZWZpbmVkICYmIHhSZXF1ZXN0RGVhZGxpbmUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ1gtUmVxdWVzdC1EZWFkbGluZScsIFN0cmluZyh4UmVxdWVzdERlYWRsaW5lKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJDcmVkZW50aWFsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIChiZWFyZXIpIHJlcXVpcmVkXG4gICAgICAgIGxvY2FsVmFyQ3JlZGVudGlhbCA9IHRoaXMuY29uZmlndXJhdGlvbi5sb29rdXBDcmVkZW50aWFsKCdiZWFyZXInKTtcbiAgICAgICAgaWYgKGxvY2FsVmFyQ3JlZGVudGlhbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIGxvY2FsVmFyQ3JlZGVudGlhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL3Byb2Nlc3NpbmcvcGF5b3V0cy8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJwYXlvdXRJRFwiLCB2YWx1ZTogcGF5b3V0SUQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFBheW91dD4oJ2dldCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHBheW91dCB0b29sIGRhdGEgYnkgaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29sQnlJRChyZXF1ZXN0UGFyYW1ldGVyczogR2V0UGF5b3V0VG9vbEJ5SURSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxQYXlvdXRUb29sPjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0VG9vbEJ5SUQocmVxdWVzdFBhcmFtZXRlcnM6IEdldFBheW91dFRvb2xCeUlEUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxQYXlvdXRUb29sPj47XG4gICAgcHVibGljIGdldFBheW91dFRvb2xCeUlEKHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sQnlJRFJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldCYjeDNEO3V0Zi04JywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFBheW91dFRvb2w+PjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0VG9vbEJ5SUQocmVxdWVzdFBhcmFtZXRlcnM6IEdldFBheW91dFRvb2xCeUlEUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldCYjeDNEO3V0Zi04JywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHhSZXF1ZXN0SUQgPSByZXF1ZXN0UGFyYW1ldGVycy54UmVxdWVzdElEO1xuICAgICAgICBpZiAoeFJlcXVlc3RJRCA9PT0gbnVsbCB8fCB4UmVxdWVzdElEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHhSZXF1ZXN0SUQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRQYXlvdXRUb29sQnlJRC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250cmFjdElEID0gcmVxdWVzdFBhcmFtZXRlcnMuY29udHJhY3RJRDtcbiAgICAgICAgaWYgKGNvbnRyYWN0SUQgPT09IG51bGwgfHwgY29udHJhY3RJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBjb250cmFjdElEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0UGF5b3V0VG9vbEJ5SUQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5b3V0VG9vbElEID0gcmVxdWVzdFBhcmFtZXRlcnMucGF5b3V0VG9vbElEO1xuICAgICAgICBpZiAocGF5b3V0VG9vbElEID09PSBudWxsIHx8IHBheW91dFRvb2xJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBwYXlvdXRUb29sSUQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRQYXlvdXRUb29sQnlJRC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4UmVxdWVzdERlYWRsaW5lID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3REZWFkbGluZTtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgIT09IHVuZGVmaW5lZCAmJiB4UmVxdWVzdElEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdYLVJlcXVlc3QtSUQnLCBTdHJpbmcoeFJlcXVlc3RJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4UmVxdWVzdERlYWRsaW5lICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3REZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LURlYWRsaW5lJywgU3RyaW5nKHhSZXF1ZXN0RGVhZGxpbmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKGJlYXJlcikgcmVxdWlyZWRcbiAgICAgICAgbG9jYWxWYXJDcmVkZW50aWFsID0gdGhpcy5jb25maWd1cmF0aW9uLmxvb2t1cENyZWRlbnRpYWwoJ2JlYXJlcicpO1xuICAgICAgICBpZiAobG9jYWxWYXJDcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgbG9jYWxWYXJDcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvcHJvY2Vzc2luZy9jb250cmFjdHMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwiY29udHJhY3RJRFwiLCB2YWx1ZTogY29udHJhY3RJRCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vcGF5b3V0X3Rvb2xzLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInBheW91dFRvb2xJRFwiLCB2YWx1ZTogcGF5b3V0VG9vbElELCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxQYXlvdXRUb29sPignZ2V0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgcGF5b3V0IHRvb2wgZGF0YSBieSBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldFBheW91dFRvb2xCeUlERm9yUGFydHkocmVxdWVzdFBhcmFtZXRlcnM6IEdldFBheW91dFRvb2xCeUlERm9yUGFydHlSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxQYXlvdXRUb29sPjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0VG9vbEJ5SURGb3JQYXJ0eShyZXF1ZXN0UGFyYW1ldGVyczogR2V0UGF5b3V0VG9vbEJ5SURGb3JQYXJ0eVJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8UGF5b3V0VG9vbD4+O1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29sQnlJREZvclBhcnR5KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sQnlJREZvclBhcnR5UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8UGF5b3V0VG9vbD4+O1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29sQnlJREZvclBhcnR5KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sQnlJREZvclBhcnR5UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldCYjeDNEO3V0Zi04JywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHhSZXF1ZXN0SUQgPSByZXF1ZXN0UGFyYW1ldGVycy54UmVxdWVzdElEO1xuICAgICAgICBpZiAoeFJlcXVlc3RJRCA9PT0gbnVsbCB8fCB4UmVxdWVzdElEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHhSZXF1ZXN0SUQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRQYXlvdXRUb29sQnlJREZvclBhcnR5LicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0SUQgPSByZXF1ZXN0UGFyYW1ldGVycy5jb250cmFjdElEO1xuICAgICAgICBpZiAoY29udHJhY3RJRCA9PT0gbnVsbCB8fCBjb250cmFjdElEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGNvbnRyYWN0SUQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRQYXlvdXRUb29sQnlJREZvclBhcnR5LicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBheW91dFRvb2xJRCA9IHJlcXVlc3RQYXJhbWV0ZXJzLnBheW91dFRvb2xJRDtcbiAgICAgICAgaWYgKHBheW91dFRvb2xJRCA9PT0gbnVsbCB8fCBwYXlvdXRUb29sSUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgcGF5b3V0VG9vbElEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0UGF5b3V0VG9vbEJ5SURGb3JQYXJ0eS4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0eUlEID0gcmVxdWVzdFBhcmFtZXRlcnMucGFydHlJRDtcbiAgICAgICAgaWYgKHBhcnR5SUQgPT09IG51bGwgfHwgcGFydHlJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBwYXJ0eUlEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0UGF5b3V0VG9vbEJ5SURGb3JQYXJ0eS4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4UmVxdWVzdERlYWRsaW5lID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3REZWFkbGluZTtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgIT09IHVuZGVmaW5lZCAmJiB4UmVxdWVzdElEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdYLVJlcXVlc3QtSUQnLCBTdHJpbmcoeFJlcXVlc3RJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4UmVxdWVzdERlYWRsaW5lICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3REZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LURlYWRsaW5lJywgU3RyaW5nKHhSZXF1ZXN0RGVhZGxpbmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKGJlYXJlcikgcmVxdWlyZWRcbiAgICAgICAgbG9jYWxWYXJDcmVkZW50aWFsID0gdGhpcy5jb25maWd1cmF0aW9uLmxvb2t1cENyZWRlbnRpYWwoJ2JlYXJlcicpO1xuICAgICAgICBpZiAobG9jYWxWYXJDcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgbG9jYWxWYXJDcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvcHJvY2Vzc2luZy9wYXJ0aWVzLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInBhcnR5SURcIiwgdmFsdWU6IHBhcnR5SUQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L2NvbnRyYWN0cy8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJjb250cmFjdElEXCIsIHZhbHVlOiBjb250cmFjdElELCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9wYXlvdXRfdG9vbHMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwicGF5b3V0VG9vbElEXCIsIHZhbHVlOiBwYXlvdXRUb29sSUQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFBheW91dFRvb2w+KCdnZXQnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHBheW91dCB0b29scyB0byB0aGUgc3BlY2lmaWVkIGNvbnRyYWN0XG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldFBheW91dFRvb2xzKHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sc1JlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEFycmF5PFBheW91dFRvb2w+PjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0VG9vbHMocmVxdWVzdFBhcmFtZXRlcnM6IEdldFBheW91dFRvb2xzUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheTxQYXlvdXRUb29sPj4+O1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29scyhyZXF1ZXN0UGFyYW1ldGVyczogR2V0UGF5b3V0VG9vbHNSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheTxQYXlvdXRUb29sPj4+O1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29scyhyZXF1ZXN0UGFyYW1ldGVyczogR2V0UGF5b3V0VG9vbHNSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgeFJlcXVlc3RJRCA9IHJlcXVlc3RQYXJhbWV0ZXJzLnhSZXF1ZXN0SUQ7XG4gICAgICAgIGlmICh4UmVxdWVzdElEID09PSBudWxsIHx8IHhSZXF1ZXN0SUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgeFJlcXVlc3RJRCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldFBheW91dFRvb2xzLicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0SUQgPSByZXF1ZXN0UGFyYW1ldGVycy5jb250cmFjdElEO1xuICAgICAgICBpZiAoY29udHJhY3RJRCA9PT0gbnVsbCB8fCBjb250cmFjdElEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGNvbnRyYWN0SUQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRQYXlvdXRUb29scy4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4UmVxdWVzdERlYWRsaW5lID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3REZWFkbGluZTtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgIT09IHVuZGVmaW5lZCAmJiB4UmVxdWVzdElEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdYLVJlcXVlc3QtSUQnLCBTdHJpbmcoeFJlcXVlc3RJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4UmVxdWVzdERlYWRsaW5lICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3REZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LURlYWRsaW5lJywgU3RyaW5nKHhSZXF1ZXN0RGVhZGxpbmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKGJlYXJlcikgcmVxdWlyZWRcbiAgICAgICAgbG9jYWxWYXJDcmVkZW50aWFsID0gdGhpcy5jb25maWd1cmF0aW9uLmxvb2t1cENyZWRlbnRpYWwoJ2JlYXJlcicpO1xuICAgICAgICBpZiAobG9jYWxWYXJDcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgbG9jYWxWYXJDcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvcHJvY2Vzc2luZy9jb250cmFjdHMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwiY29udHJhY3RJRFwiLCB2YWx1ZTogY29udHJhY3RJRCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vcGF5b3V0X3Rvb2xzYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PEFycmF5PFBheW91dFRvb2w+PignZ2V0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCBwYXlvdXQgdG9vbHMgdG8gdGhlIHNwZWNpZmllZCBjb250cmFjdFxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29sc0ZvclBhcnR5KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sc0ZvclBhcnR5UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldCYjeDNEO3V0Zi04JywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8QXJyYXk8UGF5b3V0VG9vbD4+O1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29sc0ZvclBhcnR5KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sc0ZvclBhcnR5UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheTxQYXlvdXRUb29sPj4+O1xuICAgIHB1YmxpYyBnZXRQYXlvdXRUb29sc0ZvclBhcnR5KHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRQYXlvdXRUb29sc0ZvclBhcnR5UmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXJyYXk8UGF5b3V0VG9vbD4+PjtcbiAgICBwdWJsaWMgZ2V0UGF5b3V0VG9vbHNGb3JQYXJ0eShyZXF1ZXN0UGFyYW1ldGVyczogR2V0UGF5b3V0VG9vbHNGb3JQYXJ0eVJlcXVlc3RQYXJhbXMsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCB4UmVxdWVzdElEID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3RJRDtcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgPT09IG51bGwgfHwgeFJlcXVlc3RJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB4UmVxdWVzdElEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0UGF5b3V0VG9vbHNGb3JQYXJ0eS4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250cmFjdElEID0gcmVxdWVzdFBhcmFtZXRlcnMuY29udHJhY3RJRDtcbiAgICAgICAgaWYgKGNvbnRyYWN0SUQgPT09IG51bGwgfHwgY29udHJhY3RJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBjb250cmFjdElEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0UGF5b3V0VG9vbHNGb3JQYXJ0eS4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0eUlEID0gcmVxdWVzdFBhcmFtZXRlcnMucGFydHlJRDtcbiAgICAgICAgaWYgKHBhcnR5SUQgPT09IG51bGwgfHwgcGFydHlJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBwYXJ0eUlEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0UGF5b3V0VG9vbHNGb3JQYXJ0eS4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4UmVxdWVzdERlYWRsaW5lID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3REZWFkbGluZTtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgIT09IHVuZGVmaW5lZCAmJiB4UmVxdWVzdElEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdYLVJlcXVlc3QtSUQnLCBTdHJpbmcoeFJlcXVlc3RJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4UmVxdWVzdERlYWRsaW5lICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3REZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LURlYWRsaW5lJywgU3RyaW5nKHhSZXF1ZXN0RGVhZGxpbmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKGJlYXJlcikgcmVxdWlyZWRcbiAgICAgICAgbG9jYWxWYXJDcmVkZW50aWFsID0gdGhpcy5jb25maWd1cmF0aW9uLmxvb2t1cENyZWRlbnRpYWwoJ2JlYXJlcicpO1xuICAgICAgICBpZiAobG9jYWxWYXJDcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgbG9jYWxWYXJDcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvcHJvY2Vzc2luZy9wYXJ0aWVzLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInBhcnR5SURcIiwgdmFsdWU6IHBhcnR5SUQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L2NvbnRyYWN0cy8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJjb250cmFjdElEXCIsIHZhbHVlOiBjb250cmFjdElELCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9wYXlvdXRfdG9vbHNgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8QXJyYXk8UGF5b3V0VG9vbD4+KCdnZXQnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgcGF5b3V0IHNjaGVkdWxlIGRhdGEgYnkgaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTY2hlZHVsZUJ5UmVmKHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRTY2hlZHVsZUJ5UmVmUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldCYjeDNEO3V0Zi04JywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8U2NoZWR1bGU+O1xuICAgIHB1YmxpYyBnZXRTY2hlZHVsZUJ5UmVmKHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRTY2hlZHVsZUJ5UmVmUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxTY2hlZHVsZT4+O1xuICAgIHB1YmxpYyBnZXRTY2hlZHVsZUJ5UmVmKHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRTY2hlZHVsZUJ5UmVmUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0JiN4M0Q7dXRmLTgnLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8U2NoZWR1bGU+PjtcbiAgICBwdWJsaWMgZ2V0U2NoZWR1bGVCeVJlZihyZXF1ZXN0UGFyYW1ldGVyczogR2V0U2NoZWR1bGVCeVJlZlJlcXVlc3RQYXJhbXMsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQmI3gzRDt1dGYtOCcsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCB4UmVxdWVzdElEID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3RJRDtcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgPT09IG51bGwgfHwgeFJlcXVlc3RJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB4UmVxdWVzdElEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0U2NoZWR1bGVCeVJlZi4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY2hlZHVsZUlEID0gcmVxdWVzdFBhcmFtZXRlcnMuc2NoZWR1bGVJRDtcbiAgICAgICAgaWYgKHNjaGVkdWxlSUQgPT09IG51bGwgfHwgc2NoZWR1bGVJRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzY2hlZHVsZUlEIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0U2NoZWR1bGVCeVJlZi4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4UmVxdWVzdERlYWRsaW5lID0gcmVxdWVzdFBhcmFtZXRlcnMueFJlcXVlc3REZWFkbGluZTtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHhSZXF1ZXN0SUQgIT09IHVuZGVmaW5lZCAmJiB4UmVxdWVzdElEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdYLVJlcXVlc3QtSUQnLCBTdHJpbmcoeFJlcXVlc3RJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh4UmVxdWVzdERlYWRsaW5lICE9PSB1bmRlZmluZWQgJiYgeFJlcXVlc3REZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnWC1SZXF1ZXN0LURlYWRsaW5lJywgU3RyaW5nKHhSZXF1ZXN0RGVhZGxpbmUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKGJlYXJlcikgcmVxdWlyZWRcbiAgICAgICAgbG9jYWxWYXJDcmVkZW50aWFsID0gdGhpcy5jb25maWd1cmF0aW9uLmxvb2t1cENyZWRlbnRpYWwoJ2JlYXJlcicpO1xuICAgICAgICBpZiAobG9jYWxWYXJDcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgbG9jYWxWYXJDcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvcHJvY2Vzc2luZy9zY2hlZHVsZXMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwic2NoZWR1bGVJRFwiLCB2YWx1ZTogc2NoZWR1bGVJRCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcIm51bWJlclwiLCBkYXRhRm9ybWF0OiBcImludDMyXCJ9KX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8U2NoZWR1bGU+KCdnZXQnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbn1cbiJdfQ==