@colijnit/transaction 256.1.81 → 256.1.82

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 (20) hide show
  1. package/bundles/colijnit-transaction.umd.js +237 -42
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/transaction-header-fields/transaction-header-remaining-amount.component.js +1 -1
  5. package/esm2015/lib/component/transaction-line/transaction-receive-goods-line/transaction-receive-goods-line.component.js +9 -1
  6. package/esm2015/lib/component/transaction-line-purchase-receive-goods/transaction-line-purchase-receive-goods.component.js +20 -5
  7. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.component.js +91 -37
  8. package/esm2015/lib/service/transaction-connector-adapter.service.js +27 -1
  9. package/esm2015/lib/service/transaction-connector.service.js +11 -1
  10. package/esm2015/lib/service/transaction.service.js +43 -6
  11. package/esm2015/lib/transaction-version.js +3 -3
  12. package/fesm2015/colijnit-transaction.js +196 -47
  13. package/fesm2015/colijnit-transaction.js.map +1 -1
  14. package/lib/component/transaction-line-purchase-receive-goods/transaction-line-purchase-receive-goods.component.d.ts +1 -0
  15. package/lib/component/transaction-quick-access/transaction-quick-access-received-goods/style/_layout.scss +46 -39
  16. package/lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.component.d.ts +8 -2
  17. package/lib/service/transaction-connector-adapter.service.d.ts +4 -0
  18. package/lib/service/transaction-connector.service.d.ts +4 -0
  19. package/lib/service/transaction.service.d.ts +5 -0
  20. package/package.json +1 -1
@@ -826,6 +826,16 @@ export class TransactionConnectorService {
826
826
  return this._adapterService.functionCall(this._adapterService.receiveGoodsForPurchaseOrderCorrection, [request]);
827
827
  });
828
828
  }
829
+ printPackageSticker(printRequest) {
830
+ return __awaiter(this, void 0, void 0, function* () {
831
+ return this._adapterService.functionCall(this._adapterService.printPackageSticker, [printRequest]);
832
+ });
833
+ }
834
+ pdfPackageSticker(pdfRequest) {
835
+ return __awaiter(this, void 0, void 0, function* () {
836
+ return this._adapterService.functionCall(this._adapterService.pdfPackageSticker, [pdfRequest]);
837
+ });
838
+ }
829
839
  getPurchasePortalLines(request) {
830
840
  return __awaiter(this, void 0, void 0, function* () {
831
841
  return this._adapterService.functionCall(this._adapterService.getPurchasePortalLines, [request]);
@@ -1687,4 +1697,4 @@ TransactionConnectorService.ctorParameters = () => [
1687
1697
  { type: TransactionSelectMultipleParameterizedCacheService },
1688
1698
  { type: TransactionSelectSingleParameterizedCacheService }
1689
1699
  ];
1690
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN4RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUt2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUUzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDckYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDMUUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFvQjVFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFDTCxrREFBa0QsRUFDbkQsTUFBTSwwRUFBMEUsQ0FBQztBQUNsRixPQUFPLEVB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TyxDQUFDLENBQUM7UUFDakUsQ0FBQztLQUFBO0lBRVkseUJBQXlCLENBQUMsT0FBZTs7WUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLENBQUM7S0FBQTtJQUVZLG1CQUFtQixDQUFDLE1BQWM7O1lBQzdDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxDQUFDO0tBQUE7Ozs7WUFoMkNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBak9PLGtDQUFrQztZQUNsQyxtQ0FBbUM7WUFMbkMscUNBQXFDO1lBRTNDLGtEQUFrRDtZQThDbEQsZ0RBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFya2V0aW5nfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY291bnRyeS5ibyc7XG5pbXBvcnQge0xhbmd1YWdlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGFuZ3VhZ2UuYm8nO1xuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bSc7XG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvJztcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcHRpb24uYm8nO1xuaW1wb3J0IHtcbiAgR2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc1xufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXBvc3RhbC1jb2RlLXJldHJpZXZhbC1vdXRwdXQtcGFyYW1zJztcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYXJ0aWNsZS13YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHtTdGFuZGFyZFRleHR9IGZyb20gJy4uL21vZGVsL3N0YW5kYXJkLXRleHQnO1xuaW1wb3J0IHtDdXN0b21lckdyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZ3JvdXAuYm8nO1xuaW1wb3J0IHtUaXRsZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RpdGxlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXInO1xuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UHJpY2VMaXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdCc7XG5pbXBvcnQge1ZhdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ZhdCc7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZGlzY291bnQtdHlwZS5lbnVtJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC12aWV3LXJlcXVlc3QnO1xuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb24taG9sZC1jb2RlLmJvJztcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7Q29kZURlc2NyaXB0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29kZS1kZXNjcmlwdGlvbic7XG5pbXBvcnQge1xuICBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItcmVxdWVzdC5ibyc7XG5pbXBvcnQge1xuICBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlY2VpdmUtZ29vZHMtZm9yLXB1cmNoYXNlLW9yZGVyLWNvcnJlY3Rpb24tcmVxdWVzdC5ibyc7XG5pbXBvcnQge0Nhc2hPbkRlbGl2ZXJ5RGF0YX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtb24tZGVsaXZlcnktZGF0YSc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudFJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLWNhc2gtb24tZGVsaXZlcnktYW1vdW50LXJlcXVlc3RcIjtcbmltcG9ydCB7R2V0UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLXBvcnRhbC1saW5lJztcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcG9ydGFsLWxpbmUuYm8nO1xuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wYXltZW50LWxpbmstcmVzdWx0LmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHR9IGZyb20gJy4uL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQnO1xuaW1wb3J0IHtcbiAgUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLWhlYWRlci1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWxpbmstc3RhdHVzLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZVxufSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1tdWx0aXBsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3Qtc2luZ2xlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLW9yZGVyLWNvbmZpcm1hdGlvbic7XG5pbXBvcnQge1RyYW5zYWN0aW9uTG9ja1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxvY2stcmVzdWx0LmJvJztcbmltcG9ydCB7UHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm8nO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm8nO1xuaW1wb3J0IHtTYWxlc1BlcnNvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3NhbGVzLXBlcnNvbi5ibyc7XG5pbXBvcnQge1RhZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnJztcbmltcG9ydCB7U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c30gZnJvbSAnQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvc3RvY2stc3RpY2tlcnMtcHJpbnQtbGF5b3V0cy5ibyc7XG5pbXBvcnQge0F2YWlsYWJsZVN0b2NrfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXZhaWxhYmxlLXN0b2NrLmJvJztcbmltcG9ydCB7XG4gIEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLWNvcnJlY3Rpb24tcmVxdWVzdCc7XG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvblByaW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ibyc7XG5pbXBvcnQge0NyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtY2FzaC1yZWdpc3Rlci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlU2FsZXNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHVyY2hhc2VBZHZpY2VGaWx0ZXJzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtYWR2aWNlLWZpbHRlcnMnO1xuaW1wb3J0IHtQdXJjaGFzZUFkdmljZUxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1hZHZpY2UtbGluZS5ibyc7XG5pbXBvcnQge0VtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8taGlzdG9yeS5ibyc7XG5pbXBvcnQge0VtYWlsSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UmVmVHJhbnNhY3Rpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWYtdHJhbnNhY3Rpb24uYm8nO1xuaW1wb3J0IHtUYWdUcmVlSXRlbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ibyc7XG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtcGFyYW0uZW51bSc7XG5pbXBvcnQge0dvb2RzUmVjZWlwdEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1yZWNlaXB0LWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtHb29kc0FsbG9jYXRpb25IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtYWxsb2NhdGlvbi1oaXN0b3J5LmJvJztcbmltcG9ydCB7TGF5b3V0Q29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vbGF5b3V0LWNvZGUuZW51bSc7XG5pbXBvcnQge0hpc3RvcmljUmVwb3J0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvaGlzdG9yaWMtcmVwb3J0LmJvJztcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ibyc7XG5pbXBvcnQge0N1cnJlbmN5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jdXJyZW5jeS5ibyc7XG5pbXBvcnQge1BheW1lbnRDb25kaXRpb259IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtY29uZGl0aW9uLmJvJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZVxufSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1zaW5nbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7V2FyZWhvdXNlU3RvY2tJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLXN0b2NrLWluZm8uYm8nO1xuaW1wb3J0IHtHb29kc1RvQmVQaWNrZWRIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWhpc3RvcnknO1xuaW1wb3J0IHtHb29kc1BpY2tlZEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1waWNrZWQtaGlzdG9yeSc7XG5pbXBvcnQge1BkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1BkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbn0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvb2JqZWN0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XG5pbXBvcnQge0dvb2RzUGlja2VkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXBpY2tlZC1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtZ29vZHMtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsZXRlLWdvb2RzLXRvLWJlLXBpY2tlZC1mb3Itb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0Nhc2hEcmF3ZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2Vycy1yZXF1ZXN0JztcbmltcG9ydCB7Q2FzaERyYXdlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2VyLmJvJztcbmltcG9ydCB7UHJpbnRQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7VGFnQ2F0ZWdvcnl9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vdGFiLWNhdGVnb3J5LmVudW0nO1xuaW1wb3J0IHtDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29weS10cmFuc2FjdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50UXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWhlYWRlci1zY29yaW5nLWNoYW5jZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLWV4cGVjdGVkLXNjb3JpbmctZGF0ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlclJldGFpbFN0YWRpdW1SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLXJldGFpbC1zdGFkaXVtLXJlcXVlc3QnO1xuaW1wb3J0IHtSZXRhaWxTdGFkaXVtfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmV0YWlsLXN0YWRpdW0uYm8nO1xuaW1wb3J0IHtXb3JrRmxvd1N0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dvcmtmbG93LXN0YXR1cy5ibyc7XG5pbXBvcnQge1xuICBDaGFuZ2VMaW5lUXVhbnRpdHlTZWxlY3RlZExpbmVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtbGluZS1xdWFudGl0eS1zZWxlY3RlZC1saW5lLXJlcXVlc3QnO1xuaW1wb3J0IHtPcmRlckxpbmVTZXRDYXRlZ29yeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtY2F0ZWdvcnkuYm8nO1xuaW1wb3J0IHtPcmRlckxpbmVTZXREVE99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1kdG8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFkZC1vcmRlci1saW5lLXNldC10ZXh0LWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBPcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tYW5hbHlzaXMtcmVzdWx0LmJvJztcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcbmltcG9ydCB7UGRmUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkxzcEluZm9ybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbHNwLWluZm9ybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQYWNrYWdlTFNQfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGFja2FnZS1sc3AuYm8nO1xuaW1wb3J0IHtBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYW5hbHl6ZWQtb3JkZXItY29uZmlybWF0aW9uLmJvJztcbmltcG9ydCB7XG4gIE9yZGVyQ29uZmlybWF0aW9uVHJhbnNhY3Rpb25MaW5rXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tdHJhbnNhY3Rpb24tbGluay5ibyc7XG5pbXBvcnQge1BkZlBvc1JlY2VpcHRSZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1wb3MtcmVjZWlwdC1yZXNwb25zZS5ibyc7XG5pbXBvcnQge1Byb2plY3RDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJvamVjdC1jb2RlLmJvJztcbmltcG9ydCB7Q2FzaFR5cGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXR5cGUuYm8nO1xuaW1wb3J0IHtQb3NHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Bvcy1ncm91cC5ibyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkFkZFBheW1lbnRMaW5lUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXBheW1lbnQtbGluZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtDYXVzZUNvZGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2F1c2UtY29kZS5ib1wiO1xuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvdmFsaWRhdGlvbi1yZXN1bHRcIjtcbmltcG9ydCB7XG4gIFBkZlRyYW5zYWN0aW9uU2VhcmNoT3ZlcnZpZXdSZXNwb25zZVxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi10cmFuc2FjdGlvbi1zZWFyY2gtb3ZlcnZpZXctcmVzcG9uc2VcIjtcbmltcG9ydCB7XG4gIFByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7QWN0aXZpdHl9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9hY3Rpdml0eS5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvXCI7XG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay5ib1wiO1xuaW1wb3J0IHtHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7T3JkZXJMaW5lc1RvUGxhblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtdG8tcGxhbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTWFyZ2luSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1tYXJnaW4taW5mby5ib1wiO1xuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGEnO1xuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLXRyYW5zYWN0aW9uLWxpbmUtcmVxdWVzdFwiO1xuaW1wb3J0IHtQcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWRlbGl2ZXJ5LW5vdGVzLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLWdvb2QtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLVNMQS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvblJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLXNvdXJjZS1vcmRlcm5yLWFuZC1hcnRpY2xlLWRlc2NyaXB0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci1yZXBvcnQtbWVzc2FnZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1N1cHBsaWVyQXJ0aWNsZVN0b2NrRm9yZWNhc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItYXJ0aWNsZS1zdG9jay1mb3JlY2FzdFwiO1xuaW1wb3J0IHtDaGFuZ2VMaW5lRGlyZWN0U2VsbFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWxpbmUtZGlyZWN0LXNlbGwtcmVxdWVzdFwiO1xuaW1wb3J0IHtTZXJ2aWNlV2l6YXJkfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NlcnZpY2Utd2l6YXJkXCI7XG5pbXBvcnQge1NlcnZpY2VUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NlcnZpY2UtdHlwZVwiO1xuaW1wb3J0IHtBZGRIZWFkZXJJbWFnZVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkLWhlYWRlci1pbWFnZS1yZXF1ZXN0XCI7XG5pbXBvcnQge0RlbGV0ZUhlYWRlckltYWdlUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtaGVhZGVyLWltYWdlLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJDYXVzZUNvZGVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyY2F1c2UtY29kZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyUHJpb3JpdHlSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXByaW9yaXR5LXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJFbnRyeVR5cGVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLWVudHJ5LXR5cGUtcmVxdWVzdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVTZWFyY2hJbmRleH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLXNlYXJjaC1pbmRleC5ib1wiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlcldpemFyZERhdGFSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXdpemFyZC1kYXRhLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJTZXJ2aWNlVHlwZVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXItc2VydmljZS10eXBlLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIE9yZGVyUmVzZXJ2YXRpb25TYWxlc09yZGVyTGluZXNSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItcmVzZXJ2YXRpb24tc2FsZXMtb3JkZXItbGluZXMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtQdXJjaGFzZVJlc2VydmF0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLXJlc2VydmF0aW9uLmJvXCI7XG5pbXBvcnQge1xuICBQcm9jZXNzT3JkZXJSZXNlcnZhdGlvblJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcm9jZXNzLW9yZGVyLXJlc2VydmF0aW9uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7RGlzdHJpY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGlzdHJpY3QuYm9cIjtcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvXCI7XG5pbXBvcnQge1NraWxsfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NraWxsLmJvXCI7XG5pbXBvcnQge1VzZXJHcm91cH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC91c2VyLWdyb3VwLmJvXCI7XG5pbXBvcnQge1Jlc291cmNlUGxhbm5pbmdJbnB1dFBhcmFtc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvdXJjZS1wbGFubmluZy1pbnB1dC1wYXJhbXMuYm9cIjtcbmltcG9ydCB7XG4gIERvRGVsaXZlcnlQbGFubmluZ1JlcXVlc3RJbnB1dFBhcmFtc1xufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RvLWRlbGl2ZXJ5LXBsYW5uaW5nLXJlcXVlc3QtaW5wdXQtcGFyYW1zLmJvXCI7XG5pbXBvcnQge1BsYW5UaW1lc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLXRpbWVzLmJvXCI7XG5pbXBvcnQge0ludGVybmFsRGVmYXVsdH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtZGVmYXVsdC5lbnVtXCI7XG5pbXBvcnQge1BsYW5uaW5nU2VuZE9yZGVyc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1zZW5kLW9yZGVycy5ib1wiO1xuaW1wb3J0IHtEb21haW5OYW1lfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9kb21haW4tbmFtZS5lbnVtXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3QnO1xuaW1wb3J0IHtCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYmF0Y2gtdHJhbnNhY3Rpb24tc2VuZGluZy1yZXF1ZXN0XCI7XG5pbXBvcnQge0JhdGNoSm9iUHJvZ3Jlc3N9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC1qb2ItcHJvZ3Jlc3MuYm8nO1xuaW1wb3J0IHtTTEFQcm9kdWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL1NMQS1wcm9kdWN0XCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkxpbmVDb3B5UmVxdWVzdCB9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWNvcHktcmVxdWVzdC5ibyc7XG5pbXBvcnQge1N1cHBsaWVyUHJvZHVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1wcm9kdWN0LmJvXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlIHtcblxuICBwdWJsaWMgY29ubmVjdGlvbkluaXRpYWxpemVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogVHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbm5lY3QoKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25Jbml0aWFsaXplZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvZ091dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2dPdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREb2N1bWVudENvbnRlbnQoZG9jSWQ6IG51bWJlciwgdGh1bWJuYWlsOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREb2N1bWVudENvbnRlbnQsIFtkb2NJZCwgdGh1bWJuYWlsXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUV4dGVuZGVkKGFydGljbGVOcjogc3RyaW5nKTogUHJvbWlzZTxBcnRpY2xlRXh0ZW5kZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZCwgW2FydGljbGVOcl0pO1xuICB9XG5cbiAgcHVibGljIHN0b3JlU2lnbmVkRG9jKGRvY3VtZW50SWQ6IG51bWJlciwgZG9jdW1lbnRCb2R5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0b3JlU2lnbmVkRG9jLCBbZG9jdW1lbnRJZCwgZG9jdW1lbnRCb2R5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPEFydGljbGVGdWxsT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8QXJ0aWNsZUZ1bGxPYmplY3Q+KEFydGljbGVGdWxsT2JqZWN0LCBnb29kSWQsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QsIFtnb29kSWRdKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOciwgW2FydGljbGVOcl0pO1xuICB9XG5cbiAgcHVibGljIGdldFNpbmdsZUltYWdlKG5vZGVJZDogbnVtYmVyIHwgc3RyaW5nLCBwdWJsaWNhdGlvbjogbnVtYmVyLCBpbmNsdWRlTWltZXR5cGU6IGJvb2xlYW4sIHRodW1iOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNpbmdsZUltYWdlLCBbbm9kZUlkLCBwdWJsaWNhdGlvbiwgaW5jbHVkZU1pbWV0eXBlLCB0aHVtYl0pO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cmllcygpOiBQcm9taXNlPENvdW50cnlbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q291bnRyeT4oQ291bnRyeSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb3VudHJpZXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFuZ3VhZ2VzKCk6IFByb21pc2U8TGFuZ3VhZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8TGFuZ3VhZ2U+KExhbmd1YWdlLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldExhbmd1YWdlcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDdXN0b21lckdyb3VwcygpOiBQcm9taXNlPEN1c3RvbWVyR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q3VzdG9tZXJHcm91cD4oQ3VzdG9tZXJHcm91cCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXN0b21lckdyb3Vwcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaXRsZXMoKTogUHJvbWlzZTxUaXRsZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxUaXRsZT4oVGl0bGUsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGl0bGVzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdvcmtGbG93U3RhdHVzZXModHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQpOiBQcm9taXNlPFdvcmtGbG93U3RhdHVzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFdvcmtGbG93U3RhdHVzPihXb3JrRmxvd1N0YXR1cywgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXb3JrRmxvd1N0YXR1c2VzLCBbdHJhbnNhY3Rpb25LaW5kXSk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb3VudHJ5KGNvdW50cnlDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvdW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvdW50cnksIFtjb3VudHJ5Q29kZV0pO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFByaXZhY3lTZXR0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaXZhY3lTZXR0aW5nPihQcml2YWN5U2V0dGluZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcml2YWN5U2V0dGluZ3MpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmVsYXRpb25Qcml2YWN5U2V0dGluZ3MoKTogUHJvbWlzZTxSZWxhdGlvblByaXZhY3lTZXR0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrZXRpbmdDb2RlcygpOiBQcm9taXNlPE1hcmtldGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxNYXJrZXRpbmc+KE1hcmtldGluZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRNYXJrZXRpbmdDb2Rlcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIGJyYW5jaE5yOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVUcmFuc2FjdGlvbiwgW2tpbmQsIGJyYW5jaE5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2FsZXNPcmRlcihyZXF1ZXN0OiBDcmVhdGVTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNhbGVzT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXIocmVxdWVzdDogQ3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBDcmVhdGVQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVB1cmNoYXNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZShyZXF1ZXN0OiBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmUsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ29weVRyYW5zYWN0aW9uTGluZShyZXF1ZXN0OiBUcmFuc2FjdGlvbkxpbmVDb3B5UmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUNvcHlUcmFuc2FjdGlvbkxpbmUsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2QocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2RSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZUdvb2QsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZU9yZGVyTnJBbmRBcnRpY2xlRGVzY3JpcHRpb24ocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZU9yZGVyTnJBbmRBcnRpY2xlRGVzY3JpcHRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZU9yZGVyTnJBbmRBcnRpY2xlRGVzY3JpcHRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQShyZXF1ZXN0OiBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU0xBUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTTEEsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2FsZXNRdW90YXRpb24ocmVxdWVzdDogQ3JlYXRlU2FsZXNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2FsZXNRdW90YXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29udmVydFNhbGVzUXVvdGF0aW9uVG9TYWxlc09yZGVyKHJlcXVlc3Q6IENvcHlUcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jb252ZXJ0U2FsZXNRdW90YXRpb25Ub1NhbGVzT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZShhcnRpY2xlTGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25MaW5lSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lLCBbYXJ0aWNsZUxpbmVVdWlkXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQnlOckFuZEtpbmQsIFtraW5kLCB0cmFuc2FjdGlvbk5vXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25IZWFkZXJCeU5yQW5kS2luZChraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uSGVhZGVyQnlOckFuZEtpbmQsIFtraW5kLCB0cmFuc2FjdGlvbk5vXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQnlJZCwgW3RyYW5zYWN0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXZWJTZXNzaW9uU2FsZXNPcmRlcih0cmFuc2FjdGlvblV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdlYlNlc3Npb25TYWxlc09yZGVyLCBbdHJhbnNhY3Rpb25VdWlkXSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlVHJhbnNhY3Rpb25CeVV1SWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25CeVV1SWQsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsVHJhbnNhY3Rpb25CeVV1SWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2FuY2VsVHJhbnNhY3Rpb25CeVV1SWQsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgbG9ja1RyYW5zYWN0aW9uQnlJZCh0cmFuc0lkOiBudW1iZXIsIHZlcnNpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25Mb2NrUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrVHJhbnNhY3Rpb25CeUlkLCBbdHJhbnNJZCwgdmVyc2lvbl0pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvbW1pdCk7XG4gIH1cblxuICBwdWJsaWMgcm9sbGJhY2soKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5yb2xsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgcm9sbGJhY2tCZWFjb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJvbGxiYWNrQmVhY29uKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVRyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uLCBbdXVpZCwgc2hvd0xvYWRlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hSZWdpc3RlcnMoYnJhbmNoPzogc3RyaW5nLCBncm91cD86IG51bWJlciwgb3ZlcnJpZGVPbGQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8Q2FzaFJlZ2lzdGVyW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBicmFuY2g6IGJyYW5jaCxcbiAgICAgIGdyb3VwOiBncm91cFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXNoUmVnaXN0ZXI+KENhc2hSZWdpc3RlciwgKGJyYW5jaCwgZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaFJlZ2lzdGVycywgW2JyYW5jaCwgZ3JvdXBdKVxuICAgIH0sIG92ZXJyaWRlT2xkKS5nZXRWYWx1ZShicmFuY2gsIGdyb3VwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoRHJhd2VycyhjYXNoRHJhd2Vyc1JlcXVlc3Q6IENhc2hEcmF3ZXJzUmVxdWVzdCk6IFByb21pc2U8Q2FzaERyYXdlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q2FzaERyYXdlcj4oQ2FzaERyYXdlciwgKGNhc2hEcmF3ZXJzUmVxdWVzdCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoRHJhd2VycywgW2Nhc2hEcmF3ZXJzUmVxdWVzdF0pXG4gICAgfSkuZ2V0VmFsdWUoY2FzaERyYXdlcnNSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmljZUxpc3RzKGNvZGU/OiBzdHJpbmcpOiBQcm9taXNlPFByaWNlTGlzdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpY2VMaXN0PihQcmljZUxpc3QsIChjb2RlPzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaWNlTGlzdHMsIFtjb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUoY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VmF0TGlzdChvbmx5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VmF0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxWYXQ+KFZhdCwgKG9ubHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFZhdExpc3QsIFtvbmx5VmFsaWRdKTtcbiAgICB9KS5nZXRWYWx1ZShvbmx5VmFsaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zVmF0Q29kZXModHlwZTogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAodHlwZTogc3RyaW5nLCBkYXRlOiBEYXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zVmF0Q29kZXMsIFt0eXBlLCBkYXRlXSk7XG4gICAgfSkuZ2V0VmFsdWUodHlwZSwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoVHJhbnNhY3Rpb25zKHJlcXVlc3Q6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uU2VhcmNoUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VWYWx1ZShzZXF1ZW5jZU5hbWU6IFNlcXVlbmNlTmFtZSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTZXF1ZW5jZVZhbHVlLCBbc2VxdWVuY2VOYW1lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlNZXRob2RzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8RGVsaXZlcnlNZXRob2Q+KERlbGl2ZXJ5TWV0aG9kLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU9wdGlvbnMoKTogUHJvbWlzZTxEZWxpdmVyeU9wdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxEZWxpdmVyeU9wdGlvbj4oRGVsaXZlcnlPcHRpb24sICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlPcHRpb25zKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbiwgW3V1aWQsIHJlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3N0YWxDb2RlUmV0cmlldmFsKHBvc3RjYWxDb2RlOiBzdHJpbmcsIGhvdXNlTm86IHN0cmluZyk6IFByb21pc2U8R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtcz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zdGFsQ29kZVJldHJpZXZhbCwgW3Bvc3RjYWxDb2RlLCBob3VzZU5vXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkV2ViU2Vzc2lvblRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgYXJ0aWNsZU51bWJlcjogc3RyaW5nLCBxdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkV2ViU2Vzc2lvblRyYW5zYWN0aW9uTGluZSwgW3RyYW5zYWN0aW9uVXVpZCwgYXJ0aWNsZU51bWJlciwgcXVhbnRpdHldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBhcnRpY2xlTm86IHN0cmluZywgcXVhbnRpdHk6IG51bWJlciwgYWJvdmVMaW5lTnI6IG51bWJlciwgYmVsb3dMaW5lTnI6IG51bWJlciwgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lLCBbdXVpZCwgYXJ0aWNsZU5vLCBxdWFudGl0eSwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yLCBzaG93TG9hZGVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmVUb1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsIHRleHQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGFydGljbGVCb3VuZDogYm9vbGVhbiwgcmVmQXJ0aWNsZUxpbmVOcjogbnVtYmVyLCBhYm92ZUxpbmVOcj86IG51bWJlciwgYmVsb3dMaW5lTnI/OiBudW1iZXIpOlxuICAgIFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbiwgW3V1aWQsIHNob3dPbkRvY3VtZW50cywgdGV4dCwgYW1vdW50LCBhcnRpY2xlQm91bmQsIHJlZkFydGljbGVMaW5lTnIsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVRleHRMaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZVRleHRMaW5lLCBbdXVpZCwgbGluZVV1aWQsIHNob3dPbkRvY3VtZW50cywgdGV4dF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxpbmVTZXF1ZW5jZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGFib3ZlTGluZU5yPzogbnVtYmVyLCBiZWxvd0xpbmVOcj86IG51bWJlcik6XG4gICAgUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlTGluZVNlcXVlbmNlLCBbdXVpZCwgbGluZVV1aWQsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lLCBbbGluZVV1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25MaW5lLCBbdXVpZCwgbGluZVV1aWRdKTtcbiAgfVxuXG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3UXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5LCBbdXVpZCwgbGluZVV1aWQsIG5ld1F1YW50aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHlTZWxlY3RlZCh1dWlkOiBzdHJpbmcsIGxpbmVzOiBDaGFuZ2VMaW5lUXVhbnRpdHlTZWxlY3RlZExpbmVSZXF1ZXN0W10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eVNlbGVjdGVkLCBbdXVpZCwgbGluZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eVNlbGVjdE5vbmUodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHlTZWxlY3ROb25lLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlczogUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbiwgW3BlbmRpbmdMaW5lVmFsdWVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlczogUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24sIFtwZW5kaW5nSGVhZGVyVmFsdWVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuQ29tbWlzc2lvbkNvZGUsIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvbW1pc3Npb25Db2RlcywgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5Db21taXNzaW9uQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLkluT3V0Q29sbGVjdGlvbiwgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW5PdXRDb2xsZWN0aW9uLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLkluT3V0Q29sbGVjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U0xBVHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuU0xBVHlwZXMsIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNMQVR5cGVzLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLlNMQVR5cGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRZZXNOb0NvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuWWVzTm8sIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFllc05vQ29sbGVjdGlvbiwgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5ZZXNObyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpY2VLaW5kQ29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oRG9tYWluTmFtZS5QcmljZUtpbmQsIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaWNlS2luZENvbGxlY3Rpb24sIFtsYW5ndWFnZUNvZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShsYW5ndWFnZUNvZGUsIERvbWFpbk5hbWUuUHJpY2VLaW5kKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmlvcml0eUNvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuUHJpb3JpdHksIChsYW5ndWFnZUNvZGU6IHN0cmluZywgZG9tYWluTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaW9yaXR5Q29sbGVjdGlvbiwgW2xhbmd1YWdlQ29kZV0pO1xuICAgfSkuZ2V0VmFsdWUobGFuZ3VhZ2VDb2RlLCBEb21haW5OYW1lLlByaW9yaXR5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRFbnRyeVR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihEb21haW5OYW1lLlNlcnZpY2VDb21tdW5pY2F0aW9uVHlwZSwgKGxhbmd1YWdlQ29kZTogc3RyaW5nLCBkb21haW5OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RW50cnlUeXBlcywgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5TZXJ2aWNlQ29tbXVuaWNhdGlvblR5cGUpO1xuICB9XG5cbiAgcHVibGljIGdldERvbWFpblR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvRG9tYWluVmFsdWU+KERvbWFpbk5hbWUuVHJhbnNUeXBlLCAobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREb21haW5UeXBlcywgW2xhbmd1YWdlQ29kZV0pO1xuICAgIH0pLmdldFZhbHVlKGxhbmd1YWdlQ29kZSwgRG9tYWluTmFtZS5UcmFuc1R5cGUpO1xuICB9XG5cbiAgcHVibGljIGdldENhdXNlQ29kZXMoKTogUHJvbWlzZTxDYXVzZUNvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q2F1c2VDb2RlPihDYXVzZUNvZGUsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2F1c2VDb2Rlcyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcywgW2dvb2RJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbGF0aW9uQnlVc2VyKHV1aWQ6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0UmVsYXRpb25CeVVzZXIsIFt1dWlkLCB1c2VybmFtZSwgcGFzc3dvcmRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGV4dFR5cGVzLCBbbGFuZ3VhZ2VDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RhbmRhcmRUZXh0cyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8U3RhbmRhcmRUZXh0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN0YW5kYXJkVGV4dHMsIFtsYW5ndWFnZUNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTYWxlc1BlcnNvbnMoZGF0ZT86IERhdGUpOiBQcm9taXNlPFNhbGVzUGVyc29uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxTYWxlc1BlcnNvbj4oU2FsZXNQZXJzb24sIChkYXRlPzogRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTYWxlc1BlcnNvbnMsIFtkYXRlXSk7XG4gICAgfSkuZ2V0VmFsdWUoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmV0YWlsU3RhZGl1bXMoKTogUHJvbWlzZTxSZXRhaWxTdGFkaXVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFJldGFpbFN0YWRpdW0+KFJldGFpbFN0YWRpdW0sICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmV0YWlsU3RhZGl1bXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGFncyhjYXRlZ29yeTogbnVtYmVyKTogUHJvbWlzZTxUYWdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFRhZz4oVGFnLCAoY2F0ZWdvcnk6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUYWdzLCBbY2F0ZWdvcnldKTtcbiAgICB9KS5nZXRWYWx1ZShjYXRlZ29yeSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T25Ib2xkQ29kZXMoKTogUHJvbWlzZTxPbkhvbGRDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE9uSG9sZENvZGU+KE9uSG9sZENvZGUsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T25Ib2xkQ29kZXMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0V2FyZWhvdXNlcyhicmFuY2hOcj86IHN0cmluZyk6IFByb21pc2U8V2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxXYXJlaG91c2U+KFdhcmVob3VzZSwgKGJyYW5jaE5yPzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdhcmVob3VzZXMsIFticmFuY2hOcl0pO1xuICAgIH0pLmdldFZhbHVlKGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXYXJlaG91c2VTdG9ja0luZm9CeUdvb2RBbmRCcmFuY2goZ29vZElkOiBudW1iZXIsIGJyYW5jaE5yOiBzdHJpbmcpOiBQcm9taXNlPFdhcmVob3VzZVN0b2NrSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXYXJlaG91c2VTdG9ja0luZm9CeUdvb2RBbmRCcmFuY2gsIFtnb29kSWQsIGJyYW5jaE5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcygpOiBQcm9taXNlPENvZGVEZXNjcmlwdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY1N0YXRlVmFsdWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRNYXhDb25maXJtZWREZWxpdmVyeURhdGVGb3JQdXJjaGFzZU9yZGVyKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8RGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TWF4Q29uZmlybWVkRGVsaXZlcnlEYXRlRm9yUHVyY2hhc2VPcmRlciwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlLCBbdXVpZCwgbGluZVV1aWQsIGNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEaXJlY3RTZWxsKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBuZXdEaXJlY3RTZWxsOiBib29sZWFuLFxuICAgIG5ld1N1cHBsaWVySWQ6IG51bWJlciwgbmV3UHVyY2hhc2VPcmRlck51bWJlcjogc3RyaW5nLCBuZXdTdG9ja0ZvcmVjYXN0RGVsaXZlcnlEYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGlyZWN0U2VsbCwgW3RyYW5zYWN0aW9uVXVpZCwgbGluZVV1aWQsIG5ld0RpcmVjdFNlbGwsIG5ld1N1cHBsaWVySWQsXG4gICAgICBuZXdQdXJjaGFzZU9yZGVyTnVtYmVyLCBuZXdTdG9ja0ZvcmVjYXN0RGVsaXZlcnlEYXRlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXIsIFt1dWlkLCBsaW5lVXVpZCwgaWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB3YXJlaG91c2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSwgW3V1aWQsIGxpbmVVdWlkLCB3YXJlaG91c2VOdW1iZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVJbnRlckJyYW5jaFNvdXJjZVdhcmVob3VzZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGludGVyQnJhbmNoU291cmNlV2FyZWhvdXNlTnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUludGVyQnJhbmNoU291cmNlV2FyZWhvdXNlLCBbdXVpZCwgbGluZVV1aWQsIGludGVyQnJhbmNoU291cmNlV2FyZWhvdXNlTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSwgW3V1aWQsIGxpbmVVdWlkLCBwcmljZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlUHJpY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHVyY2hhc2VQcmljZSwgW3V1aWQsIGxpbmVVdWlkLCBwcmljZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVB1cmNoYXNlRGVzY3JpcHRpb24odXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHVyY2hhc2VEZXNjcmlwdGlvbiwgW3V1aWQsIGxpbmVVdWlkLCBkZXNjcmlwdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlTGlzdDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0LCBbdXVpZCwgbGluZVV1aWQsIHByaWNlTGlzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVZhdCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQsIFt1dWlkLCBsaW5lVXVpZCwgaWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGRpc2NvdW50OiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQsIFt1dWlkLCBsaW5lVXVpZCwgdHlwZSwgZGlzY291bnQsIHJlYXNvbiwgY29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURyb3BTaGlwbWVudCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG5ld0Ryb3BTaGlwbWVudDogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURyb3BTaGlwbWVudCwgW3V1aWQsIGxpbmVVdWlkLCBuZXdEcm9wU2hpcG1lbnRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVEZWxpdmVyeU1ldGhvZCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QsIFt1dWlkLCBsaW5lVXVpZCwgbWV0aG9kXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSwgW3V1aWQsIGxpbmVVdWlkLCBkYXRlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQXNzZW1ibHlUaW1lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdGltZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQXNzZW1ibHlUaW1lLCBbdXVpZCwgbGluZVV1aWQsIHRpbWVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVFZGl0VGltZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lLCBbdXVpZCwgbGluZVV1aWQsIHRpbWVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhcnRpY2xlTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIsIFt1dWlkLCBsaW5lVXVpZCwgYXJ0aWNsZU51bWJlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlLCBbdXVpZCwgbGluZVV1aWQsIHJlZmVyZW5jZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhcnROcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlciwgW3V1aWQsIGxpbmVVdWlkLCBhcnROcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUdvb2REZXNjcmlwdGlvbih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGdvb2REZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uLCBbdXVpZCwgbGluZVV1aWQsIGdvb2REZXNjcmlwdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbGxlY3Rpb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29sbGVjdGlvbkNvZGUsIFt1dWlkLCBsaW5lVXVpZCwgY29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlZmluaXRpdmUsIFt1dWlkLCBkZWZpbml0aXZlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVsaXZlcnlBZGRyZXNzKHV1aWQ6IHN0cmluZywgbmV3TmF3TnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcywgW3V1aWQsIG5ld05hd05yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3MsIFt1dWlkLCBuZXdOYXdOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlLCBbdXVpZCwgZGF0ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUsIFt1dWlkLCBkZWZpbml0aXZlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZDogc3RyaW5nLCByZW1hcms6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVtYXJrLCBbdXVpZCwgcmVtYXJrXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWZlcmVuY2UodXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVmZXJlbmNlLCBbdXVpZCwgcmVmZXJlbmNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSwgW3V1aWQsIHJlZmVyZW5jZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlKHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZXBvc2l0UGVyY2VudGFnZSwgW3V1aWQsIGFtb3VudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlcG9zaXRBbW91bnQodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlcG9zaXRBbW91bnQsIFt1dWlkLCBhbW91bnRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGRhdGU6IERhdGUsIG9wdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUsIFt1dWlkLCBkYXRlLCBvcHRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5VGltZSh1dWlkOiBzdHJpbmcsIHRpbWU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5VGltZSwgW3V1aWQsIHRpbWVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kLCBbdXVpZCwgbWV0aG9kXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModXVpZDogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zLCBbdXVpZCwgb3B0aW9uc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGFydGlhbERlbGl2ZXJ5KHV1aWQ6IHN0cmluZywgYWxsb3dQYXJ0aWFsOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnksIFt1dWlkLCBhbGxvd1BhcnRpYWxdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCh1dWlkOiBzdHJpbmcsIGJyYW5jaDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25CcmFuY2gsIFt1dWlkLCBicmFuY2hdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk9uSG9sZENvZGVzKHV1aWQ6IHN0cmluZywgY29kZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25PbkhvbGRDb2RlcywgW3V1aWQsIGNvZGVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXZpZGVFdmVubHkodXVpZDogc3RyaW5nLCBkaXZpZGVFdmVubHk6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpdmlkZUV2ZW5seSwgW3V1aWQsIGRpdmlkZUV2ZW5seV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQW1vdW50VG9TZXR0bGUodXVpZDogc3RyaW5nLCBhbW91bnRUb1NldHRsZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BbW91bnRUb1NldHRsZSwgW3V1aWQsIGFtb3VudFRvU2V0dGxlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmljZUtpbmQodXVpZDogc3RyaW5nLCBwcmljZUtpbmQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJpY2VLaW5kLCBbdXVpZCwgcHJpY2VLaW5kXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BZG1Db29yZGluYXRvcih1dWlkOiBzdHJpbmcsIHJlbGF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFkbUNvb3JkaW5hdG9yLCBbdXVpZCwgcmVsYXRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkN1cnJlbmN5KHV1aWQ6IHN0cmluZywgY3VycmVuY3lDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkN1cnJlbmN5LCBbdXVpZCwgY3VycmVuY3lDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25UeXBlKHV1aWQ6IHN0cmluZywgdHJhbnNhY3Rpb25UeXBlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblR5cGUsIFt1dWlkLCB0cmFuc2FjdGlvblR5cGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByb2plY3RDb2RlKHV1aWQ6IHN0cmluZywgcHJvamVjdENvZGU6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJvamVjdENvZGUsIFt1dWlkLCBwcm9qZWN0Q29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGF5bWVudENvbmRpdGlvbih1dWlkOiBzdHJpbmcsIGNvbmRpdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXltZW50Q29uZGl0aW9uLCBbdXVpZCwgY29uZGl0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25IYW5kbGVkQnkodXVpZDogc3RyaW5nLCBoYW5kbGVkQnk6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uSGFuZGxlZEJ5LCBbdXVpZCwgaGFuZGxlZEJ5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25NYXJrZXRpbmcodXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZywgW3V1aWQsIGNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpc2NvdW50KHV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQsIFt1dWlkLCB0eXBlLCBhbW91bnRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlKHJlcXVlc3Q6IENoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2VSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlKHJlcXVlc3Q6IENoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJSZXRhaWxTdGFkaXVtKHJlcXVlc3Q6IENoYW5nZUhlYWRlclJldGFpbFN0YWRpdW1SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJBdXRvUmVjYWxjdWxhdGVEZXBvc2l0KHV1aWQ6IHN0cmluZywgbmV3QXV0b1JlY2FsY3VsYXRlRGVwb3NpdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckF1dG9SZWNhbGN1bGF0ZURlcG9zaXQsIFt1dWlkLCBuZXdBdXRvUmVjYWxjdWxhdGVEZXBvc2l0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVXNlRGVwb3NpdFJ1bGUodXVpZDogc3RyaW5nLCBuZXdVc2VEZXBvc2l0UnVsZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclVzZURlcG9zaXRSdWxlLCBbdXVpZCwgbmV3VXNlRGVwb3NpdFJ1bGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VTZXJ2aWNlSGVhZGVyUmVwb3J0TWVzc2FnZShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyUmVwb3J0TWVzc2FnZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyUmVwb3J0TWVzc2FnZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VTZXJ2aWNlSGVhZGVyQ2F1c2VDb2RlKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJDYXVzZUNvZGVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlckNhdXNlQ29kZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VTZXJ2aWNlSGVhZGVyU2VydmljZVR5cGUocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlclNlcnZpY2VUeXBlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJTZXJ2aWNlVHlwZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VTZXJ2aWNlSGVhZGVyV2l6YXJkRGF0YShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyV2l6YXJkRGF0YVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyV2l6YXJkRGF0YSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VTZXJ2aWNlSGVhZGVyUHJpb3JpdHkocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlclByaW9yaXR5UmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJQcmlvcml0eSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VTZXJ2aWNlSGVhZGVyRW50cnlUeXBlKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJFbnRyeVR5cGVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlckVudHJ5VHlwZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRIZWFkZXJJbWFnZShyZXF1ZXN0OiBBZGRIZWFkZXJJbWFnZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRIZWFkZXJJbWFnZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVIZWFkZXJJbWFnZShyZXF1ZXN0OiBEZWxldGVIZWFkZXJJbWFnZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVIZWFkZXJJbWFnZSwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlUGF5bWVudExpbmtSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSwgW3V1aWQsIGFtb3VudCwgcGF5bWVudE1ldGhvZENvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50TGlua1N0YXR1cyhwYXltZW50TGlua1VVSUQ6IHN0cmluZyk6IFByb21pc2U8UGF5bWVudExpbmtTdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRMaW5rU3RhdHVzLCBbcGF5bWVudExpbmtVVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNSZWNlaXB0SGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1JlY2VpcHRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1JlY2VpcHRIaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb24ocmVxdWVzdDogUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0OiBHZXRQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPFB1cmNoYXNlUG9ydGFsTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZVBvcnRhbExpbmVzLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMocHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMsIFtwdXJjaGFzZVBvcnRhbExpbmVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb246IEdldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24sIFtwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbGlua1RyYW5zYWN0aW9uVG9PcmRlckNvbmZpcm1hdGlvbihhbmFseXNpc0lkOiBudW1iZXIsIGxpbmVzOiBPcmRlckNvbmZpcm1hdGlvblRyYW5zYWN0aW9uTGlua1tdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5saW5rVHJhbnNhY3Rpb25Ub09yZGVyQ29uZmlybWF0aW9uLCBbYW5hbHlzaXNJZCwgbGluZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2NrUHVyY2hhc2VQb3J0YWxMaW5lcyh0cmFuc0lkUHVyY2hhc2U6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tQdXJjaGFzZVBvcnRhbExpbmVzLCBbdHJhbnNJZFB1cmNoYXNlLCBsaW5lSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUNvbW1pc3Npb25PcmRlcnModHJhbnNJZDogbnVtYmVyLCBvbmx5R2VuZXJhdGVGb3JEaXJlY3RTZWxsU3VwcGxpZXJzOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUNvbW1pc3Npb25PcmRlcnMsIFt0cmFuc0lkLCBvbmx5R2VuZXJhdGVGb3JEaXJlY3RTZWxsU3VwcGxpZXJzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QW5hbHlzaXNSZXN1bHRzQnlBbmFseXNpc0lkKGFuYWx5c2lzSWQ6IG51bWJlcik6IFByb21pc2U8T3JkZXJDb25maXJtYXRpb25BbmFseXNpc1Jlc3VsdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBbmFseXNpc1Jlc3VsdHNCeUFuYWx5c2lzSWQsIFthbmFseXNpc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbnMoKTogUHJvbWlzZTxBbmFseXplZE9yZGVyQ29uZmlybWF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFuYWx5emVkT3JkZXJDb25maXJtYXRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdG9ja1N0aWNrZXJUZW1wbGF0ZXMoZGF0YTogU3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0cyk6IFByb21pc2U8U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdG9ja1N0aWNrZXJUZW1wbGF0ZXMsIFtkYXRhXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXZhaWxhYmxlU3RvY2tHcm91cGVkQnlXTEJTQnlUcmFuc0lkTGluZU5yKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEF2YWlsYWJsZVN0b2NrW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOciwgW3RyYW5zSWQsIGxpbmVOcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrRm9yU3VwcGxpZXIoZ29vZElkOiBudW1iZXIsIHN1cHBsaWVyUmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckFydGljbGVTdG9ja0ZvcmVjYXN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBdmFpbGFibGVTdG9ja0ZvclN1cHBsaWVyLCBbZ29vZElkLCBzdXBwbGllclJlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb24ocmVxdWVzdDogQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc0FsbG9jYXRpb25IaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzQWxsb2NhdGlvbkhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzQWxsb2NhdGlvbkhpc3RvcnksIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1RvQmVQaWNrZWRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzVG9CZVBpY2tlZEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzVG9CZVBpY2tlZEhpc3RvcnksIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1BpY2tlZEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNQaWNrZWRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1BpY2tlZEhpc3RvcnksIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVHb29kc1BpY2tlZChkZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdDogRGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVHb29kc1BpY2tlZCwgW2RlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlR29vZHNUb0JlUGlja2VkKGRlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdDogRGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlR29vZHNUb0JlUGlja2VkLCBbZGVsZXRlR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zZXRHb29kc1RvQmVQaWNrZWRGb3JTYWxlc09yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldEdvb2RzUGlja2VkRm9yT3JkZXIocmVxdWVzdDogR29vZHNQaWNrZWRSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNQaWNrZWRGb3JPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXNoT25EZWxpdmVyeURhdGEodXVpZDogc3RyaW5nKTogUHJvbWlzZTxDYXNoT25EZWxpdmVyeURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hPbkRlbGl2ZXJ5RGF0YSwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudChyZXF1ZXN0OiBDaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckNhc2hPbkRlbGl2ZXJ5QW1vdW50LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8bnVtYmVyPihOdW1iZXIsIChyZWxhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gICAgfSkuZ2V0VmFsdWUocmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JPcmRlckNvbmZpcm1hdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxzdHJpbmc+KFN0cmluZywgKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24sIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgICB9KS5nZXRWYWx1ZSh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50T3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUHJpbnRPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludE9yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RhcnRPcmRlckNvbmZpcm1hdGlvbkJhdGNoKHJlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RhcnRPcmRlckNvbmZpcm1hdGlvbkJhdGNoLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0RGVsaXZlcnlOb3Rlc0JhdGNoKHJlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RhcnREZWxpdmVyeU5vdGVzQmF0Y2gsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RhcnRJbnZvaWNlQmF0Y2gocmVxdWVzdDogQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5zdGFydEludm9pY2VCYXRjaCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRCYXRjaEpvYlByb2dyZXNzZXNGb3JUaGVVc2VyKCk6IFByb21pc2U8QmF0Y2hKb2JQcm9ncmVzc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRCYXRjaEpvYlByb2dyZXNzZXNGb3JUaGVVc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IEVtYWlsT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogRW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZk9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFBkZk9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZk9yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUGRmSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFByaW50UHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbFB1cmNoYXNlT3JkZXIocmVxdWVzdDogRW1haWxQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxQdXJjaGFzZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZlB1cmNoYXNlT3JkZXIocmVxdWVzdDogUGRmUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZlB1cmNoYXNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVXZWJTZXJ2aWNlT3JkZXIodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZVdlYlNlcnZpY2VPcmRlciwgW3RyYW5zYWN0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5QdXJjaGFzZU9yZGVyQmVTZW5kQnlXZWJzZXJ2aWNlKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2FuUHVyY2hhc2VPcmRlckJlU2VuZEJ5V2Vic2VydmljZSwgW3RyYW5zYWN0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpc1ByaW50SXNEZWZhdWx0U2VuZE1ldGhvZEZvclB1cmNoYXNlT3JkZXIodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5pc1ByaW50SXNEZWZhdWx0U2VuZE1ldGhvZEZvclB1cmNoYXNlT3JkZXIsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlckVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJQcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJEZWZhdWx0U2VuZE1ldGhvZCwgW3JlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIocmVxdWVzdDogUHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzRm9yU2FsZXNPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZUFkdmljZUxpbmVzKGZpbHRlcnM6IFB1cmNoYXNlQWR2aWNlRmlsdGVycywgZ29vZElkPzogbnVtYmVyLCBzaG93TG9hZGVyPzogYm9vbGVhbik6IFByb21pc2U8UHVyY2hhc2VBZHZpY2VMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlQWR2aWNlTGluZXMsIFtmaWx0ZXJzLCBnb29kSWQsIHNob3dMb2FkZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVycyhwdXJjaGFzZUFkdmljZUxpbmVzOiBQdXJjaGFzZUFkdmljZUxpbmVbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnMsIFtwdXJjaGFzZUFkdmljZUxpbmVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxEZWxpdmVyeU5vdGUoZW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0OiBFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbERlbGl2ZXJ5Tm90ZSwgW2VtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGUoZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlLCBbZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZEZWxpdmVyeU5vdGUocGRmRGVsaXZlcnlOb3RlUmVxdWVzdDogUGRmRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmRGVsaXZlcnlOb3RlLCBbcGRmRGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlKHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogUGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZSwgW3BkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50RGVsaXZlcnlOb3RlKHByaW50RGVsaXZlcnlOb3RlUmVxdWVzdDogUHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnREZWxpdmVyeU5vdGUsIFtwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludERlbGl2ZXJ5Tm90ZXMocHJpbnREZWxpdmVyeU5vdGVzUmVxdWVzdDogUHJpbnREZWxpdmVyeU5vdGVzUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50RGVsaXZlcnlOb3RlcywgW3ByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlKHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZSwgW3ByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kLCBbcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVQcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvckludm9pY2UodHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvckludm9pY2UsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEludm9pY2UoZW1haWxJbnZvaWNlUmVxdWVzdDogRW1haWxJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSW52b2ljZSwgW2VtYWlsSW52b2ljZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljSW52b2ljZShlbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY0ludm9pY2UsIFtlbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZJbnZvaWNlKHBkZkludm9pY2VSZXF1ZXN0OiBQZGZJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSW52b2ljZSwgW3BkZkludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNJbnZvaWNlKHBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IFBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljSW52b2ljZSwgW3BkZkhpc3RvcmljSW52b2ljZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEludm9pY2UocHJpbnRJbnZvaWNlUmVxdWVzdDogUHJpbnRJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SW52b2ljZSwgW3ByaW50SW52b2ljZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljSW52b2ljZShwcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IFByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY0ludm9pY2UsIFtwcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZvaWNlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZCwgW3JlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZQb3NSZWNlaXB0KHBkZlBvc1JlY2VpcHRSZXF1ZXN0OiBQZGZQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8UGRmUG9zUmVjZWlwdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZQb3NSZWNlaXB0LCBbcGRmUG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFBvc1JlY2VpcHQocHJpbnRQb3NSZWNlaXB0UmVxdWVzdDogUHJpbnRQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRQb3NSZWNlaXB0LCBbcHJpbnRQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNQb3NSZWNlaXB0KHByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdDogUHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljUG9zUmVjZWlwdCwgW3ByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsUG9zUmVjZWlwdChlbWFpbFBvc1JlY2VpcHRSZXF1ZXN0OiBFbWFpbFBvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbFBvc1JlY2VpcHQsIFtlbWFpbFBvc1JlY2VpcHRSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY1Bvc1JlY2VpcHQoZW1haWxIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0OiBFbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0LCBbZW1haWxIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zUmVjZWlwdEVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zUmVjZWlwdEVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc1JlY2VpcHRQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc1JlY2VpcHRQcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclBvc1JlY2VpcHQodHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclBvc1JlY2VpcHQsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZvaWNlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW52b2ljZVByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFF1b3RhdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRRdW90YXRpb25EZWZhdWx0U2VuZE1ldGhvZCwgW3JlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbFF1b3RhdGlvbihlbWFpbFF1b3RhdGlvblJlcXVlc3Q6IEVtYWlsUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUXVvdGF0aW9uLCBbZW1haWxRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY1F1b3RhdGlvbihlbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogRW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNRdW90YXRpb24sIFtlbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZlF1b3RhdGlvbihwZGZRdW90YXRpb25SZXF1ZXN0OiBQZGZRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZRdW90YXRpb24sIFtwZGZRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNRdW90YXRpb24ocGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBQZGZIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljUXVvdGF0aW9uLCBbcGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRRdW90YXRpb24ocHJpbnRRdW90YXRpb25SZXF1ZXN0OiBQcmludFF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFF1b3RhdGlvbiwgW3ByaW50UXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SGlzdG9yaWNRdW90YXRpb24ocHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3Q6IFByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljUXVvdGF0aW9uLCBbcHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25FbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFF1b3RhdGlvbkVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFF1b3RhdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UXVvdGF0aW9uUHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JRdW90YXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclF1b3RhdGlvbiwgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByaW50ZXJzKCk6IFByb21pc2U8UHJpbnRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxQcmludGVyPihQcmludGVyLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaW50ZXJzKTtcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRQcmludGVyKHJlcG9ydElkOiBudW1iZXIsIHR5cGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0UHJpbnRlciwgW3JlcG9ydElkLCB0eXBlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVuY2llcyhhY3RpdmU6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxDdXJyZW5jeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXJyZW5jaWVzLCBbYWN0aXZlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaFR5cGVzKHR5cGU6IHN0cmluZyk6IFByb21pc2U8Q2FzaFR5cGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q2FzaFR5cGVzLCBbdHlwZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc0dyb3VwcygpOiBQcm9taXNlPFBvc0dyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc0dyb3Vwcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJvamVjdENvZGVzKGRhdGU6IERhdGUpOiBQcm9taXNlPFByb2plY3RDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByb2plY3RDb2RlcywgW2RhdGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxQcm9qZWN0Q29kZXMoKTogUHJvbWlzZTxQcm9qZWN0Q29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBbGxQcm9qZWN0Q29kZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFByb2plY3RDb2RlKHByb2plY3RDb2RlOiBQcm9qZWN0Q29kZSk6IFByb21pc2U8UHJvamVjdENvZGU+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFByb2plY3RDb2RlLCBbcHJvamVjdENvZGVdKTtcbiAgfVxuXG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRDb25kaXRpb25zKG5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRDb25kaXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudENvbmRpdGlvbnMsIFtuYW1lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lU2V0Q2F0ZWdvcmllcygpOiBQcm9taXNlPE9yZGVyTGluZVNldENhdGVnb3J5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZVNldENhdGVnb3JpZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcnZpY2VXaXphcmQoKTogUHJvbWlzZTxTZXJ2aWNlV2l6YXJkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTZXJ2aWNlV2l6YXJkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cHNlcnRTZXJ2aWNlV2l6YXJkKHJlcXVlc3Q6IFNlcnZpY2VXaXphcmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwc2VydFNlcnZpY2VXaXphcmQsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2VydmljZVR5cGVzKCk6IFByb21pc2U8U2VydmljZVR5cGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VydmljZVR5cGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRPcmRlckxpbmVTZXQocmVxdWVzdDogVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRPcmRlckxpbmVTZXQsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlT3JkZXJMaW5lU2V0KHJlcXVlc3Q6IE9yZGVyTGluZVNldERUTyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVwZGF0ZU9yZGVyTGluZVNldCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVPcmRlckxpbmVTZXQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVPcmRlckxpbmVTZXQsIFt1dWlkLCBsaW5lVXVpZCwgY29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEpvaW5lZFRhZ3ModGFibGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBQcm9taXNlPFRhZ1RyZWVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEpvaW5lZFRhZ3MsIFt0YWJsZSwga2V5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWVyZ2VKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nLCB0YWdzOiBUYWdUcmVlSXRlbVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5tZXJnZUpvaW5lZFRhZ3MsIFt0YWJsZSwga2V5LCB0YWdzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGFnc0Z1bGxUcmVlKGNhdGVnb3J5OiBUYWdDYXRlZ29yeSwgaW5jbHVkZVRhZ3M6IGJvb2xlYW4pOiBQcm9taXNlPFRhZ1RyZWVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRhZ3NGdWxsVHJlZSwgW2NhdGVnb3J5LCBpbmNsdWRlVGFnc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uSW5mbyh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9IaXN0b3J5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxUcmFuc2FjdGlvbkluZm9IaXN0b3J5PihUcmFuc2FjdGlvbkluZm9IaXN0b3J5LCAoW3RyYW5zSWQsIGxpbmVOcl0pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25JbmZvLCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gICAgfSkuZ2V0VmFsdWUoW3RyYW5zSWQsIGxpbmVOcl0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmVmVHJhbnNhY3Rpb25zKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8UmVmVHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVmVHJhbnNhY3Rpb25zLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludGVybmFsUGFyYW1ldGVyVmFsdWUocGFyYW06IEludGVybmFsUGFyYW0pOiBQcm9taXNlPEludGVybmFsUGFyYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0U2lubGdlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8SW50ZXJuYWxQYXJhbT4oSW50ZXJuYWxQYXJhbSwgKHBhcmFtOiBJbnRlcm5hbFBhcmFtKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyVmFsdWUsIFtwYXJhbV0pO1xuICAgIH0pLmdldFZhbHVlKHBhcmFtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPYmplY3RDb25maWd1cmF0aW9uKHNjcmVlbkNmZ01vZHVsZTogc3RyaW5nLCBwYXJhbXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgaW5zZXJ0TW9kZT86IGJvb2xlYW4pOiBQcm9taXNlPE9iamVjdENvbmZpZ3VyYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE9iamVjdENvbmZpZ3VyYXRpb24+KE9iamVjdENvbmZpZ3VyYXRpb24sIChzY3JlZW5DZmdNb2R1bGU6IHN0cmluZywgcGFyYW1zPzogc3RyaW5nIHwgc3RyaW5nW10sIGluc2VydE1vZGU/OiBib29sZWFuKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb24sIFtzY3JlZW5DZmdNb2R1bGUsIHBhcmFtcywgaW5zZXJ0TW9kZV0pO1xuICAgIH0pLmdldFZhbHVlKHNjcmVlbkNmZ01vZHVsZSwgcGFyYW1zLCBpbnNlcnRNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY0RvY3VtZW50cyh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSk6IFByb21pc2U8SGlzdG9yaWNSZXBvcnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNEb2N1bWVudHMsIFt0cmFuc0lkLCBkb2N1bWVudENvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZXBvcnRIZWFkZXJzQnlUcmFuc0lkQW5kTGF5b3V0Q29kZSh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSk6IFByb21pc2U8SGlzdG9yaWNSZXBvcnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEhpc3RvcmljUmVwb3J0PihIaXN0b3JpY1JlcG9ydCwgKHRyYW5zSWQ6IG51bWJlciwgZG9jdW1lbnRDb2RlOiBMYXlvdXRDb2RlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlcG9ydEhlYWRlcnNCeVRyYW5zSWRBbmRMYXlvdXRDb2RlLCBbdHJhbnNJZCwgZG9jdW1lbnRDb2RlXSk7XG4gICAgfSkuZ2V0VmFsdWUodHJhbnNJZCwgZG9jdW1lbnRDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cygpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50PihSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5U2FsZXNPcmRlcihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29weVNhbGVzT3JkZXIsIFtjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29weVB1cmNoYXNlT3JkZXIoY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlQdXJjaGFzZU9yZGVyLCBbY29weVRyYW5zYWN0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlTYWxlc1F1b3RhdGlvbihjb3B5VHJhbnNhY3Rpb25SZXF1ZXN0OiBDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29weVNhbGVzUXVvdGF0aW9uLCBbY29weVRyYW5zYWN0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGVzVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIGNhdGFsb2dJZDogbnVtYmVyLCByYXdEYXRhOiBzdHJpbmcsIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGVzVG9UcmFuc2FjdGlvbiwgW3V1aWQsIGNhdGFsb2dJZCwgcmF3RGF0YSwgc2hvd0xvYWRlcl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFBheW1lbnRMaW5lVG9UcmFuc2FjdGlvbihyZXF1ZXN0OiBUcmFuc2FjdGlvbkFkZFBheW1lbnRMaW5lUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFBheW1lbnRMaW5lVG9UcmFuc2FjdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFNhbGVzT3JkZXJzT3ZlcnZpZXcocmVxdWVzdDogVHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdCk6IFByb21pc2U8UGRmVHJhbnNhY3Rpb25TZWFyY2hPdmVydmlld1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFNhbGVzT3JkZXJzT3ZlcnZpZXcsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VuZFBhY2thZ2VJbmZvcm1hdGlvblRvTFNQKHJlcXVlc3Q6IFRyYW5zYWN0aW9uTHNwSW5mb3JtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2VuZFBhY2thZ2VJbmZvcm1hdGlvblRvTFNQLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhY2thZ2VJbmZvcm1hdGlvbih0cmFuc2FjdGlvblVVSUQ6IHN0cmluZywgbGluZVVVSUQ6IHN0cmluZyk6IFByb21pc2U8UGFja2FnZUxTUFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYWNrYWdlSW5mb3JtYXRpb24sIFt0cmFuc2FjdGlvblVVSUQsIGxpbmVVVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9naXN0aWNzUGFydG5lcnMoKTogUHJvbWlzZTxEZWxpdmVyeU1ldGhvZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMb2dpc3RpY3NQYXJ0bmVycyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbm5pbmdTb3VyY2VzKCk6IFByb21pc2U8UGxhbm5pbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhbm5pbmdTb3VyY2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuT3JkZXJzKGZpbHRlck9iamVjdDogUGxhbm5pbmdGaWx0ZXJPYmplY3QsIHBsYW5uaW5nSWQ6IG51bWJlcik6IFByb21pc2U8UGxhbk9yZGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5PcmRlcnMsIFtmaWx0ZXJPYmplY3QsIHBsYW5uaW5nSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuVHJhbnNwb3J0V2VlayhzdGFydERhdGU6IERhdGUsIHBsYW5uaW5nSWQ6IG51bWJlcik6IFByb21pc2U8UGxhbm5pbmdUcmFuc3BvcnRXZWVrW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5UcmFuc3BvcnRXZWVrLCBbc3RhcnREYXRlLCBwbGFubmluZ0lkXSk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQbGFuVHJhbnNwb3J0V2VlayhwbGFuVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVQbGFuVHJhbnNwb3J0V2VlaywgW3BsYW5UcmFuc3BvcnRXZWVrXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZERvY3VtZW50c09mVHJhbnNhY3Rpb24oa2V5OiBzdHJpbmcpOiBQcm9taXNlPENvRG9jdW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubG9hZERvY3VtZW50c09mVHJhbnNhY3Rpb24sIFtrZXldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRG9jdW1lbnRDb250ZW50KGRvY0lkOiBudW1iZXIsIHRodW1ibmFpbDogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RG9jdW1lbnRDb250ZW50LCBbZG9jSWQsIHRodW1ibmFpbF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1lcmdlRG9jdW1lbnRPblRyYW5zYWN0aW9uKGtleTogc3RyaW5nLCBkb2N1bWVudDogQ29Eb2N1bWVudCk6IFByb21pc2U8Q29Eb2N1bWVudD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubWVyZ2VEb2N1bWVudE9uVHJhbnNhY3Rpb24sIFtrZXksIGRvY3VtZW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVEb2N1bWVudCwgW2RvY3VtZW50SWRdKTtcbiAgfVxuXG4gIC8qcHVibGljIGFzeW5jIGxvY2tEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UubG9ja2RvY3VtZW50KGRvY3VtZW50SWQpO1xuICB9Ki9cblxuICBwdWJsaWMgYXN5bmMgaW5zZXJ0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5pbnNlcnRBY3Rpdml0eSwgW2FjdGl2aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVBY3Rpdml0eSwgW2FjdGl2aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tcG9uZW50QWN0aXZpdGllc1dpdGhvdXRSZWxhdGlvbkZpbHRlcmluZyh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvbXBvbmVudEFjdGl2aXRpZXNXaXRob3V0UmVsYXRpb25GaWx0ZXJpbmcsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNBY3Rpdml0aWVzKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNBY3Rpdml0aWVzLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uTWFyZ2luSW5mbyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25NYXJnaW5JbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbk1hcmdpbkluZm8sIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdDogR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zcG9ydE9yZGVycywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckxpbmVzVG9QbGFuKHJlcXVlc3Q6IE9yZGVyTGluZXNUb1BsYW5SZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZXNUb1BsYW4sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdDogT3JkZXJMaW5lc1BsYW5uZWRSZXF1ZXN0KTogUHJvbWlzZTxQbGFuT3JkZXJMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyTGluZXNQbGFubmVkLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVuZG9EZWxpdmVyeUJ5UmVwb3J0SWQocmVwb3J0SWQ6IG51bWJlcik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVuZG9EZWxpdmVyeUJ5UmVwb3J0SWQsIFtyZXBvcnRJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpcmVUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkOiBudW1iZXIsIHNlcXVlbmNlOiBudW1iZXIsIHRyaWdnZXJJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5maXJlVHJpZ2dlciwgW3dvcmtGbG93UHJvY2Vzc0lkLCBzZXF1ZW5jZSwgdHJpZ2dlcklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmlyZUdlbmVyaWNUcmlnZ2VyKHdvcmtGbG93UHJvY2Vzc0lkOiBudW1iZXIsIGdlbmVyaWNUcmFuc2l0aW9uSWQ6IG51bWJlciwgcmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5maXJlR2VuZXJpY1RyaWdnZXIsIFt3b3JrRmxvd1Byb2Nlc3NJZCwgZ2VuZXJpY1RyYW5zaXRpb25JZCwgcmVsYXRpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvY2tUYXNrKGlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tUYXNrLCBbaWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUFjdGl2aXR5LCBbYWN0aXZpdHldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvclB1cmNoYXNlT3JkZXIodXVpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQdXJjaGFzZU9yZGVyLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5PcmRlcih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5PcmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGxhbk9yZGVyLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbnZlcnRDYXNoUmVnaXN0ZXJPcmRlclRvU2FsZXNPcmRlcih1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jb252ZXJ0Q2FzaFJlZ2lzdGVyT3JkZXJUb1NhbGVzT3JkZXIsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TGluZUluZGljZXNCeVRyYW5zSWQodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkxpbmVTZWFyY2hJbmRleFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRMaW5lSW5kaWNlc0J5VHJhbnNJZCwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTYWxlc09yZGVyTGluZXMocmVxdWVzdDogT3JkZXJSZXNlcnZhdGlvblNhbGVzT3JkZXJMaW5lc1JlcXVlc3QpOiBQcm9taXNlPFB1cmNoYXNlUmVzZXJ2YXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2FsZXNPcmRlckxpbmVzLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByb2Nlc3NSZXNlcnZhdGlvbihyZXF1ZXN0OiBQcm9jZXNzT3JkZXJSZXNlcnZhdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcm9jZXNzUmVzZXJ2YXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdW5kb1Jlc2VydmF0aW9uKHRyYW5zSWQ6IG51bWJlciwgbGluZUlkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnVuZG9SZXNlcnZhdGlvbiwgW3RyYW5zSWQsIGxpbmVJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNMQUNhdGVnb3JpZXMoKTogUHJvbWlzZTxTTEFQcm9kdWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNMQUNhdGVnb3JpZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNMQVByb2R1Y3RzKCk6IFByb21pc2U8U0xBUHJvZHVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTTEFQcm9kdWN0cyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGlzdHJpY3RzKCk6IFByb21pc2U8RGlzdHJpY3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGlzdHJpY3RzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRFbXBsb3llZXMoKTogUHJvbWlzZTxSZWxhdGlvbkxpc3RPYmplY3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RW1wbG95ZWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTa2lsbHMoKTogUHJvbWlzZTxTa2lsbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTa2lsbHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFVzZXJHcm91cHMoKTogUHJvbWlzZTxVc2VyR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VXNlckdyb3Vwcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3Mob3JkZXJzVG9CZVJlc3RvcmVkOiBQbGFuT3JkZXJbXSkge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3MsIFtvcmRlcnNUb0JlUmVzdG9yZWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvdXJjZVBsYW5uaW5nKGlucHV0czogUmVzb3VyY2VQbGFubmluZ0lucHV0UGFyYW1zKTogUHJvbWlzZTxQbGFuVGltZXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb3VyY2VQbGFubmluZywgW2lucHV0c10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvRGVsaXZlcnlQbGFubmluZ1JlcXVlc3QoaW5wdXRzOiBEb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0SW5wdXRQYXJhbXMpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0LCBbaW5wdXRzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlEYXRlT3JkZXIodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeURhdGVPcmRlciwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQQVN0YXR1c0Zyb21UcmFuc2FjdGlvbih0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBBU3RhdHVzRnJvbVRyYW5zYWN0aW9uLCBbdHJhbnNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoZWNrQXZhaWxhYmlsaXR5KGlucHV0czogUGxhbm5pbmdTZW5kT3JkZXJzKTogUHJvbWlzZTxQbGFuVGltZXNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hlY2tBdmFpbGFiaWxpdHksIFtpbnB1dHNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnRlcm5hbERlZmF1bHRWYWx1ZShwYXJhbTogSW50ZXJuYWxEZWZhdWx0KTogUHJvbWlzZTxJbnRlcm5hbERlZmF1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludGVybmFsRGVmYXVsdFZhbHVlLCBbcGFyYW1dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFubmVkTGluZXNGb3JFbXBsb3llZShwbGFubmluZ0lkOiBudW1iZXIsIHJlbGF0aW9uSWQ6IG51bWJlciwgZGF0ZTogRGF0ZSk6IFByb21pc2U8UGxhbm5pbmdUcmFuc3BvcnRXZWVrW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5uZWRMaW5lc0ZvckVtcGxveWVlLCBbcGxhbm5pbmdJZCwgcmVsYXRpb25JZCwgZGF0ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRlcm1zQW5kQ29uZGl0aW9uc0Zvcm0odHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGVybXNBbmRDb25kaXRpb25zRm9ybSh0cmFuc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvblBsYW5QZXJpb2RzKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8UGxhblRpbWVzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25QbGFuUGVyaW9kcyh0cmFuc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdXBwbGllclByb2R1Y3RzKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllclByb2R1Y3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdXBwbGllclByb2R1Y3RzKGdvb2RJZCk7XG4gIH1cbn1cbiJdfQ==
1700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN4RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUt2RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUUzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDckYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBRXBFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDMUUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFvQjVFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFDTCxrREFBa0QsRUFDbkQsTUFBTSwwRUFBMEUsQ0FBQztBQUNsRixPQUFPLEVB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QyxDQUFDLENBQUM7UUFDbEcsQ0FBQztLQUFBO0lBRVksMEJBQTBCLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLElBQVU7O1lBQ3hGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1SCxDQUFDO0tBQUE7SUFFWSx5QkFBeUIsQ0FBQyxPQUFlOztZQUNwRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztLQUFBO0lBRVkseUJBQXlCLENBQUMsT0FBZTs7WUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLENBQUM7S0FBQTtJQUVZLG1CQUFtQixDQUFDLE1BQWM7O1lBQzdDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxDQUFDO0tBQUE7Ozs7WUF4MkNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBbk9PLGtDQUFrQztZQUNsQyxtQ0FBbUM7WUFMbkMscUNBQXFDO1lBRTNDLGtEQUFrRDtZQThDbEQsZ0RBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFya2V0aW5nfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xuaW1wb3J0IHtDb3VudHJ5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY291bnRyeS5ibyc7XG5pbXBvcnQge0xhbmd1YWdlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGFuZ3VhZ2UuYm8nO1xuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bSc7XG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvJztcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcHRpb24uYm8nO1xuaW1wb3J0IHtcbiAgR2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc1xufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXBvc3RhbC1jb2RlLXJldHJpZXZhbC1vdXRwdXQtcGFyYW1zJztcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYXJ0aWNsZS13YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHtTdGFuZGFyZFRleHR9IGZyb20gJy4uL21vZGVsL3N0YW5kYXJkLXRleHQnO1xuaW1wb3J0IHtDdXN0b21lckdyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZ3JvdXAuYm8nO1xuaW1wb3J0IHtUaXRsZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RpdGxlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXInO1xuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UHJpY2VMaXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdCc7XG5pbXBvcnQge1ZhdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ZhdCc7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZGlzY291bnQtdHlwZS5lbnVtJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC12aWV3LXJlcXVlc3QnO1xuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb24taG9sZC1jb2RlLmJvJztcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7Q29kZURlc2NyaXB0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29kZS1kZXNjcmlwdGlvbic7XG5pbXBvcnQge1xuICBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItcmVxdWVzdC5ibyc7XG5pbXBvcnQge1xuICBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlY2VpdmUtZ29vZHMtZm9yLXB1cmNoYXNlLW9yZGVyLWNvcnJlY3Rpb24tcmVxdWVzdC5ibyc7XG5pbXBvcnQge0Nhc2hPbkRlbGl2ZXJ5RGF0YX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtb24tZGVsaXZlcnktZGF0YSc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudFJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLWNhc2gtb24tZGVsaXZlcnktYW1vdW50LXJlcXVlc3RcIjtcbmltcG9ydCB7R2V0UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLXBvcnRhbC1saW5lJztcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcG9ydGFsLWxpbmUuYm8nO1xuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wYXltZW50LWxpbmstcmVzdWx0LmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHR9IGZyb20gJy4uL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQnO1xuaW1wb3J0IHtcbiAgUmVzb2x2ZUhlYWRlclBlbmRpbmdSZWFzb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLWhlYWRlci1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWxpbmstc3RhdHVzLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZVxufSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1tdWx0aXBsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3Qtc2luZ2xlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLW9yZGVyLWNvbmZpcm1hdGlvbic7XG5pbXBvcnQge1RyYW5zYWN0aW9uTG9ja1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxvY2stcmVzdWx0LmJvJztcbmltcG9ydCB7UHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm8nO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm8nO1xuaW1wb3J0IHtTYWxlc1BlcnNvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3NhbGVzLXBlcnNvbi5ibyc7XG5pbXBvcnQge1RhZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnJztcbmltcG9ydCB7U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c30gZnJvbSAnQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvc3RvY2stc3RpY2tlcnMtcHJpbnQtbGF5b3V0cy5ibyc7XG5pbXBvcnQge0F2YWlsYWJsZVN0b2NrfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXZhaWxhYmxlLXN0b2NrLmJvJztcbmltcG9ydCB7XG4gIEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLWNvcnJlY3Rpb24tcmVxdWVzdCc7XG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvblByaW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ibyc7XG5pbXBvcnQge0NyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtY2FzaC1yZWdpc3Rlci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlU2FsZXNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHVyY2hhc2VBZHZpY2VGaWx0ZXJzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtYWR2aWNlLWZpbHRlcnMnO1xuaW1wb3J0IHtQdXJjaGFzZUFkdmljZUxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1hZHZpY2UtbGluZS5ibyc7XG5pbXBvcnQge0VtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8taGlzdG9yeS5ibyc7XG5pbXBvcnQge0VtYWlsSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UmVmVHJhbnNhY3Rpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWYtdHJhbnNhY3Rpb24uYm8nO1xuaW1wb3J0IHtUYWdUcmVlSXRlbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ibyc7XG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtcGFyYW0uZW51bSc7XG5pbXBvcnQge0dvb2RzUmVjZWlwdEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1yZWNlaXB0LWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtHb29kc0FsbG9jYXRpb25IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtYWxsb2NhdGlvbi1oaXN0b3J5LmJvJztcbmltcG9ydCB7TGF5b3V0Q29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vbGF5b3V0LWNvZGUuZW51bSc7XG5pbXBvcnQge0hpc3RvcmljUmVwb3J0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvaGlzdG9yaWMtcmVwb3J0LmJvJztcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ibyc7XG5pbXBvcnQge0N1cnJlbmN5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jdXJyZW5jeS5ibyc7XG5pbXBvcnQge1BheW1lbnRDb25kaXRpb259IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtY29uZGl0aW9uLmJvJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZVxufSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1zaW5nbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7V2FyZWhvdXNlU3RvY2tJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLXN0b2NrLWluZm8uYm8nO1xuaW1wb3J0IHtHb29kc1RvQmVQaWNrZWRIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWhpc3RvcnknO1xuaW1wb3J0IHtHb29kc1BpY2tlZEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1waWNrZWQtaGlzdG9yeSc7XG5pbXBvcnQge1BkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1BkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge0VtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbn0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvb2JqZWN0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XG5pbXBvcnQge0dvb2RzUGlja2VkUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLXBpY2tlZC1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtZ29vZHMtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIERlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsZXRlLWdvb2RzLXRvLWJlLXBpY2tlZC1mb3Itb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0Nhc2hEcmF3ZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2Vycy1yZXF1ZXN0JztcbmltcG9ydCB7Q2FzaERyYXdlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2VyLmJvJztcbmltcG9ydCB7UHJpbnRQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxQb3NSZWNlaXB0UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXBvcy1yZWNlaXB0LXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1oaXN0b3JpYy1wb3MtcmVjZWlwdC1yZXF1ZXN0JztcbmltcG9ydCB7VGFnQ2F0ZWdvcnl9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vdGFiLWNhdGVnb3J5LmVudW0nO1xuaW1wb3J0IHtDb3B5VHJhbnNhY3Rpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29weS10cmFuc2FjdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtcXVvdGF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtFbWFpbEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1BkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50UXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1xuICBDaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWhlYWRlci1zY29yaW5nLWNoYW5jZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLWV4cGVjdGVkLXNjb3JpbmctZGF0ZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIENoYW5nZUhlYWRlclJldGFpbFN0YWRpdW1SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtaGVhZGVyLXJldGFpbC1zdGFkaXVtLXJlcXVlc3QnO1xuaW1wb3J0IHtSZXRhaWxTdGFkaXVtfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmV0YWlsLXN0YWRpdW0uYm8nO1xuaW1wb3J0IHtXb3JrRmxvd1N0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dvcmtmbG93LXN0YXR1cy5ibyc7XG5pbXBvcnQge1xuICBDaGFuZ2VMaW5lUXVhbnRpdHlTZWxlY3RlZExpbmVSZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2UtbGluZS1xdWFudGl0eS1zZWxlY3RlZC1saW5lLXJlcXVlc3QnO1xuaW1wb3J0IHtPcmRlckxpbmVTZXRDYXRlZ29yeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtY2F0ZWdvcnkuYm8nO1xuaW1wb3J0IHtPcmRlckxpbmVTZXREVE99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1kdG8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFkZC1vcmRlci1saW5lLXNldC10ZXh0LWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBPcmRlckNvbmZpcm1hdGlvbkFuYWx5c2lzUmVzdWx0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tYW5hbHlzaXMtcmVzdWx0LmJvJztcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcbmltcG9ydCB7UGRmUG9zUmVjZWlwdFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcG9zLXJlY2VpcHQtcmVxdWVzdCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkxzcEluZm9ybWF0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbHNwLWluZm9ybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQYWNrYWdlTFNQfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGFja2FnZS1sc3AuYm8nO1xuaW1wb3J0IHtBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYW5hbHl6ZWQtb3JkZXItY29uZmlybWF0aW9uLmJvJztcbmltcG9ydCB7XG4gIE9yZGVyQ29uZmlybWF0aW9uVHJhbnNhY3Rpb25MaW5rXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1jb25maXJtYXRpb24tdHJhbnNhY3Rpb24tbGluay5ibyc7XG5pbXBvcnQge1BkZlBvc1JlY2VpcHRSZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1wb3MtcmVjZWlwdC1yZXNwb25zZS5ibyc7XG5pbXBvcnQge1Byb2plY3RDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJvamVjdC1jb2RlLmJvJztcbmltcG9ydCB7Q2FzaFR5cGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXR5cGUuYm8nO1xuaW1wb3J0IHtQb3NHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Bvcy1ncm91cC5ibyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkFkZFBheW1lbnRMaW5lUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXBheW1lbnQtbGluZS1yZXF1ZXN0JztcbmltcG9ydCB7XG4gIFBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtDYXVzZUNvZGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2F1c2UtY29kZS5ib1wiO1xuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvdmFsaWRhdGlvbi1yZXN1bHRcIjtcbmltcG9ydCB7XG4gIFBkZlRyYW5zYWN0aW9uU2VhcmNoT3ZlcnZpZXdSZXNwb25zZVxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi10cmFuc2FjdGlvbi1zZWFyY2gtb3ZlcnZpZXctcmVzcG9uc2VcIjtcbmltcG9ydCB7XG4gIFByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7QWN0aXZpdHl9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9hY3Rpdml0eS5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy5ib1wiO1xuaW1wb3J0IHtQbGFubmluZ0ZpbHRlck9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1maWx0ZXItb2JqZWN0LmJvXCI7XG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLmJvXCI7XG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy10cmFuc3BvcnQtd2Vlay5ib1wiO1xuaW1wb3J0IHtHZXRUcmFuc3BvcnRPcmRlcnNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7T3JkZXJMaW5lc1RvUGxhblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtdG8tcGxhbi1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci1saW5lLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTWFyZ2luSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1tYXJnaW4taW5mby5ib1wiO1xuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGEnO1xuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZXMtcGxhbm5lZC1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLXRyYW5zYWN0aW9uLWxpbmUtcmVxdWVzdFwiO1xuaW1wb3J0IHtQcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWRlbGl2ZXJ5LW5vdGVzLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VHb29kUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zZXJ2aWNlLW9yZGVyLXdpdGgtc291cmNlLWdvb2QtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNMQVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLVNMQS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlT3JkZXJOckFuZEFydGljbGVEZXNjcmlwdGlvblJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci13aXRoLXNvdXJjZS1vcmRlcm5yLWFuZC1hcnRpY2xlLWRlc2NyaXB0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NoYW5nZS1zZXJ2aWNlLWhlYWRlci1yZXBvcnQtbWVzc2FnZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1N1cHBsaWVyQXJ0aWNsZVN0b2NrRm9yZWNhc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc3VwcGxpZXItYXJ0aWNsZS1zdG9jay1mb3JlY2FzdFwiO1xuaW1wb3J0IHtDaGFuZ2VMaW5lRGlyZWN0U2VsbFJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLWxpbmUtZGlyZWN0LXNlbGwtcmVxdWVzdFwiO1xuaW1wb3J0IHtTZXJ2aWNlV2l6YXJkfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NlcnZpY2Utd2l6YXJkXCI7XG5pbXBvcnQge1NlcnZpY2VUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NlcnZpY2UtdHlwZVwiO1xuaW1wb3J0IHtBZGRIZWFkZXJJbWFnZVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWRkLWhlYWRlci1pbWFnZS1yZXF1ZXN0XCI7XG5pbXBvcnQge0RlbGV0ZUhlYWRlckltYWdlUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxldGUtaGVhZGVyLWltYWdlLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJDYXVzZUNvZGVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyY2F1c2UtY29kZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBDaGFuZ2VTZXJ2aWNlSGVhZGVyUHJpb3JpdHlSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXByaW9yaXR5LXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJFbnRyeVR5cGVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLWVudHJ5LXR5cGUtcmVxdWVzdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVTZWFyY2hJbmRleH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLXNlYXJjaC1pbmRleC5ib1wiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU2VydmljZUhlYWRlcldpemFyZERhdGFSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2hhbmdlLXNlcnZpY2UtaGVhZGVyLXdpemFyZC1kYXRhLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIENoYW5nZVNlcnZpY2VIZWFkZXJTZXJ2aWNlVHlwZVJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jaGFuZ2Utc2VydmljZS1oZWFkZXItc2VydmljZS10eXBlLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIE9yZGVyUmVzZXJ2YXRpb25TYWxlc09yZGVyTGluZXNSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItcmVzZXJ2YXRpb24tc2FsZXMtb3JkZXItbGluZXMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtQdXJjaGFzZVJlc2VydmF0aW9ufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLXJlc2VydmF0aW9uLmJvXCI7XG5pbXBvcnQge1xuICBQcm9jZXNzT3JkZXJSZXNlcnZhdGlvblJlcXVlc3Rcbn0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcm9jZXNzLW9yZGVyLXJlc2VydmF0aW9uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7RGlzdHJpY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGlzdHJpY3QuYm9cIjtcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvXCI7XG5pbXBvcnQge1NraWxsfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3NraWxsLmJvXCI7XG5pbXBvcnQge1VzZXJHcm91cH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC91c2VyLWdyb3VwLmJvXCI7XG5pbXBvcnQge1Jlc291cmNlUGxhbm5pbmdJbnB1dFBhcmFtc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvdXJjZS1wbGFubmluZy1pbnB1dC1wYXJhbXMuYm9cIjtcbmltcG9ydCB7XG4gIERvRGVsaXZlcnlQbGFubmluZ1JlcXVlc3RJbnB1dFBhcmFtc1xufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RvLWRlbGl2ZXJ5LXBsYW5uaW5nLXJlcXVlc3QtaW5wdXQtcGFyYW1zLmJvXCI7XG5pbXBvcnQge1BsYW5UaW1lc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLXRpbWVzLmJvXCI7XG5pbXBvcnQge0ludGVybmFsRGVmYXVsdH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtZGVmYXVsdC5lbnVtXCI7XG5pbXBvcnQge1BsYW5uaW5nU2VuZE9yZGVyc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFubmluZy1zZW5kLW9yZGVycy5ib1wiO1xuaW1wb3J0IHtEb21haW5OYW1lfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9kb21haW4tbmFtZS5lbnVtXCI7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3QnO1xuaW1wb3J0IHtCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYmF0Y2gtdHJhbnNhY3Rpb24tc2VuZGluZy1yZXF1ZXN0XCI7XG5pbXBvcnQge0JhdGNoSm9iUHJvZ3Jlc3N9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9iYXRjaC1qb2ItcHJvZ3Jlc3MuYm8nO1xuaW1wb3J0IHtTTEFQcm9kdWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL1NMQS1wcm9kdWN0XCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkxpbmVDb3B5UmVxdWVzdCB9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWNvcHktcmVxdWVzdC5ibyc7XG5pbXBvcnQge1N1cHBsaWVyUHJvZHVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1wcm9kdWN0LmJvXCI7XG5pbXBvcnQge1ByaW50UGFja2FnZVN0aWNrZXJSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXBhY2thZ2Utc3RpY2tlci1yZXF1ZXN0LmJvXCI7XG5pbXBvcnQge1BkZlBhY2thZ2VTdGlja2VyUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtcGFja2FnZS1zdGlja2VyLXJlcXVlc3QuYm9cIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2Uge1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uSW5pdGlhbGl6ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5sZ2VQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBUcmFuc2FjdGlvblNlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuY29ubmVjdCgpO1xuICAgIHRoaXMuY29ubmVjdGlvbkluaXRpYWxpemVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvZ091dCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERvY3VtZW50Q29udGVudChkb2NJZDogbnVtYmVyLCB0aHVtYm5haWw6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+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+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlciwgW3V1aWQsIGxpbmVVdWlkLCBhcnRpY2xlTnVtYmVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVSZWZlcmVuY2UsIFt1dWlkLCBsaW5lVXVpZCwgcmVmZXJlbmNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlcih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGFydE5yOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VMaW5lU3VwcGxpZXJBcnRpY2xlTnVtYmVyLCBbdXVpZCwgbGluZVV1aWQsIGFydE5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZ29vZERlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24sIFt1dWlkLCBsaW5lVXVpZCwgZ29vZERlc2NyaXB0aW9uXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29sbGVjdGlvbkNvZGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSwgW3V1aWQsIGxpbmVVdWlkLCBjb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSwgW3V1aWQsIGRlZmluaXRpdmVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVsaXZlcnlBZGRyZXNzLCBbdXVpZCwgbmV3TmF3TnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcywgW3V1aWQsIG5ld05hd05yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUsIFt1dWlkLCBkYXRlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGVEZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlRGVmaW5pdGl2ZSwgW3V1aWQsIGRlZmluaXRpdmVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbWFyayh1dWlkOiBzdHJpbmcsIHJlbWFyazogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmssIFt1dWlkLCByZW1hcmtdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWZlcmVuY2UsIFt1dWlkLCByZWZlcmVuY2VdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlLCBbdXVpZCwgcmVmZXJlbmNlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdFBlcmNlbnRhZ2UodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlLCBbdXVpZCwgYW1vdW50XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCwgW3V1aWQsIGFtb3VudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJlZmVycmVkRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSwgb3B0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSwgW3V1aWQsIGRhdGUsIG9wdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlUaW1lKHV1aWQ6IHN0cmluZywgdGltZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlUaW1lLCBbdXVpZCwgdGltZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QsIFt1dWlkLCBtZXRob2RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh1dWlkOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnMsIFt1dWlkLCBvcHRpb25zXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnkodXVpZDogc3RyaW5nLCBhbGxvd1BhcnRpYWw6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSwgW3V1aWQsIGFsbG93UGFydGlhbF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQnJhbmNoKHV1aWQ6IHN0cmluZywgYnJhbmNoOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCwgW3V1aWQsIGJyYW5jaF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXModXVpZDogc3RyaW5nLCBjb2Rlczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk9uSG9sZENvZGVzLCBbdXVpZCwgY29kZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpdmlkZUV2ZW5seSh1dWlkOiBzdHJpbmcsIGRpdmlkZUV2ZW5seTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGl2aWRlRXZlbmx5LCBbdXVpZCwgZGl2aWRlRXZlbmx5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BbW91bnRUb1NldHRsZSh1dWlkOiBzdHJpbmcsIGFtb3VudFRvU2V0dGxlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFtb3VudFRvU2V0dGxlLCBbdXVpZCwgYW1vdW50VG9TZXR0bGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCh1dWlkOiBzdHJpbmcsIHByaWNlS2luZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmljZUtpbmQsIFt1dWlkLCBwcmljZUtpbmRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFkbUNvb3JkaW5hdG9yKHV1aWQ6IHN0cmluZywgcmVsYXRpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IsIFt1dWlkLCByZWxhdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQ3VycmVuY3kodXVpZDogc3RyaW5nLCBjdXJyZW5jeUNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQ3VycmVuY3ksIFt1dWlkLCBjdXJyZW5jeUNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblR5cGUodXVpZDogc3RyaW5nLCB0cmFuc2FjdGlvblR5cGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uVHlwZSwgW3V1aWQsIHRyYW5zYWN0aW9uVHlwZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJvamVjdENvZGUodXVpZDogc3RyaW5nLCBwcm9qZWN0Q29kZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25Qcm9qZWN0Q29kZSwgW3V1aWQsIHByb2plY3RDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXltZW50Q29uZGl0aW9uKHV1aWQ6IHN0cmluZywgY29uZGl0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBheW1lbnRDb25kaXRpb24sIFt1dWlkLCBjb25kaXRpb25dKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkhhbmRsZWRCeSh1dWlkOiBzdHJpbmcsIGhhbmRsZWRCeTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25IYW5kbGVkQnksIFt1dWlkLCBoYW5kbGVkQnldKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZyh1dWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nLCBbdXVpZCwgY29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQodXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCwgW3V1aWQsIHR5cGUsIGFtb3VudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclNjb3JpbmdDaGFuY2UocmVxdWVzdDogQ2hhbmdlSGVhZGVyU2NvcmluZ0NoYW5jZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJTY29yaW5nQ2hhbmNlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckV4cGVjdGVkU2NvcmluZ0RhdGUocmVxdWVzdDogQ2hhbmdlSGVhZGVyRXhwZWN0ZWRTY29yaW5nRGF0ZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJFeHBlY3RlZFNjb3JpbmdEYXRlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclJldGFpbFN0YWRpdW0ocmVxdWVzdDogQ2hhbmdlSGVhZGVyUmV0YWlsU3RhZGl1bVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJSZXRhaWxTdGFkaXVtLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckF1dG9SZWNhbGN1bGF0ZURlcG9zaXQodXVpZDogc3RyaW5nLCBuZXdBdXRvUmVjYWxjdWxhdGVEZXBvc2l0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyQXV0b1JlY2FsY3VsYXRlRGVwb3NpdCwgW3V1aWQsIG5ld0F1dG9SZWNhbGN1bGF0ZURlcG9zaXRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJVc2VEZXBvc2l0UnVsZSh1dWlkOiBzdHJpbmcsIG5ld1VzZURlcG9zaXRSdWxlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVXNlRGVwb3NpdFJ1bGUsIFt1dWlkLCBuZXdVc2VEZXBvc2l0UnVsZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJSZXBvcnRNZXNzYWdlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJDYXVzZUNvZGUocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlckNhdXNlQ29kZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyQ2F1c2VDb2RlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJTZXJ2aWNlVHlwZShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyU2VydmljZVR5cGVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlclNlcnZpY2VUeXBlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhKHJlcXVlc3Q6IENoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVNlcnZpY2VIZWFkZXJXaXphcmREYXRhLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJQcmlvcml0eShyZXF1ZXN0OiBDaGFuZ2VTZXJ2aWNlSGVhZGVyUHJpb3JpdHlSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlU2VydmljZUhlYWRlclByaW9yaXR5LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVNlcnZpY2VIZWFkZXJFbnRyeVR5cGUocmVxdWVzdDogQ2hhbmdlU2VydmljZUhlYWRlckVudHJ5VHlwZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VTZXJ2aWNlSGVhZGVyRW50cnlUeXBlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEhlYWRlckltYWdlKHJlcXVlc3Q6IEFkZEhlYWRlckltYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZEhlYWRlckltYWdlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUhlYWRlckltYWdlKHJlcXVlc3Q6IERlbGV0ZUhlYWRlckltYWdlUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUhlYWRlckltYWdlLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBwYXltZW50TWV0aG9kQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVQYXltZW50TGlua1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlLCBbdXVpZCwgYW1vdW50LCBwYXltZW50TWV0aG9kQ29kZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TGlua1N0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGF5bWVudExpbmtTdGF0dXMsIFtwYXltZW50TGlua1VVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc1JlY2VpcHRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUmVjZWlwdEhpc3Rvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUmVjZWlwdEhpc3RvcnksIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFBhY2thZ2VTdGlja2VyKHByaW50UmVxdWVzdDogUHJpbnRQYWNrYWdlU3RpY2tlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UGFja2FnZVN0aWNrZXIsIFtwcmludFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZQYWNrYWdlU3RpY2tlcihwZGZSZXF1ZXN0OiBQZGZQYWNrYWdlU3RpY2tlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZlBhY2thZ2VTdGlja2VyLCBbcGRmUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdDogR2V0UHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxQdXJjaGFzZVBvcnRhbExpbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzKHB1cmNoYXNlUG9ydGFsTGluZTogUHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzLCBbcHVyY2hhc2VQb3J0YWxMaW5lXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbihwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uOiBHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uLCBbcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbl0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpbmtUcmFuc2FjdGlvblRvT3JkZXJDb25maXJtYXRpb24oYW5hbHlzaXNJZDogbnVtYmVyLCBsaW5lczogT3JkZXJDb25maXJtYXRpb25UcmFuc2FjdGlvbkxpbmtbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubGlua1RyYW5zYWN0aW9uVG9PcmRlckNvbmZpcm1hdGlvbiwgW2FuYWx5c2lzSWQsIGxpbmVzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrUHVyY2hhc2VQb3J0YWxMaW5lcywgW3RyYW5zSWRQdXJjaGFzZSwgbGluZUlkXSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQ6IG51bWJlciwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVyczogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzLCBbdHJhbnNJZCwgb25seUdlbmVyYXRlRm9yRGlyZWN0U2VsbFN1cHBsaWVyc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuYWx5c2lzUmVzdWx0c0J5QW5hbHlzaXNJZChhbmFseXNpc0lkOiBudW1iZXIpOiBQcm9taXNlPE9yZGVyQ29uZmlybWF0aW9uQW5hbHlzaXNSZXN1bHRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QW5hbHlzaXNSZXN1bHRzQnlBbmFseXNpc0lkLCBbYW5hbHlzaXNJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFuYWx5emVkT3JkZXJDb25maXJtYXRpb25zKCk6IFByb21pc2U8QW5hbHl6ZWRPcmRlckNvbmZpcm1hdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBbmFseXplZE9yZGVyQ29uZmlybWF0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzKGRhdGE6IFN0b2NrU3RpY2tlcnNQcmludExheW91dHMpOiBQcm9taXNlPFN0b2NrU3RpY2tlcnNQcmludExheW91dHNbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzLCBbZGF0YV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxBdmFpbGFibGVTdG9ja1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIsIFt0cmFuc0lkLCBsaW5lTnJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdmFpbGFibGVTdG9ja0ZvclN1cHBsaWVyKGdvb2RJZDogbnVtYmVyLCBzdXBwbGllclJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJBcnRpY2xlU3RvY2tGb3JlY2FzdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXZhaWxhYmxlU3RvY2tGb3JTdXBwbGllciwgW2dvb2RJZCwgc3VwcGxpZXJSZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIocmVxdWVzdDogQWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3Q6IEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNBbGxvY2F0aW9uSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc0FsbG9jYXRpb25IaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc0FsbG9jYXRpb25IaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNUb0JlUGlja2VkSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1RvQmVQaWNrZWRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1RvQmVQaWNrZWRIaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNQaWNrZWRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUGlja2VkSGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNQaWNrZWRIaXN0b3J5LCBbdHJhbnNJZCwgbGluZU5yXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlR29vZHNQaWNrZWQoZGVsZXRlR29vZHNQaWNrZWRGb3JPcmRlclJlcXVlc3Q6IERlbGV0ZUdvb2RzUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlR29vZHNQaWNrZWQsIFtkZWxldGVHb29kc1BpY2tlZEZvck9yZGVyUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUdvb2RzVG9CZVBpY2tlZChkZWxldGVHb29kc1RvQmVQaWNrZWRGb3JPcmRlclJlcXVlc3Q6IERlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZUdvb2RzVG9CZVBpY2tlZCwgW2RlbGV0ZUdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldEdvb2RzVG9CZVBpY2tlZEZvclNhbGVzT3JkZXIocmVxdWVzdDogR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRHb29kc1BpY2tlZEZvck9yZGVyKHJlcXVlc3Q6IEdvb2RzUGlja2VkUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldEdvb2RzUGlja2VkRm9yT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJDb25maXJtYXRpb25FbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uRW1haWxMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaE9uRGVsaXZlcnlEYXRhKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Q2FzaE9uRGVsaXZlcnlEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoT25EZWxpdmVyeURhdGEsIFt1dWlkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnQocmVxdWVzdDogQ2hhbmdlSGVhZGVyQ2FzaE9uRGVsaXZlcnlBbW91bnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJDYXNoT25EZWxpdmVyeUFtb3VudCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvblByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T3JkZXJDb25maXJtYXRpb25QcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPG51bWJlcj4oTnVtYmVyLCAocmVsYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kLCBbcmVsYXRpb25JZF0pO1xuICAgIH0pLmdldFZhbHVlKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8c3RyaW5nPihTdHJpbmcsICh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvck9yZGVyQ29uZmlybWF0aW9uLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gICAgfSkuZ2V0VmFsdWUodHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0T3JkZXJDb25maXJtYXRpb25CYXRjaChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0YXJ0T3JkZXJDb25maXJtYXRpb25CYXRjaCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydERlbGl2ZXJ5Tm90ZXNCYXRjaChyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnN0YXJ0RGVsaXZlcnlOb3Rlc0JhdGNoLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0SW52b2ljZUJhdGNoKHJlcXVlc3Q6IEJhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2Uuc3RhcnRJbnZvaWNlQmF0Y2gsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QmF0Y2hKb2JQcm9ncmVzc2VzRm9yVGhlVXNlcigpOiBQcm9taXNlPEJhdGNoSm9iUHJvZ3Jlc3NbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QmF0Y2hKb2JQcm9ncmVzc2VzRm9yVGhlVXNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsT3JkZXJDb25maXJtYXRpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBQZGZPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZPcmRlckNvbmZpcm1hdGlvbiwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFBkZkhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFB1cmNoYXNlT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IEVtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsUHVyY2hhc2VPcmRlciwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFBkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZQdXJjaGFzZU9yZGVyLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlV2ViU2VydmljZU9yZGVyKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVXZWJTZXJ2aWNlT3JkZXIsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuUHVyY2hhc2VPcmRlckJlU2VuZEJ5V2Vic2VydmljZSh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNhblB1cmNoYXNlT3JkZXJCZVNlbmRCeVdlYnNlcnZpY2UsIFt0cmFuc2FjdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNQcmludElzRGVmYXVsdFNlbmRNZXRob2RGb3JQdXJjaGFzZU9yZGVyKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuaXNQcmludElzRGVmYXVsdFNlbmRNZXRob2RGb3JQdXJjaGFzZU9yZGVyLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnNGb3JTYWxlc09yZGVyKHJlcXVlc3Q6IFByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VBZHZpY2VMaW5lcyhmaWx0ZXJzOiBQdXJjaGFzZUFkdmljZUZpbHRlcnMsIGdvb2RJZD86IG51bWJlciwgc2hvd0xvYWRlcj86IGJvb2xlYW4pOiBQcm9taXNlPFB1cmNoYXNlQWR2aWNlTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZUFkdmljZUxpbmVzLCBbZmlsdGVycywgZ29vZElkLCBzaG93TG9hZGVyXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnMocHVyY2hhc2VBZHZpY2VMaW5lczogUHVyY2hhc2VBZHZpY2VMaW5lW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzLCBbcHVyY2hhc2VBZHZpY2VMaW5lc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsRGVsaXZlcnlOb3RlKGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxEZWxpdmVyeU5vdGUsIFtlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlKGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZSwgW2VtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkRlbGl2ZXJ5Tm90ZSwgW3BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNEZWxpdmVyeU5vdGUsIFtwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludERlbGl2ZXJ5Tm90ZShwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Q29Eb2N1bWVudCB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50RGVsaXZlcnlOb3RlLCBbcHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnREZWxpdmVyeU5vdGVzKHByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3Rlc1JlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludERlbGl2ZXJ5Tm90ZXMsIFtwcmludERlbGl2ZXJ5Tm90ZXNSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogUHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGUsIFtwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZCwgW3JlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZUVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxJbnZvaWNlKGVtYWlsSW52b2ljZVJlcXVlc3Q6IEVtYWlsSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEludm9pY2UsIFtlbWFpbEludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY0ludm9pY2UoZW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBFbWFpbEhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNJbnZvaWNlLCBbZW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdDogUGRmSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkludm9pY2UsIFtwZGZJbnZvaWNlUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljSW52b2ljZShwZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBQZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY0ludm9pY2UsIFtwZGZIaXN0b3JpY0ludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRJbnZvaWNlKHByaW50SW52b2ljZVJlcXVlc3Q6IFByaW50SW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEludm9pY2UsIFtwcmludEludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY0ludm9pY2UocHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0OiBQcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SGlzdG9yaWNJbnZvaWNlLCBbcHJpbnRIaXN0b3JpY0ludm9pY2VSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmUG9zUmVjZWlwdChwZGZQb3NSZWNlaXB0UmVxdWVzdDogUGRmUG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPFBkZlBvc1JlY2VpcHRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUG9zUmVjZWlwdCwgW3BkZlBvc1JlY2VpcHRSZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRQb3NSZWNlaXB0KHByaW50UG9zUmVjZWlwdFJlcXVlc3Q6IFByaW50UG9zUmVjZWlwdFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UG9zUmVjZWlwdCwgW3ByaW50UG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljUG9zUmVjZWlwdChwcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3Q6IFByaW50SGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY1Bvc1JlY2VpcHQsIFtwcmludEhpc3RvcmljUG9zUmVjZWlwdFJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbFBvc1JlY2VpcHQoZW1haWxQb3NSZWNlaXB0UmVxdWVzdDogRW1haWxQb3NSZWNlaXB0UmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxQb3NSZWNlaXB0LCBbZW1haWxQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0KGVtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdDogRW1haWxIaXN0b3JpY1Bvc1JlY2VpcHRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljUG9zUmVjZWlwdCwgW2VtYWlsSGlzdG9yaWNQb3NSZWNlaXB0UmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBvc1JlY2VpcHRFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBvc1JlY2VpcHRFbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3NSZWNlaXB0UHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NSZWNlaXB0UHJpbnRMYXlvdXRzLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0KHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQb3NSZWNlaXB0LCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW52b2ljZUVtYWlsTGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEludm9pY2VQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludm9pY2VQcmludExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UXVvdGF0aW9uRGVmYXVsdFNlbmRNZXRob2QsIFtyZWxhdGlvbklkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxRdW90YXRpb24oZW1haWxRdW90YXRpb25SZXF1ZXN0OiBFbWFpbFF1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbFF1b3RhdGlvbiwgW2VtYWlsUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNRdW90YXRpb24oZW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljUXVvdGF0aW9uLCBbZW1haWxIaXN0b3JpY1F1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwZGZRdW90YXRpb24ocGRmUXVvdGF0aW9uUmVxdWVzdDogUGRmUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUXVvdGF0aW9uLCBbcGRmUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljUXVvdGF0aW9uKHBkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdDogUGRmSGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZIaXN0b3JpY1F1b3RhdGlvbiwgW3BkZkhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UXVvdGF0aW9uKHByaW50UXVvdGF0aW9uUmVxdWVzdDogUHJpbnRRdW90YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50IHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRRdW90YXRpb24sIFtwcmludFF1b3RhdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljUXVvdGF0aW9uKHByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0OiBQcmludEhpc3RvcmljUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY1F1b3RhdGlvbiwgW3ByaW50SGlzdG9yaWNRdW90YXRpb25SZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UXVvdGF0aW9uRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRRdW90YXRpb25FbWFpbExheW91dHMsIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRRdW90YXRpb25QcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFF1b3RhdGlvblByaW50TGF5b3V0cywgW3RyYW5zYWN0aW9uVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUXVvdGF0aW9uKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JRdW90YXRpb24sIFt0cmFuc2FjdGlvblVVSURdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmludGVycygpOiBQcm9taXNlPFByaW50ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpbnRlcj4oUHJpbnRlciwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmludGVycyk7XG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0UHJpbnRlcihyZXBvcnRJZDogbnVtYmVyLCB0eXBlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdFByaW50ZXIsIFtyZXBvcnRJZCwgdHlwZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1cnJlbmNpZXMoYWN0aXZlOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8Q3VycmVuY3lbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVuY2llcywgW2FjdGl2ZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hUeXBlcyh0eXBlOiBzdHJpbmcpOiBQcm9taXNlPENhc2hUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hUeXBlcywgW3R5cGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3NHcm91cHMoKTogUHJvbWlzZTxQb3NHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3NHcm91cHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb2plY3RDb2RlcyhkYXRlOiBEYXRlKTogUHJvbWlzZTxQcm9qZWN0Q29kZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcm9qZWN0Q29kZXMsIFtkYXRlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsUHJvamVjdENvZGVzKCk6IFByb21pc2U8UHJvamVjdENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QWxsUHJvamVjdENvZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRQcm9qZWN0Q29kZShwcm9qZWN0Q29kZTogUHJvamVjdENvZGUpOiBQcm9taXNlPFByb2plY3RDb2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRQcm9qZWN0Q29kZSwgW3Byb2plY3RDb2RlXSk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXltZW50Q29uZGl0aW9ucyhuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50Q29uZGl0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRDb25kaXRpb25zLCBbbmFtZV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZVNldENhdGVnb3JpZXMoKTogUHJvbWlzZTxPcmRlckxpbmVTZXRDYXRlZ29yeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVTZXRDYXRlZ29yaWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXJ2aWNlV2l6YXJkKCk6IFByb21pc2U8U2VydmljZVdpemFyZD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VydmljZVdpemFyZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBzZXJ0U2VydmljZVdpemFyZChyZXF1ZXN0OiBTZXJ2aWNlV2l6YXJkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cHNlcnRTZXJ2aWNlV2l6YXJkLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcnZpY2VUeXBlcygpOiBQcm9taXNlPFNlcnZpY2VUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNlcnZpY2VUeXBlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkT3JkZXJMaW5lU2V0KHJlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkT3JkZXJMaW5lU2V0VGV4dExpbmVSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkT3JkZXJMaW5lU2V0LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZU9yZGVyTGluZVNldChyZXF1ZXN0OiBPcmRlckxpbmVTZXREVE8pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVPcmRlckxpbmVTZXQsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lT3JkZXJMaW5lU2V0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lT3JkZXJMaW5lU2V0LCBbdXVpZCwgbGluZVV1aWQsIGNvZGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRKb2luZWRUYWdzLCBbdGFibGUsIGtleV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1lcmdlSm9pbmVkVGFncyh0YWJsZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdGFnczogVGFnVHJlZUl0ZW1bXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UubWVyZ2VKb2luZWRUYWdzLCBbdGFibGUsIGtleSwgdGFnc10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRhZ3NGdWxsVHJlZShjYXRlZ29yeTogVGFnQ2F0ZWdvcnksIGluY2x1ZGVUYWdzOiBib29sZWFuKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUYWdzRnVsbFRyZWUsIFtjYXRlZ29yeSwgaW5jbHVkZVRhZ3NdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkluZm8odHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvSGlzdG9yeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VHJhbnNhY3Rpb25JbmZvSGlzdG9yeT4oVHJhbnNhY3Rpb25JbmZvSGlzdG9yeSwgKFt0cmFuc0lkLCBsaW5lTnJdKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uSW5mbywgW3RyYW5zSWQsIGxpbmVOcl0pO1xuICAgIH0pLmdldFZhbHVlKFt0cmFuc0lkLCBsaW5lTnJdKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFJlZlRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlZlRyYW5zYWN0aW9ucywgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlKHBhcmFtOiBJbnRlcm5hbFBhcmFtKTogUHJvbWlzZTxJbnRlcm5hbFBhcmFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEludGVybmFsUGFyYW0+KEludGVybmFsUGFyYW0sIChwYXJhbTogSW50ZXJuYWxQYXJhbSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlLCBbcGFyYW1dKTtcbiAgICB9KS5nZXRWYWx1ZShwYXJhbSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T2JqZWN0Q29uZmlndXJhdGlvbihzY3JlZW5DZmdNb2R1bGU6IHN0cmluZywgcGFyYW1zPzogc3RyaW5nIHwgc3RyaW5nW10sIGluc2VydE1vZGU/OiBib29sZWFuKTogUHJvbWlzZTxPYmplY3RDb25maWd1cmF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxPYmplY3RDb25maWd1cmF0aW9uPihPYmplY3RDb25maWd1cmF0aW9uLCAoc2NyZWVuQ2ZnTW9kdWxlOiBzdHJpbmcsIHBhcmFtcz86IHN0cmluZyB8IHN0cmluZ1tdLCBpbnNlcnRNb2RlPzogYm9vbGVhbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uLCBbc2NyZWVuQ2ZnTW9kdWxlLCBwYXJhbXMsIGluc2VydE1vZGVdKTtcbiAgICB9KS5nZXRWYWx1ZShzY3JlZW5DZmdNb2R1bGUsIHBhcmFtcywgaW5zZXJ0TW9kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SGlzdG9yaWNEb2N1bWVudHModHJhbnNJZDogbnVtYmVyLCBkb2N1bWVudENvZGU6IExheW91dENvZGUpOiBQcm9taXNlPEhpc3RvcmljUmVwb3J0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljRG9jdW1lbnRzLCBbdHJhbnNJZCwgZG9jdW1lbnRDb2RlXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UmVwb3J0SGVhZGVyc0J5VHJhbnNJZEFuZExheW91dENvZGUodHJhbnNJZDogbnVtYmVyLCBkb2N1bWVudENvZGU6IExheW91dENvZGUpOiBQcm9taXNlPEhpc3RvcmljUmVwb3J0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxIaXN0b3JpY1JlcG9ydD4oSGlzdG9yaWNSZXBvcnQsICh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZXBvcnRIZWFkZXJzQnlUcmFuc0lkQW5kTGF5b3V0Q29kZSwgW3RyYW5zSWQsIGRvY3VtZW50Q29kZV0pO1xuICAgIH0pLmdldFZhbHVlKHRyYW5zSWQsIGRvY3VtZW50Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGFja2FnZVN0aWNrZXJQcmludExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludD4oUmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnQsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGFja2FnZVN0aWNrZXJQcmludExheW91dHMpO1xuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29weVNhbGVzT3JkZXIoY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlTYWxlc09yZGVyLCBbY29weVRyYW5zYWN0aW9uUmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNvcHlQdXJjaGFzZU9yZGVyKGNvcHlUcmFuc2FjdGlvblJlcXVlc3Q6IENvcHlUcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5jb3B5UHVyY2hhc2VPcmRlciwgW2NvcHlUcmFuc2FjdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb3B5U2FsZXNRdW90YXRpb24oY29weVRyYW5zYWN0aW9uUmVxdWVzdDogQ29weVRyYW5zYWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNvcHlTYWxlc1F1b3RhdGlvbiwgW2NvcHlUcmFuc2FjdGlvblJlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlc1RvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCBjYXRhbG9nSWQ6IG51bWJlciwgcmF3RGF0YTogc3RyaW5nLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlc1RvVHJhbnNhY3Rpb24sIFt1dWlkLCBjYXRhbG9nSWQsIHJhd0RhdGEsIHNob3dMb2FkZXJdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRQYXltZW50TGluZVRvVHJhbnNhY3Rpb24ocmVxdWVzdDogVHJhbnNhY3Rpb25BZGRQYXltZW50TGluZVJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRQYXltZW50TGluZVRvVHJhbnNhY3Rpb24sIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRTYWxlc09yZGVyc092ZXJ2aWV3KHJlcXVlc3Q6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QpOiBQcm9taXNlPFBkZlRyYW5zYWN0aW9uU2VhcmNoT3ZlcnZpZXdSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRTYWxlc09yZGVyc092ZXJ2aWV3LCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbmRQYWNrYWdlSW5mb3JtYXRpb25Ub0xTUChyZXF1ZXN0OiBUcmFuc2FjdGlvbkxzcEluZm9ybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNlbmRQYWNrYWdlSW5mb3JtYXRpb25Ub0xTUCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYWNrYWdlSW5mb3JtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcsIGxpbmVVVUlEOiBzdHJpbmcpOiBQcm9taXNlPFBhY2thZ2VMU1BbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UGFja2FnZUluZm9ybWF0aW9uLCBbdHJhbnNhY3Rpb25VVUlELCBsaW5lVVVJRF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExvZ2lzdGljc1BhcnRuZXJzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TG9naXN0aWNzUGFydG5lcnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBsYW5uaW5nU291cmNlcygpOiBQcm9taXNlPFBsYW5uaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5uaW5nU291cmNlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbk9yZGVycyhmaWx0ZXJPYmplY3Q6IFBsYW5uaW5nRmlsdGVyT2JqZWN0LCBwbGFubmluZ0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5PcmRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFuT3JkZXJzLCBbZmlsdGVyT2JqZWN0LCBwbGFubmluZ0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhblRyYW5zcG9ydFdlZWsoc3RhcnREYXRlOiBEYXRlLCBwbGFubmluZ0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFuVHJhbnNwb3J0V2VlaywgW3N0YXJ0RGF0ZSwgcGxhbm5pbmdJZF0pO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUGxhblRyYW5zcG9ydFdlZWsocGxhblRyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vlayk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUGxhblRyYW5zcG9ydFdlZWssIFtwbGFuVHJhbnNwb3J0V2Vla10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWREb2N1bWVudHNPZlRyYW5zYWN0aW9uKGtleTogc3RyaW5nKTogUHJvbWlzZTxDb0RvY3VtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvYWREb2N1bWVudHNPZlRyYW5zYWN0aW9uLCBba2V5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZERvY3VtZW50Q29udGVudChkb2NJZDogbnVtYmVyLCB0aHVtYm5haWw6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudCwgW2RvY0lkLCB0aHVtYm5haWxdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtZXJnZURvY3VtZW50T25UcmFuc2FjdGlvbihrZXk6IHN0cmluZywgZG9jdW1lbnQ6IENvRG9jdW1lbnQpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLm1lcmdlRG9jdW1lbnRPblRyYW5zYWN0aW9uLCBba2V5LCBkb2N1bWVudF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZURvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlRG9jdW1lbnQsIFtkb2N1bWVudElkXSk7XG4gIH1cblxuICAvKnB1YmxpYyBhc3luYyBsb2NrRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tkb2N1bWVudChkb2N1bWVudElkKTtcbiAgfSovXG5cbiAgcHVibGljIGFzeW5jIGluc2VydEFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuaW5zZXJ0QWN0aXZpdHksIFthY3Rpdml0eV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQWN0aXZpdHksIFthY3Rpdml0eV0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvbXBvbmVudEFjdGl2aXRpZXNXaXRob3V0UmVsYXRpb25GaWx0ZXJpbmcodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxBY3Rpdml0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21wb25lbnRBY3Rpdml0aWVzV2l0aG91dFJlbGF0aW9uRmlsdGVyaW5nLCBbdHJhbnNhY3Rpb25JZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljQWN0aXZpdGllcyh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljQWN0aXZpdGllcywgW3RyYW5zYWN0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbk1hcmdpbkluZm8odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTWFyZ2luSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25NYXJnaW5JbmZvLCBbdHJhbnNhY3Rpb25VVUlEXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNwb3J0T3JkZXJzKHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QpOiBQcm9taXNlPFBsYW5PcmRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc3BvcnRPcmRlcnMsIFtyZXF1ZXN0XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1RvUGxhbihyZXF1ZXN0OiBPcmRlckxpbmVzVG9QbGFuUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVzVG9QbGFuLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyTGluZXNQbGFubmVkKHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCk6IFByb21pc2U8UGxhbk9yZGVyTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckxpbmVzUGxhbm5lZCwgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1bmRvRGVsaXZlcnlCeVJlcG9ydElkKHJlcG9ydElkOiBudW1iZXIpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51bmRvRGVsaXZlcnlCeVJlcG9ydElkLCBbcmVwb3J0SWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmaXJlVHJpZ2dlcih3b3JrRmxvd1Byb2Nlc3NJZDogbnVtYmVyLCBzZXF1ZW5jZTogbnVtYmVyLCB0cmlnZ2VySWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZmlyZVRyaWdnZXIsIFt3b3JrRmxvd1Byb2Nlc3NJZCwgc2VxdWVuY2UsIHRyaWdnZXJJZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpcmVHZW5lcmljVHJpZ2dlcih3b3JrRmxvd1Byb2Nlc3NJZDogbnVtYmVyLCBnZW5lcmljVHJhbnNpdGlvbklkOiBudW1iZXIsIHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZmlyZUdlbmVyaWNUcmlnZ2VyLCBbd29ya0Zsb3dQcm9jZXNzSWQsIGdlbmVyaWNUcmFuc2l0aW9uSWQsIHJlbGF0aW9uSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2NrVGFzayhpZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrVGFzaywgW2lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlQWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVBY3Rpdml0eSwgW2FjdGl2aXR5XSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JQdXJjaGFzZU9yZGVyKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yUHVyY2hhc2VPcmRlciwgW3V1aWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuT3JkZXIodHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxQbGFuT3JkZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBsYW5PcmRlciwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb252ZXJ0Q2FzaFJlZ2lzdGVyT3JkZXJUb1NhbGVzT3JkZXIodXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuY29udmVydENhc2hSZWdpc3Rlck9yZGVyVG9TYWxlc09yZGVyLCBbdXVpZF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExpbmVJbmRpY2VzQnlUcmFuc0lkKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25MaW5lU2VhcmNoSW5kZXhbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TGluZUluZGljZXNCeVRyYW5zSWQsIFt0cmFuc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2FsZXNPcmRlckxpbmVzKHJlcXVlc3Q6IE9yZGVyUmVzZXJ2YXRpb25TYWxlc09yZGVyTGluZXNSZXF1ZXN0KTogUHJvbWlzZTxQdXJjaGFzZVJlc2VydmF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNhbGVzT3JkZXJMaW5lcywgW3JlcXVlc3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcm9jZXNzUmVzZXJ2YXRpb24ocmVxdWVzdDogUHJvY2Vzc09yZGVyUmVzZXJ2YXRpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UucHJvY2Vzc1Jlc2VydmF0aW9uLCBbcmVxdWVzdF0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVuZG9SZXNlcnZhdGlvbih0cmFuc0lkOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS51bmRvUmVzZXJ2YXRpb24sIFt0cmFuc0lkLCBsaW5lSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTTEFDYXRlZ29yaWVzKCk6IFByb21pc2U8U0xBUHJvZHVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTTEFDYXRlZ29yaWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTTEFQcm9kdWN0cygpOiBQcm9taXNlPFNMQVByb2R1Y3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U0xBUHJvZHVjdHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERpc3RyaWN0cygpOiBQcm9taXNlPERpc3RyaWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERpc3RyaWN0cyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RW1wbG95ZWVzKCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEVtcGxveWVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2tpbGxzKCk6IFByb21pc2U8U2tpbGxbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2tpbGxzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRVc2VyR3JvdXBzKCk6IFByb21pc2U8VXNlckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFVzZXJHcm91cHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKG9yZGVyc1RvQmVSZXN0b3JlZDogUGxhbk9yZGVyW10pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzLCBbb3JkZXJzVG9CZVJlc3RvcmVkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb3VyY2VQbGFubmluZyhpbnB1dHM6IFJlc291cmNlUGxhbm5pbmdJbnB1dFBhcmFtcyk6IFByb21pc2U8UGxhblRpbWVzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc291cmNlUGxhbm5pbmcsIFtpbnB1dHNdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb0RlbGl2ZXJ5UGxhbm5pbmdSZXF1ZXN0KGlucHV0czogRG9EZWxpdmVyeVBsYW5uaW5nUmVxdWVzdElucHV0UGFyYW1zKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZG9EZWxpdmVyeVBsYW5uaW5nUmVxdWVzdCwgW2lucHV0c10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5RGF0ZU9yZGVyKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8RGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5mdW5jdGlvbkNhbGwodGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlEYXRlT3JkZXIsIFt0cmFuc0lkXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UEFTdGF0dXNGcm9tVHJhbnNhY3Rpb24odHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQQVN0YXR1c0Zyb21UcmFuc2FjdGlvbiwgW3RyYW5zSWRdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja0F2YWlsYWJpbGl0eShpbnB1dHM6IFBsYW5uaW5nU2VuZE9yZGVycyk6IFByb21pc2U8UGxhblRpbWVzW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZnVuY3Rpb25DYWxsKHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoZWNrQXZhaWxhYmlsaXR5LCBbaW5wdXRzXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW50ZXJuYWxEZWZhdWx0VmFsdWUocGFyYW06IEludGVybmFsRGVmYXVsdCk6IFByb21pc2U8SW50ZXJuYWxEZWZhdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnRlcm5hbERlZmF1bHRWYWx1ZSwgW3BhcmFtXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbm5lZExpbmVzRm9yRW1wbG95ZWUocGxhbm5pbmdJZDogbnVtYmVyLCByZWxhdGlvbklkOiBudW1iZXIsIGRhdGU6IERhdGUpOiBQcm9taXNlPFBsYW5uaW5nVHJhbnNwb3J0V2Vla1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmZ1bmN0aW9uQ2FsbCh0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQbGFubmVkTGluZXNGb3JFbXBsb3llZSwgW3BsYW5uaW5nSWQsIHJlbGF0aW9uSWQsIGRhdGVdKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXJtc0FuZENvbmRpdGlvbnNGb3JtKHRyYW5zSWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRlcm1zQW5kQ29uZGl0aW9uc0Zvcm0odHJhbnNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25QbGFuUGVyaW9kcyh0cmFuc0lkOiBudW1iZXIpOiBQcm9taXNlPFBsYW5UaW1lc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uUGxhblBlcmlvZHModHJhbnNJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3VwcGxpZXJQcm9kdWN0cyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJQcm9kdWN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3VwcGxpZXJQcm9kdWN0cyhnb29kSWQpO1xuICB9XG59XG4iXX0=