@revxui/api-clients-ts 0.10.169 → 0.10.173

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 (111) hide show
  1. package/README.md +2 -2
  2. package/api/audienceController.service.d.ts +3 -6
  3. package/api/campaignController.service.d.ts +3 -6
  4. package/api/catalogController.service.d.ts +9 -18
  5. package/api/clickDestinationController.service.d.ts +3 -6
  6. package/api/creativeController.service.d.ts +6 -12
  7. package/api/creativeSetsController.service.d.ts +11 -16
  8. package/api/dashboardController.service.d.ts +37 -27
  9. package/api/pixelController.service.d.ts +3 -6
  10. package/bundles/revxui-api-clients-ts.umd.js +90 -124
  11. package/bundles/revxui-api-clients-ts.umd.js.map +1 -1
  12. package/bundles/revxui-api-clients-ts.umd.min.js +1 -1
  13. package/bundles/revxui-api-clients-ts.umd.min.js.map +1 -1
  14. package/esm2015/api/audienceController.service.js +2 -11
  15. package/esm2015/api/campaignController.service.js +2 -11
  16. package/esm2015/api/catalogController.service.js +4 -31
  17. package/esm2015/api/clickDestinationController.service.js +2 -11
  18. package/esm2015/api/creativeController.service.js +3 -21
  19. package/esm2015/api/creativeSetsController.service.js +9 -22
  20. package/esm2015/api/dashboardController.service.js +42 -11
  21. package/esm2015/api/pixelController.service.js +2 -11
  22. package/esm2015/model/advertiser.js +1 -1
  23. package/esm2015/model/advertiserPojo.js +1 -1
  24. package/esm2015/model/apiListResponseCreativeSetDashboardMetric.js +1 -0
  25. package/esm2015/model/apiResponseObjectApiListResponseCreativeSetDashboardMetric.js +1 -0
  26. package/esm2015/model/audienceDTO.js +1 -1
  27. package/esm2015/model/audienceESDTO.js +1 -1
  28. package/esm2015/model/campaignDTO.js +1 -1
  29. package/esm2015/model/campaignESDTO.js +1 -1
  30. package/esm2015/model/clickDestination.js +1 -1
  31. package/esm2015/model/creative.js +1 -1
  32. package/esm2015/model/creativeCompactDTO.js +1 -1
  33. package/esm2015/model/creativeDTO.js +1 -1
  34. package/esm2015/model/creativePerformanceData.js +1 -1
  35. package/esm2015/model/creativeSetDashboardMetric.js +16 -0
  36. package/esm2015/model/creativeSetDetails.js +1 -1
  37. package/esm2015/model/creativeSetResponse.js +16 -1
  38. package/esm2015/model/dashboardData.js +1 -1
  39. package/esm2015/model/models.js +3 -2
  40. package/esm2015/model/parentBasedObject.js +1 -1
  41. package/esm2015/model/pixel.js +1 -1
  42. package/esm2015/model/reportingResponse.js +1 -1
  43. package/esm2015/model/strategy.js +1 -1
  44. package/esm2015/model/strategyDTO.js +1 -1
  45. package/esm5/api/audienceController.service.js +2 -11
  46. package/esm5/api/campaignController.service.js +2 -11
  47. package/esm5/api/catalogController.service.js +4 -31
  48. package/esm5/api/clickDestinationController.service.js +2 -11
  49. package/esm5/api/creativeController.service.js +3 -21
  50. package/esm5/api/creativeSetsController.service.js +9 -22
  51. package/esm5/api/dashboardController.service.js +44 -11
  52. package/esm5/api/pixelController.service.js +2 -11
  53. package/esm5/model/advertiser.js +1 -1
  54. package/esm5/model/advertiserPojo.js +1 -1
  55. package/esm5/model/apiListResponseCreativeSetDashboardMetric.js +1 -0
  56. package/esm5/model/apiResponseObjectApiListResponseCreativeSetDashboardMetric.js +1 -0
  57. package/esm5/model/audienceDTO.js +1 -1
  58. package/esm5/model/audienceESDTO.js +1 -1
  59. package/esm5/model/campaignDTO.js +1 -1
  60. package/esm5/model/campaignESDTO.js +1 -1
  61. package/esm5/model/clickDestination.js +1 -1
  62. package/esm5/model/creative.js +1 -1
  63. package/esm5/model/creativeCompactDTO.js +1 -1
  64. package/esm5/model/creativeDTO.js +1 -1
  65. package/esm5/model/creativePerformanceData.js +1 -1
  66. package/esm5/model/creativeSetDashboardMetric.js +16 -0
  67. package/esm5/model/creativeSetDetails.js +1 -1
  68. package/esm5/model/creativeSetResponse.js +16 -1
  69. package/esm5/model/dashboardData.js +1 -1
  70. package/esm5/model/models.js +3 -2
  71. package/esm5/model/parentBasedObject.js +1 -1
  72. package/esm5/model/pixel.js +1 -1
  73. package/esm5/model/reportingResponse.js +1 -1
  74. package/esm5/model/strategy.js +1 -1
  75. package/esm5/model/strategyDTO.js +1 -1
  76. package/fesm2015/revxui-api-clients-ts.js +90 -126
  77. package/fesm2015/revxui-api-clients-ts.js.map +1 -1
  78. package/fesm5/revxui-api-clients-ts.js +92 -126
  79. package/fesm5/revxui-api-clients-ts.js.map +1 -1
  80. package/model/advertiser.d.ts +1 -0
  81. package/model/advertiserPojo.d.ts +1 -0
  82. package/model/{apiListResponseCreativeSetsListDashboardData.d.ts → apiListResponseCreativeSetDashboardMetric.d.ts} +3 -3
  83. package/model/{apiResponseObjectApiListResponseCreativeSetsListDashboardData.d.ts → apiResponseObjectApiListResponseCreativeSetDashboardMetric.d.ts} +3 -3
  84. package/model/audienceDTO.d.ts +1 -0
  85. package/model/audienceESDTO.d.ts +1 -0
  86. package/model/campaignDTO.d.ts +1 -0
  87. package/model/campaignESDTO.d.ts +2 -0
  88. package/model/clickDestination.d.ts +1 -0
  89. package/model/creative.d.ts +1 -0
  90. package/model/creativeCompactDTO.d.ts +1 -0
  91. package/model/creativeDTO.d.ts +1 -0
  92. package/model/creativePerformanceData.d.ts +3 -0
  93. package/model/{creativeSetsListDashboardData.d.ts → creativeSetDashboardMetric.d.ts} +4 -3
  94. package/model/creativeSetDetails.d.ts +11 -10
  95. package/model/creativeSetRequest.d.ts +10 -10
  96. package/model/creativeSetResponse.d.ts +18 -0
  97. package/model/dashboardData.d.ts +1 -0
  98. package/model/models.d.ts +3 -3
  99. package/model/parentBasedObject.d.ts +1 -0
  100. package/model/pixel.d.ts +1 -0
  101. package/model/reportingResponse.d.ts +1 -0
  102. package/model/strategy.d.ts +1 -0
  103. package/model/strategyDTO.d.ts +1 -0
  104. package/package.json +1 -1
  105. package/revxui-api-clients-ts.metadata.json +1 -1
  106. package/esm2015/model/apiListResponseCreativeSetsListDashboardData.js +0 -1
  107. package/esm2015/model/apiResponseObjectApiListResponseCreativeSetsListDashboardData.js +0 -1
  108. package/esm2015/model/creativeSetsListDashboardData.js +0 -16
  109. package/esm5/model/apiListResponseCreativeSetsListDashboardData.js +0 -1
  110. package/esm5/model/apiResponseObjectApiListResponseCreativeSetsListDashboardData.js +0 -1
  111. package/esm5/model/creativeSetsListDashboardData.js +0 -16
@@ -9,9 +9,10 @@ export * from './creativeDTO';
9
9
  export * from './creativeFileForSet';
10
10
  export * from './creativeFiles';
11
11
  export * from './creativeHtmlFileForSet';
12
+ export * from './creativeSetDashboardMetric';
12
13
  export * from './creativeSetDetails';
13
14
  export * from './creativeSetRequest';
14
- export * from './creativeSetsListDashboardData';
15
+ export * from './creativeSetResponse';
15
16
  export * from './dcoAttributesDTO';
16
17
  export * from './filterModel';
17
18
  export * from './geoListRequest';
@@ -29,4 +30,4 @@ export * from './templateVariablesDTO';
29
30
  export * from './vastCreative';
30
31
  export * from './videoAttributes';
31
32
  export * from './videoProperties';
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJldnh1aS9hcGktY2xpZW50cy10cy8iLCJzb3VyY2VzIjpbIm1vZGVsL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHFDQUFxQyxDQUFDO0FBc0ZwRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMEJBQTBCLENBQUM7QUFJekMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxjQUFjLGVBQWUsQ0FBQztBQXVCOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUduQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBRTlCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBS3pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxjQUFjLGlDQUFpQyxDQUFDO0FBYWhELGNBQWMsb0JBQW9CLENBQUM7QUFrQm5DLGNBQWMsZUFBZSxDQUFDO0FBRTlCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxTQUFTLENBQUM7QUFJeEIsY0FBYyxlQUFlLENBQUM7QUFNOUIsY0FBYyxvQkFBb0IsQ0FBQztBQVFuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBR3BDLGNBQWMsV0FBVyxDQUFDO0FBa0IxQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBZ0J2QyxjQUFjLHdCQUF3QixDQUFDO0FBS3ZDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eUxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5TG9nc1N0cmF0ZWd5QnVsa1VwZGF0ZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FkdmVydGlzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hZHZlcnRpc2VyRHluYW1pY0RldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hZHZlcnRpc2VyTGF5b3V0VmFyaWFibGVzJztcbmV4cG9ydCAqIGZyb20gJy4vYWR2ZXJ0aXNlclBvam8nO1xuZXhwb3J0ICogZnJvbSAnLi9hZHZlcnRpc2VyU2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VBY3Rpdml0eUxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nc1N0cmF0ZWd5QnVsa1VwZGF0ZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZUNhdGFsb2dGZWVkJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlQ2xpY2tEZXN0aW5hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZUNyZWF0aXZlQ29tcGFjdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZUNyZWF0aXZlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlQ3JlYXRpdmVTZXRzTGlzdERhc2hib2FyZERhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VDcmVhdGl2ZVRlbXBsYXRlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VNYWNybyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZVBpeGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlVmFyaWFibGVzTWFwcGluZ0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlckR5bmFtaWNEZXRhaWxzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyUG9qbyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QWR2ZXJ0aXNlclNldHRpbmdzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VBY3Rpdml0eUxvZ3NTdHJhdGVneUJ1bGtVcGRhdGVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUNhdGFsb2dGZWVkJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VDbGlja0Rlc3RpbmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VDcmVhdGl2ZUNvbXBhY3REVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUNyZWF0aXZlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VDcmVhdGl2ZVNldHNMaXN0RGFzaGJvYXJkRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlQ3JlYXRpdmVUZW1wbGF0ZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZVBpeGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VWYXJpYWJsZXNNYXBwaW5nRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZUFjY2Vzc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEJhc2VNb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QnVsa0VkaXRTdHJhdGVnaWVzUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEJ1bGtzdHJhdGVnaWVzVXBkYXRlUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdENhbXBhaWduRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDYXRhbG9nRmVlZCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q2hhcnREYXNoYm9hcmRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q2xpY2tEZXN0aW5hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q2xpY2tEZXN0aW5hdGlvbkF1dG9tYXRpb25VcmxzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDcmVhdGl2ZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q3JlYXRpdmVQZXJmb3JtYW5jZURhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdENyZWF0aXZlU2V0RGV0YWlscyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q3JlYXRpdmVTZXRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q3JlYXRpdmVUZW1wbGF0ZXNNZXRhZGF0YURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0RGFzaGJvYXJkTWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0RGFzaGJvYXJkUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdERpY3Rpb25hcnlSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0RG1wQXVkaWVuY2VEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEVSZXNwb25zZW9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0RmlsZURvd25sb2FkUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEdlb0xpc3REVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RBcHBTZXR0aW5nc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGllbmNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXREZXRhaWxzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXRNYXJrZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RCYXNlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RCdWxrc3RyYXRlZ2llc1ZhbGlkYXRpb25SZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdENhbXBhaWduRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0Q3JlYXRpdmVGaWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdE1hcGludFJlc3BvbnNlTWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdE1lbnVDcnViUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RUZW1wbGF0ZVRoZW1lRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0VGVtcGxhdGVWYXJpYWJsZXNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RVc2VyUHJlZmVyZW5jZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RNYXBsb25nUmVzcG9uc2VNZXNzYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RNZW51Q3J1YlJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RNZXRhUnVsZXNEdG8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFBhcmVudEJhc2VkT2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RQaXhlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0UmVwb3J0aW5nUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFNpdGVMaXN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RTa2FkVGFyZ2V0UHJpdmlsZWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0U2xpY2V4Q2hhcnRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0U2xpY2V4TGlzdFJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RTdHJhdGVneUNyZWF0aXZlQXNzb2NpYXRpb25SZXNwb25zZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0U3RyYXRlZ3lEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFN0cmF0ZWd5UXVpY2tFZGl0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RUYWcnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFRlbXBsYXRlVGhlbWVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFZvaWQnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFdoaXRlbGFiZWxpbmdFbnRpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdGJvb2xlYW4nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdHN0cmluZyc7XG5leHBvcnQgKiBmcm9tICcuL2FwcFNldHRpbmdzRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwU2V0dGluZ3NQcm9wZXJ0eURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwcHNGbHllckF1ZGllbmNlQ3JlYXRlRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwc0ZseWVyQXVkaWVuY2VTeW5jRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwc0ZseWVyQXVkaWVuY2VUb2tlbkR0byc7XG5leHBvcnQgKiBmcm9tICcuL2F1Y3Rpb25UeXBlRWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vYXVkaWVuY2VBY2Nlc3NEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpZW5jZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGllbmNlRVNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpZW5jZVN0ckRUTyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGllbmNlU3RyRWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vYXVkaXRDaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdERldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdE1hcmtlcic7XG5leHBvcnQgKiBmcm9tICcuL2JJZ0ludGVnZXJFZGl0RmlsZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlTW9kZWxFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9iaWdEZWNpbWFsRWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vYnVsa0VkaXRTdHJhdGVnaWVzRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYnVsa0VkaXRTdHJhdGVnaWVzUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9idWxrRWRpdFN0cmF0ZWd5TGlzdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2J1bGtzdHJhdGVnaWVzUmVxdWVzdCc7XG5leHBvcnQgKiBmcm9tICcuL2J1bGtzdHJhdGVnaWVzVXBkYXRlUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9idWxrc3RyYXRlZ2llc1ZhbGlkYXRpb25SZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vYnVsa3N0cmF0ZWdpZXNWYWxpZGF0aW9uUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jU1NUaGVtZUVudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2NhbXBhaWduRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vY2FtcGFpZ25FU0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2NhdGFsb2dGZWVkJztcbmV4cG9ydCAqIGZyb20gJy4vY2hhcnREYXNoYm9hcmRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrRGVzdGluYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jbGlja0Rlc3RpbmF0aW9uQXV0b21hdGlvblVybHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlQ29tcGFjdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVEZXRhaWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVGaWxlRm9yU2V0JztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVGaWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlSHRtbEZpbGVGb3JTZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZUh0bWxNb2NrdXBEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZUxpc3RFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZU1vY2tVcHNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVBlcmZvcm1hbmNlRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlU2V0RGV0YWlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlU2V0UmVxdWVzdCc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlU2V0UmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVNldHNMaXN0RGFzaGJvYXJkRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlU3RyYXRlZ3lBc3NvY2lhdGlvblN0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlVGVtcGxhdGVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVRlbXBsYXRlc01ldGFkYXRhRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVUaGlyZFBhcnR5QWRUYWcnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmREYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkRmlsdGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZE1ldHJpY3MnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmRSZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXknO1xuZXhwb3J0ICogZnJvbSAnLi9kYXlQYXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vZGF5UGFydEVkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2Rjb0F0dHJpYnV0ZXNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9kZWFsQ2F0ZWdvcnlEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9kZWFsQ2F0ZWdvcnlFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaWN0aW9uYXJ5UmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kbXBBdWRpZW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2RtcEF1ZGllbmNlQ3JpdGVyaWEnO1xuZXhwb3J0ICogZnJvbSAnLi9kbXBBdWRpZW5jZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2R1cGxpY2F0ZVN0cmF0ZWd5UmVxdWVzdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2R1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZHVyYXRpb25Nb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2VSZXNwb25zZW9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2V4dGVuZGVkQmFzZU1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5kZWRUYXJnZXRpbmdPYmplY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9mYWlsZWRTdHJhdGVneURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2ZhaWxlZFN0cmF0ZWd5RmllbGRzRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vZmNhcERldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mY2FwRWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZURvd25sb2FkUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJNb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2dlb0xpc3REVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9MaXN0UmVxdWVzdCc7XG5leHBvcnQgKiBmcm9tICcuL21hY3JvJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwaW50UmVzcG9uc2VNZXNzYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwbG9uZ1Jlc3BvbnNlTWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnVDcnViUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhUnVsZUR0byc7XG5leHBvcnQgKiBmcm9tICcuL21ldGFSdWxlc0R0byc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsRXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9uYXRpdmVBc3NldFBvam8nO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJlbnRCYXNlZE9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3BpeGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcGl4ZWxEYXRhRmlsZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL3BpeGVsRGF0YVNjaGVkdWxlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vcGl4ZWxSZW1vdGVDb25maWdEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9wbGF0Zm9ybUF1ZGllbmNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vclRCQWdncmVnYXRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9yVEJBZ2dyZWdhdG9yc0VkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL3JUQlNpdGVzJztcbmV4cG9ydCAqIGZyb20gJy4vclRCU2l0ZXNFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZW1vdGVGaWxlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0UHJvcGVydHknO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmdSZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0aW5nUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNwb25zZU1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlQ29tcG9uZW50RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVPcGVyYXRvckR0byc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVWYWx1ZUR0byc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaFJlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zaXRlTGlzdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL3NpdGVMaXN0UmVxdWVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NpemUnO1xuZXhwb3J0ICogZnJvbSAnLi9za2FkVGFyZ2V0UHJpdmlsZWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaWNleENoYXJ0UmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGljZXhEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpY2V4R3JpZERhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGljZXhMaXN0UmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGljZXhSZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc29ydE1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhdHVzQmFzZU9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmF0ZWd5JztcbmV4cG9ydCAqIGZyb20gJy4vc3RyYXRlZ3lDcmVhdGl2ZUFzc29jaWF0aW9uUmVxdWVzdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmF0ZWd5Q3JlYXRpdmVBc3NvY2lhdGlvblJlc3BvbnNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyYXRlZ3lEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJhdGVneVF1aWNrRWRpdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmF0ZWd5VXBkYXRlUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJpbmdFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWcnO1xuZXhwb3J0ICogZnJvbSAnLi90YXJnZXRBcHBDYXRlZ29yaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFyZ2V0QnJvd3NlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90YXJnZXREZXZpY2VUeXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldEdlb0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldEdlb0VkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldE1vYmlsZURldmljZUJyYW5kcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldE1vYmlsZURldmljZU1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldE1vYmlsZURldmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90YXJnZXRPcGVyYXRpbmdTeXN0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi90YXJnZXRPcGVyYXRpbmdTeXN0ZW1FZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi90YXJnZXRpbmdPYmplY3QnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZVRoZW1lRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGVWYXJpYWJsZXNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lWm9uZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXJQcmVmZXJlbmNlQ2F0ZWdvcnknO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyUHJlZmVyZW5jZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL3ZhcmlhYmxlc01hcHBpbmdEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi92YXN0Q3JlYXRpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi92aWRlb0F0dHJpYnV0ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWRlb1Byb3BlcnRpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi93aGl0ZWxhYmVsaW5nRW50aXR5JztcbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJldnh1aS9hcGktY2xpZW50cy10cy8iLCJzb3VyY2VzIjpbIm1vZGVsL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHFDQUFxQyxDQUFDO0FBc0ZwRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMEJBQTBCLENBQUM7QUFJekMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxjQUFjLGVBQWUsQ0FBQztBQXVCOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUduQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBRTlCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBS3pDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUM7QUFhdEMsY0FBYyxvQkFBb0IsQ0FBQztBQWtCbkMsY0FBYyxlQUFlLENBQUM7QUFFOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFNBQVMsQ0FBQztBQUl4QixjQUFjLGVBQWUsQ0FBQztBQU05QixjQUFjLG9CQUFvQixDQUFDO0FBUW5DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFHcEMsY0FBYyxXQUFXLENBQUM7QUFrQjFCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0JBQXdCLENBQUM7QUFnQnZDLGNBQWMsd0JBQXdCLENBQUM7QUFLdkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5TG9nJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHlMb2dzU3RyYXRlZ3lCdWxrVXBkYXRlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYWR2ZXJ0aXNlcic7XG5leHBvcnQgKiBmcm9tICcuL2FkdmVydGlzZXJEeW5hbWljRGV0YWlscyc7XG5leHBvcnQgKiBmcm9tICcuL2FkdmVydGlzZXJMYXlvdXRWYXJpYWJsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9hZHZlcnRpc2VyUG9qbyc7XG5leHBvcnQgKiBmcm9tICcuL2FkdmVydGlzZXJTZXR0aW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlQWN0aXZpdHlMb2dzU3RyYXRlZ3lCdWxrVXBkYXRlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlQ2F0YWxvZ0ZlZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VDbGlja0Rlc3RpbmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlQ3JlYXRpdmVDb21wYWN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlQ3JlYXRpdmVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VDcmVhdGl2ZVNldERhc2hib2FyZE1ldHJpYyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZUNyZWF0aXZlVGVtcGxhdGVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VMaXN0QXVkaWVuY2VFU0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaUxpc3RSZXNwb25zZU1hY3JvJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpTGlzdFJlc3BvbnNlUGl4ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlMaXN0UmVzcG9uc2VWYXJpYWJsZXNNYXBwaW5nRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyRHluYW1pY0RldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFkdmVydGlzZXJQb2pvJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBZHZlcnRpc2VyU2V0dGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nc1N0cmF0ZWd5QnVsa1VwZGF0ZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlQ2F0YWxvZ0ZlZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUNsaWNrRGVzdGluYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUNyZWF0aXZlQ29tcGFjdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlQ3JlYXRpdmVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUNyZWF0aXZlU2V0RGFzaGJvYXJkTWV0cmljJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VDcmVhdGl2ZVRlbXBsYXRlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VMaXN0QXVkaWVuY2VFU0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlUGl4ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZVZhcmlhYmxlc01hcHBpbmdEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlQWNjZXNzRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QmFzZU1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RCdWxrRWRpdFN0cmF0ZWdpZXNSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0QnVsa3N0cmF0ZWdpZXNVcGRhdGVSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q2FtcGFpZ25EVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdENhdGFsb2dGZWVkJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDaGFydERhc2hib2FyZFJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDbGlja0Rlc3RpbmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDbGlja0Rlc3RpbmF0aW9uQXV0b21hdGlvblVybHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdENyZWF0aXZlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDcmVhdGl2ZVBlcmZvcm1hbmNlRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Q3JlYXRpdmVTZXREZXRhaWxzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDcmVhdGl2ZVNldFJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RDcmVhdGl2ZVRlbXBsYXRlc01ldGFkYXRhRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3REYXNoYm9hcmRNZXRyaWNzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3REYXNoYm9hcmRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0RGljdGlvbmFyeVJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3REbXBBdWRpZW5jZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0RVJlc3BvbnNlb2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RGaWxlRG93bmxvYWRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0R2VvTGlzdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEFwcFNldHRpbmdzRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaWVuY2VEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdERldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdE1hcmtlcic7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEJhc2VNb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEJ1bGtzdHJhdGVnaWVzVmFsaWRhdGlvblJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0Q2FtcGFpZ25EVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RDcmVhdGl2ZUZpbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0TWFwaW50UmVzcG9uc2VNZXNzYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RMaXN0TWVudUNydWJSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdFRlbXBsYXRlVGhlbWVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdExpc3RUZW1wbGF0ZVZhcmlhYmxlc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0TGlzdFVzZXJQcmVmZXJlbmNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdE1hcGxvbmdSZXNwb25zZU1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdE1lbnVDcnViUmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0byc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0UGFyZW50QmFzZWRPYmplY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFBpeGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RSZXBvcnRpbmdSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0U2l0ZUxpc3REVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFNrYWRUYXJnZXRQcml2aWxlZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RTbGljZXhDaGFydFJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RTbGljZXhMaXN0UmVzcG9uc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFN0cmF0ZWd5Q3JlYXRpdmVBc3NvY2lhdGlvblJlc3BvbnNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpUmVzcG9uc2VPYmplY3RTdHJhdGVneURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0U3RyYXRlZ3lRdWlja0VkaXREVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlSZXNwb25zZU9iamVjdFRhZyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0VGVtcGxhdGVUaGVtZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Vm9pZCc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0V2hpdGVsYWJlbGluZ0VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0Ym9vbGVhbic7XG5leHBvcnQgKiBmcm9tICcuL2FwaVJlc3BvbnNlT2JqZWN0c3RyaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwU2V0dGluZ3NEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBTZXR0aW5nc1Byb3BlcnR5RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwc0ZseWVyQXVkaWVuY2VDcmVhdGVEdG8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBzRmx5ZXJBdWRpZW5jZVN5bmNEdG8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBzRmx5ZXJBdWRpZW5jZVRva2VuRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vYXVjdGlvblR5cGVFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpZW5jZUFjY2Vzc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGllbmNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXVkaWVuY2VFU0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGllbmNlU3RyRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYXVkaWVuY2VTdHJFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdWRpdENoYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0RGV0YWlscyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0TWFya2VyJztcbmV4cG9ydCAqIGZyb20gJy4vYklnSW50ZWdlckVkaXRGaWxlZCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2VNb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2VNb2RlbEVkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2JpZ0RlY2ltYWxFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9idWxrRWRpdFN0cmF0ZWdpZXNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9idWxrRWRpdFN0cmF0ZWdpZXNSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1bGtFZGl0U3RyYXRlZ3lMaXN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vYnVsa3N0cmF0ZWdpZXNSZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vYnVsa3N0cmF0ZWdpZXNVcGRhdGVSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1bGtzdHJhdGVnaWVzVmFsaWRhdGlvblJlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9idWxrc3RyYXRlZ2llc1ZhbGlkYXRpb25SZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2NTU1RoZW1lRW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vY2FtcGFpZ25EVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9jYW1wYWlnbkVTRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vY2F0YWxvZ0ZlZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGFydERhc2hib2FyZFJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2xpY2tEZXN0aW5hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrRGVzdGluYXRpb25BdXRvbWF0aW9uVXJscyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVDb21wYWN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZURldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZUZpbGVGb3JTZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZUZpbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVIdG1sRmlsZUZvclNldCc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlSHRtbE1vY2t1cERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlTGlzdEVkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlTW9ja1Vwc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlUGVyZm9ybWFuY2VEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVTZXREYXNoYm9hcmRNZXRyaWMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVNldERldGFpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVNldFJlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVNldFJlc3BvbnNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVTdHJhdGVneUFzc29jaWF0aW9uU3RhdHVzJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRpdmVUZW1wbGF0ZURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0aXZlVGVtcGxhdGVzTWV0YWRhdGFEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGl2ZVRoaXJkUGFydHlBZFRhZyc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZERhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmRGaWx0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vZGFzaGJvYXJkTWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZFJlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXNoYm9hcmRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2RheSc7XG5leHBvcnQgKiBmcm9tICcuL2RheVBhcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXlQYXJ0RWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vZGNvQXR0cmlidXRlc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL2RlYWxDYXRlZ29yeURUTyc7XG5leHBvcnQgKiBmcm9tICcuL2RlYWxDYXRlZ29yeUVkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2RpY3Rpb25hcnlSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2RtcEF1ZGllbmNlJztcbmV4cG9ydCAqIGZyb20gJy4vZG1wQXVkaWVuY2VDcml0ZXJpYSc7XG5leHBvcnQgKiBmcm9tICcuL2RtcEF1ZGllbmNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vZHVwbGljYXRlU3RyYXRlZ3lSZXF1ZXN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vZHVyYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9kdXJhdGlvbk1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZVJlc3BvbnNlb2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5kZWRCYXNlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9leHRlbmRlZFRhcmdldGluZ09iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2ZhaWxlZFN0cmF0ZWd5RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vZmFpbGVkU3RyYXRlZ3lGaWVsZHNEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9mY2FwRGV0YWlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZjYXBFZGl0RmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlRG93bmxvYWRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlck1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VvTGlzdERUTyc7XG5leHBvcnQgKiBmcm9tICcuL2dlb0xpc3RSZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vbWFjcm8nO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBpbnRSZXNwb25zZU1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBsb25nUmVzcG9uc2VNZXNzYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudUNydWJSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL21ldGFSdWxlRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0YVJ1bGVzRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxFcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL25hdGl2ZUFzc2V0UG9qbyc7XG5leHBvcnQgKiBmcm9tICcuL3BhcmVudEJhc2VkT2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vcGl4ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9waXhlbERhdGFGaWxlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vcGl4ZWxEYXRhU2NoZWR1bGVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9waXhlbFJlbW90ZUNvbmZpZ0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL3BsYXRmb3JtQXVkaWVuY2VEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9yVEJBZ2dyZWdhdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3JUQkFnZ3JlZ2F0b3JzRWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vclRCU2l0ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9yVEJTaXRlc0VkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL3JlbW90ZUZpbGVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRQcm9wZXJ0eSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZ1JlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmdSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3BvbnNlTWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVDb21wb25lbnREVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZU9wZXJhdG9yRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZVZhbHVlRHRvJztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoUmVxdWVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NpdGVMaXN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vc2l0ZUxpc3RSZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vc2l6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NrYWRUYXJnZXRQcml2aWxlZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpY2V4Q2hhcnRSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaWNleERhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGljZXhHcmlkRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaWNleExpc3RSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaWNleFJlcXVlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0TW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXNCYXNlT2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vc3RyYXRlZ3knO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJhdGVneUNyZWF0aXZlQXNzb2NpYXRpb25SZXF1ZXN0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyYXRlZ3lDcmVhdGl2ZUFzc29jaWF0aW9uUmVzcG9uc2VEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJhdGVneURUTyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmF0ZWd5UXVpY2tFZGl0RFRPJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyYXRlZ3lVcGRhdGVSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZ0VkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL3RhZyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldEFwcENhdGVnb3JpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90YXJnZXRCcm93c2Vycyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldERldmljZVR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFyZ2V0R2VvRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vdGFyZ2V0R2VvRWRpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vdGFyZ2V0TW9iaWxlRGV2aWNlQnJhbmRzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFyZ2V0TW9iaWxlRGV2aWNlTW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFyZ2V0TW9iaWxlRGV2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldE9wZXJhdGluZ1N5c3RlbSc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldE9wZXJhdGluZ1N5c3RlbUVkaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldGluZ09iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlVGhlbWVEVE8nO1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZVZhcmlhYmxlc0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL3RpbWVab25lRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlclByZWZlcmVuY2VDYXRlZ29yeSc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXJQcmVmZXJlbmNlRFRPJztcbmV4cG9ydCAqIGZyb20gJy4vdmFyaWFibGVzTWFwcGluZ0RUTyc7XG5leHBvcnQgKiBmcm9tICcuL3Zhc3RDcmVhdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvQXR0cmlidXRlcyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvUHJvcGVydGllcyc7XG5leHBvcnQgKiBmcm9tICcuL3doaXRlbGFiZWxpbmdFbnRpdHknO1xuIl19
@@ -9,4 +9,4 @@
9
9
  * https://github.com/swagger-api/swagger-codegen.git
10
10
  * Do not edit the class manually.
11
11
  */
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50QmFzZWRPYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvcGFyZW50QmFzZWRPYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyZW50QmFzZWRPYmplY3QgeyBcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIGNyZWF0ZWRCeT86IG51bWJlcjtcbiAgICBjcmVhdGlvblRpbWU/OiBudW1iZXI7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbW9kaWZpZWRCeT86IG51bWJlcjtcbiAgICBtb2RpZmllZFRpbWU/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwYXJlbnQ/OiBQYXJlbnRCYXNlZE9iamVjdDtcbn1cbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50QmFzZWRPYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvcGFyZW50QmFzZWRPYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyZW50QmFzZWRPYmplY3QgeyBcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIGNyZWF0ZWRCeT86IG51bWJlcjtcbiAgICBjcmVhdGlvblRpbWU/OiBudW1iZXI7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgaXNBcmNoaXZlZD86IGJvb2xlYW47XG4gICAgbW9kaWZpZWRCeT86IG51bWJlcjtcbiAgICBtb2RpZmllZFRpbWU/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwYXJlbnQ/OiBQYXJlbnRCYXNlZE9iamVjdDtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl4ZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvcGl4ZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgQWR2ZXJ0aXNlciB9IGZyb20gJy4vYWR2ZXJ0aXNlcic7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuL2Jhc2VNb2RlbCc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBQaXhlbCB7IFxuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgYWR2ZXJ0aXNlcklkPzogbnVtYmVyO1xuICAgIGFkdmVydGlzZXJQb2pvPzogQWR2ZXJ0aXNlcjtcbiAgICBjbGlja1ZhbGlkaXR5V2luZG93PzogbnVtYmVyO1xuICAgIGNsaWNrcz86IG51bWJlcjtcbiAgICBjb252ZXJzaW9ucz86IG51bWJlcjtcbiAgICBjcmVhdGVkQnk/OiBudW1iZXI7XG4gICAgY3JlYXRpb25UaW1lPzogbnVtYmVyO1xuICAgIGZjYXBEdXJhdGlvbj86IG51bWJlcjtcbiAgICBpZD86IG51bWJlcjtcbiAgICBpbXByZXNzaW9ucz86IG51bWJlcjtcbiAgICBtb2RpZmllZEJ5PzogbnVtYmVyO1xuICAgIG1vZGlmaWVkVGltZT86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHR5cGU/OiBCYXNlTW9kZWw7XG4gICAgdXNlckZjYXA/OiBudW1iZXI7XG4gICAgdmlld1ZhbGlkaXR5V2luZG93PzogbnVtYmVyO1xufVxuIl19
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl4ZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvcGl4ZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgQWR2ZXJ0aXNlciB9IGZyb20gJy4vYWR2ZXJ0aXNlcic7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuL2Jhc2VNb2RlbCc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBQaXhlbCB7IFxuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgYWR2ZXJ0aXNlcklkPzogbnVtYmVyO1xuICAgIGFkdmVydGlzZXJQb2pvPzogQWR2ZXJ0aXNlcjtcbiAgICBjbGlja1ZhbGlkaXR5V2luZG93PzogbnVtYmVyO1xuICAgIGNsaWNrcz86IG51bWJlcjtcbiAgICBjb252ZXJzaW9ucz86IG51bWJlcjtcbiAgICBjcmVhdGVkQnk/OiBudW1iZXI7XG4gICAgY3JlYXRpb25UaW1lPzogbnVtYmVyO1xuICAgIGZjYXBEdXJhdGlvbj86IG51bWJlcjtcbiAgICBpZD86IG51bWJlcjtcbiAgICBpbXByZXNzaW9ucz86IG51bWJlcjtcbiAgICBpc0FyY2hpdmVkPzogYm9vbGVhbjtcbiAgICBtb2RpZmllZEJ5PzogbnVtYmVyO1xuICAgIG1vZGlmaWVkVGltZT86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHR5cGU/OiBCYXNlTW9kZWw7XG4gICAgdXNlckZjYXA/OiBudW1iZXI7XG4gICAgdmlld1ZhbGlkaXR5V2luZG93PzogbnVtYmVyO1xufVxuIl19
@@ -12,4 +12,4 @@ export var ReportingResponse;
12
12
  Monthly: 'monthly'
13
13
  };
14
14
  })(ReportingResponse || (ReportingResponse = {}));
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nUmVzcG9uc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvcmVwb3J0aW5nUmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUNBLE1BQU0sS0FBVyxpQkFBaUIsQ0FjakM7QUFkRCxXQUFpQixpQkFBaUI7SUFFakIsZ0NBQWMsR0FBRztRQUMxQixRQUFRLEVBQUUsVUFBNEI7UUFDdEMsVUFBVSxFQUFFLFlBQThCO0tBQzdDLENBQUM7SUFFVyw4QkFBWSxHQUFHO1FBQ3hCLElBQUksRUFBRSxNQUFzQjtRQUM1QixNQUFNLEVBQUUsUUFBd0I7UUFDaEMsS0FBSyxFQUFFLE9BQXVCO1FBQzlCLE1BQU0sRUFBRSxRQUF3QjtRQUNoQyxPQUFPLEVBQUUsU0FBeUI7S0FDckMsQ0FBQztBQUNOLENBQUMsRUFkZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQWNqQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgRHVyYXRpb25Nb2RlbCB9IGZyb20gJy4vZHVyYXRpb25Nb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJNb2RlbCB9IGZyb20gJy4vZmlsdGVyTW9kZWwnO1xuaW1wb3J0IHsgU29ydE1vZGVsIH0gZnJvbSAnLi9zb3J0TW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0aW5nUmVzcG9uc2UgeyBcbiAgICBjb2x1bW5zPzogQXJyYXk8c3RyaW5nPjtcbiAgICBjdXJyZW5jeV9vZj86IFJlcG9ydGluZ1Jlc3BvbnNlLkN1cnJlbmN5T2ZFbnVtO1xuICAgIGR1cmF0aW9uPzogRHVyYXRpb25Nb2RlbDtcbiAgICBlbnRpdHlfbmFtZT86IHN0cmluZztcbiAgICBmaWxlRG93bmxvYWRVcmw/OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgZmlsdGVycz86IEFycmF5PEZpbHRlck1vZGVsPjtcbiAgICBncm91cF9ieT86IEFycmF5PHN0cmluZz47XG4gICAgaW50ZXJ2YWw/OiBSZXBvcnRpbmdSZXNwb25zZS5JbnRlcnZhbEVudW07XG4gICAgcGFnZV9udW1iZXI/OiBudW1iZXI7XG4gICAgcGFnZV9zaXplPzogbnVtYmVyO1xuICAgIHJlcG9ydF9pZD86IHN0cmluZztcbiAgICByZXBvcnRfdHlwZT86IHN0cmluZztcbiAgICByZXN1bHRzPzogQXJyYXk8YW55PjtcbiAgICBzb3J0X2J5PzogQXJyYXk8U29ydE1vZGVsPjtcbiAgICB0aW1lX3pvbmU/OiBzdHJpbmc7XG4gICAgdG90YWxfcmVzdWx0c19jb3VudD86IG51bWJlcjtcbn1cbmV4cG9ydCBuYW1lc3BhY2UgUmVwb3J0aW5nUmVzcG9uc2Uge1xuICAgIGV4cG9ydCB0eXBlIEN1cnJlbmN5T2ZFbnVtID0gJ2xpY2Vuc2VlJyB8ICdhZHZlcnRpc2VyJztcbiAgICBleHBvcnQgY29uc3QgQ3VycmVuY3lPZkVudW0gPSB7XG4gICAgICAgIExpY2Vuc2VlOiAnbGljZW5zZWUnIGFzIEN1cnJlbmN5T2ZFbnVtLFxuICAgICAgICBBZHZlcnRpc2VyOiAnYWR2ZXJ0aXNlcicgYXMgQ3VycmVuY3lPZkVudW1cbiAgICB9O1xuICAgIGV4cG9ydCB0eXBlIEludGVydmFsRW51bSA9ICdub25lJyB8ICdob3VybHknIHwgJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknO1xuICAgIGV4cG9ydCBjb25zdCBJbnRlcnZhbEVudW0gPSB7XG4gICAgICAgIE5vbmU6ICdub25lJyBhcyBJbnRlcnZhbEVudW0sXG4gICAgICAgIEhvdXJseTogJ2hvdXJseScgYXMgSW50ZXJ2YWxFbnVtLFxuICAgICAgICBEYWlseTogJ2RhaWx5JyBhcyBJbnRlcnZhbEVudW0sXG4gICAgICAgIFdlZWtseTogJ3dlZWtseScgYXMgSW50ZXJ2YWxFbnVtLFxuICAgICAgICBNb250aGx5OiAnbW9udGhseScgYXMgSW50ZXJ2YWxFbnVtXG4gICAgfTtcbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nUmVzcG9uc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvcmVwb3J0aW5nUmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0NBLE1BQU0sS0FBVyxpQkFBaUIsQ0FjakM7QUFkRCxXQUFpQixpQkFBaUI7SUFFakIsZ0NBQWMsR0FBRztRQUMxQixRQUFRLEVBQUUsVUFBNEI7UUFDdEMsVUFBVSxFQUFFLFlBQThCO0tBQzdDLENBQUM7SUFFVyw4QkFBWSxHQUFHO1FBQ3hCLElBQUksRUFBRSxNQUFzQjtRQUM1QixNQUFNLEVBQUUsUUFBd0I7UUFDaEMsS0FBSyxFQUFFLE9BQXVCO1FBQzlCLE1BQU0sRUFBRSxRQUF3QjtRQUNoQyxPQUFPLEVBQUUsU0FBeUI7S0FDckMsQ0FBQztBQUNOLENBQUMsRUFkZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQWNqQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgRHVyYXRpb25Nb2RlbCB9IGZyb20gJy4vZHVyYXRpb25Nb2RlbCc7XG5pbXBvcnQgeyBGaWx0ZXJNb2RlbCB9IGZyb20gJy4vZmlsdGVyTW9kZWwnO1xuaW1wb3J0IHsgU29ydE1vZGVsIH0gZnJvbSAnLi9zb3J0TW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0aW5nUmVzcG9uc2UgeyBcbiAgICBjb2x1bW5zPzogQXJyYXk8c3RyaW5nPjtcbiAgICBjdXJyZW5jeV9vZj86IFJlcG9ydGluZ1Jlc3BvbnNlLkN1cnJlbmN5T2ZFbnVtO1xuICAgIGR1cmF0aW9uPzogRHVyYXRpb25Nb2RlbDtcbiAgICBlbnRpdHlfbmFtZT86IHN0cmluZztcbiAgICBmaWxlRG93bmxvYWRVcmw/OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgZmlsdGVycz86IEFycmF5PEZpbHRlck1vZGVsPjtcbiAgICBncm91cF9ieT86IEFycmF5PHN0cmluZz47XG4gICAgaW50ZXJ2YWw/OiBSZXBvcnRpbmdSZXNwb25zZS5JbnRlcnZhbEVudW07XG4gICAgcGFnZV9udW1iZXI/OiBudW1iZXI7XG4gICAgcGFnZV9zaXplPzogbnVtYmVyO1xuICAgIHJlcG9ydF9pZD86IHN0cmluZztcbiAgICByZXBvcnRfdHlwZT86IHN0cmluZztcbiAgICByZXN1bHRzPzogQXJyYXk8YW55PjtcbiAgICByZXN1bHRzX2NvdW50PzogbnVtYmVyO1xuICAgIHNvcnRfYnk/OiBBcnJheTxTb3J0TW9kZWw+O1xuICAgIHRpbWVfem9uZT86IHN0cmluZztcbiAgICB0b3RhbF9yZXN1bHRzX2NvdW50PzogbnVtYmVyO1xufVxuZXhwb3J0IG5hbWVzcGFjZSBSZXBvcnRpbmdSZXNwb25zZSB7XG4gICAgZXhwb3J0IHR5cGUgQ3VycmVuY3lPZkVudW0gPSAnbGljZW5zZWUnIHwgJ2FkdmVydGlzZXInO1xuICAgIGV4cG9ydCBjb25zdCBDdXJyZW5jeU9mRW51bSA9IHtcbiAgICAgICAgTGljZW5zZWU6ICdsaWNlbnNlZScgYXMgQ3VycmVuY3lPZkVudW0sXG4gICAgICAgIEFkdmVydGlzZXI6ICdhZHZlcnRpc2VyJyBhcyBDdXJyZW5jeU9mRW51bVxuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgSW50ZXJ2YWxFbnVtID0gJ25vbmUnIHwgJ2hvdXJseScgfCAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseSc7XG4gICAgZXhwb3J0IGNvbnN0IEludGVydmFsRW51bSA9IHtcbiAgICAgICAgTm9uZTogJ25vbmUnIGFzIEludGVydmFsRW51bSxcbiAgICAgICAgSG91cmx5OiAnaG91cmx5JyBhcyBJbnRlcnZhbEVudW0sXG4gICAgICAgIERhaWx5OiAnZGFpbHknIGFzIEludGVydmFsRW51bSxcbiAgICAgICAgV2Vla2x5OiAnd2Vla2x5JyBhcyBJbnRlcnZhbEVudW0sXG4gICAgICAgIE1vbnRobHk6ICdtb250aGx5JyBhcyBJbnRlcnZhbEVudW1cbiAgICB9O1xufVxuIl19
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi9iYXNlTW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyYXRlZ3kgeyBcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIGFkdmVydGlzZXI/OiBCYXNlTW9kZWw7XG4gICAgYWR2ZXJ0aXNlcklkPzogbnVtYmVyO1xuICAgIGJ1ZGdldD86IG51bWJlcjtcbiAgICBjYW1wYWlnbj86IEJhc2VNb2RlbDtcbiAgICBjYW1wYWlnbklkPzogbnVtYmVyO1xuICAgIGNyZWF0ZWRCeT86IG51bWJlcjtcbiAgICBjcmVhdGlvblRpbWU/OiBudW1iZXI7XG4gICAgY3VycmVuY3k/OiBCYXNlTW9kZWw7XG4gICAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIGRheXNEdXJhdGlvbj86IG51bWJlcjtcbiAgICBkYXlzRWxhcHNlZD86IG51bWJlcjtcbiAgICBlbmRUaW1lPzogbnVtYmVyO1xuICAgIGZjYXA/OiBudW1iZXI7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbGljZW5zZWU/OiBCYXNlTW9kZWw7XG4gICAgbGljZW5zZWVJZD86IG51bWJlcjtcbiAgICBtb2RpZmllZEJ5PzogbnVtYmVyO1xuICAgIG1vZGlmaWVkVGltZT86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHN0YXJ0VGltZT86IG51bWJlcjtcbn1cbiJdfQ==
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi9iYXNlTW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyYXRlZ3kgeyBcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIGFkdmVydGlzZXI/OiBCYXNlTW9kZWw7XG4gICAgYWR2ZXJ0aXNlcklkPzogbnVtYmVyO1xuICAgIGJ1ZGdldD86IG51bWJlcjtcbiAgICBjYW1wYWlnbj86IEJhc2VNb2RlbDtcbiAgICBjYW1wYWlnbklkPzogbnVtYmVyO1xuICAgIGNyZWF0ZWRCeT86IG51bWJlcjtcbiAgICBjcmVhdGlvblRpbWU/OiBudW1iZXI7XG4gICAgY3VycmVuY3k/OiBCYXNlTW9kZWw7XG4gICAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIGRheXNEdXJhdGlvbj86IG51bWJlcjtcbiAgICBkYXlzRWxhcHNlZD86IG51bWJlcjtcbiAgICBlbmRUaW1lPzogbnVtYmVyO1xuICAgIGZjYXA/OiBudW1iZXI7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgaXNBcmNoaXZlZD86IGJvb2xlYW47XG4gICAgbGljZW5zZWU/OiBCYXNlTW9kZWw7XG4gICAgbGljZW5zZWVJZD86IG51bWJlcjtcbiAgICBtb2RpZmllZEJ5PzogbnVtYmVyO1xuICAgIG1vZGlmaWVkVGltZT86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHN0YXJ0VGltZT86IG51bWJlcjtcbn1cbiJdfQ==
@@ -16,4 +16,4 @@ export var StrategyDTO;
16
16
  CELLULARNETWORK5G: 'CELLULAR_NETWORK_5G'
17
17
  };
18
18
  })(StrategyDTO || (StrategyDTO = {}));
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3lEVE8uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvc3RyYXRlZ3lEVE8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0dBLE1BQU0sS0FBVyxXQUFXLENBa0IzQjtBQWxCRCxXQUFpQixXQUFXO0lBRVgsb0NBQXdCLEdBQUc7UUFDcEMsS0FBSyxFQUFFLE9BQW1DO1FBQzFDLE1BQU0sRUFBRSxRQUFvQztRQUM1QyxHQUFHLEVBQUUsS0FBaUM7S0FDekMsQ0FBQztJQUVXLCtCQUFtQixHQUFHO1FBQy9CLE9BQU8sRUFBRSxTQUFnQztRQUN6QyxRQUFRLEVBQUUsVUFBaUM7UUFDM0MsSUFBSSxFQUFFLE1BQTZCO1FBQ25DLGVBQWUsRUFBRSxrQkFBeUM7UUFDMUQsaUJBQWlCLEVBQUUscUJBQTRDO1FBQy9ELGlCQUFpQixFQUFFLHFCQUE0QztRQUMvRCxpQkFBaUIsRUFBRSxxQkFBNEM7UUFDL0QsaUJBQWlCLEVBQUUscUJBQTRDO0tBQ2xFLENBQUM7QUFDTixDQUFDLEVBbEJnQixXQUFXLEtBQVgsV0FBVyxRQWtCM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKiBBcGkgRG9jdW1lbnRhdGlvblxuICpcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxLjBcbiAqIFxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHN3YWdnZXIgY29kZSBnZW5lcmF0b3IgcHJvZ3JhbS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IEF1ZGllbmNlU3RyRFRPIH0gZnJvbSAnLi9hdWRpZW5jZVN0ckRUTyc7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuL2Jhc2VNb2RlbCc7XG5pbXBvcnQgeyBEYXlQYXJ0IH0gZnJvbSAnLi9kYXlQYXJ0JztcbmltcG9ydCB7IERlYWxDYXRlZ29yeURUTyB9IGZyb20gJy4vZGVhbENhdGVnb3J5RFRPJztcbmltcG9ydCB7IFJUQkFnZ3JlZ2F0b3JzIH0gZnJvbSAnLi9yVEJBZ2dyZWdhdG9ycyc7XG5pbXBvcnQgeyBSVEJTaXRlcyB9IGZyb20gJy4vclRCU2l0ZXMnO1xuaW1wb3J0IHsgVGFyZ2V0QXBwQ2F0ZWdvcmllcyB9IGZyb20gJy4vdGFyZ2V0QXBwQ2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBUYXJnZXRCcm93c2VycyB9IGZyb20gJy4vdGFyZ2V0QnJvd3NlcnMnO1xuaW1wb3J0IHsgVGFyZ2V0R2VvRFRPIH0gZnJvbSAnLi90YXJnZXRHZW9EVE8nO1xuaW1wb3J0IHsgVGFyZ2V0TW9iaWxlRGV2aWNlcyB9IGZyb20gJy4vdGFyZ2V0TW9iaWxlRGV2aWNlcyc7XG5pbXBvcnQgeyBUaW1lWm9uZURUTyB9IGZyb20gJy4vdGltZVpvbmVEVE8nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyYXRlZ3lEVE8geyBcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIGFkR3JvdXBDb3VudD86IG51bWJlcjtcbiAgICBhZHZlcnRpc2VyPzogQmFzZU1vZGVsO1xuICAgIGFkdmVydGlzZXJJZD86IG51bWJlcjtcbiAgICBhcHBzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBhcHBzU3RyYXRlZ2llcz86IEFycmF5PEJhc2VNb2RlbD47XG4gICAgYXVjdGlvblR5cGVUYXJnZXRpbmc/OiBTdHJhdGVneURUTy5BdWN0aW9uVHlwZVRhcmdldGluZ0VudW07XG4gICAgYmlkQ2FwTWF4PzogbnVtYmVyO1xuICAgIGJpZENhcE1pbj86IG51bWJlcjtcbiAgICBiaWRQZXJjZW50YWdlPzogbnVtYmVyO1xuICAgIGJ1ZGdldD86IG51bWJlcjtcbiAgICBidWRnZXRCeT86IG51bWJlcjtcbiAgICBidWRnZXRWYWx1ZT86IG51bWJlcjtcbiAgICBjYW1wYWlnbj86IEJhc2VNb2RlbDtcbiAgICBjYW1wYWlnbkZjYXA/OiBib29sZWFuO1xuICAgIGNhbXBhaWduSWQ/OiBudW1iZXI7XG4gICAgY2hhbm5lbHM/OiBBcnJheTxCYXNlTW9kZWw+O1xuICAgIGNvbm5lY3Rpb25UeXBlcz86IEFycmF5PFN0cmF0ZWd5RFRPLkNvbm5lY3Rpb25UeXBlc0VudW0+O1xuICAgIGNwYVRhcmdldFZhbHVlPzogbnVtYmVyO1xuICAgIGNyZWF0ZWRCeT86IG51bWJlcjtcbiAgICBjcmVhdGlvblRpbWU/OiBudW1iZXI7XG4gICAgY3JlYXRpdmVzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBjdXJyZW5jeT86IEJhc2VNb2RlbDtcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgZGF5c0R1cmF0aW9uPzogbnVtYmVyO1xuICAgIGRheXNFbGFwc2VkPzogbnVtYmVyO1xuICAgIGRlbGl2ZXJ5UHJpb3JpdHk/OiBCYXNlTW9kZWw7XG4gICAgZWRpdGFibGU/OiBib29sZWFuO1xuICAgIGVuZFRpbWU/OiBudW1iZXI7XG4gICAgZmNhcD86IG51bWJlcjtcbiAgICBmY2FwRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZmNhcEZyZXF1ZW5jeT86IG51bWJlcjtcbiAgICBmY2FwSW50ZXJ2YWw/OiBudW1iZXI7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgaXNCYXJnYWluZXJBY3RpdmU/OiBib29sZWFuO1xuICAgIGlzRWRpdGFibGU/OiBib29sZWFuO1xuICAgIGlzTmF0aXZlPzogYm9vbGVhbjtcbiAgICBsaWNlbnNlZT86IEJhc2VNb2RlbDtcbiAgICBsaWNlbnNlZUlkPzogbnVtYmVyO1xuICAgIG1vZGlmaWVkQnk/OiBudW1iZXI7XG4gICAgbW9kaWZpZWRUaW1lPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgX25hdGl2ZT86IGJvb2xlYW47XG4gICAgb2xkR2VvVGFyZ2V0aW5nPzogc3RyaW5nO1xuICAgIHBhY2luZ0J1ZGdldFZhbHVlPzogbnVtYmVyO1xuICAgIHBhY2luZ1R5cGU/OiBCYXNlTW9kZWw7XG4gICAgcGl4ZWxzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBwbGFjZW1lbnRzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBwcmljaW5nVHlwZT86IEJhc2VNb2RlbDtcbiAgICBwcmljaW5nVmFsdWU/OiBudW1iZXI7XG4gICAgcm9pVGFyZ2V0VHlwZT86IEJhc2VNb2RlbDtcbiAgICByb2lUYXJnZXRWYWx1ZT86IG51bWJlcjtcbiAgICBydGJBZ2dyZWdhdG9ycz86IFJUQkFnZ3JlZ2F0b3JzO1xuICAgIHJ0YlNpdGVzPzogUlRCU2l0ZXM7XG4gICAgc2VjdGlvbnM/OiBBcnJheTxCYXNlTW9kZWw+O1xuICAgIHNrYWRPcHRpbWlzZWRTdHJhdGVneT86IGJvb2xlYW47XG4gICAgc3RhcnRUaW1lPzogbnVtYmVyO1xuICAgIHN0cmF0ZWd5VHlwZT86IHN0cmluZztcbiAgICB0YXJnZXRBbmRyb2lkQ2F0ZWdvcmllcz86IFRhcmdldEFwcENhdGVnb3JpZXM7XG4gICAgdGFyZ2V0QXBwUmF0aW5ncz86IG51bWJlcjtcbiAgICB0YXJnZXRBcHBTZWdtZW50cz86IEF1ZGllbmNlU3RyRFRPO1xuICAgIHRhcmdldEJyb3dzZXJzPzogVGFyZ2V0QnJvd3NlcnM7XG4gICAgdGFyZ2V0RGF5cz86IERheVBhcnQ7XG4gICAgdGFyZ2V0RGVhbENhdGVnb3J5PzogRGVhbENhdGVnb3J5RFRPO1xuICAgIHRhcmdldERtcFNlZ21lbnRzPzogQXVkaWVuY2VTdHJEVE87XG4gICAgdGFyZ2V0R2VvZ3JhcGhpZXM/OiBUYXJnZXRHZW9EVE87XG4gICAgdGFyZ2V0SW9zQ2F0ZWdvcmllcz86IFRhcmdldEFwcENhdGVnb3JpZXM7XG4gICAgdGFyZ2V0TW9iaWxlRGV2aWNlcz86IFRhcmdldE1vYmlsZURldmljZXM7XG4gICAgdGFyZ2V0T25seVB1Ymxpc2hlZEFwcD86IGJvb2xlYW47XG4gICAgdGFyZ2V0V2ViU2VnbWVudHM/OiBBdWRpZW5jZVN0ckRUTztcbiAgICB0aW1lem9uZT86IFRpbWVab25lRFRPO1xuICAgIHVzZXJQdXJjaGFzZUZyZXF1ZW5jeT86IEFycmF5PEJhc2VNb2RlbD47XG59XG5leHBvcnQgbmFtZXNwYWNlIFN0cmF0ZWd5RFRPIHtcbiAgICBleHBvcnQgdHlwZSBBdWN0aW9uVHlwZVRhcmdldGluZ0VudW0gPSAnRklSU1QnIHwgJ1NFQ09ORCcgfCAnQUxMJztcbiAgICBleHBvcnQgY29uc3QgQXVjdGlvblR5cGVUYXJnZXRpbmdFbnVtID0ge1xuICAgICAgICBGSVJTVDogJ0ZJUlNUJyBhcyBBdWN0aW9uVHlwZVRhcmdldGluZ0VudW0sXG4gICAgICAgIFNFQ09ORDogJ1NFQ09ORCcgYXMgQXVjdGlvblR5cGVUYXJnZXRpbmdFbnVtLFxuICAgICAgICBBTEw6ICdBTEwnIGFzIEF1Y3Rpb25UeXBlVGFyZ2V0aW5nRW51bVxuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgQ29ubmVjdGlvblR5cGVzRW51bSA9ICdVTktOT1dOJyB8ICdFVEhFUk5FVCcgfCAnV0lGSScgfCAnQ0VMTFVMQVJfTkVUV09SSycgfCAnQ0VMTFVMQVJfTkVUV09SS18yRycgfCAnQ0VMTFVMQVJfTkVUV09SS18zRycgfCAnQ0VMTFVMQVJfTkVUV09SS180RycgfCAnQ0VMTFVMQVJfTkVUV09SS181Ryc7XG4gICAgZXhwb3J0IGNvbnN0IENvbm5lY3Rpb25UeXBlc0VudW0gPSB7XG4gICAgICAgIFVOS05PV046ICdVTktOT1dOJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtLFxuICAgICAgICBFVEhFUk5FVDogJ0VUSEVSTkVUJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtLFxuICAgICAgICBXSUZJOiAnV0lGSScgYXMgQ29ubmVjdGlvblR5cGVzRW51bSxcbiAgICAgICAgQ0VMTFVMQVJORVRXT1JLOiAnQ0VMTFVMQVJfTkVUV09SSycgYXMgQ29ubmVjdGlvblR5cGVzRW51bSxcbiAgICAgICAgQ0VMTFVMQVJORVRXT1JLMkc6ICdDRUxMVUxBUl9ORVRXT1JLXzJHJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtLFxuICAgICAgICBDRUxMVUxBUk5FVFdPUkszRzogJ0NFTExVTEFSX05FVFdPUktfM0cnIGFzIENvbm5lY3Rpb25UeXBlc0VudW0sXG4gICAgICAgIENFTExVTEFSTkVUV09SSzRHOiAnQ0VMTFVMQVJfTkVUV09SS180RycgYXMgQ29ubmVjdGlvblR5cGVzRW51bSxcbiAgICAgICAgQ0VMTFVMQVJORVRXT1JLNUc6ICdDRUxMVUxBUl9ORVRXT1JLXzVHJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtXG4gICAgfTtcbn1cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3lEVE8uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsibW9kZWwvc3RyYXRlZ3lEVE8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUdBLE1BQU0sS0FBVyxXQUFXLENBa0IzQjtBQWxCRCxXQUFpQixXQUFXO0lBRVgsb0NBQXdCLEdBQUc7UUFDcEMsS0FBSyxFQUFFLE9BQW1DO1FBQzFDLE1BQU0sRUFBRSxRQUFvQztRQUM1QyxHQUFHLEVBQUUsS0FBaUM7S0FDekMsQ0FBQztJQUVXLCtCQUFtQixHQUFHO1FBQy9CLE9BQU8sRUFBRSxTQUFnQztRQUN6QyxRQUFRLEVBQUUsVUFBaUM7UUFDM0MsSUFBSSxFQUFFLE1BQTZCO1FBQ25DLGVBQWUsRUFBRSxrQkFBeUM7UUFDMUQsaUJBQWlCLEVBQUUscUJBQTRDO1FBQy9ELGlCQUFpQixFQUFFLHFCQUE0QztRQUMvRCxpQkFBaUIsRUFBRSxxQkFBNEM7UUFDL0QsaUJBQWlCLEVBQUUscUJBQTRDO0tBQ2xFLENBQUM7QUFDTixDQUFDLEVBbEJnQixXQUFXLEtBQVgsV0FBVyxRQWtCM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKiBBcGkgRG9jdW1lbnRhdGlvblxuICpcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxLjBcbiAqIFxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHN3YWdnZXIgY29kZSBnZW5lcmF0b3IgcHJvZ3JhbS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IEF1ZGllbmNlU3RyRFRPIH0gZnJvbSAnLi9hdWRpZW5jZVN0ckRUTyc7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuL2Jhc2VNb2RlbCc7XG5pbXBvcnQgeyBEYXlQYXJ0IH0gZnJvbSAnLi9kYXlQYXJ0JztcbmltcG9ydCB7IERlYWxDYXRlZ29yeURUTyB9IGZyb20gJy4vZGVhbENhdGVnb3J5RFRPJztcbmltcG9ydCB7IFJUQkFnZ3JlZ2F0b3JzIH0gZnJvbSAnLi9yVEJBZ2dyZWdhdG9ycyc7XG5pbXBvcnQgeyBSVEJTaXRlcyB9IGZyb20gJy4vclRCU2l0ZXMnO1xuaW1wb3J0IHsgVGFyZ2V0QXBwQ2F0ZWdvcmllcyB9IGZyb20gJy4vdGFyZ2V0QXBwQ2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBUYXJnZXRCcm93c2VycyB9IGZyb20gJy4vdGFyZ2V0QnJvd3NlcnMnO1xuaW1wb3J0IHsgVGFyZ2V0R2VvRFRPIH0gZnJvbSAnLi90YXJnZXRHZW9EVE8nO1xuaW1wb3J0IHsgVGFyZ2V0TW9iaWxlRGV2aWNlcyB9IGZyb20gJy4vdGFyZ2V0TW9iaWxlRGV2aWNlcyc7XG5pbXBvcnQgeyBUaW1lWm9uZURUTyB9IGZyb20gJy4vdGltZVpvbmVEVE8nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyYXRlZ3lEVE8geyBcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIGFkR3JvdXBDb3VudD86IG51bWJlcjtcbiAgICBhZHZlcnRpc2VyPzogQmFzZU1vZGVsO1xuICAgIGFkdmVydGlzZXJJZD86IG51bWJlcjtcbiAgICBhcHBzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBhcHBzU3RyYXRlZ2llcz86IEFycmF5PEJhc2VNb2RlbD47XG4gICAgYXVjdGlvblR5cGVUYXJnZXRpbmc/OiBTdHJhdGVneURUTy5BdWN0aW9uVHlwZVRhcmdldGluZ0VudW07XG4gICAgYmlkQ2FwTWF4PzogbnVtYmVyO1xuICAgIGJpZENhcE1pbj86IG51bWJlcjtcbiAgICBiaWRQZXJjZW50YWdlPzogbnVtYmVyO1xuICAgIGJ1ZGdldD86IG51bWJlcjtcbiAgICBidWRnZXRCeT86IG51bWJlcjtcbiAgICBidWRnZXRWYWx1ZT86IG51bWJlcjtcbiAgICBjYW1wYWlnbj86IEJhc2VNb2RlbDtcbiAgICBjYW1wYWlnbkZjYXA/OiBib29sZWFuO1xuICAgIGNhbXBhaWduSWQ/OiBudW1iZXI7XG4gICAgY2hhbm5lbHM/OiBBcnJheTxCYXNlTW9kZWw+O1xuICAgIGNvbm5lY3Rpb25UeXBlcz86IEFycmF5PFN0cmF0ZWd5RFRPLkNvbm5lY3Rpb25UeXBlc0VudW0+O1xuICAgIGNwYVRhcmdldFZhbHVlPzogbnVtYmVyO1xuICAgIGNyZWF0ZWRCeT86IG51bWJlcjtcbiAgICBjcmVhdGlvblRpbWU/OiBudW1iZXI7XG4gICAgY3JlYXRpdmVzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBjdXJyZW5jeT86IEJhc2VNb2RlbDtcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgZGF5c0R1cmF0aW9uPzogbnVtYmVyO1xuICAgIGRheXNFbGFwc2VkPzogbnVtYmVyO1xuICAgIGRlbGl2ZXJ5UHJpb3JpdHk/OiBCYXNlTW9kZWw7XG4gICAgZWRpdGFibGU/OiBib29sZWFuO1xuICAgIGVuZFRpbWU/OiBudW1iZXI7XG4gICAgZmNhcD86IG51bWJlcjtcbiAgICBmY2FwRW5hYmxlZD86IGJvb2xlYW47XG4gICAgZmNhcEZyZXF1ZW5jeT86IG51bWJlcjtcbiAgICBmY2FwSW50ZXJ2YWw/OiBudW1iZXI7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgaXNBcmNoaXZlZD86IGJvb2xlYW47XG4gICAgaXNCYXJnYWluZXJBY3RpdmU/OiBib29sZWFuO1xuICAgIGlzRWRpdGFibGU/OiBib29sZWFuO1xuICAgIGlzTmF0aXZlPzogYm9vbGVhbjtcbiAgICBsaWNlbnNlZT86IEJhc2VNb2RlbDtcbiAgICBsaWNlbnNlZUlkPzogbnVtYmVyO1xuICAgIG1vZGlmaWVkQnk/OiBudW1iZXI7XG4gICAgbW9kaWZpZWRUaW1lPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgX25hdGl2ZT86IGJvb2xlYW47XG4gICAgb2xkR2VvVGFyZ2V0aW5nPzogc3RyaW5nO1xuICAgIHBhY2luZ0J1ZGdldFZhbHVlPzogbnVtYmVyO1xuICAgIHBhY2luZ1R5cGU/OiBCYXNlTW9kZWw7XG4gICAgcGl4ZWxzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBwbGFjZW1lbnRzPzogQXJyYXk8QmFzZU1vZGVsPjtcbiAgICBwcmljaW5nVHlwZT86IEJhc2VNb2RlbDtcbiAgICBwcmljaW5nVmFsdWU/OiBudW1iZXI7XG4gICAgcm9pVGFyZ2V0VHlwZT86IEJhc2VNb2RlbDtcbiAgICByb2lUYXJnZXRWYWx1ZT86IG51bWJlcjtcbiAgICBydGJBZ2dyZWdhdG9ycz86IFJUQkFnZ3JlZ2F0b3JzO1xuICAgIHJ0YlNpdGVzPzogUlRCU2l0ZXM7XG4gICAgc2VjdGlvbnM/OiBBcnJheTxCYXNlTW9kZWw+O1xuICAgIHNrYWRPcHRpbWlzZWRTdHJhdGVneT86IGJvb2xlYW47XG4gICAgc3RhcnRUaW1lPzogbnVtYmVyO1xuICAgIHN0cmF0ZWd5VHlwZT86IHN0cmluZztcbiAgICB0YXJnZXRBbmRyb2lkQ2F0ZWdvcmllcz86IFRhcmdldEFwcENhdGVnb3JpZXM7XG4gICAgdGFyZ2V0QXBwUmF0aW5ncz86IG51bWJlcjtcbiAgICB0YXJnZXRBcHBTZWdtZW50cz86IEF1ZGllbmNlU3RyRFRPO1xuICAgIHRhcmdldEJyb3dzZXJzPzogVGFyZ2V0QnJvd3NlcnM7XG4gICAgdGFyZ2V0RGF5cz86IERheVBhcnQ7XG4gICAgdGFyZ2V0RGVhbENhdGVnb3J5PzogRGVhbENhdGVnb3J5RFRPO1xuICAgIHRhcmdldERtcFNlZ21lbnRzPzogQXVkaWVuY2VTdHJEVE87XG4gICAgdGFyZ2V0R2VvZ3JhcGhpZXM/OiBUYXJnZXRHZW9EVE87XG4gICAgdGFyZ2V0SW9zQ2F0ZWdvcmllcz86IFRhcmdldEFwcENhdGVnb3JpZXM7XG4gICAgdGFyZ2V0TW9iaWxlRGV2aWNlcz86IFRhcmdldE1vYmlsZURldmljZXM7XG4gICAgdGFyZ2V0T25seVB1Ymxpc2hlZEFwcD86IGJvb2xlYW47XG4gICAgdGFyZ2V0V2ViU2VnbWVudHM/OiBBdWRpZW5jZVN0ckRUTztcbiAgICB0aW1lem9uZT86IFRpbWVab25lRFRPO1xuICAgIHVzZXJQdXJjaGFzZUZyZXF1ZW5jeT86IEFycmF5PEJhc2VNb2RlbD47XG59XG5leHBvcnQgbmFtZXNwYWNlIFN0cmF0ZWd5RFRPIHtcbiAgICBleHBvcnQgdHlwZSBBdWN0aW9uVHlwZVRhcmdldGluZ0VudW0gPSAnRklSU1QnIHwgJ1NFQ09ORCcgfCAnQUxMJztcbiAgICBleHBvcnQgY29uc3QgQXVjdGlvblR5cGVUYXJnZXRpbmdFbnVtID0ge1xuICAgICAgICBGSVJTVDogJ0ZJUlNUJyBhcyBBdWN0aW9uVHlwZVRhcmdldGluZ0VudW0sXG4gICAgICAgIFNFQ09ORDogJ1NFQ09ORCcgYXMgQXVjdGlvblR5cGVUYXJnZXRpbmdFbnVtLFxuICAgICAgICBBTEw6ICdBTEwnIGFzIEF1Y3Rpb25UeXBlVGFyZ2V0aW5nRW51bVxuICAgIH07XG4gICAgZXhwb3J0IHR5cGUgQ29ubmVjdGlvblR5cGVzRW51bSA9ICdVTktOT1dOJyB8ICdFVEhFUk5FVCcgfCAnV0lGSScgfCAnQ0VMTFVMQVJfTkVUV09SSycgfCAnQ0VMTFVMQVJfTkVUV09SS18yRycgfCAnQ0VMTFVMQVJfTkVUV09SS18zRycgfCAnQ0VMTFVMQVJfTkVUV09SS180RycgfCAnQ0VMTFVMQVJfTkVUV09SS181Ryc7XG4gICAgZXhwb3J0IGNvbnN0IENvbm5lY3Rpb25UeXBlc0VudW0gPSB7XG4gICAgICAgIFVOS05PV046ICdVTktOT1dOJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtLFxuICAgICAgICBFVEhFUk5FVDogJ0VUSEVSTkVUJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtLFxuICAgICAgICBXSUZJOiAnV0lGSScgYXMgQ29ubmVjdGlvblR5cGVzRW51bSxcbiAgICAgICAgQ0VMTFVMQVJORVRXT1JLOiAnQ0VMTFVMQVJfTkVUV09SSycgYXMgQ29ubmVjdGlvblR5cGVzRW51bSxcbiAgICAgICAgQ0VMTFVMQVJORVRXT1JLMkc6ICdDRUxMVUxBUl9ORVRXT1JLXzJHJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtLFxuICAgICAgICBDRUxMVUxBUk5FVFdPUkszRzogJ0NFTExVTEFSX05FVFdPUktfM0cnIGFzIENvbm5lY3Rpb25UeXBlc0VudW0sXG4gICAgICAgIENFTExVTEFSTkVUV09SSzRHOiAnQ0VMTFVMQVJfTkVUV09SS180RycgYXMgQ29ubmVjdGlvblR5cGVzRW51bSxcbiAgICAgICAgQ0VMTFVMQVJORVRXT1JLNUc6ICdDRUxMVUxBUl9ORVRXT1JLXzVHJyBhcyBDb25uZWN0aW9uVHlwZXNFbnVtXG4gICAgfTtcbn1cbiJdfQ==
@@ -230,25 +230,16 @@ var AudienceControllerService = /** @class */ (function () {
230
230
  reportProgress: reportProgress
231
231
  });
232
232
  };
233
- AudienceControllerService.prototype.getAllAudienceUsingPOST = function (advertiser_id, pageNumber, pageSize, refresh, reqId, search, sort, token, observe, reportProgress) {
233
+ AudienceControllerService.prototype.getAllAudienceUsingPOST = function (advertiser_id, refresh, reqId, search, token, observe, reportProgress) {
234
234
  if (observe === void 0) { observe = 'body'; }
235
235
  if (reportProgress === void 0) { reportProgress = false; }
236
236
  var queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });
237
237
  if (advertiser_id !== undefined && advertiser_id !== null) {
238
238
  queryParameters = queryParameters.set('advertiser_id', advertiser_id);
239
239
  }
240
- if (pageNumber !== undefined && pageNumber !== null) {
241
- queryParameters = queryParameters.set('pageNumber', pageNumber);
242
- }
243
- if (pageSize !== undefined && pageSize !== null) {
244
- queryParameters = queryParameters.set('pageSize', pageSize);
245
- }
246
240
  if (refresh !== undefined && refresh !== null) {
247
241
  queryParameters = queryParameters.set('refresh', refresh);
248
242
  }
249
- if (sort !== undefined && sort !== null) {
250
- queryParameters = queryParameters.set('sort', sort);
251
- }
252
243
  var headers = this.defaultHeaders;
253
244
  if (reqId !== undefined && reqId !== null) {
254
245
  headers = headers.set('reqId', String(reqId));
@@ -538,4 +529,4 @@ var AudienceControllerService = /** @class */ (function () {
538
529
  return AudienceControllerService;
539
530
  }());
540
531
  export { AudienceControllerService };
541
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaWVuY2VDb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsiYXBpL2F1ZGllbmNlQ29udHJvbGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCx1REFBdUQ7O0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUNuQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFpQi9FLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDO0FBSXJGO0lBTUksbUNBQXNCLFVBQXNCLEVBQWdDLFFBQWdCLEVBQWMsYUFBNEI7UUFBaEgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUpsQyxhQUFRLEdBQUcseUJBQXlCLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkU7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssa0RBQWMsR0FBdEIsVUFBdUIsUUFB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QUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztTQUNsRTtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQWtDLElBQUksQ0FBQyxRQUFRLHlCQUFvQixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUcsRUFDMUgsUUFBUSxFQUNSO1lBQ0ksZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUNKLENBQUM7SUFDTixDQUFDOztnQkF4eEJpQyxVQUFVOzZDQUFHLFFBQVEsWUFBRyxNQUFNLFNBQUMsU0FBUztnQkFBK0MsYUFBYSx1QkFBdkMsUUFBUTs7SUFOOUYseUJBQXlCO1FBRHJDLFVBQVUsRUFBRTtRQU9zQyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUMsV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsRUFBb0IsV0FBQSxRQUFRLEVBQUUsQ0FBQTtPQU5oRyx5QkFBeUIsQ0FneUJyQztJQUFELGdDQUFDO0NBQUEsQUFoeUJELElBZ3lCQztTQWh5QlkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcGkgRG9jdW1lbnRhdGlvblxuICogQXBpIERvY3VtZW50YXRpb25cbiAqXG4gKiBPcGVuQVBJIHNwZWMgdmVyc2lvbjogMS4wXG4gKiBcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IHRoZSBzd2FnZ2VyIGNvZGUgZ2VuZXJhdG9yIHByb2dyYW0uXG4gKiBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuLmdpdFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG4vKiB0c2xpbnQ6ZGlzYWJsZTpuby11bnVzZWQtdmFyaWFibGUgbWVtYmVyLW9yZGVyaW5nICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSAgICAgICAgICAgICAgICAgICAgICBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLFxuICAgICAgICAgSHR0cFJlc3BvbnNlLCBIdHRwRXZlbnQgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjIH0gICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9lbmNvZGVyJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUxpc3RBdWRpZW5jZUVTRFRPIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VMaXN0QXVkaWVuY2VFU0RUTyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlQWNjZXNzRFRPIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZUFjY2Vzc0RUTyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdEJhc2VNb2RlbCB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0QmFzZU1vZGVsJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0RG1wQXVkaWVuY2VEVE8gfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdERtcEF1ZGllbmNlRFRPJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGllbmNlRFRPIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaWVuY2VEVE8nO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZSc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0byB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0TWV0YVJ1bGVzRHRvJztcbmltcG9ydCB7IEF1ZGllbmNlRFRPIH0gZnJvbSAnLi4vbW9kZWwvYXVkaWVuY2VEVE8nO1xuaW1wb3J0IHsgUGl4ZWxSZW1vdGVDb25maWdEVE8gfSBmcm9tICcuLi9tb2RlbC9waXhlbFJlbW90ZUNvbmZpZ0RUTyc7XG5pbXBvcnQgeyBQbGF0Zm9ybUF1ZGllbmNlRFRPIH0gZnJvbSAnLi4vbW9kZWwvcGxhdGZvcm1BdWRpZW5jZURUTyc7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0IH0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoUmVxdWVzdCc7XG5cbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdWRpZW5jZUNvbnRyb2xsZXJTZXJ2aWNlIHtcblxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9ICdodHRwczovL2xvY2FsaG9zdDoxMDA0NSc7XG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgcHVibGljIGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIEBPcHRpb25hbCgpQEluamVjdChCQVNFX1BBVEgpIGJhc2VQYXRoOiBzdHJpbmcsIEBPcHRpb25hbCgpIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgaWYgKGJhc2VQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGggfHwgY29uZmlndXJhdGlvbi5iYXNlUGF0aCB8fCB0aGlzLmJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNvbnN1bWVzIHN0cmluZ1tdIG1pbWUtdHlwZXNcbiAgICAgKiBAcmV0dXJuIHRydWU6IGNvbnN1bWVzIGNvbnRhaW5zICdtdWx0aXBhcnQvZm9ybS1kYXRhJywgZmFsc2U6IG90aGVyd2lzZVxuICAgICAqL1xuICAgIHByaXZhdGUgY2FuQ29uc3VtZUZvcm0oY29uc3VtZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7XG4gICAgICAgIGZvciAoY29uc3QgY29uc3VtZSBvZiBjb25zdW1lcykge1xuICAgICAgICAgICAgaWYgKGZvcm0gPT09IGNvbnN1bWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gZGVhY3RpdmF0ZSBMaXN0cyBvZiBBdWRpZW5jZSBpZFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBpZCBpZFxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVChpZDogc3RyaW5nLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2U+O1xuICAgIHB1YmxpYyBhY3RpdmF0ZUF1ZGllbmNlVXNpbmdQT1NUKGlkOiBzdHJpbmcsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlPj47XG4gICAgcHVibGljIGFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QoaWQ6IHN0cmluZywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlPj47XG4gICAgcHVibGljIGFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QoaWQ6IHN0cmluZywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBhY3RpdmF0ZUF1ZGllbmNlVXNpbmdQT1NULicpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2lkJywgPGFueT5pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXVkaWVuY2UvYWN0aXZhdGVgLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSB0byBjaGVja0Nvbm5lY3Rpb24uXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvbmZpZyBjb25maWdcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGNoZWNrQ29ubmVjdGlvblVzaW5nUE9TVChjb25maWc6IFBpeGVsUmVtb3RlQ29uZmlnRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+O1xuICAgIHB1YmxpYyBjaGVja0Nvbm5lY3Rpb25Vc2luZ1BPU1QoY29uZmlnOiBQaXhlbFJlbW90ZUNvbmZpZ0RUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+PjtcbiAgICBwdWJsaWMgY2hlY2tDb25uZWN0aW9uVXNpbmdQT1NUKGNvbmZpZzogUGl4ZWxSZW1vdGVDb25maWdEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdEJhc2VNb2RlbD4+O1xuICAgIHB1YmxpYyBjaGVja0Nvbm5lY3Rpb25Vc2luZ1BPU1QoY29uZmlnOiBQaXhlbFJlbW90ZUNvbmZpZ0RUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoY29uZmlnID09PSBudWxsIHx8IGNvbmZpZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBjb25maWcgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBjaGVja0Nvbm5lY3Rpb25Vc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9jaGVja19jb25uZWN0aW9uYCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBBcGkgRm9yIEF1ZGllbmNlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBhdWRpZW5jZSBhdWRpZW5jZVxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlQXVkaWVuY2VVc2luZ1BPU1QoYXVkaWVuY2U6IEF1ZGllbmNlRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz47XG4gICAgcHVibGljIGNyZWF0ZUF1ZGllbmNlVXNpbmdQT1NUKGF1ZGllbmNlOiBBdWRpZW5jZURUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz4+O1xuICAgIHB1YmxpYyBjcmVhdGVBdWRpZW5jZVVzaW5nUE9TVChhdWRpZW5jZTogQXVkaWVuY2VEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPPj47XG4gICAgcHVibGljIGNyZWF0ZUF1ZGllbmNlVXNpbmdQT1NUKGF1ZGllbmNlOiBBdWRpZW5jZURUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYXVkaWVuY2UgPT09IG51bGwgfHwgYXVkaWVuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgYXVkaWVuY2Ugd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBjcmVhdGVBdWRpZW5jZVVzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXVkaWVuY2VgLFxuICAgICAgICAgICAgYXVkaWVuY2UsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gZGVhY3RpdmF0ZSBMaXN0cyBvZiBBdWRpZW5jZSBpZFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBpZCBpZFxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVhY3RpdmF0ZUF1ZGllbmNlVXNpbmdQT1NUKGlkOiBzdHJpbmcsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT47XG4gICAgcHVibGljIGRlYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVChpZDogc3RyaW5nLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT4+O1xuICAgIHB1YmxpYyBkZWFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QoaWQ6IHN0cmluZywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlPj47XG4gICAgcHVibGljIGRlYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVChpZDogc3RyaW5nLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBpZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGRlYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIGlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdpZCcsIDxhbnk+aWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlL2RlYWN0aXZhdGVgLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwaSB0byBnZXQgQXVkaWVuY2UgQWNjZXNzXG4gICAgICogXG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBY2Nlc3NVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZUFjY2Vzc0RUTz47XG4gICAgcHVibGljIGdldEFjY2Vzc1VzaW5nR0VUKGlkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VBY2Nlc3NEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QWNjZXNzVXNpbmdHRVQoaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VBY2Nlc3NEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QWNjZXNzVXNpbmdHRVQoaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBY2Nlc3NVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJyovKidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZUFjY2Vzc0RUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlL2FjY2Vzcy8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGdldCBBbGwgQXVkaWVuY2VcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWR2ZXJ0aXNlcl9pZCBhZHZlcnRpc2VyX2lkXG4gICAgICogQHBhcmFtIHBhZ2VOdW1iZXIgcGFnZU51bWJlclxuICAgICAqIEBwYXJhbSBwYWdlU2l6ZSBwYWdlU2l6ZVxuICAgICAqIEBwYXJhbSByZWZyZXNoIHJlZnJlc2hcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSBzZWFyY2ggc2VhcmNoXG4gICAgICogQHBhcmFtIHNvcnQgc29ydFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbEF1ZGllbmNlVXNpbmdQT1NUKGFkdmVydGlzZXJfaWQ/OiBudW1iZXIsIHBhZ2VOdW1iZXI/OiBudW1iZXIsIHBhZ2VTaXplPzogbnVtYmVyLCByZWZyZXNoPzogYm9vbGVhbiwgcmVxSWQ/OiBzdHJpbmcsIHNlYXJjaD86IFNlYXJjaFJlcXVlc3QsIHNvcnQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8+O1xuICAgIHB1YmxpYyBnZXRBbGxBdWRpZW5jZVVzaW5nUE9TVChhZHZlcnRpc2VyX2lkPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCBzZWFyY2g/OiBTZWFyY2hSZXF1ZXN0LCBzb3J0Pzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QWxsQXVkaWVuY2VVc2luZ1BPU1QoYWR2ZXJ0aXNlcl9pZD86IG51bWJlciwgcGFnZU51bWJlcj86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIsIHJlZnJlc2g/OiBib29sZWFuLCByZXFJZD86IHN0cmluZywgc2VhcmNoPzogU2VhcmNoUmVxdWVzdCwgc29ydD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VMaXN0QXVkaWVuY2VFU0RUTz4+O1xuICAgIHB1YmxpYyBnZXRBbGxBdWRpZW5jZVVzaW5nUE9TVChhZHZlcnRpc2VyX2lkPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCBzZWFyY2g/OiBTZWFyY2hSZXF1ZXN0LCBzb3J0Pzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cblxuXG5cblxuXG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGFkdmVydGlzZXJfaWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VyX2lkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdhZHZlcnRpc2VyX2lkJywgPGFueT5hZHZlcnRpc2VyX2lkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFnZU51bWJlciAhPT0gdW5kZWZpbmVkICYmIHBhZ2VOdW1iZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ3BhZ2VOdW1iZXInLCA8YW55PnBhZ2VOdW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWdlU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHBhZ2VTaXplICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdwYWdlU2l6ZScsIDxhbnk+cGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWZyZXNoICE9PSB1bmRlZmluZWQgJiYgcmVmcmVzaCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgncmVmcmVzaCcsIDxhbnk+cmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvcnQgIT09IHVuZGVmaW5lZCAmJiBzb3J0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdzb3J0JywgPGFueT5zb3J0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9hbGxgLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGdldCBBZmZsZSBETVAgQXVkaWVuY2UgTGlzdFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBhZHZlcnRpc2VyX2lkIGFkdmVydGlzZXJfaWRcbiAgICAgKiBAcGFyYW0gbGltaXQgbGltaXRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSBzdGFydCBzdGFydFxuICAgICAqIEBwYXJhbSBzdHlwZSBzdHlwZVxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCBsaW1pdD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBzdHlwZT86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3REbXBBdWRpZW5jZURUTz47XG4gICAgcHVibGljIGdldEFsbERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCBsaW1pdD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBzdHlwZT86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdERtcEF1ZGllbmNlRFRPPj47XG4gICAgcHVibGljIGdldEFsbERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCBsaW1pdD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBzdHlwZT86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3REbXBBdWRpZW5jZURUTz4+O1xuICAgIHB1YmxpYyBnZXRBbGxEbXBBdWRpZW5jZVVzaW5nR0VUKGFkdmVydGlzZXJfaWQ6IG51bWJlciwgbGltaXQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzdGFydD86IG51bWJlciwgc3R5cGU/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYWR2ZXJ0aXNlcl9pZCA9PT0gbnVsbCB8fCBhZHZlcnRpc2VyX2lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGFkdmVydGlzZXJfaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBbGxEbXBBdWRpZW5jZVVzaW5nR0VULicpO1xuICAgICAgICB9XG5cblxuXG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGFkdmVydGlzZXJfaWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VyX2lkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdhZHZlcnRpc2VyX2lkJywgPGFueT5hZHZlcnRpc2VyX2lkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgIT09IHVuZGVmaW5lZCAmJiBsaW1pdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnbGltaXQnLCA8YW55PmxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCAmJiBzdGFydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnc3RhcnQnLCA8YW55PnN0YXJ0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3R5cGUgIT09IHVuZGVmaW5lZCAmJiBzdHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnc3R5cGUnLCA8YW55PnN0eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnKi8qJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdERtcEF1ZGllbmNlRFRPPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXVkaWVuY2UvZG1wYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwaSB0byBnZXQgQXVkaWVuY2VcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gaWQgaWRcbiAgICAgKiBAcGFyYW0gcmVmcmVzaCByZWZyZXNoXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCeUlkVXNpbmdHRVQxKGlkOiBudW1iZXIsIHJlZnJlc2g/OiBib29sZWFuLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz47XG4gICAgcHVibGljIGdldEJ5SWRVc2luZ0dFVDEoaWQ6IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QnlJZFVzaW5nR0VUMShpZDogbnVtYmVyLCByZWZyZXNoPzogYm9vbGVhbiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QnlJZFVzaW5nR0VUMShpZDogbnVtYmVyLCByZWZyZXNoPzogYm9vbGVhbiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRCeUlkVXNpbmdHRVQxLicpO1xuICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHtlbmNvZGVyOiBuZXcgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMoKX0pO1xuICAgICAgICBpZiAocmVmcmVzaCAhPT0gdW5kZWZpbmVkICYmIHJlZnJlc2ggIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ3JlZnJlc2gnLCA8YW55PnJlZnJlc2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICcqLyonXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGdldCBBdWRpZW5jZSBNZXRhIFJ1bGVcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldE1ldGFSdWxlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0bz47XG4gICAgcHVibGljIGdldE1ldGFSdWxlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0TWV0YVJ1bGVzRHRvPj47XG4gICAgcHVibGljIGdldE1ldGFSdWxlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0bz4+O1xuICAgIHB1YmxpYyBnZXRNZXRhUnVsZXNVc2luZ0dFVChyZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJyovKidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RNZXRhUnVsZXNEdG8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9ydWxlc2AsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gZ2V0IEFmZmxlIERNUCBTeW5jZWQgQXVkaWVuY2UgTGlzdFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBhZHZlcnRpc2VyX2lkIGFkdmVydGlzZXJfaWRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldFN5bmNlZERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaWVuY2VEVE8+O1xuICAgIHB1YmxpYyBnZXRTeW5jZWREbXBBdWRpZW5jZVVzaW5nR0VUKGFkdmVydGlzZXJfaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgZ2V0U3luY2VkRG1wQXVkaWVuY2VVc2luZ0dFVChhZHZlcnRpc2VyX2lkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpZW5jZURUTz4+O1xuICAgIHB1YmxpYyBnZXRTeW5jZWREbXBBdWRpZW5jZVVzaW5nR0VUKGFkdmVydGlzZXJfaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYWR2ZXJ0aXNlcl9pZCA9PT0gbnVsbCB8fCBhZHZlcnRpc2VyX2lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGFkdmVydGlzZXJfaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRTeW5jZWREbXBBdWRpZW5jZVVzaW5nR0VULicpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGFkdmVydGlzZXJfaWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VyX2lkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdhZHZlcnRpc2VyX2lkJywgPGFueT5hZHZlcnRpc2VyX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnKi8qJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpZW5jZURUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlL2RtcC9zeW5jZWRgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIHN5bmMgRE1QIEFkdWllbmNlXG4gICAgICogXG4gICAgICogQHBhcmFtIHBsYXRmb3JtQXVkaWVuY2VEVE8gcGxhdGZvcm1BdWRpZW5jZURUT1xuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3luY0F1ZGllbmNlVXNpbmdQT1NUKHBsYXRmb3JtQXVkaWVuY2VEVE86IFBsYXRmb3JtQXVkaWVuY2VEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHB1YmxpYyBzeW5jQXVkaWVuY2VVc2luZ1BPU1QocGxhdGZvcm1BdWRpZW5jZURUTzogUGxhdGZvcm1BdWRpZW5jZURUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XG4gICAgcHVibGljIHN5bmNBdWRpZW5jZVVzaW5nUE9TVChwbGF0Zm9ybUF1ZGllbmNlRFRPOiBQbGF0Zm9ybUF1ZGllbmNlRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gICAgcHVibGljIHN5bmNBdWRpZW5jZVVzaW5nUE9TVChwbGF0Zm9ybUF1ZGllbmNlRFRPOiBQbGF0Zm9ybUF1ZGllbmNlRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgICAgIGlmIChwbGF0Zm9ybUF1ZGllbmNlRFRPID09PSBudWxsIHx8IHBsYXRmb3JtQXVkaWVuY2VEVE8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgcGxhdGZvcm1BdWRpZW5jZURUTyB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHN5bmNBdWRpZW5jZVVzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxhbnk+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9zeW5jYCxcbiAgICAgICAgICAgIHBsYXRmb3JtQXVkaWVuY2VEVE8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gc3luY1JlbW90ZUF1ZGllbmNlIGJ5IElkXG4gICAgICogXG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+O1xuICAgIHB1YmxpYyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdEJhc2VNb2RlbD4+O1xuICAgIHB1YmxpYyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+PjtcbiAgICBwdWJsaWMgc3luY1JlbW90ZUF1ZGllbmNlVXNpbmdHRVQoaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJyovKidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX0vc3luY19yZW1vdGVgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIEFwaSBGb3IgQXVkaWVuY2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIGF1ZGllbmNlIGF1ZGllbmNlXG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVBdWRpZW5jZVVzaW5nUE9TVChhdWRpZW5jZTogQXVkaWVuY2VEVE8sIGlkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPPjtcbiAgICBwdWJsaWMgdXBkYXRlQXVkaWVuY2VVc2luZ1BPU1QoYXVkaWVuY2U6IEF1ZGllbmNlRFRPLCBpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPPj47XG4gICAgcHVibGljIHVwZGF0ZUF1ZGllbmNlVXNpbmdQT1NUKGF1ZGllbmNlOiBBdWRpZW5jZURUTywgaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgdXBkYXRlQXVkaWVuY2VVc2luZ1BPU1QoYXVkaWVuY2U6IEF1ZGllbmNlRFRPLCBpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgICAgIGlmIChhdWRpZW5jZSA9PT0gbnVsbCB8fCBhdWRpZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBhdWRpZW5jZSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHVwZGF0ZUF1ZGllbmNlVXNpbmdQT1NULicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlQXVkaWVuY2VVc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpZCkpfWAsXG4gICAgICAgICAgICBhdWRpZW5jZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
532
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaWVuY2VDb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcmV2eHVpL2FwaS1jbGllbnRzLXRzLyIsInNvdXJjZXMiOlsiYXBpL2F1ZGllbmNlQ29udHJvbGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCx1REFBdUQ7O0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUNuQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFpQi9FLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDO0FBSXJGO0lBTUksbUNBQXNCLFVBQXNCLEVBQWdDLFFBQWdCLEVBQWMsYUFBNEI7UUFBaEgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUpsQyxhQUFRLEdBQUcseUJBQXlCLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkU7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssa0RBQWMsR0FBdEIsVUFBdUIsUUFB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QjtRQURyQyxVQUFVLEVBQUU7UUFPc0MsV0FBQSxRQUFRLEVBQUUsQ0FBQSxFQUFDLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLEVBQW9CLFdBQUEsUUFBUSxFQUFFLENBQUE7T0FOaEcseUJBQXlCLENBaXhCckM7SUFBRCxnQ0FBQztDQUFBLEFBanhCRCxJQWl4QkM7U0FqeEJZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcbiAgICAgICAgIEh0dHBSZXNwb25zZSwgSHR0cEV2ZW50IH0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYyB9ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vZW5jb2Rlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RBcGlMaXN0UmVzcG9uc2VMaXN0QXVkaWVuY2VFU0RUTyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8nO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZUFjY2Vzc0RUTyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VBY2Nlc3NEVE8nO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8nO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdEJhc2VNb2RlbCc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdERtcEF1ZGllbmNlRFRPIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3REbXBBdWRpZW5jZURUTyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpZW5jZURUTyB9IGZyb20gJy4uL21vZGVsL2FwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGllbmNlRFRPJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2UnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RNZXRhUnVsZXNEdG8gfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0byc7XG5pbXBvcnQgeyBBdWRpZW5jZURUTyB9IGZyb20gJy4uL21vZGVsL2F1ZGllbmNlRFRPJztcbmltcG9ydCB7IFBpeGVsUmVtb3RlQ29uZmlnRFRPIH0gZnJvbSAnLi4vbW9kZWwvcGl4ZWxSZW1vdGVDb25maWdEVE8nO1xuaW1wb3J0IHsgUGxhdGZvcm1BdWRpZW5jZURUTyB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtQXVkaWVuY2VEVE8nO1xuaW1wb3J0IHsgU2VhcmNoUmVxdWVzdCB9IGZyb20gJy4uL21vZGVsL3NlYXJjaFJlcXVlc3QnO1xuXG5pbXBvcnQgeyBCQVNFX1BBVEgsIENPTExFQ1RJT05fRk9STUFUUyB9ICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vdmFyaWFibGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXVkaWVuY2VDb250cm9sbGVyU2VydmljZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cHM6Ly9sb2NhbGhvc3Q6MTAwNDUnO1xuICAgIHB1YmxpYyBkZWZhdWx0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIHB1YmxpYyBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBAT3B0aW9uYWwoKUBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nLCBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChiYXNlUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoIHx8IGNvbmZpZ3VyYXRpb24uYmFzZVBhdGggfHwgdGhpcy5iYXNlUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb25zdW1lcyBzdHJpbmdbXSBtaW1lLXR5cGVzXG4gICAgICogQHJldHVybiB0cnVlOiBjb25zdW1lcyBjb250YWlucyAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlOiBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbkNvbnN1bWVGb3JtKGNvbnN1bWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtID0gJ211bHRpcGFydC9mb3JtLWRhdGEnO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnN1bWUgb2YgY29uc3VtZXMpIHtcbiAgICAgICAgICAgIGlmIChmb3JtID09PSBjb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGRlYWN0aXZhdGUgTGlzdHMgb2YgQXVkaWVuY2UgaWRcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gaWQgaWRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QoaWQ6IHN0cmluZywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TWFwaW50UmVzcG9uc2VNZXNzYWdlPjtcbiAgICBwdWJsaWMgYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVChpZDogc3RyaW5nLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT4+O1xuICAgIHB1YmxpYyBhY3RpdmF0ZUF1ZGllbmNlVXNpbmdQT1NUKGlkOiBzdHJpbmcsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT4+O1xuICAgIHB1YmxpYyBhY3RpdmF0ZUF1ZGllbmNlVXNpbmdQT1NUKGlkOiBzdHJpbmcsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIGlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdpZCcsIDxhbnk+aWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlL2FjdGl2YXRlYCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgdG8gY2hlY2tDb25uZWN0aW9uLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb25maWcgY29uZmlnXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjaGVja0Nvbm5lY3Rpb25Vc2luZ1BPU1QoY29uZmlnOiBQaXhlbFJlbW90ZUNvbmZpZ0RUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0QmFzZU1vZGVsPjtcbiAgICBwdWJsaWMgY2hlY2tDb25uZWN0aW9uVXNpbmdQT1NUKGNvbmZpZzogUGl4ZWxSZW1vdGVDb25maWdEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QmFzZU1vZGVsPj47XG4gICAgcHVibGljIGNoZWNrQ29ubmVjdGlvblVzaW5nUE9TVChjb25maWc6IFBpeGVsUmVtb3RlQ29uZmlnRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+PjtcbiAgICBwdWJsaWMgY2hlY2tDb25uZWN0aW9uVXNpbmdQT1NUKGNvbmZpZzogUGl4ZWxSZW1vdGVDb25maWdEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gbnVsbCB8fCBjb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgY29uZmlnIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgY2hlY2tDb25uZWN0aW9uVXNpbmdQT1NULicpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3BvbnNlT2JqZWN0QmFzZU1vZGVsPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXVkaWVuY2UvY2hlY2tfY29ubmVjdGlvbmAsXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgQXBpIEZvciBBdWRpZW5jZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYXVkaWVuY2UgYXVkaWVuY2VcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUF1ZGllbmNlVXNpbmdQT1NUKGF1ZGllbmNlOiBBdWRpZW5jZURUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+O1xuICAgIHB1YmxpYyBjcmVhdGVBdWRpZW5jZVVzaW5nUE9TVChhdWRpZW5jZTogQXVkaWVuY2VEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgY3JlYXRlQXVkaWVuY2VVc2luZ1BPU1QoYXVkaWVuY2U6IEF1ZGllbmNlRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz4+O1xuICAgIHB1YmxpYyBjcmVhdGVBdWRpZW5jZVVzaW5nUE9TVChhdWRpZW5jZTogQXVkaWVuY2VEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGF1ZGllbmNlID09PSBudWxsIHx8IGF1ZGllbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGF1ZGllbmNlIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgY3JlYXRlQXVkaWVuY2VVc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlYCxcbiAgICAgICAgICAgIGF1ZGllbmNlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGRlYWN0aXZhdGUgTGlzdHMgb2YgQXVkaWVuY2UgaWRcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gaWQgaWRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGRlYWN0aXZhdGVBdWRpZW5jZVVzaW5nUE9TVChpZDogc3RyaW5nLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2U+O1xuICAgIHB1YmxpYyBkZWFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QoaWQ6IHN0cmluZywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2U+PjtcbiAgICBwdWJsaWMgZGVhY3RpdmF0ZUF1ZGllbmNlVXNpbmdQT1NUKGlkOiBzdHJpbmcsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdE1hcGludFJlc3BvbnNlTWVzc2FnZT4+O1xuICAgIHB1YmxpYyBkZWFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QoaWQ6IHN0cmluZywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBkZWFjdGl2YXRlQXVkaWVuY2VVc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHtlbmNvZGVyOiBuZXcgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMoKX0pO1xuICAgICAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiBpZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnaWQnLCA8YW55PmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RNYXBpbnRSZXNwb25zZU1lc3NhZ2U+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9kZWFjdGl2YXRlYCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gZ2V0IEF1ZGllbmNlIEFjY2Vzc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBpZCBpZFxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWNjZXNzVXNpbmdHRVQoaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VBY2Nlc3NEVE8+O1xuICAgIHB1YmxpYyBnZXRBY2Nlc3NVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlQWNjZXNzRFRPPj47XG4gICAgcHVibGljIGdldEFjY2Vzc1VzaW5nR0VUKGlkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlQWNjZXNzRFRPPj47XG4gICAgcHVibGljIGdldEFjY2Vzc1VzaW5nR0VUKGlkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QWNjZXNzVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICcqLyonXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VBY2Nlc3NEVE8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9hY2Nlc3MvJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGlkKSl9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwaSB0byBnZXQgQWxsIEF1ZGllbmNlXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkdmVydGlzZXJfaWQgYWR2ZXJ0aXNlcl9pZFxuICAgICAqIEBwYXJhbSByZWZyZXNoIHJlZnJlc2hcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSBzZWFyY2ggc2VhcmNoXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWxsQXVkaWVuY2VVc2luZ1BPU1QoYWR2ZXJ0aXNlcl9pZD86IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCBzZWFyY2g/OiBTZWFyY2hSZXF1ZXN0LCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUxpc3RBdWRpZW5jZUVTRFRPPjtcbiAgICBwdWJsaWMgZ2V0QWxsQXVkaWVuY2VVc2luZ1BPU1QoYWR2ZXJ0aXNlcl9pZD86IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCBzZWFyY2g/OiBTZWFyY2hSZXF1ZXN0LCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QWxsQXVkaWVuY2VVc2luZ1BPU1QoYWR2ZXJ0aXNlcl9pZD86IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCBzZWFyY2g/OiBTZWFyY2hSZXF1ZXN0LCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdEFwaUxpc3RSZXNwb25zZUxpc3RBdWRpZW5jZUVTRFRPPj47XG4gICAgcHVibGljIGdldEFsbEF1ZGllbmNlVXNpbmdQT1NUKGFkdmVydGlzZXJfaWQ/OiBudW1iZXIsIHJlZnJlc2g/OiBib29sZWFuLCByZXFJZD86IHN0cmluZywgc2VhcmNoPzogU2VhcmNoUmVxdWVzdCwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG5cblxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChhZHZlcnRpc2VyX2lkICE9PSB1bmRlZmluZWQgJiYgYWR2ZXJ0aXNlcl9pZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnYWR2ZXJ0aXNlcl9pZCcsIDxhbnk+YWR2ZXJ0aXNlcl9pZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlZnJlc2ggIT09IHVuZGVmaW5lZCAmJiByZWZyZXNoICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdyZWZyZXNoJywgPGFueT5yZWZyZXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3BvbnNlT2JqZWN0QXBpTGlzdFJlc3BvbnNlTGlzdEF1ZGllbmNlRVNEVE8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9hbGxgLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGdldCBBZmZsZSBETVAgQXVkaWVuY2UgTGlzdFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBhZHZlcnRpc2VyX2lkIGFkdmVydGlzZXJfaWRcbiAgICAgKiBAcGFyYW0gbGltaXQgbGltaXRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSBzdGFydCBzdGFydFxuICAgICAqIEBwYXJhbSBzdHlwZSBzdHlwZVxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCBsaW1pdD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBzdHlwZT86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3REbXBBdWRpZW5jZURUTz47XG4gICAgcHVibGljIGdldEFsbERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCBsaW1pdD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBzdHlwZT86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdERtcEF1ZGllbmNlRFRPPj47XG4gICAgcHVibGljIGdldEFsbERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCBsaW1pdD86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHN0YXJ0PzogbnVtYmVyLCBzdHlwZT86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3REbXBBdWRpZW5jZURUTz4+O1xuICAgIHB1YmxpYyBnZXRBbGxEbXBBdWRpZW5jZVVzaW5nR0VUKGFkdmVydGlzZXJfaWQ6IG51bWJlciwgbGltaXQ/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzdGFydD86IG51bWJlciwgc3R5cGU/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYWR2ZXJ0aXNlcl9pZCA9PT0gbnVsbCB8fCBhZHZlcnRpc2VyX2lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGFkdmVydGlzZXJfaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBbGxEbXBBdWRpZW5jZVVzaW5nR0VULicpO1xuICAgICAgICB9XG5cblxuXG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGFkdmVydGlzZXJfaWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VyX2lkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdhZHZlcnRpc2VyX2lkJywgPGFueT5hZHZlcnRpc2VyX2lkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgIT09IHVuZGVmaW5lZCAmJiBsaW1pdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnbGltaXQnLCA8YW55PmxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCAmJiBzdGFydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnc3RhcnQnLCA8YW55PnN0YXJ0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3R5cGUgIT09IHVuZGVmaW5lZCAmJiBzdHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnc3R5cGUnLCA8YW55PnN0eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnKi8qJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdERtcEF1ZGllbmNlRFRPPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYXVkaWVuY2UvZG1wYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwaSB0byBnZXQgQXVkaWVuY2VcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gaWQgaWRcbiAgICAgKiBAcGFyYW0gcmVmcmVzaCByZWZyZXNoXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCeUlkVXNpbmdHRVQxKGlkOiBudW1iZXIsIHJlZnJlc2g/OiBib29sZWFuLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz47XG4gICAgcHVibGljIGdldEJ5SWRVc2luZ0dFVDEoaWQ6IG51bWJlciwgcmVmcmVzaD86IGJvb2xlYW4sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QnlJZFVzaW5nR0VUMShpZDogbnVtYmVyLCByZWZyZXNoPzogYm9vbGVhbiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgZ2V0QnlJZFVzaW5nR0VUMShpZDogbnVtYmVyLCByZWZyZXNoPzogYm9vbGVhbiwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRCeUlkVXNpbmdHRVQxLicpO1xuICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHtlbmNvZGVyOiBuZXcgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMoKX0pO1xuICAgICAgICBpZiAocmVmcmVzaCAhPT0gdW5kZWZpbmVkICYmIHJlZnJlc2ggIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ3JlZnJlc2gnLCA8YW55PnJlZnJlc2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICcqLyonXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIGdldCBBdWRpZW5jZSBNZXRhIFJ1bGVcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldE1ldGFSdWxlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0bz47XG4gICAgcHVibGljIGdldE1ldGFSdWxlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0TWV0YVJ1bGVzRHRvPj47XG4gICAgcHVibGljIGdldE1ldGFSdWxlc1VzaW5nR0VUKHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdE1ldGFSdWxlc0R0bz4+O1xuICAgIHB1YmxpYyBnZXRNZXRhUnVsZXNVc2luZ0dFVChyZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJyovKidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RNZXRhUnVsZXNEdG8+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9ydWxlc2AsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gZ2V0IEFmZmxlIERNUCBTeW5jZWQgQXVkaWVuY2UgTGlzdFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBhZHZlcnRpc2VyX2lkIGFkdmVydGlzZXJfaWRcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldFN5bmNlZERtcEF1ZGllbmNlVXNpbmdHRVQoYWR2ZXJ0aXNlcl9pZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaWVuY2VEVE8+O1xuICAgIHB1YmxpYyBnZXRTeW5jZWREbXBBdWRpZW5jZVVzaW5nR0VUKGFkdmVydGlzZXJfaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgZ2V0U3luY2VkRG1wQXVkaWVuY2VVc2luZ0dFVChhZHZlcnRpc2VyX2lkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpZW5jZURUTz4+O1xuICAgIHB1YmxpYyBnZXRTeW5jZWREbXBBdWRpZW5jZVVzaW5nR0VUKGFkdmVydGlzZXJfaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoYWR2ZXJ0aXNlcl9pZCA9PT0gbnVsbCB8fCBhZHZlcnRpc2VyX2lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGFkdmVydGlzZXJfaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRTeW5jZWREbXBBdWRpZW5jZVVzaW5nR0VULicpO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGFkdmVydGlzZXJfaWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VyX2lkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdhZHZlcnRpc2VyX2lkJywgPGFueT5hZHZlcnRpc2VyX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnKi8qJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpZW5jZURUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlL2RtcC9zeW5jZWRgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBpIHRvIHN5bmMgRE1QIEFkdWllbmNlXG4gICAgICogXG4gICAgICogQHBhcmFtIHBsYXRmb3JtQXVkaWVuY2VEVE8gcGxhdGZvcm1BdWRpZW5jZURUT1xuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3luY0F1ZGllbmNlVXNpbmdQT1NUKHBsYXRmb3JtQXVkaWVuY2VEVE86IFBsYXRmb3JtQXVkaWVuY2VEVE8sIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHB1YmxpYyBzeW5jQXVkaWVuY2VVc2luZ1BPU1QocGxhdGZvcm1BdWRpZW5jZURUTzogUGxhdGZvcm1BdWRpZW5jZURUTywgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XG4gICAgcHVibGljIHN5bmNBdWRpZW5jZVVzaW5nUE9TVChwbGF0Zm9ybUF1ZGllbmNlRFRPOiBQbGF0Zm9ybUF1ZGllbmNlRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gICAgcHVibGljIHN5bmNBdWRpZW5jZVVzaW5nUE9TVChwbGF0Zm9ybUF1ZGllbmNlRFRPOiBQbGF0Zm9ybUF1ZGllbmNlRFRPLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgICAgIGlmIChwbGF0Zm9ybUF1ZGllbmNlRFRPID09PSBudWxsIHx8IHBsYXRmb3JtQXVkaWVuY2VEVE8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgcGxhdGZvcm1BdWRpZW5jZURUTyB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHN5bmNBdWRpZW5jZVVzaW5nUE9TVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxhbnk+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS9zeW5jYCxcbiAgICAgICAgICAgIHBsYXRmb3JtQXVkaWVuY2VEVE8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcGkgdG8gc3luY1JlbW90ZUF1ZGllbmNlIGJ5IElkXG4gICAgICogXG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+O1xuICAgIHB1YmxpYyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdEJhc2VNb2RlbD4+O1xuICAgIHB1YmxpYyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVChpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+PjtcbiAgICBwdWJsaWMgc3luY1JlbW90ZUF1ZGllbmNlVXNpbmdHRVQoaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzeW5jUmVtb3RlQXVkaWVuY2VVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgIGlmIChyZXFJZCAhPT0gdW5kZWZpbmVkICYmIHJlcUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3JlcUlkJywgU3RyaW5nKHJlcUlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQgJiYgdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgndG9rZW4nLCBTdHJpbmcodG9rZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJyovKidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RCYXNlTW9kZWw+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hdWRpZW5jZS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX0vc3luY19yZW1vdGVgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIEFwaSBGb3IgQXVkaWVuY2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIGF1ZGllbmNlIGF1ZGllbmNlXG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVBdWRpZW5jZVVzaW5nUE9TVChhdWRpZW5jZTogQXVkaWVuY2VEVE8sIGlkOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPPjtcbiAgICBwdWJsaWMgdXBkYXRlQXVkaWVuY2VVc2luZ1BPU1QoYXVkaWVuY2U6IEF1ZGllbmNlRFRPLCBpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdEF1ZGllbmNlRFRPPj47XG4gICAgcHVibGljIHVwZGF0ZUF1ZGllbmNlVXNpbmdQT1NUKGF1ZGllbmNlOiBBdWRpZW5jZURUTywgaWQ6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0QXVkaWVuY2VEVE8+PjtcbiAgICBwdWJsaWMgdXBkYXRlQXVkaWVuY2VVc2luZ1BPU1QoYXVkaWVuY2U6IEF1ZGllbmNlRFRPLCBpZDogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgICAgIGlmIChhdWRpZW5jZSA9PT0gbnVsbCB8fCBhdWRpZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBhdWRpZW5jZSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHVwZGF0ZUF1ZGllbmNlVXNpbmdQT1NULicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlQXVkaWVuY2VVc2luZ1BPU1QuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzcG9uc2VPYmplY3RBdWRpZW5jZURUTz4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2F1ZGllbmNlLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpZCkpfWAsXG4gICAgICAgICAgICBhdWRpZW5jZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19