@colijnit/transaction 257.1.38 → 257.1.39

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 (49) hide show
  1. package/bundles/colijnit-transaction.umd.js +179 -51
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/add-product/add-product.component.js +8 -10
  5. package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +2 -2
  6. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +12 -4
  7. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +12 -4
  8. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.js +9 -10
  9. package/esm2015/lib/component/transaction-reservation/service/transaction-sales-reservation.service.js +3 -3
  10. package/esm2015/lib/component/transaction-reservation/transaction-sales-reservation-popup/transaction-sales-reservation-popup.component.js +3 -2
  11. package/esm2015/lib/component/transaction-search/transaction-batch-process-dialog/transaction-batch-process-dialog.component.js +34 -25
  12. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/transaction-invoice-check-order-tile.component.js +148 -0
  13. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/transaction-invoice-check-order-tile.module.js +33 -0
  14. package/esm2015/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.js +6 -21
  15. package/esm2015/lib/interface/invoice-check-order-line.interface.js +2 -0
  16. package/esm2015/lib/interface/invoice-check-order.interface.js +2 -0
  17. package/esm2015/lib/model/transaction-invoice-check-order-line.js +18 -0
  18. package/esm2015/lib/model/transaction-invoice-check-order.js +14 -0
  19. package/esm2015/lib/service/transaction-connector-adapter.service.js +13 -1
  20. package/esm2015/lib/service/transaction-connector.service.js +6 -1
  21. package/esm2015/lib/service/transaction.service.js +6 -1
  22. package/esm2015/lib/transaction-version.js +3 -3
  23. package/esm2015/public_api.js +6 -1
  24. package/fesm2015/colijnit-transaction.js +287 -76
  25. package/fesm2015/colijnit-transaction.js.map +1 -1
  26. package/lib/component/add-product/add-product.component.d.ts +0 -2
  27. package/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.d.ts +1 -1
  28. package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.d.ts +1 -1
  29. package/lib/component/transaction-reservation/service/transaction-sales-reservation.service.d.ts +1 -1
  30. package/lib/component/transaction-reservation/transaction-sales-reservation-popup/transaction-sales-reservation-popup.component.d.ts +1 -0
  31. package/lib/component/transaction-search/transaction-batch-process-dialog/style/_layout.scss +12 -0
  32. package/lib/component/transaction-search/transaction-batch-process-dialog/transaction-batch-process-dialog.component.d.ts +1 -0
  33. package/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/style/_layout.scss +81 -0
  34. package/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/style/_material-definition.scss +0 -0
  35. package/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/style/_theme.scss +4 -0
  36. package/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/style/material.scss +3 -0
  37. package/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/transaction-invoice-check-order-tile.component.d.ts +21 -0
  38. package/lib/component/transaction-search/transaction-search-tile/transaction-invoice-check-order-tile/transaction-invoice-check-order-tile.module.d.ts +2 -0
  39. package/lib/component/transaction-search/transaction-shipping-method-dialog/transaction-shipping-method-dialog.component.d.ts +1 -4
  40. package/lib/interface/invoice-check-order-line.interface.d.ts +27 -0
  41. package/lib/interface/invoice-check-order.interface.d.ts +14 -0
  42. package/lib/model/transaction-invoice-check-order-line.d.ts +27 -0
  43. package/lib/model/transaction-invoice-check-order.d.ts +12 -0
  44. package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
  45. package/lib/service/transaction-connector.service.d.ts +1 -0
  46. package/lib/service/transaction.service.d.ts +1 -0
  47. package/package.json +3 -3
  48. package/public_api.d.ts +5 -0
  49. package/colijnit-transaction-257.1.35.tgz +0 -0
@@ -992,6 +992,11 @@ export class TransactionConnectorService {
992
992
  return this._adapterService.functionCall(this._adapterService.getBatchJobProgressesForTheUser);
993
993
  });
994
994
  }
995
+ deleteBatchJob(batchJobProgressId) {
996
+ return __awaiter(this, void 0, void 0, function* () {
997
+ return this._adapterService.functionCall(this._adapterService.deleteBatchJob, [batchJobProgressId]);
998
+ });
999
+ }
995
1000
  emailOrderConfirmation(request) {
996
1001
  return __awaiter(this, void 0, void 0, function* () {
997
1002
  return this._adapterService.functionCall(this._adapterService.emailOrderConfirmation, [request]);
@@ -1704,4 +1709,4 @@ TransactionConnectorService.ctorParameters = () => [
1704
1709
  { type: TransactionSelectMultipleParameterizedCacheService },
1705
1710
  { type: TransactionSelectSingleParameterizedCacheService }
1706
1711
  ];
1707
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN4RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUt2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUUzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDckYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDMUUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFvQjVFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFDTCxrREFBa0QsRUFDbkQsTUFBTSwwRUFBMEUsQ0FBQztBQUNsRixPQUFPLEVB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Q0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUgsQ0FBQztLQUFBO0lBRVkscUNBQXFDLENBQUMsT0FBZSxFQUFFLE1BQWM7O1lBQ2hGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFILENBQUM7S0FBQTtJQUVZLHlCQUF5QixDQUFDLE9BQWU7O1lBQ3BELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxDQUFDO0tBQUE7SUFFWSx5QkFBeUIsQ0FBQyxPQUFlOztZQUNwRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztLQUFBO0lBRVksbUJBQW1CLENBQUMsTUFBYzs7WUFDN0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELENBQUM7S0FBQTs7OztZQTkyQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUF0T08sa0NBQWtDO1lBQ2xDLG1DQUFtQztZQUxuQyxxQ0FBcUM7WUFFM0Msa0RBQWtEO1lBOENsRCxnREFBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bSc7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvJztcbmltcG9ydCB7TGFuZ3VhZ2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9sYW5ndWFnZS5ibyc7XG5pbXBvcnQge1NlcXVlbmNlTmFtZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vc2VxdWVuY2UtbmFtZS5lbnVtJztcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm8nO1xuaW1wb3J0IHtEZWxpdmVyeU9wdGlvbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW9wdGlvbi5ibyc7XG5pbXBvcnQge1xuICBHZXRQb3N0YWxDb2RlUmV0cmlldmFsT3V0cHV0UGFyYW1zXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcG9zdGFsLWNvZGUtcmV0cmlldmFsLW91dHB1dC1wYXJhbXMnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ibyc7XG5pbXBvcnQge0FydGljbGVGdWxsT2JqZWN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1mdWxsLW9iamVjdCc7XG5pbXBvcnQge1N0YW5kYXJkVGV4dH0gZnJvbSAnLi4vbW9kZWwvc3RhbmRhcmQtdGV4dCc7XG5pbXBvcnQge0N1c3RvbWVyR3JvdXB9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1ncm91cC5ibyc7XG5pbXBvcnQge1RpdGxlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdGl0bGUuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcbmltcG9ydCB7Q2FzaFJlZ2lzdGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3Rlcic7XG5pbXBvcnQge1Jlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtQcmljZUxpc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmljZS1saXN0JztcbmltcG9ydCB7VmF0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdmF0JztcbmltcG9ydCB7RGlzY291bnRUeXBlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9kaXNjb3VudC10eXBlLmVudW0nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdCc7XG5pbXBvcnQge09uSG9sZENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vbi1ob2xkLWNvZGUuYm8nO1xuaW1wb3J0IHtXYXJlaG91c2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtDb2RlRGVzY3JpcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb2RlLWRlc2NyaXB0aW9uJztcbmltcG9ydCB7XG4gIFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0LmJvJztcbmltcG9ydCB7XG4gIFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7Q2FzaE9uRGVsaXZlcnlEYXRhfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1vbi1kZWxpdmVyeS1kYXRhJztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50UmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItY2FzaC1vbi1kZWxpdmVyeS1hbW91bnQtcmVxdWVzdFwiO1xuaW1wb3J0IHtHZXRQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2UtcG9ydGFsLWxpbmUnO1xuaW1wb3J0IHtQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1wb3J0YWwtbGluZS5ibyc7XG5pbXBvcnQge0NyZWF0ZVBheW1lbnRMaW5rUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXBheW1lbnQtbGluay1yZXN1bHQuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFJlc3VsdH0gZnJvbSAnLi4vbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCc7XG5pbXBvcnQge1xuICBSZXNvbHZlSGVhZGVyUGVuZGluZ1JlYXNvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtaGVhZGVyLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtQYXltZW50TGlua1N0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtbGluay1zdGF0dXMuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1tdWx0aXBsZS1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXG59IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yQWRhcHRlclNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1zaW5nbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0dldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2Utb3JkZXItY29uZmlybWF0aW9uJztcbmltcG9ydCB7VHJhbnNhY3Rpb25Mb2NrUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbG9jay1yZXN1bHQuYm8nO1xuaW1wb3J0IHtQcml2YWN5U2V0dGluZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpdmFjeS1zZXR0aW5nLmJvJztcbmltcG9ydCB7UmVsYXRpb25Qcml2YWN5U2V0dGluZ30gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvbWFpbi12YWx1ZS5ibyc7XG5pbXBvcnQge1NhbGVzUGVyc29ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc2FsZXMtcGVyc29uLmJvJztcbmltcG9ydCB7VGFnfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWcnO1xuaW1wb3J0IHtTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzfSBmcm9tICdAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3JlcG9ydC9zdG9jay1zdGlja2Vycy1wcmludC1sYXlvdXRzLmJvJztcbmltcG9ydCB7QXZhaWxhYmxlU3RvY2t9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hdmFpbGFibGUtc3RvY2suYm8nO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1xuICBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWx9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLWVtYWlsLmJvJztcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcbmltcG9ydCB7Q3JlYXRlU2FsZXNPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2FsZXMtb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1jYXNoLXJlZ2lzdGVyLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlU2VydmljZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVTYWxlc1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2FsZXMtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQdXJjaGFzZUFkdmljZUZpbHRlcnN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1hZHZpY2UtZmlsdGVycyc7XG5pbXBvcnQge1B1cmNoYXNlQWR2aWNlTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLWFkdmljZS1saW5lLmJvJztcbmltcG9ydCB7RW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7UGRmRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1oaXN0b3J5LmJvJztcbmltcG9ydCB7RW1haWxJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1BkZkludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtSZWZUcmFuc2FjdGlvbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlZi10cmFuc2FjdGlvbi5ibyc7XG5pbXBvcnQge1RhZ1RyZWVJdGVtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWctdHJlZS1pdGVtLmJvJztcbmltcG9ydCB7SW50ZXJuYWxQYXJhbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtJztcbmltcG9ydCB7R29vZHNSZWNlaXB0SGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXJlY2VpcHQtaGlzdG9yeS5ibyc7XG5pbXBvcnQge0dvb2RzQWxsb2NhdGlvbkhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1hbGxvY2F0aW9uLWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtMYXlvdXRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9sYXlvdXQtY29kZS5lbnVtJztcbmltcG9ydCB7SGlzdG9yaWNSZXBvcnR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9oaXN0b3JpYy1yZXBvcnQuYm8nO1xuaW1wb3J0IHtQcmludGVyfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcmludGVyLmJvJztcbmltcG9ydCB7Q3VycmVuY3l9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2N1cnJlbmN5LmJvJztcbmltcG9ydCB7UGF5bWVudENvbmRpdGlvbn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1jb25kaXRpb24uYm8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXG59IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy10by1iZS1waWNrZWQtZm9yLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtXYXJlaG91c2VTdG9ja0luZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2Utc3RvY2staW5mby5ibyc7XG5pbXBvcnQge0dvb2RzVG9CZVBpY2tlZEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy10by1iZS1waWNrZWQtaGlzdG9yeSc7XG5pbXBvcnQge0dvb2RzUGlja2VkSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXBpY2tlZC1oaXN0b3J5JztcbmltcG9ydCB7UGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgUHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50UHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7UGRmUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50JztcbmltcG9ydCB7R29vZHNQaWNrZWRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcGlja2VkLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGV0ZS1nb29kcy1waWNrZWQtZm9yLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtZ29vZHMtdG8tYmUtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q2FzaERyYXdlcnNSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1kcmF3ZXJzLXJlcXVlc3QnO1xuaW1wb3J0IHtDYXNoRHJhd2VyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1kcmF3ZXIuYm8nO1xuaW1wb3J0IHtQcmludFBvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbFBvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtUYWdDYXRlZ29yeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS90YWItY2F0ZWdvcnkuZW51bSc7XG5pbXBvcnQge0NvcHlUcmFuc2FjdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3B5LXRyYW5zYWN0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbFF1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2VSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLXNjb3JpbmctY2hhbmNlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItZXhwZWN0ZWQtc2NvcmluZy1kYXRlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItcmV0YWlsLXN0YWRpdW0tcmVxdWVzdCc7XG5pbXBvcnQge1JldGFpbFN0YWRpdW19IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXRhaWwtc3RhZGl1bS5ibyc7XG5pbXBvcnQge1dvcmtGbG93U3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd29ya2Zsb3ctc3RhdHVzLmJvJztcbmltcG9ydCB7XG4gIENoYW5nZUxpbmVRdWFudGl0eVNlbGVjdGVkTGluZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1saW5lLXF1YW50aXR5LXNlbGVjdGVkLWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge09yZGVyTGluZVNldENhdGVnb3J5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1jYXRlZ29yeS5ibyc7XG5pbXBvcnQge09yZGVyTGluZVNldERUT30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWR0byc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkFkZE9yZGVyTGluZVNldFRleHRMaW5lUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLW9yZGVyLWxpbmUtc2V0LXRleHQtbGluZS1yZXF1ZXN0JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHRcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWNvbmZpcm1hdGlvbi1hbmFseXNpcy1yZXN1bHQuYm8nO1xuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm8nO1xuaW1wb3J0IHtQZGZQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uTHNwSW5mb3JtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1sc3AtaW5mb3JtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BhY2thZ2VMU1B9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYWNrYWdlLWxzcC5ibyc7XG5pbXBvcnQge0FuYWx5emVkT3JkZXJDb25maXJtYXRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbmFseXplZC1vcmRlci1jb25maXJtYXRpb24uYm8nO1xuaW1wb3J0IHtcbiAgT3JkZXJDb25maXJtYXRpb25UcmFuc2FjdGlvbkxpbmtcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWNvbmZpcm1hdGlvbi10cmFuc2FjdGlvbi1saW5rLmJvJztcbmltcG9ydCB7UGRmUG9zUmVjZWlwdFJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXBvcy1yZWNlaXB0LXJlc3BvbnNlLmJvJztcbmltcG9ydCB7UHJvamVjdENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcm9qZWN0LWNvZGUuYm8nO1xuaW1wb3J0IHtDYXNoVHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtdHlwZS5ibyc7XG5pbXBvcnQge1Bvc0dyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcG9zLWdyb3VwLmJvJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uQWRkUGF5bWVudExpbmVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hZGQtcGF5bWVudC1saW5lLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgUGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0NhdXNlQ29kZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXVzZS1jb2RlLmJvXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gXCJAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xuaW1wb3J0IHtcbiAgUGRmVHJhbnNhY3Rpb25TZWFyY2hPdmVydmlld1Jlc3BvbnNlXG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXRyYW5zYWN0aW9uLXNlYXJjaC1vdmVydmlldy1yZXNwb25zZVwiO1xuaW1wb3J0IHtcbiAgUHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1wdXJjaGFzZS1vcmRlci1mb3Itc2FsZXMtb3JkZXItcmVxdWVzdFwiO1xuaW1wb3J0IHtBY3Rpdml0eX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2FjdGl2aXR5LmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nRmlsdGVyT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLWZpbHRlci1vYmplY3QuYm9cIjtcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm9cIjtcbmltcG9ydCB7UGxhbm5pbmdUcmFuc3BvcnRXZWVrfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLmJvXCI7XG5pbXBvcnQge0dldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXRyYW5zcG9ydC1vcmRlcnMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtPcmRlckxpbmVzVG9QbGFuUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy10by1wbGFuLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7UGxhbk9yZGVyTGluZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLWxpbmUuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25NYXJnaW5JbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLW1hcmdpbi1pbmZvLmJvXCI7XG5pbXBvcnQge0RhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9kYXRhLXNlcnZpY2UtcmVzcG9uc2UtZGF0YSc7XG5pbXBvcnQge09yZGVyTGluZXNQbGFubmVkUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy1wbGFubmVkLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItd2l0aC1zb3VyY2UtdHJhbnNhY3Rpb24tbGluZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1ByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtZGVsaXZlcnktbm90ZXMtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2RSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItd2l0aC1zb3VyY2UtZ29vZC1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtU0xBLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VPcmRlck5yQW5kQXJ0aWNsZURlc2NyaXB0aW9uUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLW9yZGVybnItYW5kLWFydGljbGUtZGVzY3JpcHRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2VSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXJlcG9ydC1tZXNzYWdlLXJlcXVlc3RcIjtcbmltcG9ydCB7U3VwcGxpZXJBcnRpY2xlU3RvY2tGb3JlY2FzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1hcnRpY2xlLXN0b2NrLWZvcmVjYXN0XCI7XG5pbXBvcnQge0NoYW5nZUxpbmVEaXJlY3RTZWxsUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtbGluZS1kaXJlY3Qtc2VsbC1yZXF1ZXN0XCI7XG5pbXBvcnQge1NlcnZpY2VXaXphcmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2VydmljZS13aXphcmRcIjtcbmltcG9ydCB7U2VydmljZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2VydmljZS10eXBlXCI7XG5pbXBvcnQge0FkZEhlYWRlckltYWdlUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hZGQtaGVhZGVyLWltYWdlLXJlcXVlc3RcIjtcbmltcG9ydCB7RGVsZXRlSGVhZGVySW1hZ2VSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGV0ZS1oZWFkZXItaW1hZ2UtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlckNhdXNlQ29kZVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXJjYXVzZS1jb2RlLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJQcmlvcml0eVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXItcHJpb3JpdHktcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlckVudHJ5VHlwZVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXItZW50cnktdHlwZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZVNlYXJjaEluZGV4fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtc2VhcmNoLWluZGV4LmJvXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyV2l6YXJkRGF0YVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXItd2l6YXJkLWRhdGEtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlclNlcnZpY2VUeXBlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci1zZXJ2aWNlLXR5cGUtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgT3JkZXJSZXNlcnZhdGlvblNhbGVzT3JkZXJMaW5lc1JlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1yZXNlcnZhdGlvbi1zYWxlcy1vcmRlci1saW5lcy1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1B1cmNoYXNlUmVzZXJ2YXRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcmVzZXJ2YXRpb24uYm9cIjtcbmltcG9ydCB7XG4gIFByb2Nlc3NPcmRlclJlc2VydmF0aW9uUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Byb2Nlc3Mtb3JkZXItcmVzZXJ2YXRpb24tcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtEaXN0cmljdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kaXN0cmljdC5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcbmltcG9ydCB7U2tpbGx9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2tpbGwuYm9cIjtcbmltcG9ydCB7VXNlckdyb3VwfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3VzZXItZ3JvdXAuYm9cIjtcbmltcG9ydCB7UmVzb3VyY2VQbGFubmluZ0lucHV0UGFyYW1zfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc291cmNlLXBsYW5uaW5nLWlucHV0LXBhcmFtcy5ib1wiO1xuaW1wb3J0IHtcbiAgRG9EZWxpdmVyeVBsYW5uaW5nUmVxdWVzdElucHV0UGFyYW1zXG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZG8tZGVsaXZlcnktcGxhbm5pbmctcmVxdWVzdC1pbnB1dC1wYXJhbXMuYm9cIjtcbmltcG9ydCB7UGxhblRpbWVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tdGltZXMuYm9cIjtcbmltcG9ydCB7SW50ZXJuYWxEZWZhdWx0fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1kZWZhdWx0LmVudW1cIjtcbmltcG9ydCB7UGxhbm5pbmdTZW5kT3JkZXJzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXNlbmQtb3JkZXJzLmJvXCI7XG5pbXBvcnQge0RvbWFpbk5hbWV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2RvbWFpbi1uYW1lLmVudW1cIjtcbmltcG9ydCB7QnVzaW5lc3NPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2J1c2luZXNzLW9iamVjdCc7XG5pbXBvcnQge0JhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC10cmFuc2FjdGlvbi1zZW5kaW5nLXJlcXVlc3RcIjtcbmltcG9ydCB7QmF0Y2hKb2JQcm9ncmVzc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2JhdGNoLWpvYi1wcm9ncmVzcy5ibyc7XG5pbXBvcnQge1NMQVByb2R1Y3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvU0xBLXByb2R1Y3RcIjtcbmltcG9ydCB7IFRyYW5zYWN0aW9uTGluZUNvcHlSZXF1ZXN0IH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtY29weS1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UmVwb3J0aW5nUGRmQmFzZVJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLXBkZi1iYXNlLXJlc3BvbnNlLmJvJztcbmltcG9ydCB7UHVyY2hhc2VIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtaGlzdG9yeSc7XG5pbXBvcnQge1N1cHBsaWVyUHJvZHVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1wcm9kdWN0LmJvXCI7XG5pbXBvcnQge0dldERvY3NUb1NpZ25Gb3JUcmFuc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LWRvY3MtdG8tc2lnbi1mb3ItdHJhbnMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtSZXBvcnRMaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1saXN0LW9iamVjdFwiO1xuaW1wb3J0IHtQbGFubmVkUmVzb3VyY2VGb3JUcmFuc2FjdGlvbkxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmVkLXJlc291cmNlLWZvci10cmFuc2FjdGlvbi1saW5lLmJvJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2Uge1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uSW5pdGlhbGl6ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5sZ2VQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuY29ubmVjdCgpO1xuICAgIHRoaXMuY29ubmVjdGlvbkluaXRpYWxpemVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvZ091dCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERvY3VtZW50Q29udGVudChkb2NJZDogbnVtYmVyLCB0aHVtYm5haWw6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudCwgW2RvY0lkLCB0aHVtYm5haWxdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRXh0ZW5kZWQoYXJ0aWNsZU5yOiBzdHJpbmcpOiBQcm9taXNlPEFydGljbGVFeHRlbmRlZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkLCBbYXJ0aWNsZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgc3RvcmVTaWduZWREb2MoZG9jdW1lbnRJZDogbnVtYmVyLCBkb2N1bWVudEJvZHk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RvcmVTaWduZWREb2MsIFtkb2N1bWVudElkLCBkb2N1bWVudEJvZHldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUZ1bGxPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxBcnRpY2xlRnVsbE9iamVjdD4oQXJ0aWNsZUZ1bGxPYmplY3QsIGdvb2RJZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlRnVsbE9iamVjdCwgW2dvb2RJZF0pO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R29vZElkRnJvbUFydGljbGVOcihhcnRpY2xlTnI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yLCBbYXJ0aWNsZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkOiBudW1iZXIgfCBzdHJpbmcsIHB1YmxpY2F0aW9uOiBudW1iZXIsIGluY2x1ZGVNaW1ldHlwZTogYm9vbGVhbiwgdGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2luZ2xlSW1hZ2UsIFtub2RlSWQsIHB1YmxpY2F0aW9uLCBpbmNsdWRlTWltZXR5cGUsIHRodW1iXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyaWVzKCk6IFByb21pc2U8Q291bnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb3VudHJ5PihDb3VudHJ5LCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvdW50cmllcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYW5ndWFnZXMoKTogUHJvbWlzZTxMYW5ndWFnZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxMYW5ndWFnZT4oTGFuZ3VhZ2UsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TGFuZ3VhZ2VzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbWVyR3JvdXBzKCk6IFByb21pc2U8Q3VzdG9tZXJHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDdXN0b21lckdyb3VwPihDdXN0b21lckdyb3VwLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEN1c3RvbWVyR3JvdXBzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldFRpdGxlcygpOiBQcm9taXNlPFRpdGxlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFRpdGxlPihUaXRsZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUaXRsZXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V29ya0Zsb3dTdGF0dXNlcyh0cmFuc2FjdGlvbktpbmQ6IFRyYW5zYWN0aW9uS2luZCk6IFByb21pc2U8V29ya0Zsb3dTdGF0dXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8V29ya0Zsb3dTdGF0dXM+KFdvcmtGbG93U3RhdHVzLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdvcmtGbG93U3RhdHVzZXMsIFt0cmFuc2FjdGlvbktpbmRdKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvdW50cnkoY291bnRyeUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q291bnRyeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyeSwgW2NvdW50cnlDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpdmFjeVNldHRpbmc+KFByaXZhY3lTZXR0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaXZhY3lTZXR0aW5ncyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVsYXRpb25Qcml2YWN5U2V0dGluZ3MpO1xuICB9XG5cbiAgcHVibGljIGdldE1hcmtldGluZ0NvZGVzKCk6IFByb21pc2U8TWFya2V0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE1hcmtldGluZz4oTWFya2V0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE1hcmtldGluZ0NvZGVzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVRyYW5zYWN0aW9uKGtpbmQ6IFRyYW5zYWN0aW9uS2luZCwgYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVRyYW5zYWN0aW9uLCBba2luZCwgYnJhbmNoTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTYWxlc09yZGVyKHJlcXVlc3Q6IENyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2FsZXNPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVDYXNoUmVnaXN0ZXJPcmRlcihyZXF1ZXN0OiBDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVDYXNoUmVnaXN0ZXJPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IENyZWF0ZVB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlUHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXIocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVDb3B5VHJhbnNhY3Rpb25MaW5lKHJlcXVlc3Q6IFRyYW5zYWN0aW9uTGluZUNvcHlSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlQ29weVRyYW5zYWN0aW9uTGluZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlR29vZChyZXF1ZXN0OiBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlR29vZFJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlR29vZCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvbihyZXF1ZXN0OiBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEFSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTYWxlc1F1b3RhdGlvbihyZXF1ZXN0OiBDcmVhdGVTYWxlc1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTYWxlc1F1b3RhdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb252ZXJ0U2FsZXNRdW90YXRpb25Ub1NhbGVzT3JkZXIocmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbnZlcnRTYWxlc1F1b3RhdGlvblRvU2FsZXNPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxpbmVJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUsIFthcnRpY2xlTGluZVV1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5TnJBbmRLaW5kKGtpbmQ6IFRyYW5zYWN0aW9uS2luZCwgdHJhbnNhY3Rpb25ObzogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZCwgW2tpbmQsIHRyYW5zYWN0aW9uTm9dKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkhlYWRlckJ5TnJBbmRLaW5kKGtpbmQ6IFRyYW5zYWN0aW9uS2luZCwgdHJhbnNhY3Rpb25ObzogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25IZWFkZXJCeU5yQW5kS2luZCwgW2tpbmQsIHRyYW5zYWN0aW9uTm9dKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeUlkLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdlYlNlc3Npb25TYWxlc09yZGVyKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2ViU2Vzc2lvblNhbGVzT3JkZXIsIFt0cmFuc2FjdGlvblV1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVUcmFuc2FjdGlvbkJ5VXVJZCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkJ5VXVJZCwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxUcmFuc2FjdGlvbkJ5VXVJZCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jYW5jZWxUcmFuc2FjdGlvbkJ5VXVJZCwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NrVHJhbnNhY3Rpb25CeUlkKHRyYW5zSWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxvY2tSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tUcmFuc2FjdGlvbkJ5SWQsIFt0cmFuc0lkLCB2ZXJzaW9uXSk7XG4gIH1cblxuICBwdWJsaWMgY29tbWl0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29tbWl0KTtcbiAgfVxuXG4gIHB1YmxpYyByb2xsYmFjaygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJvbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyByb2xsYmFja0JlYWNvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uucm9sbGJhY2tCZWFjb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zYXZlVHJhbnNhY3Rpb24sIFt1dWlkLCBzaG93TG9hZGVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2g/OiBzdHJpbmcsIGdyb3VwPzogbnVtYmVyLCBvdmVycmlkZU9sZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxDYXNoUmVnaXN0ZXJbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGJyYW5jaDogYnJhbmNoLFxuICAgICAgZ3JvdXA6IGdyb3VwXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENhc2hSZWdpc3Rlcj4oQ2FzaFJlZ2lzdGVyLCAoYnJhbmNoLCBncm91cCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoUmVnaXN0ZXJzLCBbYnJhbmNoLCBncm91cF0pXG4gICAgfSwgb3ZlcnJpZGVPbGQpLmdldFZhbHVlKGJyYW5jaCwgZ3JvdXApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hEcmF3ZXJzKGNhc2hEcmF3ZXJzUmVxdWVzdDogQ2FzaERyYXdlcnNSZXF1ZXN0KTogUHJvbWlzZTxDYXNoRHJhd2VyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXNoRHJhd2VyPihDYXNoRHJhd2VyLCAoY2FzaERyYXdlcnNSZXF1ZXN0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hEcmF3ZXJzLCBbY2FzaERyYXdlcnNSZXF1ZXN0XSlcbiAgICB9KS5nZXRWYWx1ZShjYXNoRHJhd2Vyc1JlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaWNlTGlzdHMoY29kZT86IHN0cmluZyk6IFByb21pc2U8UHJpY2VMaXN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQcmljZUxpc3Q+KFByaWNlTGlzdCwgKGNvZGU/OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpY2VMaXN0cywgW2NvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWYXRMaXN0KG9ubHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VmF0TGlzdCwgW29ubHlWYWxpZF0pO1xuICAgIH0pLmdldFZhbHVlKG9ubHlWYWxpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNWYXRDb2Rlcyh0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VmF0PihWYXQsICh0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNWYXRDb2RlcywgW3R5cGUsIGRhdGVdKTtcbiAgICB9KS5nZXRWYWx1ZSh0eXBlLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlTmFtZTogU2VxdWVuY2VOYW1lKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNlcXVlbmNlVmFsdWUsIFtzZXF1ZW5jZU5hbWVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU1ldGhvZHMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxEZWxpdmVyeU1ldGhvZD4oRGVsaXZlcnlNZXRob2QsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlNZXRob2RzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5T3B0aW9ucygpOiBQcm9taXNlPERlbGl2ZXJ5T3B0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5T3B0aW9uPihEZWxpdmVyeU9wdGlvbiwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU9wdGlvbnMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgcmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uLCBbdXVpZCwgcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc3RhbENvZGVSZXRyaWV2YWwocG9zdGNhbENvZGU6IHN0cmluZywgaG91c2VObzogc3RyaW5nKTogUHJvbWlzZTxHZXRQb3N0YWxDb2RlUmV0cmlldmFsT3V0cHV0UGFyYW1zPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3N0YWxDb2RlUmV0cmlldmFsLCBbcG9zdGNhbENvZGUsIGhvdXNlTm9dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRXZWJTZXNzaW9uVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBhcnRpY2xlTnVtYmVyOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRXZWJTZXNzaW9uVHJhbnNhY3Rpb25MaW5lLCBbdHJhbnNhY3Rpb25VdWlkLCBhcnRpY2xlTnVtYmVyLCBxdWFudGl0eV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGFydGljbGVObzogc3RyaW5nLCBxdWFudGl0eTogbnVtYmVyLCBhYm92ZUxpbmVOcjogbnVtYmVyLCBiZWxvd0xpbmVOcjogbnVtYmVyLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUsIFt1dWlkLCBhcnRpY2xlTm8sIHF1YW50aXR5LCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIsIHNob3dMb2FkZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCBzaG93T25Eb2N1bWVudHM6IG51bWJlciwgdGV4dDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgYXJ0aWNsZUJvdW5kOiBib29sZWFuLCByZWZBcnRpY2xlTGluZU5yOiBudW1iZXIsIGFib3ZlTGluZU5yPzogbnVtYmVyLCBiZWxvd0xpbmVOcj86IG51bWJlcik6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkVGV4dExpbmVUb1RyYW5zYWN0aW9uLCBbdXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0LCBhbW91bnQsIGFydGljbGVCb3VuZCwgcmVmQXJ0aWNsZUxpbmVOciwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlVGV4dExpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBzaG93T25Eb2N1bWVudHM6IG51bWJlciwgdGV4dDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlVGV4dExpbmUsIFt1dWlkLCBsaW5lVXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTGluZVNlcXVlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VMaW5lU2VxdWVuY2UsIFt1dWlkLCBsaW5lVXVpZCwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUsIFtsaW5lVXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkxpbmUsIFt1dWlkLCBsaW5lVXVpZF0pO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBuZXdRdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHksIFt1dWlkLCBsaW5lVXVpZCwgbmV3UXVhbnRpdHldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eVNlbGVjdGVkKHV1aWQ6IHN0cmluZywgbGluZXM6IENoYW5nZUxpbmVRdWFudGl0eVNlbGVjdGVkTGluZVJlcXVlc3RbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5U2VsZWN0ZWQsIFt1dWlkLCBsaW5lc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5U2VsZWN0Tm9uZSh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eVNlbGVjdE5vbmUsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzOiBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uLCBbcGVuZGluZ0xpbmVWYWx1ZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvbHZlUGVuZGluZ0hlYWRlclJlYXNvbihwZW5kaW5nSGVhZGVyVmFsdWVzOiBSZXNvbHZlSGVhZGVyUGVuZGluZ1JlYXNvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0hlYWRlclJlYXNvbiwgW3BlbmRpbmdIZWFkZXJWYWx1ZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5Db21taXNzaW9uQ29kZSwgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLkNvbW1pc3Npb25Db2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuSW5PdXRDb2xsZWN0aW9uLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbk91dENvbGxlY3Rpb24sIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuSW5PdXRDb2xsZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTTEFUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5TTEFUeXBlcywgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U0xBVHlwZXMsIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuU0xBVHlwZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFllc05vQ29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5ZZXNObywgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0WWVzTm9Db2xsZWN0aW9uLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLlllc05vKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmljZUtpbmRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLlByaWNlS2luZCwgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpY2VLaW5kQ29sbGVjdGlvbiwgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5QcmljZUtpbmQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaW9yaXR5Q29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5Qcmlvcml0eSwgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpb3JpdHlDb2xsZWN0aW9uLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuUHJpb3JpdHkpO1xuICB9XG5cbiAgcHVibGljIGdldEVudHJ5VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuU2VydmljZUNvbW11bmljYXRpb25UeXBlLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRFbnRyeVR5cGVzLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLlNlcnZpY2VDb21tdW5pY2F0aW9uVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RG9tYWluVHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5UcmFuc1R5cGUsIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvbWFpblR5cGVzLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLlRyYW5zVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2F1c2VDb2RlcygpOiBQcm9taXNlPENhdXNlQ29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXVzZUNvZGU+KENhdXNlQ29kZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXVzZUNvZGVzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzLCBbZ29vZElkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0UmVsYXRpb25CeVVzZXIodXVpZDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zZXRSZWxhdGlvbkJ5VXNlciwgW3V1aWQsIHVzZXJuYW1lLCBwYXNzd29yZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUZXh0VHlwZXMsIFtsYW5ndWFnZUNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTdGFuZGFyZFRleHRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RhbmRhcmRUZXh0cywgW2xhbmd1YWdlQ29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNhbGVzUGVyc29ucyhkYXRlPzogRGF0ZSk6IFByb21pc2U8U2FsZXNQZXJzb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFNhbGVzUGVyc29uPihTYWxlc1BlcnNvbiwgKGRhdGU/OiBEYXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNhbGVzUGVyc29ucywgW2RhdGVdKTtcbiAgICB9KS5nZXRWYWx1ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZXRhaWxTdGFkaXVtcygpOiBQcm9taXNlPFJldGFpbFN0YWRpdW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UmV0YWlsU3RhZGl1bT4oUmV0YWlsU3RhZGl1bSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZXRhaWxTdGFkaXVtcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYWdzKGNhdGVnb3J5OiBudW1iZXIpOiBQcm9taXNlPFRhZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VGFnPihUYWcsIChjYXRlZ29yeTogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRhZ3MsIFtjYXRlZ29yeV0pO1xuICAgIH0pLmdldFZhbHVlKGNhdGVnb3J5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPbkhvbGRDb2RlcygpOiBQcm9taXNlPE9uSG9sZENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8T25Ib2xkQ29kZT4oT25Ib2xkQ29kZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPbkhvbGRDb2Rlcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXYXJlaG91c2VzKGJyYW5jaE5yPzogc3RyaW5nKTogUHJvbWlzZTxXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFdhcmVob3VzZT4oV2FyZWhvdXNlLCAoYnJhbmNoTnI/OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2FyZWhvdXNlcywgW2JyYW5jaE5yXSk7XG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdhcmVob3VzZVN0b2NrSW5mb0J5R29vZEFuZEJyYW5jaChnb29kSWQ6IG51bWJlciwgYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8V2FyZWhvdXNlU3RvY2tJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdhcmVob3VzZVN0b2NrSW5mb0J5R29vZEFuZEJyYW5jaCwgW2dvb2RJZCwgYnJhbmNoTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk6IFByb21pc2U8Q29kZURlc2NyaXB0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljU3RhdGVWYWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE1heENvbmZpcm1lZERlbGl2ZXJ5RGF0ZUZvclB1cmNoYXNlT3JkZXIodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRNYXhDb25maXJtZWREZWxpdmVyeURhdGVGb3JQdXJjaGFzZU9yZGVyLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGUsIFt1dWlkLCBsaW5lVXVpZCwgY29kZV0pO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVRyYW5zYWN0aW9uTGluZURpcmVjdFNlbGwodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG5ld0RpcmVjdFNlbGw6IGJvb2xlYW4sXG4gICAgbmV3U3VwcGxpZXJJZDogbnVtYmVyLCBuZXdQdXJjaGFzZU9yZGVyTnVtYmVyOiBzdHJpbmcsIG5ld1N0b2NrRm9yZWNhc3REZWxpdmVyeURhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEaXJlY3RTZWxsLCBbdHJhbnNhY3Rpb25VdWlkLCBsaW5lVXVpZCwgbmV3RGlyZWN0U2VsbCwgbmV3U3VwcGxpZXJJZCxcbiAgICAgIG5ld1B1cmNoYXNlT3JkZXJOdW1iZXIsIG5ld1N0b2NrRm9yZWNhc3REZWxpdmVyeURhdGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllcih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllciwgW3V1aWQsIGxpbmVVdWlkLCBpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHdhcmVob3VzZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlLCBbdXVpZCwgbGluZVV1aWQsIHdhcmVob3VzZU51bWJlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUludGVyQnJhbmNoU291cmNlV2FyZWhvdXNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaW50ZXJCcmFuY2hTb3VyY2VXYXJlaG91c2VOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lSW50ZXJCcmFuY2hTb3VyY2VXYXJlaG91c2UsIFt1dWlkLCBsaW5lVXVpZCwgaW50ZXJCcmFuY2hTb3VyY2VXYXJlaG91c2VOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2U6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlLCBbdXVpZCwgbGluZVV1aWQsIHByaWNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHVyY2hhc2VQcmljZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZVByaWNlLCBbdXVpZCwgbGluZVV1aWQsIHByaWNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHVyY2hhc2VEZXNjcmlwdGlvbih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZURlc2NyaXB0aW9uLCBbdXVpZCwgbGluZVV1aWQsIGRlc2NyaXB0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2VMaXN0OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QsIFt1dWlkLCBsaW5lVXVpZCwgcHJpY2VMaXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVZhdCwgW3V1aWQsIGxpbmVVdWlkLCBpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUxpbmVEaXNjb3VudCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHR5cGU6IERpc2NvdW50VHlwZSwgZGlzY291bnQ6IG51bWJlciwgcmVhc29uOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUxpbmVEaXNjb3VudCwgW3V1aWQsIGxpbmVVdWlkLCB0eXBlLCBkaXNjb3VudCwgcmVhc29uLCBjb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRHJvcFNoaXBtZW50KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3RHJvcFNoaXBtZW50OiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRHJvcFNoaXBtZW50LCBbdXVpZCwgbGluZVV1aWQsIG5ld0Ryb3BTaGlwbWVudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeU1ldGhvZCwgW3V1aWQsIGxpbmVVdWlkLCBtZXRob2RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlLCBbdXVpZCwgbGluZVV1aWQsIGRhdGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUsIFt1dWlkLCBsaW5lVXVpZCwgdGltZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdGltZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRWRpdFRpbWUsIFt1dWlkLCBsaW5lVXVpZCwgdGltZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlcih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGFydGljbGVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlciwgW3V1aWQsIGxpbmVVdWlkLCBhcnRpY2xlTnVtYmVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVSZWZlcmVuY2UsIFt1dWlkLCBsaW5lVXVpZCwgcmVmZXJlbmNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZ29vZERlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24sIFt1dWlkLCBsaW5lVXVpZCwgZ29vZERlc2NyaXB0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29sbGVjdGlvbkNvZGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSwgW3V1aWQsIGxpbmVVdWlkLCBjb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSwgW3V1aWQsIGRlZmluaXRpdmVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVsaXZlcnlBZGRyZXNzLCBbdXVpZCwgbmV3TmF3TnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcywgW3V1aWQsIG5ld05hd05yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUsIFt1dWlkLCBkYXRlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGVEZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlRGVmaW5pdGl2ZSwgW3V1aWQsIGRlZmluaXRpdmVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyayh1dWlkOiBzdHJpbmcsIHJlbWFyazogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmssIFt1dWlkLCByZW1hcmtdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWZlcmVuY2UsIFt1dWlkLCByZWZlcmVuY2VdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlLCBbdXVpZCwgcmVmZXJlbmNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdFBlcmNlbnRhZ2UodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlLCBbdXVpZCwgYW1vdW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCwgW3V1aWQsIGFtb3VudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJlZmVycmVkRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSwgb3B0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSwgW3V1aWQsIGRhdGUsIG9wdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlUaW1lKHV1aWQ6IHN0cmluZywgdGltZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlUaW1lLCBbdXVpZCwgdGltZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QsIFt1dWlkLCBtZXRob2RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh1dWlkOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnMsIFt1dWlkLCBvcHRpb25zXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnkodXVpZDogc3RyaW5nLCBhbGxvd1BhcnRpYWw6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSwgW3V1aWQsIGFsbG93UGFydGlhbF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoKHV1aWQ6IHN0cmluZywgYnJhbmNoOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCwgW3V1aWQsIGJyYW5jaF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXModXVpZDogc3RyaW5nLCBjb2Rlczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk9uSG9sZENvZGVzLCBbdXVpZCwgY29kZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpdmlkZUV2ZW5seSh1dWlkOiBzdHJpbmcsIGRpdmlkZUV2ZW5seTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGl2aWRlRXZlbmx5LCBbdXVpZCwgZGl2aWRlRXZlbmx5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BbW91bnRUb1NldHRsZSh1dWlkOiBzdHJpbmcsIGFtb3VudFRvU2V0dGxlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFtb3VudFRvU2V0dGxlLCBbdXVpZCwgYW1vdW50VG9TZXR0bGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCh1dWlkOiBzdHJpbmcsIHByaWNlS2luZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmljZUtpbmQsIFt1dWlkLCBwcmljZUtpbmRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFkbUNvb3JkaW5hdG9yKHV1aWQ6IHN0cmluZywgcmVsYXRpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IsIFt1dWlkLCByZWxhdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQ3VycmVuY3kodXVpZDogc3RyaW5nLCBjdXJyZW5jeUNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQ3VycmVuY3ksIFt1dWlkLCBjdXJyZW5jeUNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblR5cGUodXVpZDogc3RyaW5nLCB0cmFuc2FjdGlvblR5cGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uVHlwZSwgW3V1aWQsIHRyYW5zYWN0aW9uVHlwZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJvamVjdENvZGUodXVpZDogc3RyaW5nLCBwcm9qZWN0Q29kZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25Qcm9qZWN0Q29kZSwgW3V1aWQsIHByb2plY3RDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXltZW50Q29uZGl0aW9uKHV1aWQ6IHN0cmluZywgY29uZGl0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBheW1lbnRDb25kaXRpb24sIFt1dWlkLCBjb25kaXRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkhhbmRsZWRCeSh1dWlkOiBzdHJpbmcsIGhhbmRsZWRCeTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25IYW5kbGVkQnksIFt1dWlkLCBoYW5kbGVkQnldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZyh1dWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nLCBbdXVpZCwgY29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQodXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCwgW3V1aWQsIHR5cGUsIGFtb3VudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2UocmVxdWVzdDogQ2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGUocmVxdWVzdDogQ2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclJldGFpbFN0YWRpdW0ocmVxdWVzdDogQ2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJSZXRhaWxTdGFkaXVtLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckF1dG9SZWNhbGN1bGF0ZURlcG9zaXQodXVpZDogc3RyaW5nLCBuZXdBdXRvUmVjYWxjdWxhdGVEZXBvc2l0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyQXV0b1JlY2FsY3VsYXRlRGVwb3NpdCwgW3V1aWQsIG5ld0F1dG9SZWNhbGN1bGF0ZURlcG9zaXRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJVc2VEZXBvc2l0UnVsZSh1dWlkOiBzdHJpbmcsIG5ld1VzZURlcG9zaXRSdWxlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVXNlRGVwb3NpdFJ1bGUsIFt1dWlkLCBuZXdVc2VEZXBvc2l0UnVsZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJDYXVzZUNvZGUocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlckNhdXNlQ29kZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyQ2F1c2VDb2RlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJTZXJ2aWNlVHlwZShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyU2VydmljZVR5cGVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlclNlcnZpY2VUeXBlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJQcmlvcml0eShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyUHJpb3JpdHlSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlclByaW9yaXR5LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJFbnRyeVR5cGUocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlckVudHJ5VHlwZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyRW50cnlUeXBlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEhlYWRlckltYWdlKHJlcXVlc3Q6IEFkZEhlYWRlckltYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZEhlYWRlckltYWdlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUhlYWRlckltYWdlKHJlcXVlc3Q6IERlbGV0ZUhlYWRlckltYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUhlYWRlckltYWdlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBwYXltZW50TWV0aG9kQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVQYXltZW50TGlua1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlLCBbdXVpZCwgYW1vdW50LCBwYXltZW50TWV0aG9kQ29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TGlua1N0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudExpbmtTdGF0dXMsIFtwYXltZW50TGlua1VVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1JlY2VpcHRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUmVjZWlwdEhpc3RvcnksIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZVBvcnRhbExpbmVzKHJlcXVlc3Q6IEdldFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8UHVyY2hhc2VQb3J0YWxMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlUG9ydGFsTGluZXMsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmU6IFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcywgW3B1cmNoYXNlUG9ydGFsTGluZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24ocHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbjogR2V0UHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbiwgW3B1cmNoYXNlT3JkZXJDb25maXJtYXRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaW5rVHJhbnNhY3Rpb25Ub09yZGVyQ29uZmlybWF0aW9uKGFuYWx5c2lzSWQ6IG51bWJlciwgbGluZXM6IE9yZGVyQ29uZmlybWF0aW9uVHJhbnNhY3Rpb25MaW5rW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxpbmtUcmFuc2FjdGlvblRvT3JkZXJDb25maXJtYXRpb24sIFthbmFseXNpc0lkLCBsaW5lc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvY2tQdXJjaGFzZVBvcnRhbExpbmVzKHRyYW5zSWRQdXJjaGFzZTogbnVtYmVyLCBsaW5lSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1B1cmNoYXNlUG9ydGFsTGluZXMsIFt0cmFuc0lkUHVyY2hhc2UsIGxpbmVJZF0pO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlQ29tbWlzc2lvbk9yZGVycyh0cmFuc0lkOiBudW1iZXIsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnM6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQ29tbWlzc2lvbk9yZGVycywgW3RyYW5zSWQsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbmFseXNpc1Jlc3VsdHNCeUFuYWx5c2lzSWQoYW5hbHlzaXNJZDogbnVtYmVyKTogUHJvbWlzZTxPcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFuYWx5c2lzUmVzdWx0c0J5QW5hbHlzaXNJZCwgW2FuYWx5c2lzSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ucygpOiBQcm9taXNlPEFuYWx5emVkT3JkZXJDb25maXJtYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0b2NrU3RpY2tlclRlbXBsYXRlcyhkYXRhOiBTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzKTogUHJvbWlzZTxTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN0b2NrU3RpY2tlclRlbXBsYXRlcywgW2RhdGFdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8QXZhaWxhYmxlU3RvY2tbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXZhaWxhYmxlU3RvY2tHcm91cGVkQnlXTEJTQnlUcmFuc0lkTGluZU5yLCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXZhaWxhYmxlU3RvY2tGb3JTdXBwbGllcihnb29kSWQ6IG51bWJlciwgc3VwcGxpZXJSZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFN1cHBsaWVyQXJ0aWNsZVN0b2NrRm9yZWNhc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEF2YWlsYWJsZVN0b2NrRm9yU3VwcGxpZXIsIFtnb29kSWQsIHN1cHBsaWVyUmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyKHJlcXVlc3Q6IEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzQWxsb2NhdGlvbkhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNBbGxvY2F0aW9uSGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNBbGxvY2F0aW9uSGlzdG9yeSwgW3RyYW5zSWQsIGxpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzVG9CZVBpY2tlZEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNUb0JlUGlja2VkSGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNUb0JlUGlja2VkSGlzdG9yeSwgW3RyYW5zSWQsIGxpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUGlja2VkSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1BpY2tlZEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUGlja2VkSGlzdG9yeSwgW3RyYW5zSWQsIGxpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExpbmVQdXJjaGFzZUluZm8odHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8UHVyY2hhc2VIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMaW5lUHVyY2hhc2VJbmZvLCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlR29vZHNQaWNrZWQoZGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3Q6IERlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlR29vZHNQaWNrZWQsIFtkZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUdvb2RzVG9CZVBpY2tlZChkZWxldGVHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3Q6IERlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUdvb2RzVG9CZVBpY2tlZCwgW2RlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldEdvb2RzVG9CZVBpY2tlZEZvclNhbGVzT3JkZXIocmVxdWVzdDogR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRHb29kc1BpY2tlZEZvck9yZGVyKHJlcXVlc3Q6IEdvb2RzUGlja2VkUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldEdvb2RzUGlja2VkRm9yT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uRW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaE9uRGVsaXZlcnlEYXRhKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Q2FzaE9uRGVsaXZlcnlEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoT25EZWxpdmVyeURhdGEsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnQocmVxdWVzdDogQ2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25QcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPG51bWJlcj4oTnVtYmVyLCAocmVsYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kLCBbcmVsYXRpb25JZF0pO1xuICAgIH0pLmdldFZhbHVlKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8c3RyaW5nPihTdHJpbmcsICh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvck9yZGVyQ29uZmlybWF0aW9uLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gICAgfSkuZ2V0VmFsdWUodHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0T3JkZXJDb25maXJtYXRpb25CYXRjaChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0YXJ0T3JkZXJDb25maXJtYXRpb25CYXRjaCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydFB1cmNoYXNlT3JkZXJGb3JtQmF0Y2gocmVxdWVzdDogQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zdGFydFB1cmNoYXNlT3JkZXJGb3JtQmF0Y2gsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RhcnREZWxpdmVyeU5vdGVzQmF0Y2gocmVxdWVzdDogQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zdGFydERlbGl2ZXJ5Tm90ZXNCYXRjaCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydEludm9pY2VCYXRjaChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0YXJ0SW52b2ljZUJhdGNoLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEJhdGNoSm9iUHJvZ3Jlc3Nlc0ZvclRoZVVzZXIoKTogUHJvbWlzZTxCYXRjaEpvYlByb2dyZXNzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEJhdGNoSm9iUHJvZ3Jlc3Nlc0ZvclRoZVVzZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogRW1haWxPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbE9yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBFbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJldmlld09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFBkZk9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8UmVwb3J0aW5nUGRmQmFzZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmV2aWV3T3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFB1cmNoYXNlT3JkZXIocmVxdWVzdDogUHJpbnRQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRQdXJjaGFzZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBFbWFpbFB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbFB1cmNoYXNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBQZGZQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVdlYlNlcnZpY2VPcmRlcih0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlV2ViU2VydmljZU9yZGVyLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhblB1cmNoYXNlT3JkZXJCZVNlbmRCeVdlYnNlcnZpY2UodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jYW5QdXJjaGFzZU9yZGVyQmVTZW5kQnlXZWJzZXJ2aWNlLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGlzUHJpbnRJc0RlZmF1bHRTZW5kTWV0aG9kRm9yUHVyY2hhc2VPcmRlcih0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmlzUHJpbnRJc0RlZmF1bHRTZW5kTWV0aG9kRm9yUHVyY2hhc2VPcmRlciwgW3RyYW5zYWN0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlclByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlclByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kLCBbcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnNGb3JTYWxlc09yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlQWR2aWNlTGluZXMoZmlsdGVyczogUHVyY2hhc2VBZHZpY2VGaWx0ZXJzLCBnb29kSWQ/OiBudW1iZXIsIHNob3dMb2FkZXI/OiBib29sZWFuKTogUHJvbWlzZTxQdXJjaGFzZUFkdmljZUxpbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VBZHZpY2VMaW5lcywgW2ZpbHRlcnMsIGdvb2RJZCwgc2hvd0xvYWRlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzKHB1cmNoYXNlQWR2aWNlTGluZXM6IFB1cmNoYXNlQWR2aWNlTGluZVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVycywgW3B1cmNoYXNlQWR2aWNlTGluZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbERlbGl2ZXJ5Tm90ZShlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IEVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsRGVsaXZlcnlOb3RlLCBbZW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGUsIFtlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkRlbGl2ZXJ5Tm90ZShwZGZEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZEZWxpdmVyeU5vdGUsIFtwZGZEZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNEZWxpdmVyeU5vdGUocGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljRGVsaXZlcnlOb3RlLCBbcGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnREZWxpdmVyeU5vdGUocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludERlbGl2ZXJ5Tm90ZSwgW3ByaW50RGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50RGVsaXZlcnlOb3RlcyhwcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0OiBQcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnREZWxpdmVyeU5vdGVzLCBbcHJpbnREZWxpdmVyeU5vdGVzUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGUocHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljRGVsaXZlcnlOb3RlLCBbcHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9ySW52b2ljZSh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9ySW52b2ljZSwgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSW52b2ljZShlbWFpbEludm9pY2VSZXF1ZXN0OiBFbWFpbEludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxJbnZvaWNlLCBbZW1haWxJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNJbnZvaWNlKGVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdDogRW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljSW52b2ljZSwgW2VtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkludm9pY2UocGRmSW52b2ljZVJlcXVlc3Q6IFBkZkludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZJbnZvaWNlLCBbcGRmSW52b2ljZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY0ludm9pY2UocGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdDogUGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNJbnZvaWNlLCBbcGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SW52b2ljZShwcmludEludm9pY2VSZXF1ZXN0OiBQcmludEludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRJbnZvaWNlLCBbcHJpbnRJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNJbnZvaWNlKHByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdDogUHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljSW52b2ljZSwgW3ByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW52b2ljZURlZmF1bHRTZW5kTWV0aG9kLCBbcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZlBvc1JlY2VpcHQocGRmUG9zUmVjZWlwdFJlcXVlc3Q6IFBkZlBvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxQZGZQb3NSZWNlaXB0UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZlBvc1JlY2VpcHQsIFtwZGZQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UG9zUmVjZWlwdChwcmludFBvc1JlY2VpcHRSZXF1ZXN0OiBQcmludFBvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFBvc1JlY2VpcHQsIFtwcmludFBvc1JlY2VpcHRSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHQocHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0OiBQcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNQb3NSZWNlaXB0LCBbcHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxQb3NSZWNlaXB0KGVtYWlsUG9zUmVjZWlwdFJlcXVlc3Q6IEVtYWlsUG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUG9zUmVjZWlwdCwgW2VtYWlsUG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljUG9zUmVjZWlwdChlbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY1Bvc1JlY2VpcHQsIFtlbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3NSZWNlaXB0RW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NSZWNlaXB0RW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zUmVjZWlwdFByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zUmVjZWlwdFByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUG9zUmVjZWlwdCh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUG9zUmVjZWlwdCwgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludm9pY2VFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VFbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZvaWNlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlUHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFF1b3RhdGlvbkRlZmF1bHRTZW5kTWV0aG9kLCBbcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsUXVvdGF0aW9uKGVtYWlsUXVvdGF0aW9uUmVxdWVzdDogRW1haWxRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxRdW90YXRpb24sIFtlbWFpbFF1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljUXVvdGF0aW9uKGVtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBFbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY1F1b3RhdGlvbiwgW2VtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmUXVvdGF0aW9uKHBkZlF1b3RhdGlvblJlcXVlc3Q6IFBkZlF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZlF1b3RhdGlvbiwgW3BkZlF1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY1F1b3RhdGlvbihwZGZIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3Q6IFBkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNRdW90YXRpb24sIFtwZGZIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFF1b3RhdGlvbihwcmludFF1b3RhdGlvblJlcXVlc3Q6IFByaW50UXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UXVvdGF0aW9uLCBbcHJpbnRRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY1F1b3RhdGlvbihwcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogUHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNRdW90YXRpb24sIFtwcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFF1b3RhdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UXVvdGF0aW9uRW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRRdW90YXRpb25QcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclF1b3RhdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUXVvdGF0aW9uLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaW50ZXI+KFByaW50ZXIsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpbnRlcnMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdFByaW50ZXIocmVwb3J0SWQ6IG51bWJlciwgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRQcmludGVyLCBbcmVwb3J0SWQsIHR5cGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDdXJyZW5jaWVzKGFjdGl2ZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPEN1cnJlbmN5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEN1cnJlbmNpZXMsIFthY3RpdmVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoVHlwZXModHlwZTogc3RyaW5nKTogUHJvbWlzZTxDYXNoVHlwZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoVHlwZXMsIFt0eXBlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zR3JvdXBzKCk6IFByb21pc2U8UG9zR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zR3JvdXBzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcm9qZWN0Q29kZXMoZGF0ZTogRGF0ZSk6IFByb21pc2U8UHJvamVjdENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJvamVjdENvZGVzLCBbZGF0ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFsbFByb2plY3RDb2RlcygpOiBQcm9taXNlPFByb2plY3RDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFsbFByb2plY3RDb2Rlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUHJvamVjdENvZGUocHJvamVjdENvZGU6IFByb2plY3RDb2RlKTogUHJvbWlzZTxQcm9qZWN0Q29kZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkUHJvamVjdENvZGUsIFtwcm9qZWN0Q29kZV0pO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudENvbmRpdGlvbnMobmFtZT86IHN0cmluZyk6IFByb21pc2U8UGF5bWVudENvbmRpdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50Q29uZGl0aW9ucywgW25hbWVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVTZXRDYXRlZ29yaWVzKCk6IFByb21pc2U8T3JkZXJMaW5lU2V0Q2F0ZWdvcnlbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJMaW5lU2V0Q2F0ZWdvcmllcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2VydmljZVdpemFyZCgpOiBQcm9taXNlPFNlcnZpY2VXaXphcmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNlcnZpY2VXaXphcmQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwc2VydFNlcnZpY2VXaXphcmQocmVxdWVzdDogU2VydmljZVdpemFyZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBzZXJ0U2VydmljZVdpemFyZCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXJ2aWNlVHlwZXMoKTogUHJvbWlzZTxTZXJ2aWNlVHlwZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTZXJ2aWNlVHlwZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZE9yZGVyTGluZVNldChyZXF1ZXN0OiBUcmFuc2FjdGlvbkFkZE9yZGVyTGluZVNldFRleHRMaW5lUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZE9yZGVyTGluZVNldCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVPcmRlckxpbmVTZXQocmVxdWVzdDogT3JkZXJMaW5lU2V0RFRPKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlT3JkZXJMaW5lU2V0LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZU9yZGVyTGluZVNldCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZU9yZGVyTGluZVNldCwgW3V1aWQsIGxpbmVVdWlkLCBjb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Sm9pbmVkVGFncyh0YWJsZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IFByb21pc2U8VGFnVHJlZUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Sm9pbmVkVGFncywgW3RhYmxlLCBrZXldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtZXJnZUpvaW5lZFRhZ3ModGFibGU6IHN0cmluZywga2V5OiBzdHJpbmcsIHRhZ3M6IFRhZ1RyZWVJdGVtW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLm1lcmdlSm9pbmVkVGFncywgW3RhYmxlLCBrZXksIHRhZ3NdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYWdzRnVsbFRyZWUoY2F0ZWdvcnk6IFRhZ0NhdGVnb3J5LCBpbmNsdWRlVGFnczogYm9vbGVhbik6IFByb21pc2U8VGFnVHJlZUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGFnc0Z1bGxUcmVlLCBbY2F0ZWdvcnksIGluY2x1ZGVUYWdzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb0hpc3RvcnlbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25JbmZvLCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmVmVHJhbnNhY3Rpb25zKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8UmVmVHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVmVHJhbnNhY3Rpb25zLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludGVybmFsUGFyYW1ldGVyVmFsdWUocGFyYW06IEludGVybmFsUGFyYW0pOiBQcm9taXNlPEludGVybmFsUGFyYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8SW50ZXJuYWxQYXJhbT4oSW50ZXJuYWxQYXJhbSwgKHBhcmFtOiBJbnRlcm5hbFBhcmFtKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyVmFsdWUsIFtwYXJhbV0pO1xuICAgIH0pLmdldFZhbHVlKHBhcmFtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPYmplY3RDb25maWd1cmF0aW9uKHNjcmVlbkNmZ01vZHVsZTogc3RyaW5nLCBwYXJhbXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgaW5zZXJ0TW9kZT86IGJvb2xlYW4pOiBQcm9taXNlPE9iamVjdENvbmZpZ3VyYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE9iamVjdENvbmZpZ3VyYXRpb24+KE9iamVjdENvbmZpZ3VyYXRpb24sIChzY3JlZW5DZmdNb2R1bGU6IHN0cmluZywgcGFyYW1zPzogc3RyaW5nIHwgc3RyaW5nW10sIGluc2VydE1vZGU/OiBib29sZWFuKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb24sIFtzY3JlZW5DZmdNb2R1bGUsIHBhcmFtcywgaW5zZXJ0TW9kZV0pO1xuICAgIH0pLmdldFZhbHVlKHNjcmVlbkNmZ01vZHVsZSwgcGFyYW1zLCBpbnNlcnRNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY0RvY3VtZW50cyh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSk6IFByb21pc2U8SGlzdG9yaWNSZXBvcnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNEb2N1bWVudHMsIFt0cmFuc0lkLCBkb2N1bWVudENvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZXBvcnRIZWFkZXJzQnlUcmFuc0lkQW5kTGF5b3V0Q29kZSh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSk6IFByb21pc2U8SGlzdG9yaWNSZXBvcnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEhpc3RvcmljUmVwb3J0PihIaXN0b3JpY1JlcG9ydCwgKHRyYW5zSWQ6IG51bWJlciwgZG9jdW1lbnRDb2RlOiBMYXlvdXRDb2RlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlcG9ydEhlYWRlcnNCeVRyYW5zSWRBbmRMYXlvdXRDb2RlLCBbdHJhbnNJZCwgZG9jdW1lbnRDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUodHJhbnNJZCwgZG9jdW1lbnRDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cygpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50PihSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREb2NzVG9TaWduRm9yVHJhbnMocmVxdWVzdDogR2V0RG9jc1RvU2lnbkZvclRyYW5zUmVxdWVzdCk6IFByb21pc2U8UmVwb3J0TGlzdE9iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREb2NzVG9TaWduRm9yVHJhbnMsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29weVNhbGVzT3JkZXIoY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlTYWxlc09yZGVyLCBbY29weVRyYW5zYWN0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlQdXJjaGFzZU9yZGVyKGNvcHlUcmFuc2FjdGlvblJlcXVlc3Q6IENvcHlUcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jb3B5UHVyY2hhc2VPcmRlciwgW2NvcHlUcmFuc2FjdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5U2FsZXNRdW90YXRpb24oY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlTYWxlc1F1b3RhdGlvbiwgW2NvcHlUcmFuc2FjdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlc1RvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCBjYXRhbG9nSWQ6IG51bWJlciwgcmF3RGF0YTogc3RyaW5nLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlc1RvVHJhbnNhY3Rpb24sIFt1dWlkLCBjYXRhbG9nSWQsIHJhd0RhdGEsIHNob3dMb2FkZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRQYXltZW50TGluZVRvVHJhbnNhY3Rpb24ocmVxdWVzdDogVHJhbnNhY3Rpb25BZGRQYXltZW50TGluZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRQYXltZW50TGluZVRvVHJhbnNhY3Rpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRTYWxlc09yZGVyc092ZXJ2aWV3KHJlcXVlc3Q6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QpOiBQcm9taXNlPFBkZlRyYW5zYWN0aW9uU2VhcmNoT3ZlcnZpZXdSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRTYWxlc09yZGVyc092ZXJ2aWV3LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbmRQYWNrYWdlSW5mb3JtYXRpb25Ub0xTUChyZXF1ZXN0OiBUcmFuc2FjdGlvbkxzcEluZm9ybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNlbmRQYWNrYWdlSW5mb3JtYXRpb25Ub0xTUCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYWNrYWdlSW5mb3JtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcsIGxpbmVVVUlEOiBzdHJpbmcpOiBQcm9taXNlPFBhY2thZ2VMU1BbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGFja2FnZUluZm9ybWF0aW9uLCBbdHJhbnNhY3Rpb25VVUlELCBsaW5lVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExvZ2lzdGljc1BhcnRuZXJzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TG9naXN0aWNzUGFydG5lcnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5uaW5nU291cmNlcygpOiBQcm9taXNlPFBsYW5uaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5uaW5nU291cmNlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbk9yZGVycyhmaWx0ZXJPYmplY3Q6IFBsYW5uaW5nRmlsdGVyT2JqZWN0LCBwbGFubmluZ0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5PcmRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFuT3JkZXJzLCBbZmlsdGVyT2JqZWN0LCBwbGFubmluZ0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhblRyYW5zcG9ydFdlZWsoc3RhcnREYXRlOiBEYXRlLCBwbGFubmluZ0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFuVHJhbnNwb3J0V2VlaywgW3N0YXJ0RGF0ZSwgcGxhbm5pbmdJZF0pO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUGxhblRyYW5zcG9ydFdlZWsocGxhblRyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vlayk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUGxhblRyYW5zcG9ydFdlZWssIFtwbGFuVHJhbnNwb3J0V2Vla10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWREb2N1bWVudHNPZlRyYW5zYWN0aW9uKGtleTogc3RyaW5nKTogUHJvbWlzZTxDb0RvY3VtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvYWREb2N1bWVudHNPZlRyYW5zYWN0aW9uLCBba2V5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZERvY3VtZW50Q29udGVudChkb2NJZDogbnVtYmVyLCB0aHVtYm5haWw6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudCwgW2RvY0lkLCB0aHVtYm5haWxdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtZXJnZURvY3VtZW50T25UcmFuc2FjdGlvbihrZXk6IHN0cmluZywgZG9jdW1lbnQ6IENvRG9jdW1lbnQpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLm1lcmdlRG9jdW1lbnRPblRyYW5zYWN0aW9uLCBba2V5LCBkb2N1bWVudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZURvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlRG9jdW1lbnQsIFtkb2N1bWVudElkXSk7XG4gIH1cblxuICAvKnB1YmxpYyBhc3luYyBsb2NrRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tkb2N1bWVudChkb2N1bWVudElkKTtcbiAgfSovXG5cbiAgcHVibGljIGFzeW5jIGluc2VydEFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuaW5zZXJ0QWN0aXZpdHksIFthY3Rpdml0eV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQWN0aXZpdHksIFthY3Rpdml0eV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvbXBvbmVudEFjdGl2aXRpZXNXaXRob3V0UmVsYXRpb25GaWx0ZXJpbmcodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxBY3Rpdml0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21wb25lbnRBY3Rpdml0aWVzV2l0aG91dFJlbGF0aW9uRmlsdGVyaW5nLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljQWN0aXZpdGllcyh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljQWN0aXZpdGllcywgW3RyYW5zYWN0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbk1hcmdpbkluZm8odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTWFyZ2luSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25NYXJnaW5JbmZvLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNwb3J0T3JkZXJzKHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QpOiBQcm9taXNlPFBsYW5PcmRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc3BvcnRPcmRlcnMsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1RvUGxhbihyZXF1ZXN0OiBPcmRlckxpbmVzVG9QbGFuUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVzVG9QbGFuLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZXNQbGFubmVkKHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVzUGxhbm5lZCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1bmRvRGVsaXZlcnlCeVJlcG9ydElkKHJlcG9ydElkOiBudW1iZXIpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51bmRvRGVsaXZlcnlCeVJlcG9ydElkLCBbcmVwb3J0SWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmaXJlVHJpZ2dlcih3b3JrRmxvd1Byb2Nlc3NJZDogbnVtYmVyLCBzZXF1ZW5jZTogbnVtYmVyLCB0cmlnZ2VySWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZmlyZVRyaWdnZXIsIFt3b3JrRmxvd1Byb2Nlc3NJZCwgc2VxdWVuY2UsIHRyaWdnZXJJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpcmVHZW5lcmljVHJpZ2dlcih3b3JrRmxvd1Byb2Nlc3NJZDogbnVtYmVyLCBnZW5lcmljVHJhbnNpdGlvbklkOiBudW1iZXIsIHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZmlyZUdlbmVyaWNUcmlnZ2VyLCBbd29ya0Zsb3dQcm9jZXNzSWQsIGdlbmVyaWNUcmFuc2l0aW9uSWQsIHJlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2NrVGFzayhpZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrVGFzaywgW2lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlQWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVBY3Rpdml0eSwgW2FjdGl2aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQdXJjaGFzZU9yZGVyKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUHVyY2hhc2VPcmRlciwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuT3JkZXIodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxQbGFuT3JkZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5PcmRlciwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb252ZXJ0Q2FzaFJlZ2lzdGVyT3JkZXJUb1NhbGVzT3JkZXIodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29udmVydENhc2hSZWdpc3Rlck9yZGVyVG9TYWxlc09yZGVyLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExpbmVJbmRpY2VzQnlUcmFuc0lkKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25MaW5lU2VhcmNoSW5kZXhbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TGluZUluZGljZXNCeVRyYW5zSWQsIFt0cmFuc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2FsZXNPcmRlckxpbmVzKHJlcXVlc3Q6IE9yZGVyUmVzZXJ2YXRpb25TYWxlc09yZGVyTGluZXNSZXF1ZXN0KTogUHJvbWlzZTxQdXJjaGFzZVJlc2VydmF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNhbGVzT3JkZXJMaW5lcywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcm9jZXNzUmVzZXJ2YXRpb24ocmVxdWVzdDogUHJvY2Vzc09yZGVyUmVzZXJ2YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJvY2Vzc1Jlc2VydmF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVuZG9SZXNlcnZhdGlvbih0cmFuc0lkOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51bmRvUmVzZXJ2YXRpb24sIFt0cmFuc0lkLCBsaW5lSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTTEFDYXRlZ29yaWVzKCk6IFByb21pc2U8U0xBUHJvZHVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTTEFDYXRlZ29yaWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTTEFQcm9kdWN0cygpOiBQcm9taXNlPFNMQVByb2R1Y3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U0xBUHJvZHVjdHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERpc3RyaWN0cygpOiBQcm9taXNlPERpc3RyaWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERpc3RyaWN0cyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RW1wbG95ZWVzKCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEVtcGxveWVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2tpbGxzKCk6IFByb21pc2U8U2tpbGxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2tpbGxzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRVc2VyR3JvdXBzKCk6IFByb21pc2U8VXNlckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFVzZXJHcm91cHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKG9yZGVyc1RvQmVSZXN0b3JlZDogUGxhbk9yZGVyW10pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzLCBbb3JkZXJzVG9CZVJlc3RvcmVkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb3VyY2VQbGFubmluZyhpbnB1dHM6IFJlc291cmNlUGxhbm5pbmdJbnB1dFBhcmFtcyk6IFByb21pc2U8UGxhblRpbWVzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc291cmNlUGxhbm5pbmcsIFtpbnB1dHNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0KGlucHV0czogRG9EZWxpdmVyeVBsYW5uaW5nUmVxdWVzdElucHV0UGFyYW1zKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZG9EZWxpdmVyeVBsYW5uaW5nUmVxdWVzdCwgW2lucHV0c10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5RGF0ZU9yZGVyKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8RGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlEYXRlT3JkZXIsIFt0cmFuc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UEFTdGF0dXNGcm9tVHJhbnNhY3Rpb24odHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQQVN0YXR1c0Zyb21UcmFuc2FjdGlvbiwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja0F2YWlsYWJpbGl0eShpbnB1dHM6IFBsYW5uaW5nU2VuZE9yZGVycyk6IFByb21pc2U8UGxhblRpbWVzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoZWNrQXZhaWxhYmlsaXR5LCBbaW5wdXRzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW50ZXJuYWxEZWZhdWx0VmFsdWUocGFyYW06IEludGVybmFsRGVmYXVsdCk6IFByb21pc2U8SW50ZXJuYWxEZWZhdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnRlcm5hbERlZmF1bHRWYWx1ZSwgW3BhcmFtXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbm5lZExpbmVzRm9yRW1wbG95ZWUocGxhbm5pbmdJZDogbnVtYmVyLCByZWxhdGlvbklkOiBudW1iZXIsIGRhdGU6IERhdGUpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFubmVkTGluZXNGb3JFbXBsb3llZSwgW3BsYW5uaW5nSWQsIHJlbGF0aW9uSWQsIGRhdGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFubmVkUmVzb3VyY2VzRm9yVHJhbnNhY3Rpb25MaW5lKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPFBsYW5uZWRSZXNvdXJjZUZvclRyYW5zYWN0aW9uTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFubmVkUmVzb3VyY2VzRm9yVHJhbnNhY3Rpb25MaW5lLCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGVybXNBbmRDb25kaXRpb25zRm9ybSh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUZXJtc0FuZENvbmRpdGlvbnNGb3JtKHRyYW5zSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uUGxhblBlcmlvZHModHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxQbGFuVGltZXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvblBsYW5QZXJpb2RzKHRyYW5zSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN1cHBsaWVyUHJvZHVjdHMoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPFN1cHBsaWVyUHJvZHVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN1cHBsaWVyUHJvZHVjdHMoZ29vZElkKTtcbiAgfVxufVxuIl19
1712
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN4RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUt2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUUzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDckYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDMUUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFvQjVFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFDTCxrREFBa0QsRUFDbkQsTUFBTSwwRUFBMEUsQ0FBQztBQUNsRixPQUFPLEVB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QUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQztLQUFBO0lBRVksMEJBQTBCLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLElBQVU7O1lBQ3hGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1SCxDQUFDO0tBQUE7SUFFWSxxQ0FBcUMsQ0FBQyxPQUFlLEVBQUUsTUFBYzs7WUFDaEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFDQUFxQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUgsQ0FBQztLQUFBO0lBRVkseUJBQXlCLENBQUMsT0FBZTs7WUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLENBQUM7S0FBQTtJQUVZLHlCQUF5QixDQUFDLE9BQWU7O1lBQ3BELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxDQUFDO0tBQUE7SUFFWSxtQkFBbUIsQ0FBQyxNQUFjOztZQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsQ0FBQztLQUFBOzs7O1lBbDNDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXRPTyxrQ0FBa0M7WUFDbEMsbUNBQW1DO1lBTG5DLHFDQUFxQztZQUUzQyxrREFBa0Q7WUE4Q2xELGdEQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL21hcmtldGluZy5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcbmltcG9ydCB7Q291bnRyeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm8nO1xuaW1wb3J0IHtMYW5ndWFnZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xhbmd1YWdlLmJvJztcbmltcG9ydCB7U2VxdWVuY2VOYW1lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW0nO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ibyc7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvJztcbmltcG9ydCB7XG4gIEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXNcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wb3N0YWwtY29kZS1yZXRyaWV2YWwtb3V0cHV0LXBhcmFtcyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFydGljbGUtd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7QXJ0aWNsZUZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0JztcbmltcG9ydCB7U3RhbmRhcmRUZXh0fSBmcm9tICcuLi9tb2RlbC9zdGFuZGFyZC10ZXh0JztcbmltcG9ydCB7Q3VzdG9tZXJHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWdyb3VwLmJvJztcbmltcG9ydCB7VGl0bGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90aXRsZS5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm8nO1xuaW1wb3J0IHtDYXNoUmVnaXN0ZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXJlZ2lzdGVyJztcbmltcG9ydCB7UmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtcGVuZGluZy1yZWFzb24tcmVxdWVzdC5ibyc7XG5pbXBvcnQge1ByaWNlTGlzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaWNlLWxpc3QnO1xuaW1wb3J0IHtWYXR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC92YXQnO1xuaW1wb3J0IHtEaXNjb3VudFR5cGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2Rpc2NvdW50LXR5cGUuZW51bSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy1yZXF1ZXN0JztcbmltcG9ydCB7T25Ib2xkQ29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29uLWhvbGQtY29kZS5ibyc7XG5pbXBvcnQge1dhcmVob3VzZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS5ibyc7XG5pbXBvcnQge0NvZGVEZXNjcmlwdGlvbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvZGUtZGVzY3JpcHRpb24nO1xuaW1wb3J0IHtcbiAgUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlclJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlY2VpdmUtZ29vZHMtZm9yLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtcbiAgUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1jb3JyZWN0aW9uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtDYXNoT25EZWxpdmVyeURhdGF9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLW9uLWRlbGl2ZXJ5LWRhdGEnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnRSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWhlYWRlci1jYXNoLW9uLWRlbGl2ZXJ5LWFtb3VudC1yZXF1ZXN0XCI7XG5pbXBvcnQge0dldFB1cmNoYXNlUG9ydGFsTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wdXJjaGFzZS1wb3J0YWwtbGluZSc7XG5pbXBvcnQge1B1cmNoYXNlUG9ydGFsTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLXBvcnRhbC1saW5lLmJvJztcbmltcG9ydCB7Q3JlYXRlUGF5bWVudExpbmtSZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcGF5bWVudC1saW5rLXJlc3VsdC5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoUmVzdWx0fSBmcm9tICcuLi9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtcmVzdWx0JztcbmltcG9ydCB7XG4gIFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1oZWFkZXItcGVuZGluZy1yZWFzb24tcmVxdWVzdC5ibyc7XG5pbXBvcnQge1BheW1lbnRMaW5rU3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1saW5rLXN0YXR1cy5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2Vcbn0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7R2V0UHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wdXJjaGFzZS1vcmRlci1jb25maXJtYXRpb24nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxvY2tSZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1sb2NrLXJlc3VsdC5ibyc7XG5pbXBvcnQge1ByaXZhY3lTZXR0aW5nfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcml2YWN5LXNldHRpbmcuYm8nO1xuaW1wb3J0IHtSZWxhdGlvblByaXZhY3lTZXR0aW5nfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcHJpdmFjeS1zZXR0aW5nLmJvJztcbmltcG9ydCB7Q29Eb21haW5WYWx1ZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvJztcbmltcG9ydCB7U2FsZXNQZXJzb259IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zYWxlcy1wZXJzb24uYm8nO1xuaW1wb3J0IHtUYWd9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3RhZyc7XG5pbXBvcnQge1N0b2NrU3RpY2tlcnNQcmludExheW91dHN9IGZyb20gJ0Bjb2xpam5pdC9zaGFyZWRhcGkvYnVpbGQvbW9kZWwvcmVwb3J0L3N0b2NrLXN0aWNrZXJzLXByaW50LWxheW91dHMuYm8nO1xuaW1wb3J0IHtBdmFpbGFibGVTdG9ja30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2F2YWlsYWJsZS1zdG9jay5ibyc7XG5pbXBvcnQge1xuICBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlclJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FsbG9jYXRlLWdvb2RzLWZvci1zYWxlcy1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FsbG9jYXRlLWdvb2RzLWZvci1zYWxlcy1vcmRlci1jb3JyZWN0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tZW1haWwuYm8nO1xuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tcHJpbnQuYm8nO1xuaW1wb3J0IHtDcmVhdGVTYWxlc09yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zYWxlcy1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLWNhc2gtcmVnaXN0ZXItb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVTZXJ2aWNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNhbGVzUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zYWxlcy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1B1cmNoYXNlQWR2aWNlRmlsdGVyc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLWFkdmljZS1maWx0ZXJzJztcbmltcG9ydCB7UHVyY2hhc2VBZHZpY2VMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtYWR2aWNlLWxpbmUuYm8nO1xuaW1wb3J0IHtFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50RGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb0hpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtFbWFpbEludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1JlZlRyYW5zYWN0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVmLXRyYW5zYWN0aW9uLmJvJztcbmltcG9ydCB7VGFnVHJlZUl0ZW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3RhZy10cmVlLWl0ZW0uYm8nO1xuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xuaW1wb3J0IHtHb29kc1JlY2VpcHRIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcmVjZWlwdC1oaXN0b3J5LmJvJztcbmltcG9ydCB7R29vZHNBbGxvY2F0aW9uSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLWFsbG9jYXRpb24taGlzdG9yeS5ibyc7XG5pbXBvcnQge0xheW91dENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2xheW91dC1jb2RlLmVudW0nO1xuaW1wb3J0IHtIaXN0b3JpY1JlcG9ydH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2hpc3RvcmljLXJlcG9ydC5ibyc7XG5pbXBvcnQge1ByaW50ZXJ9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaW50ZXIuYm8nO1xuaW1wb3J0IHtDdXJyZW5jeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY3VycmVuY3kuYm8nO1xuaW1wb3J0IHtQYXltZW50Q29uZGl0aW9ufSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWNvbmRpdGlvbi5ibyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblNlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2Vcbn0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3Qtc2luZ2xlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXRvLWJlLXBpY2tlZC1mb3Itb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1dhcmVob3VzZVN0b2NrSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS1zdG9jay1pbmZvLmJvJztcbmltcG9ydCB7R29vZHNUb0JlUGlja2VkSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXRvLWJlLXBpY2tlZC1oaXN0b3J5JztcbmltcG9ydCB7R29vZHNQaWNrZWRIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcGlja2VkLWhpc3RvcnknO1xuaW1wb3J0IHtQZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgUHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBQcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1xuICBFbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BkZkhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BkZk9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge09iamVjdENvbmZpZ3VyYXRpb259IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL29iamVjdC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQnO1xuaW1wb3J0IHtHb29kc1BpY2tlZFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1waWNrZWQtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBEZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsZXRlLWdvb2RzLXBpY2tlZC1mb3Itb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1xuICBEZWxldGVHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGV0ZS1nb29kcy10by1iZS1waWNrZWQtZm9yLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDYXNoRHJhd2Vyc1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLWRyYXdlcnMtcmVxdWVzdCc7XG5pbXBvcnQge0Nhc2hEcmF3ZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLWRyYXdlci5ibyc7XG5pbXBvcnQge1ByaW50UG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge1RhZ0NhdGVnb3J5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL3RhYi1jYXRlZ29yeS5lbnVtJztcbmltcG9ydCB7Q29weVRyYW5zYWN0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvcHktdHJhbnNhY3Rpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BkZlF1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludFF1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1oZWFkZXItc2NvcmluZy1jaGFuY2UtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWhlYWRlci1leHBlY3RlZC1zY29yaW5nLWRhdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJSZXRhaWxTdGFkaXVtUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWhlYWRlci1yZXRhaWwtc3RhZGl1bS1yZXF1ZXN0JztcbmltcG9ydCB7UmV0YWlsU3RhZGl1bX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JldGFpbC1zdGFkaXVtLmJvJztcbmltcG9ydCB7V29ya0Zsb3dTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93b3JrZmxvdy1zdGF0dXMuYm8nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlTGluZVF1YW50aXR5U2VsZWN0ZWRMaW5lUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWxpbmUtcXVhbnRpdHktc2VsZWN0ZWQtbGluZS1yZXF1ZXN0JztcbmltcG9ydCB7T3JkZXJMaW5lU2V0Q2F0ZWdvcnl9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWNhdGVnb3J5LmJvJztcbmltcG9ydCB7T3JkZXJMaW5lU2V0RFRPfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtZHRvJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uQWRkT3JkZXJMaW5lU2V0VGV4dExpbmVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hZGQtb3JkZXItbGluZS1zZXQtdGV4dC1saW5lLXJlcXVlc3QnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgT3JkZXJDb25maXJtYXRpb25BbmFseXNpc1Jlc3VsdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItY29uZmlybWF0aW9uLWFuYWx5c2lzLXJlc3VsdC5ibyc7XG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XG5pbXBvcnQge1BkZlBvc1JlY2VpcHRSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25Mc3BJbmZvcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxzcC1pbmZvcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGFja2FnZUxTUH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BhY2thZ2UtbHNwLmJvJztcbmltcG9ydCB7QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FuYWx5emVkLW9yZGVyLWNvbmZpcm1hdGlvbi5ibyc7XG5pbXBvcnQge1xuICBPcmRlckNvbmZpcm1hdGlvblRyYW5zYWN0aW9uTGlua1xufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItY29uZmlybWF0aW9uLXRyYW5zYWN0aW9uLWxpbmsuYm8nO1xuaW1wb3J0IHtQZGZQb3NSZWNlaXB0UmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcG9zLXJlY2VpcHQtcmVzcG9uc2UuYm8nO1xuaW1wb3J0IHtQcm9qZWN0Q29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Byb2plY3QtY29kZS5ibyc7XG5pbXBvcnQge0Nhc2hUeXBlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC10eXBlLmJvJztcbmltcG9ydCB7UG9zR3JvdXB9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wb3MtZ3JvdXAuYm8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25BZGRQYXltZW50TGluZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFkZC1wYXltZW50LWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBQZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7Q2F1c2VDb2RlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NhdXNlLWNvZGUuYm9cIjtcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0XCI7XG5pbXBvcnQge1xuICBQZGZUcmFuc2FjdGlvblNlYXJjaE92ZXJ2aWV3UmVzcG9uc2Vcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtdHJhbnNhY3Rpb24tc2VhcmNoLW92ZXJ2aWV3LXJlc3BvbnNlXCI7XG5pbXBvcnQge1xuICBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXB1cmNoYXNlLW9yZGVyLWZvci1zYWxlcy1vcmRlci1yZXF1ZXN0XCI7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvYWN0aXZpdHkuYm9cIjtcbmltcG9ydCB7UGxhbm5pbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmcuYm9cIjtcbmltcG9ydCB7UGxhbm5pbmdGaWx0ZXJPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ib1wiO1xuaW1wb3J0IHtQbGFuT3JkZXJ9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ1RyYW5zcG9ydFdlZWt9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctdHJhbnNwb3J0LXdlZWsuYm9cIjtcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtdHJhbnNwb3J0LW9yZGVycy1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge09yZGVyTGluZXNUb1BsYW5SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmVzLXRvLXBsYW4tcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtQbGFuT3JkZXJMaW5lfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXItbGluZS5ib1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbk1hcmdpbkluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbWFyZ2luLWluZm8uYm9cIjtcbmltcG9ydCB7RGF0YVNlcnZpY2VSZXNwb25zZURhdGF9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2RhdGEtc2VydmljZS1yZXNwb25zZS1kYXRhJztcbmltcG9ydCB7T3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmVzLXBsYW5uZWQtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLXNvdXJjZS10cmFuc2FjdGlvbi1saW5lLXJlcXVlc3RcIjtcbmltcG9ydCB7UHJpbnREZWxpdmVyeU5vdGVzUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1kZWxpdmVyeS1ub3Rlcy1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlR29vZFJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLXNvdXJjZS1nb29kLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEFSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItd2l0aC1TTEEtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZU9yZGVyTnJBbmRBcnRpY2xlRGVzY3JpcHRpb25SZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItd2l0aC1zb3VyY2Utb3JkZXJuci1hbmQtYXJ0aWNsZS1kZXNjcmlwdGlvbi1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyUmVwb3J0TWVzc2FnZVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXItcmVwb3J0LW1lc3NhZ2UtcmVxdWVzdFwiO1xuaW1wb3J0IHtTdXBwbGllckFydGljbGVTdG9ja0ZvcmVjYXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3N1cHBsaWVyLWFydGljbGUtc3RvY2stZm9yZWNhc3RcIjtcbmltcG9ydCB7Q2hhbmdlTGluZURpcmVjdFNlbGxSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1saW5lLWRpcmVjdC1zZWxsLXJlcXVlc3RcIjtcbmltcG9ydCB7U2VydmljZVdpemFyZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zZXJ2aWNlLXdpemFyZFwiO1xuaW1wb3J0IHtTZXJ2aWNlVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zZXJ2aWNlLXR5cGVcIjtcbmltcG9ydCB7QWRkSGVhZGVySW1hZ2VSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FkZC1oZWFkZXItaW1hZ2UtcmVxdWVzdFwiO1xuaW1wb3J0IHtEZWxldGVIZWFkZXJJbWFnZVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsZXRlLWhlYWRlci1pbWFnZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyQ2F1c2VDb2RlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlcmNhdXNlLWNvZGUtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlclByaW9yaXR5UmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci1wcmlvcml0eS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyRW50cnlUeXBlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci1lbnRyeS10eXBlLXJlcXVlc3RcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lU2VhcmNoSW5kZXh9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1zZWFyY2gtaW5kZXguYm9cIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci13aXphcmQtZGF0YS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyU2VydmljZVR5cGVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXNlcnZpY2UtdHlwZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBPcmRlclJlc2VydmF0aW9uU2FsZXNPcmRlckxpbmVzUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLXJlc2VydmF0aW9uLXNhbGVzLW9yZGVyLWxpbmVzLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7UHVyY2hhc2VSZXNlcnZhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1yZXNlcnZhdGlvbi5ib1wiO1xuaW1wb3J0IHtcbiAgUHJvY2Vzc09yZGVyUmVzZXJ2YXRpb25SZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJvY2Vzcy1vcmRlci1yZXNlcnZhdGlvbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge0Rpc3RyaWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Rpc3RyaWN0LmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ib1wiO1xuaW1wb3J0IHtTa2lsbH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9za2lsbC5ib1wiO1xuaW1wb3J0IHtVc2VyR3JvdXB9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdXNlci1ncm91cC5ib1wiO1xuaW1wb3J0IHtSZXNvdXJjZVBsYW5uaW5nSW5wdXRQYXJhbXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb3VyY2UtcGxhbm5pbmctaW5wdXQtcGFyYW1zLmJvXCI7XG5pbXBvcnQge1xuICBEb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0SW5wdXRQYXJhbXNcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kby1kZWxpdmVyeS1wbGFubmluZy1yZXF1ZXN0LWlucHV0LXBhcmFtcy5ib1wiO1xuaW1wb3J0IHtQbGFuVGltZXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi10aW1lcy5ib1wiO1xuaW1wb3J0IHtJbnRlcm5hbERlZmF1bHR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLWRlZmF1bHQuZW51bVwiO1xuaW1wb3J0IHtQbGFubmluZ1NlbmRPcmRlcnN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctc2VuZC1vcmRlcnMuYm9cIjtcbmltcG9ydCB7RG9tYWluTmFtZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vZG9tYWluLW5hbWUuZW51bVwiO1xuaW1wb3J0IHtCdXNpbmVzc09iamVjdH0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvYnVzaW5lc3Mtb2JqZWN0JztcbmltcG9ydCB7QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2JhdGNoLXRyYW5zYWN0aW9uLXNlbmRpbmctcmVxdWVzdFwiO1xuaW1wb3J0IHtCYXRjaEpvYlByb2dyZXNzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYmF0Y2gtam9iLXByb2dyZXNzLmJvJztcbmltcG9ydCB7U0xBUHJvZHVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9TTEEtcHJvZHVjdFwiO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25MaW5lQ29weVJlcXVlc3QgfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1jb3B5LXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtSZXBvcnRpbmdQZGZCYXNlUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctcGRmLWJhc2UtcmVzcG9uc2UuYm8nO1xuaW1wb3J0IHtQdXJjaGFzZUhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1oaXN0b3J5JztcbmltcG9ydCB7U3VwcGxpZXJQcm9kdWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3N1cHBsaWVyLXByb2R1Y3QuYm9cIjtcbmltcG9ydCB7R2V0RG9jc1RvU2lnbkZvclRyYW5zUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtZG9jcy10by1zaWduLWZvci10cmFucy1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1JlcG9ydExpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxpc3Qtb2JqZWN0XCI7XG5pbXBvcnQge1BsYW5uZWRSZXNvdXJjZUZvclRyYW5zYWN0aW9uTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uZWQtcmVzb3VyY2UtZm9yLXRyYW5zYWN0aW9uLWxpbmUuYm8nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSB7XG5cbiAgcHVibGljIGNvbm5lY3Rpb25Jbml0aWFsaXplZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfYWRhcHRlclNlcnZpY2U6IFRyYW5zYWN0aW9uQ29ubmVjdG9yQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdFNpbmdsZUNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5jb25uZWN0KCk7XG4gICAgdGhpcy5jb25uZWN0aW9uSW5pdGlhbGl6ZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2dPdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UubG9nT3V0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RG9jdW1lbnRDb250ZW50KGRvY0lkOiBudW1iZXIsIHRodW1ibmFpbDogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9jdW1lbnRDb250ZW50LCBbZG9jSWQsIHRodW1ibmFpbF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVFeHRlbmRlZChhcnRpY2xlTnI6IHN0cmluZyk6IFByb21pc2U8QXJ0aWNsZUV4dGVuZGVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQsIFthcnRpY2xlTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9yZVNpZ25lZERvYyhkb2N1bWVudElkOiBudW1iZXIsIGRvY3VtZW50Qm9keTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zdG9yZVNpZ25lZERvYywgW2RvY3VtZW50SWQsIGRvY3VtZW50Qm9keV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxBcnRpY2xlRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEFydGljbGVGdWxsT2JqZWN0PihBcnRpY2xlRnVsbE9iamVjdCwgZ29vZElkLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVGdWxsT2JqZWN0LCBbZ29vZElkXSk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RJZEZyb21BcnRpY2xlTnIsIFthcnRpY2xlTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTaW5nbGVJbWFnZShub2RlSWQ6IG51bWJlciB8IHN0cmluZywgcHVibGljYXRpb246IG51bWJlciwgaW5jbHVkZU1pbWV0eXBlOiBib29sZWFuLCB0aHVtYjogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTaW5nbGVJbWFnZSwgW25vZGVJZCwgcHVibGljYXRpb24sIGluY2x1ZGVNaW1ldHlwZSwgdGh1bWJdKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJpZXMoKTogUHJvbWlzZTxDb3VudHJ5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvdW50cnk+KENvdW50cnksICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyaWVzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldExhbmd1YWdlcygpOiBQcm9taXNlPExhbmd1YWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPExhbmd1YWdlPihMYW5ndWFnZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMYW5ndWFnZXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tZXJHcm91cHMoKTogUHJvbWlzZTxDdXN0b21lckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEN1c3RvbWVyR3JvdXA+KEN1c3RvbWVyR3JvdXAsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VzdG9tZXJHcm91cHMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGl0bGVzKCk6IFByb21pc2U8VGl0bGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VGl0bGU+KFRpdGxlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRpdGxlcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXb3JrRmxvd1N0YXR1c2VzKHRyYW5zYWN0aW9uS2luZDogVHJhbnNhY3Rpb25LaW5kKTogUHJvbWlzZTxXb3JrRmxvd1N0YXR1c1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxXb3JrRmxvd1N0YXR1cz4oV29ya0Zsb3dTdGF0dXMsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V29ya0Zsb3dTdGF0dXNlcywgW3RyYW5zYWN0aW9uS2luZF0pO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q291bnRyeShjb3VudHJ5Q29kZTogc3RyaW5nKTogUHJvbWlzZTxDb3VudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb3VudHJ5LCBbY291bnRyeUNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcml2YWN5U2V0dGluZ3MoKTogUHJvbWlzZTxQcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQcml2YWN5U2V0dGluZz4oUHJpdmFjeVNldHRpbmcsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpdmFjeVNldHRpbmdzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFya2V0aW5nQ29kZXMoKTogUHJvbWlzZTxNYXJrZXRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8TWFya2V0aW5nPihNYXJrZXRpbmcsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TWFya2V0aW5nQ29kZXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlVHJhbnNhY3Rpb24oa2luZDogVHJhbnNhY3Rpb25LaW5kLCBicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlVHJhbnNhY3Rpb24sIFtraW5kLCBicmFuY2hOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNhbGVzT3JkZXIocmVxdWVzdDogQ3JlYXRlU2FsZXNPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTYWxlc09yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyKHJlcXVlc3Q6IENyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVB1cmNoYXNlT3JkZXIocmVxdWVzdDogQ3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVQdXJjaGFzZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcihyZXF1ZXN0OiBDcmVhdGVTZXJ2aWNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmUocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNvcHlUcmFuc2FjdGlvbkxpbmUocmVxdWVzdDogVHJhbnNhY3Rpb25MaW5lQ29weVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVDb3B5VHJhbnNhY3Rpb25MaW5lLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VPcmRlck5yQW5kQXJ0aWNsZURlc2NyaXB0aW9uKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VPcmRlck5yQW5kQXJ0aWNsZURlc2NyaXB0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VPcmRlck5yQW5kQXJ0aWNsZURlc2NyaXB0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEEocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNhbGVzUXVvdGF0aW9uKHJlcXVlc3Q6IENyZWF0ZVNhbGVzUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNhbGVzUXVvdGF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbnZlcnRTYWxlc1F1b3RhdGlvblRvU2FsZXNPcmRlcihyZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29udmVydFNhbGVzUXVvdGF0aW9uVG9TYWxlc09yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTGluZUluZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZSwgW2FydGljbGVMaW5lVXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQoa2luZDogVHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5vOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkJ5TnJBbmRLaW5kLCBba2luZCwgdHJhbnNhY3Rpb25Ob10pO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uSGVhZGVyQnlOckFuZEtpbmQoa2luZDogVHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5vOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkhlYWRlckJ5TnJBbmRLaW5kLCBba2luZCwgdHJhbnNhY3Rpb25Ob10pO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQnlJZCh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkJ5SWQsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2ViU2Vzc2lvblNhbGVzT3JkZXIodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXZWJTZXNzaW9uU2FsZXNPcmRlciwgW3RyYW5zYWN0aW9uVXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVRyYW5zYWN0aW9uQnlVdUlkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZVRyYW5zYWN0aW9uQnlVdUlkLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbFRyYW5zYWN0aW9uQnlVdUlkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhbmNlbFRyYW5zYWN0aW9uQnlVdUlkLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGxvY2tUcmFuc2FjdGlvbkJ5SWQodHJhbnNJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uTG9ja1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja1RyYW5zYWN0aW9uQnlJZCwgW3RyYW5zSWQsIHZlcnNpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21taXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jb21taXQpO1xuICB9XG5cbiAgcHVibGljIHJvbGxiYWNrKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uucm9sbGJhY2spO1xuICB9XG5cbiAgcHVibGljIHJvbGxiYWNrQmVhY29uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yb2xsYmFja0JlYWNvbigpO1xuICB9XG5cbiAgcHVibGljIHNhdmVUcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbiwgW3V1aWQsIHNob3dMb2FkZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaD86IHN0cmluZywgZ3JvdXA/OiBudW1iZXIsIG92ZXJyaWRlT2xkOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPENhc2hSZWdpc3RlcltdPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYnJhbmNoOiBicmFuY2gsXG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q2FzaFJlZ2lzdGVyPihDYXNoUmVnaXN0ZXIsIChicmFuY2gsIGdyb3VwKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hSZWdpc3RlcnMsIFticmFuY2gsIGdyb3VwXSlcbiAgICB9LCBvdmVycmlkZU9sZCkuZ2V0VmFsdWUoYnJhbmNoLCBncm91cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaERyYXdlcnMoY2FzaERyYXdlcnNSZXF1ZXN0OiBDYXNoRHJhd2Vyc1JlcXVlc3QpOiBQcm9taXNlPENhc2hEcmF3ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENhc2hEcmF3ZXI+KENhc2hEcmF3ZXIsIChjYXNoRHJhd2Vyc1JlcXVlc3QpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaERyYXdlcnMsIFtjYXNoRHJhd2Vyc1JlcXVlc3RdKVxuICAgIH0pLmdldFZhbHVlKGNhc2hEcmF3ZXJzUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpY2VMaXN0cyhjb2RlPzogc3RyaW5nKTogUHJvbWlzZTxQcmljZUxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaWNlTGlzdD4oUHJpY2VMaXN0LCAoY29kZT86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmljZUxpc3RzLCBbY29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZhdExpc3Qob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VmF0PihWYXQsIChvbmx5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRWYXRMaXN0LCBbb25seVZhbGlkXSk7XG4gICAgfSkuZ2V0VmFsdWUob25seVZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc1ZhdENvZGVzKHR5cGU6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VmF0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxWYXQ+KFZhdCwgKHR5cGU6IHN0cmluZywgZGF0ZTogRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc1ZhdENvZGVzLCBbdHlwZSwgZGF0ZV0pO1xuICAgIH0pLmdldFZhbHVlKHR5cGUsIGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2VhcmNoVHJhbnNhY3Rpb25zLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlVmFsdWUoc2VxdWVuY2VOYW1lOiBTZXF1ZW5jZU5hbWUpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VxdWVuY2VWYWx1ZSwgW3NlcXVlbmNlTmFtZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5TWV0aG9kcygpOiBQcm9taXNlPERlbGl2ZXJ5TWV0aG9kW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5TWV0aG9kPihEZWxpdmVyeU1ldGhvZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU1ldGhvZHMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlPcHRpb25zKCk6IFByb21pc2U8RGVsaXZlcnlPcHRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8RGVsaXZlcnlPcHRpb24+KERlbGl2ZXJ5T3B0aW9uLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5T3B0aW9ucyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCByZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24sIFt1dWlkLCByZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZTogc3RyaW5nLCBob3VzZU5vOiBzdHJpbmcpOiBQcm9taXNlPEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc3RhbENvZGVSZXRyaWV2YWwsIFtwb3N0Y2FsQ29kZSwgaG91c2VOb10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFdlYlNlc3Npb25UcmFuc2FjdGlvbkxpbmUodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcsIGFydGljbGVOdW1iZXI6IHN0cmluZywgcXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFdlYlNlc3Npb25UcmFuc2FjdGlvbkxpbmUsIFt0cmFuc2FjdGlvblV1aWQsIGFydGljbGVOdW1iZXIsIHF1YW50aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgYXJ0aWNsZU5vOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIsIGFib3ZlTGluZU5yOiBudW1iZXIsIGJlbG93TGluZU5yOiBudW1iZXIsIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZSwgW3V1aWQsIGFydGljbGVObywgcXVhbnRpdHksIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOciwgc2hvd0xvYWRlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHNob3dPbkRvY3VtZW50czogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBhcnRpY2xlQm91bmQ6IGJvb2xlYW4sIHJlZkFydGljbGVMaW5lTnI6IG51bWJlciwgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24sIFt1dWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVUZXh0TGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHNob3dPbkRvY3VtZW50czogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVUZXh0TGluZSwgW3V1aWQsIGxpbmVVdWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMaW5lU2VxdWVuY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhYm92ZUxpbmVOcj86IG51bWJlciwgYmVsb3dMaW5lTnI/OiBudW1iZXIpOlxuICAgIFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUxpbmVTZXF1ZW5jZSwgW3V1aWQsIGxpbmVVdWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZSwgW2xpbmVVdWlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSwgW3V1aWQsIGxpbmVVdWlkXSk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG5ld1F1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSwgW3V1aWQsIGxpbmVVdWlkLCBuZXdRdWFudGl0eV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5U2VsZWN0ZWQodXVpZDogc3RyaW5nLCBsaW5lczogQ2hhbmdlTGluZVF1YW50aXR5U2VsZWN0ZWRMaW5lUmVxdWVzdFtdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHlTZWxlY3RlZCwgW3V1aWQsIGxpbmVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHlTZWxlY3ROb25lKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5U2VsZWN0Tm9uZSwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24ocGVuZGluZ0xpbmVWYWx1ZXM6IFJlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24sIFtwZW5kaW5nTGluZVZhbHVlc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXM6IFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uLCBbcGVuZGluZ0hlYWRlclZhbHVlc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvbW1pc3Npb25Db2RlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLkNvbW1pc3Npb25Db2RlLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21taXNzaW9uQ29kZXMsIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuQ29tbWlzc2lvbkNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5Jbk91dENvbGxlY3Rpb24sIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbiwgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5Jbk91dENvbGxlY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNMQVR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLlNMQVR5cGVzLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTTEFUeXBlcywgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5TTEFUeXBlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0WWVzTm9Db2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLlllc05vLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRZZXNOb0NvbGxlY3Rpb24sIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuWWVzTm8pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaWNlS2luZENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuUHJpY2VLaW5kLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmljZUtpbmRDb2xsZWN0aW9uLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLlByaWNlS2luZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpb3JpdHlDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLlByaW9yaXR5LCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmlvcml0eUNvbGxlY3Rpb24sIFtsYW5ndWFnZUNvZGVdKTtcbiAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5Qcmlvcml0eSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RW50cnlUeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5TZXJ2aWNlQ29tbXVuaWNhdGlvblR5cGUsIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEVudHJ5VHlwZXMsIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuU2VydmljZUNvbW11bmljYXRpb25UeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREb21haW5UeXBlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLlRyYW5zVHlwZSwgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9tYWluVHlwZXMsIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuVHJhbnNUeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXVzZUNvZGVzKCk6IFByb21pc2U8Q2F1c2VDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENhdXNlQ29kZT4oQ2F1c2VDb2RlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhdXNlQ29kZXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMsIFtnb29kSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1dWlkOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldFJlbGF0aW9uQnlVc2VyLCBbdXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dFR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRleHRUeXBlcywgW2xhbmd1YWdlQ29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFN0YW5kYXJkVGV4dFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdGFuZGFyZFRleHRzLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2FsZXNQZXJzb25zKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxTYWxlc1BlcnNvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8U2FsZXNQZXJzb24+KFNhbGVzUGVyc29uLCAoZGF0ZT86IERhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2FsZXNQZXJzb25zLCBbZGF0ZV0pO1xuICAgIH0pLmdldFZhbHVlKGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJldGFpbFN0YWRpdW1zKCk6IFByb21pc2U8UmV0YWlsU3RhZGl1bVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxSZXRhaWxTdGFkaXVtPihSZXRhaWxTdGFkaXVtLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJldGFpbFN0YWRpdW1zKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRhZ3MoY2F0ZWdvcnk6IG51bWJlcik6IFByb21pc2U8VGFnW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxUYWc+KFRhZywgKGNhdGVnb3J5OiBudW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGFncywgW2NhdGVnb3J5XSk7XG4gICAgfSkuZ2V0VmFsdWUoY2F0ZWdvcnkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9uSG9sZENvZGVzKCk6IFByb21pc2U8T25Ib2xkQ29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxPbkhvbGRDb2RlPihPbkhvbGRDb2RlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9uSG9sZENvZGVzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdhcmVob3VzZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPFdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8V2FyZWhvdXNlPihXYXJlaG91c2UsIChicmFuY2hOcj86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXYXJlaG91c2VzLCBbYnJhbmNoTnJdKTtcbiAgICB9KS5nZXRWYWx1ZShicmFuY2hOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2FyZWhvdXNlU3RvY2tJbmZvQnlHb29kQW5kQnJhbmNoKGdvb2RJZDogbnVtYmVyLCBicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxXYXJlaG91c2VTdG9ja0luZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2FyZWhvdXNlU3RvY2tJbmZvQnlHb29kQW5kQnJhbmNoLCBbZ29vZElkLCBicmFuY2hOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljU3RhdGVWYWx1ZXMoKTogUHJvbWlzZTxDb2RlRGVzY3JpcHRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TWF4Q29uZmlybWVkRGVsaXZlcnlEYXRlRm9yUHVyY2hhc2VPcmRlcih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPERhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE1heENvbmZpcm1lZERlbGl2ZXJ5RGF0ZUZvclB1cmNoYXNlT3JkZXIsIFt0cmFuc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSwgW3V1aWQsIGxpbmVVdWlkLCBjb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGlyZWN0U2VsbCh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3RGlyZWN0U2VsbDogYm9vbGVhbixcbiAgICBuZXdTdXBwbGllcklkOiBudW1iZXIsIG5ld1B1cmNoYXNlT3JkZXJOdW1iZXI6IHN0cmluZywgbmV3U3RvY2tGb3JlY2FzdERlbGl2ZXJ5RGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURpcmVjdFNlbGwsIFt0cmFuc2FjdGlvblV1aWQsIGxpbmVVdWlkLCBuZXdEaXJlY3RTZWxsLCBuZXdTdXBwbGllcklkLFxuICAgICAgbmV3UHVyY2hhc2VPcmRlck51bWJlciwgbmV3U3RvY2tGb3JlY2FzdERlbGl2ZXJ5RGF0ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyLCBbdXVpZCwgbGluZVV1aWQsIGlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgd2FyZWhvdXNlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2UsIFt1dWlkLCBsaW5lVXVpZCwgd2FyZWhvdXNlTnVtYmVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lSW50ZXJCcmFuY2hTb3VyY2VXYXJlaG91c2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpbnRlckJyYW5jaFNvdXJjZVdhcmVob3VzZU5yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVJbnRlckJyYW5jaFNvdXJjZVdhcmVob3VzZSwgW3V1aWQsIGxpbmVVdWlkLCBpbnRlckJyYW5jaFNvdXJjZVdhcmVob3VzZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2UsIFt1dWlkLCBsaW5lVXVpZCwgcHJpY2VdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZVByaWNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2U6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlUHJpY2UsIFt1dWlkLCBsaW5lVXVpZCwgcHJpY2VdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQdXJjaGFzZURlc2NyaXB0aW9uKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlRGVzY3JpcHRpb24sIFt1dWlkLCBsaW5lVXVpZCwgZGVzY3JpcHRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZUxpc3Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCwgW3V1aWQsIGxpbmVVdWlkLCBwcmljZUxpc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0LCBbdXVpZCwgbGluZVV1aWQsIGlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lTGluZURpc2NvdW50KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBkaXNjb3VudDogbnVtYmVyLCByZWFzb246IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lTGluZURpc2NvdW50LCBbdXVpZCwgbGluZVV1aWQsIHR5cGUsIGRpc2NvdW50LCByZWFzb24sIGNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEcm9wU2hpcG1lbnQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBuZXdEcm9wU2hpcG1lbnQ6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEcm9wU2hpcG1lbnQsIFt1dWlkLCBsaW5lVXVpZCwgbmV3RHJvcFNoaXBtZW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kLCBbdXVpZCwgbGluZVV1aWQsIG1ldGhvZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeURhdGUsIFt1dWlkLCBsaW5lVXVpZCwgZGF0ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUFzc2VtYmx5VGltZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUFzc2VtYmx5VGltZSwgW3V1aWQsIGxpbmVVdWlkLCB0aW1lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRWRpdFRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVFZGl0VGltZSwgW3V1aWQsIGxpbmVVdWlkLCB0aW1lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXJBcnRpY2xlTnVtYmVyKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgYXJ0aWNsZU51bWJlcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXJBcnRpY2xlTnVtYmVyLCBbdXVpZCwgbGluZVV1aWQsIGFydGljbGVOdW1iZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVSZWZlcmVuY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSwgW3V1aWQsIGxpbmVVdWlkLCByZWZlcmVuY2VdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24odXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBnb29kRGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUdvb2REZXNjcmlwdGlvbiwgW3V1aWQsIGxpbmVVdWlkLCBnb29kRGVzY3JpcHRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbGxlY3Rpb25Db2RlLCBbdXVpZCwgbGluZVV1aWQsIGNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUodXVpZDogc3RyaW5nLCBkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlLCBbdXVpZCwgZGVmaW5pdGl2ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3MsIFt1dWlkLCBuZXdOYXdOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckludm9pY2VBZGRyZXNzKHV1aWQ6IHN0cmluZywgbmV3TmF3TnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckludm9pY2VBZGRyZXNzLCBbdXVpZCwgbmV3TmF3TnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZSwgW3V1aWQsIGRhdGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUodXVpZDogc3RyaW5nLCBkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGVEZWZpbml0aXZlLCBbdXVpZCwgZGVmaW5pdGl2ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVtYXJrKHV1aWQ6IHN0cmluZywgcmVtYXJrOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyaywgW3V1aWQsIHJlbWFya10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSwgW3V1aWQsIHJlZmVyZW5jZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVsYXRpb25SZWZlcmVuY2UodXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVsYXRpb25SZWZlcmVuY2UsIFt1dWlkLCByZWZlcmVuY2VdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZXBvc2l0UGVyY2VudGFnZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVwb3NpdFBlcmNlbnRhZ2UsIFt1dWlkLCBhbW91bnRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZXBvc2l0QW1vdW50KHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZXBvc2l0QW1vdW50LCBbdXVpZCwgYW1vdW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlLCBvcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJlZmVycmVkRGVsaXZlcnlEYXRlLCBbdXVpZCwgZGF0ZSwgb3B0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeVRpbWUodXVpZDogc3RyaW5nLCB0aW1lOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeVRpbWUsIFt1dWlkLCB0aW1lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU1ldGhvZCh1dWlkOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU1ldGhvZCwgW3V1aWQsIG1ldGhvZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zKHV1aWQ6IHN0cmluZywgb3B0aW9uczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucywgW3V1aWQsIG9wdGlvbnNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSh1dWlkOiBzdHJpbmcsIGFsbG93UGFydGlhbDogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGFydGlhbERlbGl2ZXJ5LCBbdXVpZCwgYWxsb3dQYXJ0aWFsXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25CcmFuY2godXVpZDogc3RyaW5nLCBicmFuY2g6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoLCBbdXVpZCwgYnJhbmNoXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25PbkhvbGRDb2Rlcyh1dWlkOiBzdHJpbmcsIGNvZGVzOiBzdHJpbmdbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXMsIFt1dWlkLCBjb2Rlc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGl2aWRlRXZlbmx5KHV1aWQ6IHN0cmluZywgZGl2aWRlRXZlbmx5OiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXZpZGVFdmVubHksIFt1dWlkLCBkaXZpZGVFdmVubHldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFtb3VudFRvU2V0dGxlKHV1aWQ6IHN0cmluZywgYW1vdW50VG9TZXR0bGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQW1vdW50VG9TZXR0bGUsIFt1dWlkLCBhbW91bnRUb1NldHRsZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJpY2VLaW5kKHV1aWQ6IHN0cmluZywgcHJpY2VLaW5kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCwgW3V1aWQsIHByaWNlS2luZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IodXVpZDogc3RyaW5nLCByZWxhdGlvbjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BZG1Db29yZGluYXRvciwgW3V1aWQsIHJlbGF0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25DdXJyZW5jeSh1dWlkOiBzdHJpbmcsIGN1cnJlbmN5Q29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25DdXJyZW5jeSwgW3V1aWQsIGN1cnJlbmN5Q29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uVHlwZSh1dWlkOiBzdHJpbmcsIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25UeXBlLCBbdXVpZCwgdHJhbnNhY3Rpb25UeXBlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25Qcm9qZWN0Q29kZSh1dWlkOiBzdHJpbmcsIHByb2plY3RDb2RlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByb2plY3RDb2RlLCBbdXVpZCwgcHJvamVjdENvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBheW1lbnRDb25kaXRpb24odXVpZDogc3RyaW5nLCBjb25kaXRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGF5bWVudENvbmRpdGlvbiwgW3V1aWQsIGNvbmRpdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uSGFuZGxlZEJ5KHV1aWQ6IHN0cmluZywgaGFuZGxlZEJ5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkhhbmRsZWRCeSwgW3V1aWQsIGhhbmRsZWRCeV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nKHV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25NYXJrZXRpbmcsIFt1dWlkLCBjb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCh1dWlkOiBzdHJpbmcsIHR5cGU6IERpc2NvdW50VHlwZSwgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpc2NvdW50LCBbdXVpZCwgdHlwZSwgYW1vdW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZShyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2UsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZShyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGUsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bShyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJSZXRhaWxTdGFkaXVtUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclJldGFpbFN0YWRpdW0sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyQXV0b1JlY2FsY3VsYXRlRGVwb3NpdCh1dWlkOiBzdHJpbmcsIG5ld0F1dG9SZWNhbGN1bGF0ZURlcG9zaXQpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJBdXRvUmVjYWxjdWxhdGVEZXBvc2l0LCBbdXVpZCwgbmV3QXV0b1JlY2FsY3VsYXRlRGVwb3NpdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclVzZURlcG9zaXRSdWxlKHV1aWQ6IHN0cmluZywgbmV3VXNlRGVwb3NpdFJ1bGU6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJVc2VEZXBvc2l0UnVsZSwgW3V1aWQsIG5ld1VzZURlcG9zaXRSdWxlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2UocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlclJlcG9ydE1lc3NhZ2UsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlckNhdXNlQ29kZShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyQ2F1c2VDb2RlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJDYXVzZUNvZGUsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlclNlcnZpY2VUeXBlKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJTZXJ2aWNlVHlwZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyU2VydmljZVR5cGUsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlcldpemFyZERhdGEocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlcldpemFyZERhdGFSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlcldpemFyZERhdGEsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlclByaW9yaXR5KHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJQcmlvcml0eVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyUHJpb3JpdHksIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlU2VydmljZUhlYWRlckVudHJ5VHlwZShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyRW50cnlUeXBlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJFbnRyeVR5cGUsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSGVhZGVySW1hZ2UocmVxdWVzdDogQWRkSGVhZGVySW1hZ2VSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkSGVhZGVySW1hZ2UsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlSGVhZGVySW1hZ2UocmVxdWVzdDogRGVsZXRlSGVhZGVySW1hZ2VSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlSGVhZGVySW1hZ2UsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBheW1lbnRNZXRob2RDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZVBheW1lbnRMaW5rUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUsIFt1dWlkLCBhbW91bnQsIHBheW1lbnRNZXRob2RDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudExpbmtTdGF0dXMocGF5bWVudExpbmtVVUlEOiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRMaW5rU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50TGlua1N0YXR1cywgW3BheW1lbnRMaW5rVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUmVjZWlwdEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNSZWNlaXB0SGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNSZWNlaXB0SGlzdG9yeSwgW3RyYW5zSWQsIGxpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXIocmVxdWVzdDogUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdDogR2V0UHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxQdXJjaGFzZVBvcnRhbExpbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzKHB1cmNoYXNlUG9ydGFsTGluZTogUHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzLCBbcHVyY2hhc2VQb3J0YWxMaW5lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbihwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uOiBHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uLCBbcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpbmtUcmFuc2FjdGlvblRvT3JkZXJDb25maXJtYXRpb24oYW5hbHlzaXNJZDogbnVtYmVyLCBsaW5lczogT3JkZXJDb25maXJtYXRpb25UcmFuc2FjdGlvbkxpbmtbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubGlua1RyYW5zYWN0aW9uVG9PcmRlckNvbmZpcm1hdGlvbiwgW2FuYWx5c2lzSWQsIGxpbmVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrUHVyY2hhc2VQb3J0YWxMaW5lcywgW3RyYW5zSWRQdXJjaGFzZSwgbGluZUlkXSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQ6IG51bWJlciwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVyczogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzLCBbdHJhbnNJZCwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVyc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuYWx5c2lzUmVzdWx0c0J5QW5hbHlzaXNJZChhbmFseXNpc0lkOiBudW1iZXIpOiBQcm9taXNlPE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QW5hbHlzaXNSZXN1bHRzQnlBbmFseXNpc0lkLCBbYW5hbHlzaXNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuYWx5emVkT3JkZXJDb25maXJtYXRpb25zKCk6IFByb21pc2U8QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzKGRhdGE6IFN0b2NrU3RpY2tlcnNQcmludExheW91dHMpOiBQcm9taXNlPFN0b2NrU3RpY2tlcnNQcmludExheW91dHNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzLCBbZGF0YV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxBdmFpbGFibGVTdG9ja1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIsIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdmFpbGFibGVTdG9ja0ZvclN1cHBsaWVyKGdvb2RJZDogbnVtYmVyLCBzdXBwbGllclJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJBcnRpY2xlU3RvY2tGb3JlY2FzdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXZhaWxhYmxlU3RvY2tGb3JTdXBwbGllciwgW2dvb2RJZCwgc3VwcGxpZXJSZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIocmVxdWVzdDogQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3Q6IEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNBbGxvY2F0aW9uSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc0FsbG9jYXRpb25IaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc0FsbG9jYXRpb25IaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNUb0JlUGlja2VkSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1RvQmVQaWNrZWRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1RvQmVQaWNrZWRIaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNQaWNrZWRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUGlja2VkSGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNQaWNrZWRIaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TGluZVB1cmNoYXNlSW5mbyh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxQdXJjaGFzZUhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldExpbmVQdXJjaGFzZUluZm8sIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVHb29kc1BpY2tlZChkZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdDogRGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVHb29kc1BpY2tlZCwgW2RlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlR29vZHNUb0JlUGlja2VkKGRlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdDogRGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlR29vZHNUb0JlUGlja2VkLCBbZGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zZXRHb29kc1RvQmVQaWNrZWRGb3JTYWxlc09yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldEdvb2RzUGlja2VkRm9yT3JkZXIocmVxdWVzdDogR29vZHNQaWNrZWRSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNQaWNrZWRGb3JPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoT25EZWxpdmVyeURhdGEodXVpZDogc3RyaW5nKTogUHJvbWlzZTxDYXNoT25EZWxpdmVyeURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hPbkRlbGl2ZXJ5RGF0YSwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudChyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8bnVtYmVyPihOdW1iZXIsIChyZWxhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gICAgfSkuZ2V0VmFsdWUocmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JPcmRlckNvbmZpcm1hdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxzdHJpbmc+KFN0cmluZywgKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24sIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgICB9KS5nZXRWYWx1ZSh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50T3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUHJpbnRPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludE9yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RhcnRPcmRlckNvbmZpcm1hdGlvbkJhdGNoKHJlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RhcnRPcmRlckNvbmZpcm1hdGlvbkJhdGNoLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0UHVyY2hhc2VPcmRlckZvcm1CYXRjaChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0YXJ0UHVyY2hhc2VPcmRlckZvcm1CYXRjaCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydERlbGl2ZXJ5Tm90ZXNCYXRjaChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0YXJ0RGVsaXZlcnlOb3Rlc0JhdGNoLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0SW52b2ljZUJhdGNoKHJlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RhcnRJbnZvaWNlQmF0Y2gsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QmF0Y2hKb2JQcm9ncmVzc2VzRm9yVGhlVXNlcigpOiBQcm9taXNlPEJhdGNoSm9iUHJvZ3Jlc3NbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QmF0Y2hKb2JQcm9ncmVzc2VzRm9yVGhlVXNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlQmF0Y2hKb2IoYmF0Y2hKb2JQcm9ncmVzc0lkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUJhdGNoSm9iLCBbYmF0Y2hKb2JQcm9ncmVzc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQZGZPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmV2aWV3T3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxSZXBvcnRpbmdQZGZCYXNlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByZXZpZXdPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFB1cmNoYXNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IEVtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFBkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZQdXJjaGFzZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlV2ViU2VydmljZU9yZGVyKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVXZWJTZXJ2aWNlT3JkZXIsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuUHVyY2hhc2VPcmRlckJlU2VuZEJ5V2Vic2VydmljZSh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhblB1cmNoYXNlT3JkZXJCZVNlbmRCeVdlYnNlcnZpY2UsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNQcmludElzRGVmYXVsdFNlbmRNZXRob2RGb3JQdXJjaGFzZU9yZGVyKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuaXNQcmludElzRGVmYXVsdFNlbmRNZXRob2RGb3JQdXJjaGFzZU9yZGVyLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnNGb3JTYWxlc09yZGVyKHJlcXVlc3Q6IFByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VBZHZpY2VMaW5lcyhmaWx0ZXJzOiBQdXJjaGFzZUFkdmljZUZpbHRlcnMsIGdvb2RJZD86IG51bWJlciwgc2hvd0xvYWRlcj86IGJvb2xlYW4pOiBQcm9taXNlPFB1cmNoYXNlQWR2aWNlTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZUFkdmljZUxpbmVzLCBbZmlsdGVycywgZ29vZElkLCBzaG93TG9hZGVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnMocHVyY2hhc2VBZHZpY2VMaW5lczogUHVyY2hhc2VBZHZpY2VMaW5lW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzLCBbcHVyY2hhc2VBZHZpY2VMaW5lc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsRGVsaXZlcnlOb3RlKGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxEZWxpdmVyeU5vdGUsIFtlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlKGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZSwgW2VtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkRlbGl2ZXJ5Tm90ZSwgW3BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNEZWxpdmVyeU5vdGUsIFtwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludERlbGl2ZXJ5Tm90ZShwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50RGVsaXZlcnlOb3RlLCBbcHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnREZWxpdmVyeU5vdGVzKHByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludERlbGl2ZXJ5Tm90ZXMsIFtwcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogUHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGUsIFtwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZCwgW3JlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZUVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxJbnZvaWNlKGVtYWlsSW52b2ljZVJlcXVlc3Q6IEVtYWlsSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEludm9pY2UsIFtlbWFpbEludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY0ludm9pY2UoZW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBFbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNJbnZvaWNlLCBbZW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdDogUGRmSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkludm9pY2UsIFtwZGZJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljSW52b2ljZShwZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBQZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY0ludm9pY2UsIFtwZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRJbnZvaWNlKHByaW50SW52b2ljZVJlcXVlc3Q6IFByaW50SW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEludm9pY2UsIFtwcmludEludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY0ludm9pY2UocHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBQcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNJbnZvaWNlLCBbcHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmUG9zUmVjZWlwdChwZGZQb3NSZWNlaXB0UmVxdWVzdDogUGRmUG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPFBkZlBvc1JlY2VpcHRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUG9zUmVjZWlwdCwgW3BkZlBvc1JlY2VpcHRSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRQb3NSZWNlaXB0KHByaW50UG9zUmVjZWlwdFJlcXVlc3Q6IFByaW50UG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UG9zUmVjZWlwdCwgW3ByaW50UG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljUG9zUmVjZWlwdChwcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3Q6IFByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHQsIFtwcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbFBvc1JlY2VpcHQoZW1haWxQb3NSZWNlaXB0UmVxdWVzdDogRW1haWxQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxQb3NSZWNlaXB0LCBbZW1haWxQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0KGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdDogRW1haWxIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljUG9zUmVjZWlwdCwgW2VtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc1JlY2VpcHRFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc1JlY2VpcHRFbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3NSZWNlaXB0UHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NSZWNlaXB0UHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0KHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0LCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW52b2ljZUVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludm9pY2VQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VQcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UXVvdGF0aW9uRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxRdW90YXRpb24oZW1haWxRdW90YXRpb25SZXF1ZXN0OiBFbWFpbFF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbFF1b3RhdGlvbiwgW2VtYWlsUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNRdW90YXRpb24oZW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljUXVvdGF0aW9uLCBbZW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZRdW90YXRpb24ocGRmUXVvdGF0aW9uUmVxdWVzdDogUGRmUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUXVvdGF0aW9uLCBbcGRmUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljUXVvdGF0aW9uKHBkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogUGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY1F1b3RhdGlvbiwgW3BkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UXVvdGF0aW9uKHByaW50UXVvdGF0aW9uUmVxdWVzdDogUHJpbnRRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRRdW90YXRpb24sIFtwcmludFF1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljUXVvdGF0aW9uKHByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBQcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY1F1b3RhdGlvbiwgW3ByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRRdW90YXRpb25FbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25QcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFF1b3RhdGlvblByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUXVvdGF0aW9uKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JRdW90YXRpb24sIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmludGVycygpOiBQcm9taXNlPFByaW50ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpbnRlcj4oUHJpbnRlciwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmludGVycyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0UHJpbnRlcihyZXBvcnRJZDogbnVtYmVyLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdFByaW50ZXIsIFtyZXBvcnRJZCwgdHlwZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1cnJlbmNpZXMoYWN0aXZlOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8Q3VycmVuY3lbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVuY2llcywgW2FjdGl2ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hUeXBlcyh0eXBlOiBzdHJpbmcpOiBQcm9taXNlPENhc2hUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hUeXBlcywgW3R5cGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3NHcm91cHMoKTogUHJvbWlzZTxQb3NHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NHcm91cHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb2plY3RDb2RlcyhkYXRlOiBEYXRlKTogUHJvbWlzZTxQcm9qZWN0Q29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcm9qZWN0Q29kZXMsIFtkYXRlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsUHJvamVjdENvZGVzKCk6IFByb21pc2U8UHJvamVjdENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QWxsUHJvamVjdENvZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRQcm9qZWN0Q29kZShwcm9qZWN0Q29kZTogUHJvamVjdENvZGUpOiBQcm9taXNlPFByb2plY3RDb2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRQcm9qZWN0Q29kZSwgW3Byb2plY3RDb2RlXSk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50Q29uZGl0aW9ucyhuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50Q29uZGl0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRDb25kaXRpb25zLCBbbmFtZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZVNldENhdGVnb3JpZXMoKTogUHJvbWlzZTxPcmRlckxpbmVTZXRDYXRlZ29yeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVTZXRDYXRlZ29yaWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXJ2aWNlV2l6YXJkKCk6IFByb21pc2U8U2VydmljZVdpemFyZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VydmljZVdpemFyZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBzZXJ0U2VydmljZVdpemFyZChyZXF1ZXN0OiBTZXJ2aWNlV2l6YXJkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cHNlcnRTZXJ2aWNlV2l6YXJkLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcnZpY2VUeXBlcygpOiBQcm9taXNlPFNlcnZpY2VUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNlcnZpY2VUeXBlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkT3JkZXJMaW5lU2V0KHJlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkT3JkZXJMaW5lU2V0VGV4dExpbmVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkT3JkZXJMaW5lU2V0LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZU9yZGVyTGluZVNldChyZXF1ZXN0OiBPcmRlckxpbmVTZXREVE8pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVPcmRlckxpbmVTZXQsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lT3JkZXJMaW5lU2V0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lT3JkZXJMaW5lU2V0LCBbdXVpZCwgbGluZVV1aWQsIGNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRKb2luZWRUYWdzLCBbdGFibGUsIGtleV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1lcmdlSm9pbmVkVGFncyh0YWJsZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdGFnczogVGFnVHJlZUl0ZW1bXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubWVyZ2VKb2luZWRUYWdzLCBbdGFibGUsIGtleSwgdGFnc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRhZ3NGdWxsVHJlZShjYXRlZ29yeTogVGFnQ2F0ZWdvcnksIGluY2x1ZGVUYWdzOiBib29sZWFuKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUYWdzRnVsbFRyZWUsIFtjYXRlZ29yeSwgaW5jbHVkZVRhZ3NdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkluZm8odHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvSGlzdG9yeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkluZm8sIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWZUcmFuc2FjdGlvbnModHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxSZWZUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWZUcmFuc2FjdGlvbnMsIFt0cmFuc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW50ZXJuYWxQYXJhbWV0ZXJWYWx1ZShwYXJhbTogSW50ZXJuYWxQYXJhbSk6IFByb21pc2U8SW50ZXJuYWxQYXJhbT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RTaW5sZ2VQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxJbnRlcm5hbFBhcmFtPihJbnRlcm5hbFBhcmFtLCAocGFyYW06IEludGVybmFsUGFyYW0pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXJWYWx1ZSwgW3BhcmFtXSk7XG4gICAgfSkuZ2V0VmFsdWUocGFyYW0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9iamVjdENvbmZpZ3VyYXRpb24oc2NyZWVuQ2ZnTW9kdWxlOiBzdHJpbmcsIHBhcmFtcz86IHN0cmluZyB8IHN0cmluZ1tdLCBpbnNlcnRNb2RlPzogYm9vbGVhbik6IFByb21pc2U8T2JqZWN0Q29uZmlndXJhdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8T2JqZWN0Q29uZmlndXJhdGlvbj4oT2JqZWN0Q29uZmlndXJhdGlvbiwgKHNjcmVlbkNmZ01vZHVsZTogc3RyaW5nLCBwYXJhbXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgaW5zZXJ0TW9kZT86IGJvb2xlYW4pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbiwgW3NjcmVlbkNmZ01vZHVsZSwgcGFyYW1zLCBpbnNlcnRNb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUoc2NyZWVuQ2ZnTW9kdWxlLCBwYXJhbXMsIGluc2VydE1vZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljRG9jdW1lbnRzKHRyYW5zSWQ6IG51bWJlciwgZG9jdW1lbnRDb2RlOiBMYXlvdXRDb2RlKTogUHJvbWlzZTxIaXN0b3JpY1JlcG9ydFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY0RvY3VtZW50cywgW3RyYW5zSWQsIGRvY3VtZW50Q29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlcG9ydEhlYWRlcnNCeVRyYW5zSWRBbmRMYXlvdXRDb2RlKHRyYW5zSWQ6IG51bWJlciwgZG9jdW1lbnRDb2RlOiBMYXlvdXRDb2RlKTogUHJvbWlzZTxIaXN0b3JpY1JlcG9ydFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8SGlzdG9yaWNSZXBvcnQ+KEhpc3RvcmljUmVwb3J0LCAodHJhbnNJZDogbnVtYmVyLCBkb2N1bWVudENvZGU6IExheW91dENvZGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVwb3J0SGVhZGVyc0J5VHJhbnNJZEFuZExheW91dENvZGUsIFt0cmFuc0lkLCBkb2N1bWVudENvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZSh0cmFuc0lkLCBkb2N1bWVudENvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhY2thZ2VTdGlja2VyUHJpbnRMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnQ+KFJlcG9ydExheW91dFNlbGVjdGlvblByaW50LCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBhY2thZ2VTdGlja2VyUHJpbnRMYXlvdXRzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERvY3NUb1NpZ25Gb3JUcmFucyhyZXF1ZXN0OiBHZXREb2NzVG9TaWduRm9yVHJhbnNSZXF1ZXN0KTogUHJvbWlzZTxSZXBvcnRMaXN0T2JqZWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvY3NUb1NpZ25Gb3JUcmFucywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5U2FsZXNPcmRlcihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29weVNhbGVzT3JkZXIsIFtjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29weVB1cmNoYXNlT3JkZXIoY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlQdXJjaGFzZU9yZGVyLCBbY29weVRyYW5zYWN0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlTYWxlc1F1b3RhdGlvbihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29weVNhbGVzUXVvdGF0aW9uLCBbY29weVRyYW5zYWN0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGVzVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIGNhdGFsb2dJZDogbnVtYmVyLCByYXdEYXRhOiBzdHJpbmcsIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGVzVG9UcmFuc2FjdGlvbiwgW3V1aWQsIGNhdGFsb2dJZCwgcmF3RGF0YSwgc2hvd0xvYWRlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFBheW1lbnRMaW5lVG9UcmFuc2FjdGlvbihyZXF1ZXN0OiBUcmFuc2FjdGlvbkFkZFBheW1lbnRMaW5lUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFBheW1lbnRMaW5lVG9UcmFuc2FjdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFNhbGVzT3JkZXJzT3ZlcnZpZXcocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCk6IFByb21pc2U8UGRmVHJhbnNhY3Rpb25TZWFyY2hPdmVydmlld1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFNhbGVzT3JkZXJzT3ZlcnZpZXcsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VuZFBhY2thZ2VJbmZvcm1hdGlvblRvTFNQKHJlcXVlc3Q6IFRyYW5zYWN0aW9uTHNwSW5mb3JtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2VuZFBhY2thZ2VJbmZvcm1hdGlvblRvTFNQLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhY2thZ2VJbmZvcm1hdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZywgbGluZVVVSUQ6IHN0cmluZyk6IFByb21pc2U8UGFja2FnZUxTUFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYWNrYWdlSW5mb3JtYXRpb24sIFt0cmFuc2FjdGlvblVVSUQsIGxpbmVVVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9naXN0aWNzUGFydG5lcnMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMb2dpc3RpY3NQYXJ0bmVycyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbm5pbmdTb3VyY2VzKCk6IFByb21pc2U8UGxhbm5pbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhbm5pbmdTb3VyY2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuT3JkZXJzKGZpbHRlck9iamVjdDogUGxhbm5pbmdGaWx0ZXJPYmplY3QsIHBsYW5uaW5nSWQ6IG51bWJlcik6IFByb21pc2U8UGxhbk9yZGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5PcmRlcnMsIFtmaWx0ZXJPYmplY3QsIHBsYW5uaW5nSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuVHJhbnNwb3J0V2VlayhzdGFydERhdGU6IERhdGUsIHBsYW5uaW5nSWQ6IG51bWJlcik6IFByb21pc2U8UGxhbm5pbmdUcmFuc3BvcnRXZWVrW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5UcmFuc3BvcnRXZWVrLCBbc3RhcnREYXRlLCBwbGFubmluZ0lkXSk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQbGFuVHJhbnNwb3J0V2VlayhwbGFuVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVQbGFuVHJhbnNwb3J0V2VlaywgW3BsYW5UcmFuc3BvcnRXZWVrXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZERvY3VtZW50c09mVHJhbnNhY3Rpb24oa2V5OiBzdHJpbmcpOiBQcm9taXNlPENvRG9jdW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubG9hZERvY3VtZW50c09mVHJhbnNhY3Rpb24sIFtrZXldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRG9jdW1lbnRDb250ZW50KGRvY0lkOiBudW1iZXIsIHRodW1ibmFpbDogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9jdW1lbnRDb250ZW50LCBbZG9jSWQsIHRodW1ibmFpbF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1lcmdlRG9jdW1lbnRPblRyYW5zYWN0aW9uKGtleTogc3RyaW5nLCBkb2N1bWVudDogQ29Eb2N1bWVudCk6IFByb21pc2U8Q29Eb2N1bWVudD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubWVyZ2VEb2N1bWVudE9uVHJhbnNhY3Rpb24sIFtrZXksIGRvY3VtZW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVEb2N1bWVudCwgW2RvY3VtZW50SWRdKTtcbiAgfVxuXG4gIC8qcHVibGljIGFzeW5jIGxvY2tEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja2RvY3VtZW50KGRvY3VtZW50SWQpO1xuICB9Ki9cblxuICBwdWJsaWMgYXN5bmMgaW5zZXJ0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5pbnNlcnRBY3Rpdml0eSwgW2FjdGl2aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVBY3Rpdml0eSwgW2FjdGl2aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tcG9uZW50QWN0aXZpdGllc1dpdGhvdXRSZWxhdGlvbkZpbHRlcmluZyh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvbXBvbmVudEFjdGl2aXRpZXNXaXRob3V0UmVsYXRpb25GaWx0ZXJpbmcsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNBY3Rpdml0aWVzKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNBY3Rpdml0aWVzLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uTWFyZ2luSW5mbyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25NYXJnaW5JbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbk1hcmdpbkluZm8sIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdDogR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zcG9ydE9yZGVycywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzVG9QbGFuKHJlcXVlc3Q6IE9yZGVyTGluZXNUb1BsYW5SZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZXNUb1BsYW4sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdDogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZXNQbGFubmVkLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVuZG9EZWxpdmVyeUJ5UmVwb3J0SWQocmVwb3J0SWQ6IG51bWJlcik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVuZG9EZWxpdmVyeUJ5UmVwb3J0SWQsIFtyZXBvcnRJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpcmVUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkOiBudW1iZXIsIHNlcXVlbmNlOiBudW1iZXIsIHRyaWdnZXJJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5maXJlVHJpZ2dlciwgW3dvcmtGbG93UHJvY2Vzc0lkLCBzZXF1ZW5jZSwgdHJpZ2dlcklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmlyZUdlbmVyaWNUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkOiBudW1iZXIsIGdlbmVyaWNUcmFuc2l0aW9uSWQ6IG51bWJlciwgcmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5maXJlR2VuZXJpY1RyaWdnZXIsIFt3b3JrRmxvd1Byb2Nlc3NJZCwgZ2VuZXJpY1RyYW5zaXRpb25JZCwgcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvY2tUYXNrKGlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tUYXNrLCBbaWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUFjdGl2aXR5LCBbYWN0aXZpdHldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclB1cmNoYXNlT3JkZXIodXVpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQdXJjaGFzZU9yZGVyLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5PcmRlcih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5PcmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhbk9yZGVyLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbnZlcnRDYXNoUmVnaXN0ZXJPcmRlclRvU2FsZXNPcmRlcih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jb252ZXJ0Q2FzaFJlZ2lzdGVyT3JkZXJUb1NhbGVzT3JkZXIsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TGluZUluZGljZXNCeVRyYW5zSWQodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxpbmVTZWFyY2hJbmRleFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMaW5lSW5kaWNlc0J5VHJhbnNJZCwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTYWxlc09yZGVyTGluZXMocmVxdWVzdDogT3JkZXJSZXNlcnZhdGlvblNhbGVzT3JkZXJMaW5lc1JlcXVlc3QpOiBQcm9taXNlPFB1cmNoYXNlUmVzZXJ2YXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2FsZXNPcmRlckxpbmVzLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByb2Nlc3NSZXNlcnZhdGlvbihyZXF1ZXN0OiBQcm9jZXNzT3JkZXJSZXNlcnZhdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcm9jZXNzUmVzZXJ2YXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdW5kb1Jlc2VydmF0aW9uKHRyYW5zSWQ6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVuZG9SZXNlcnZhdGlvbiwgW3RyYW5zSWQsIGxpbmVJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNMQUNhdGVnb3JpZXMoKTogUHJvbWlzZTxTTEFQcm9kdWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNMQUNhdGVnb3JpZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNMQVByb2R1Y3RzKCk6IFByb21pc2U8U0xBUHJvZHVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTTEFQcm9kdWN0cyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGlzdHJpY3RzKCk6IFByb21pc2U8RGlzdHJpY3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGlzdHJpY3RzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRFbXBsb3llZXMoKTogUHJvbWlzZTxSZWxhdGlvbkxpc3RPYmplY3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RW1wbG95ZWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTa2lsbHMoKTogUHJvbWlzZTxTa2lsbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTa2lsbHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFVzZXJHcm91cHMoKTogUHJvbWlzZTxVc2VyR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VXNlckdyb3Vwcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3Mob3JkZXJzVG9CZVJlc3RvcmVkOiBQbGFuT3JkZXJbXSkge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3MsIFtvcmRlcnNUb0JlUmVzdG9yZWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvdXJjZVBsYW5uaW5nKGlucHV0czogUmVzb3VyY2VQbGFubmluZ0lucHV0UGFyYW1zKTogUHJvbWlzZTxQbGFuVGltZXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb3VyY2VQbGFubmluZywgW2lucHV0c10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvRGVsaXZlcnlQbGFubmluZ1JlcXVlc3QoaW5wdXRzOiBEb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0SW5wdXRQYXJhbXMpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0LCBbaW5wdXRzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlEYXRlT3JkZXIodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeURhdGVPcmRlciwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQQVN0YXR1c0Zyb21UcmFuc2FjdGlvbih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBBU3RhdHVzRnJvbVRyYW5zYWN0aW9uLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoZWNrQXZhaWxhYmlsaXR5KGlucHV0czogUGxhbm5pbmdTZW5kT3JkZXJzKTogUHJvbWlzZTxQbGFuVGltZXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hlY2tBdmFpbGFiaWxpdHksIFtpbnB1dHNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnRlcm5hbERlZmF1bHRWYWx1ZShwYXJhbTogSW50ZXJuYWxEZWZhdWx0KTogUHJvbWlzZTxJbnRlcm5hbERlZmF1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludGVybmFsRGVmYXVsdFZhbHVlLCBbcGFyYW1dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFubmVkTGluZXNGb3JFbXBsb3llZShwbGFubmluZ0lkOiBudW1iZXIsIHJlbGF0aW9uSWQ6IG51bWJlciwgZGF0ZTogRGF0ZSk6IFByb21pc2U8UGxhbm5pbmdUcmFuc3BvcnRXZWVrW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5uZWRMaW5lc0ZvckVtcGxveWVlLCBbcGxhbm5pbmdJZCwgcmVsYXRpb25JZCwgZGF0ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5uZWRSZXNvdXJjZXNGb3JUcmFuc2FjdGlvbkxpbmUodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8UGxhbm5lZFJlc291cmNlRm9yVHJhbnNhY3Rpb25MaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5uZWRSZXNvdXJjZXNGb3JUcmFuc2FjdGlvbkxpbmUsIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXJtc0FuZENvbmRpdGlvbnNGb3JtKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRlcm1zQW5kQ29uZGl0aW9uc0Zvcm0odHJhbnNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25QbGFuUGVyaW9kcyh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5UaW1lc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uUGxhblBlcmlvZHModHJhbnNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3VwcGxpZXJQcm9kdWN0cyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJQcm9kdWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3VwcGxpZXJQcm9kdWN0cyhnb29kSWQpO1xuICB9XG59XG4iXX0=