@pipeline-builder/api-core 5.2.6 → 5.2.7

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 (181) hide show
  1. package/lib/constants/ai-providers.js +1 -1
  2. package/lib/constants/http-status.js +1 -1
  3. package/lib/constants/index.js +1 -1
  4. package/lib/constants/time.js +1 -1
  5. package/lib/errors/app-errors.js +1 -1
  6. package/lib/errors/index.js +1 -1
  7. package/lib/helpers/access-helpers.d.ts +19 -0
  8. package/lib/helpers/access-helpers.js +24 -4
  9. package/lib/helpers/content-disposition.js +1 -1
  10. package/lib/helpers/crud-helpers.js +1 -1
  11. package/lib/helpers/index.d.ts +1 -1
  12. package/lib/helpers/index.js +2 -2
  13. package/lib/helpers/org-hierarchy-http.js +1 -1
  14. package/lib/helpers/org-hierarchy.js +1 -1
  15. package/lib/helpers/restore-helpers.js +1 -1
  16. package/lib/helpers/sse-helpers.js +13 -2
  17. package/lib/helpers/support-calendar.js +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/middleware/ask-provenance.js +1 -1
  20. package/lib/middleware/assurance.js +1 -1
  21. package/lib/middleware/auth.js +1 -1
  22. package/lib/middleware/deferred-quota-check.js +1 -1
  23. package/lib/middleware/ecosystem-guard.js +1 -1
  24. package/lib/middleware/index.js +1 -1
  25. package/lib/middleware/jwt-verify.js +1 -1
  26. package/lib/middleware/mongo-sanitize.js +1 -1
  27. package/lib/middleware/on-behalf.js +1 -1
  28. package/lib/middleware/permission-gates.js +1 -1
  29. package/lib/middleware/quota-exempt-routes.js +1 -1
  30. package/lib/middleware/revocation.js +1 -1
  31. package/lib/middleware/route-table.js +16 -1
  32. package/lib/middleware/service-tokens.js +1 -1
  33. package/lib/middleware/step-up.js +1 -1
  34. package/lib/middleware/system-org.d.ts +18 -5
  35. package/lib/middleware/system-org.js +19 -6
  36. package/lib/openapi/extend-zod.js +1 -1
  37. package/lib/openapi/index.js +1 -1
  38. package/lib/openapi/registry.js +1 -1
  39. package/lib/openapi/routes/ask-routes.js +1 -1
  40. package/lib/openapi/routes/billing-routes.js +1 -1
  41. package/lib/openapi/routes/image-registry-routes.js +1 -1
  42. package/lib/openapi/routes/index.js +1 -1
  43. package/lib/openapi/routes/message-routes.js +1 -1
  44. package/lib/openapi/routes/pipeline-routes.js +1 -1
  45. package/lib/openapi/routes/pipeline-template-routes.js +1 -1
  46. package/lib/openapi/routes/plugin-routes.js +1 -1
  47. package/lib/openapi/routes/quota-routes.js +1 -1
  48. package/lib/openapi/schema-registry.js +1 -1
  49. package/lib/routes/health.js +1 -1
  50. package/lib/routes/index.js +1 -1
  51. package/lib/services/ai-call-weight.js +1 -1
  52. package/lib/services/alert-delivery.js +1 -1
  53. package/lib/services/api-key-exchange.js +1 -1
  54. package/lib/services/audit-context.js +1 -1
  55. package/lib/services/audit-spool.js +1 -1
  56. package/lib/services/cache-service.js +1 -1
  57. package/lib/services/circuit-breaker.js +1 -1
  58. package/lib/services/compliance-client.js +1 -1
  59. package/lib/services/compliance-event-subscriber.js +1 -1
  60. package/lib/services/durable-event-bus.js +1 -1
  61. package/lib/services/ecosystem-notify-client.d.ts +7 -1
  62. package/lib/services/ecosystem-notify-client.js +9 -3
  63. package/lib/services/entity-events.js +1 -1
  64. package/lib/services/env-redis.js +1 -1
  65. package/lib/services/http-client.js +19 -3
  66. package/lib/services/index.d.ts +1 -1
  67. package/lib/services/index.js +2 -2
  68. package/lib/services/jwks-cache.js +1 -1
  69. package/lib/services/leader-lock.js +1 -1
  70. package/lib/services/notification-channels.js +1 -1
  71. package/lib/services/org-ai-client.js +1 -1
  72. package/lib/services/pagerduty-inbound.js +1 -1
  73. package/lib/services/pagerduty.js +1 -1
  74. package/lib/services/quota-increment-batcher.js +1 -1
  75. package/lib/services/quota.js +1 -1
  76. package/lib/services/remote-audit-client.js +1 -1
  77. package/lib/services/retry-forever.js +1 -1
  78. package/lib/services/retry-strategy.js +1 -1
  79. package/lib/services/s3-client.js +1 -1
  80. package/lib/services/scheduler.js +1 -1
  81. package/lib/services/service-boot.js +1 -1
  82. package/lib/services/service-keys.js +2 -2
  83. package/lib/services/sse-ticket-store.js +1 -1
  84. package/lib/services/system-notification.js +1 -1
  85. package/lib/services/token-revocation.js +1 -1
  86. package/lib/services/version-vuln-policy.d.ts +11 -0
  87. package/lib/services/version-vuln-policy.js +33 -7
  88. package/lib/types/ai-catalog.js +1 -1
  89. package/lib/types/ask-proposals.d.ts +23 -0
  90. package/lib/types/ask-proposals.js +29 -1
  91. package/lib/types/audit-events.js +1 -1
  92. package/lib/types/build-catalog.d.ts +65 -0
  93. package/lib/types/build-catalog.js +95 -1
  94. package/lib/types/catalog-metadata.js +1 -1
  95. package/lib/types/common.js +1 -1
  96. package/lib/types/compliance-exemption.js +1 -1
  97. package/lib/types/ecosystem-notifications.d.ts +9 -0
  98. package/lib/types/ecosystem-notifications.js +15 -6
  99. package/lib/types/ecosystem.d.ts +1 -6
  100. package/lib/types/ecosystem.js +18 -5
  101. package/lib/types/error-codes.js +1 -1
  102. package/lib/types/feature-flags.d.ts +17 -1
  103. package/lib/types/feature-flags.js +1 -1
  104. package/lib/types/http.js +1 -1
  105. package/lib/types/index.d.ts +3 -3
  106. package/lib/types/index.js +4 -4
  107. package/lib/types/metadata-keys.js +1 -1
  108. package/lib/types/permissions.d.ts +60 -13
  109. package/lib/types/permissions.js +63 -14
  110. package/lib/types/pipeline-template.js +1 -1
  111. package/lib/types/pipeline.js +1 -1
  112. package/lib/types/plugin-catalog.js +1 -1
  113. package/lib/types/plugin-health.js +1 -1
  114. package/lib/types/plugin-scan.d.ts +69 -0
  115. package/lib/types/plugin-scan.js +77 -1
  116. package/lib/types/quota-catalog.js +15 -2
  117. package/lib/types/quota-tiers.d.ts +27 -160
  118. package/lib/types/quota-tiers.js +47 -255
  119. package/lib/types/remote-audit-actions.d.ts +1 -1
  120. package/lib/types/remote-audit-actions.js +9 -1
  121. package/lib/types/reserved-tags.js +1 -1
  122. package/lib/types/tier-limits.d.ts +210 -0
  123. package/lib/types/tier-limits.js +254 -0
  124. package/lib/types/usage-projection.js +1 -1
  125. package/lib/types/visibility.js +1 -1
  126. package/lib/types/wire-vocabulary.d.ts +7 -0
  127. package/lib/types/wire-vocabulary.js +7 -1
  128. package/lib/utils/alias-resolver.js +1 -1
  129. package/lib/utils/api-key.js +1 -1
  130. package/lib/utils/audit.js +1 -1
  131. package/lib/utils/aws-scrub.js +1 -1
  132. package/lib/utils/compliance-attributes.js +1 -1
  133. package/lib/utils/concurrency-gate.d.ts +98 -0
  134. package/lib/utils/concurrency-gate.js +110 -0
  135. package/lib/utils/concurrency.js +1 -1
  136. package/lib/utils/crash-handlers.js +1 -1
  137. package/lib/utils/date.js +1 -1
  138. package/lib/utils/dsse.js +1 -1
  139. package/lib/utils/env.d.ts +11 -0
  140. package/lib/utils/env.js +14 -1
  141. package/lib/utils/headers.js +1 -1
  142. package/lib/utils/identity.js +1 -1
  143. package/lib/utils/index.d.ts +1 -0
  144. package/lib/utils/index.js +2 -1
  145. package/lib/utils/jwk.js +2 -2
  146. package/lib/utils/logger.js +1 -1
  147. package/lib/utils/metric-emitter.js +1 -1
  148. package/lib/utils/object.js +1 -1
  149. package/lib/utils/params.js +1 -1
  150. package/lib/utils/plugin-compliance.d.ts +9 -1
  151. package/lib/utils/plugin-compliance.js +1 -1
  152. package/lib/utils/proof-of-work.js +1 -1
  153. package/lib/utils/response.js +1 -1
  154. package/lib/utils/retention.js +1 -1
  155. package/lib/utils/safe-require.js +1 -1
  156. package/lib/utils/secret-encryption.js +1 -1
  157. package/lib/utils/secret-rotation.js +1 -1
  158. package/lib/utils/secure-compare.js +1 -1
  159. package/lib/utils/sensitive-patterns.js +1 -1
  160. package/lib/utils/service-registry.js +1 -1
  161. package/lib/utils/ssrf.js +1 -1
  162. package/lib/validation/ai-schemas.js +1 -1
  163. package/lib/validation/common-schemas.js +1 -1
  164. package/lib/validation/dockerfile-static.js +1 -1
  165. package/lib/validation/index.d.ts +1 -1
  166. package/lib/validation/index.js +2 -2
  167. package/lib/validation/message-schemas.d.ts +73 -0
  168. package/lib/validation/message-schemas.js +63 -2
  169. package/lib/validation/middleware.js +1 -1
  170. package/lib/validation/pipeline-schemas.js +1 -1
  171. package/lib/validation/pipeline-template-schemas.js +1 -1
  172. package/lib/validation/plugin-base-images.js +1 -1
  173. package/lib/validation/plugin-catalog-detect.js +1 -1
  174. package/lib/validation/plugin-catalog-metadata.js +1 -1
  175. package/lib/validation/plugin-heuristics.js +1 -1
  176. package/lib/validation/plugin-lint.js +1 -1
  177. package/lib/validation/plugin-name-confusable.js +1 -1
  178. package/lib/validation/plugin-schemas.js +1 -1
  179. package/lib/validation/plugin-spec-schema.js +1 -1
  180. package/lib/validation/plugin-template-contract.js +1 -1
  181. package/package.json +11 -4
@@ -15,4 +15,4 @@ export { tagRouteGate, getRouteGates, audited, dynamicAuthz, buildRouteTable, is
15
15
  export { armDeferredQuotaCheck, runDeferredQuotaCheck, } from './deferred-quota-check.js';
16
16
  export { ON_BEHALF_HEADER, ON_BEHALF_CALLERS, onBehalfHeaders, onBehalfCaller, } from './on-behalf.js';
17
17
  export { QUOTA_EXEMPT_ROUTES, isQuotaExemptRoute, } from './quota-exempt-routes.js';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxXQUFXLEdBQ1osTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixvQkFBb0IsR0FDckIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEdBRXpCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsY0FBYyxHQUVmLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsZUFBZSxHQUNoQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEdBQ3ZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUNMLGFBQWEsRUFDYixrQkFBa0IsR0FDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsVUFBVSxFQUNWLDhCQUE4QixHQUMvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUNiLE9BQU8sRUFDUCxZQUFZLEVBQ1osZUFBZSxFQUNmLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBR25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsR0FDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsY0FBYyxHQUVmLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsR0FFbkIsTUFBTSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQge1xuICB2ZXJpZnlVc2VySnd0LFxuICB2ZXJpZnlCZWFyZXJUb2tlbixcbiAgaGFzVmFsaWRJZGVudGl0eUNsYWltcyxcbn0gZnJvbSAnLi9qd3QtdmVyaWZ5LmpzJztcbmV4cG9ydCB7XG4gIHJlcXVpcmVBdXRoLFxufSBmcm9tICcuL2F1dGguanMnO1xuZXhwb3J0IHtcbiAgc2V0VG9rZW5SZXZvY2F0aW9uU3RvcmUsXG4gIGlzQWNjZXNzVG9rZW5SZXZva2VkLFxufSBmcm9tICcuL3Jldm9jYXRpb24uanMnO1xuZXhwb3J0IHtcbiAgcmVxdWlyZUFzc3VyYW5jZSxcbiAgcmVmdXNlV2Vha1Nlc3Npb24sXG4gIHJlZnVzZUZvck9yZ0FkbWluQXNzdXJhbmNlLFxuICByZXF1aXJlT3JnQWRtaW5Bc3N1cmFuY2UsXG4gIHR5cGUgQXNzdXJhbmNlT3B0aW9ucyxcbn0gZnJvbSAnLi9hc3N1cmFuY2UuanMnO1xuZXhwb3J0IHtcbiAgdXNlckhhc1Blcm1pc3Npb24sXG4gIHNldEF1dGh6RGVuaWFsQXVkaXRvcixcbiAgcmVjb3JkQXV0aHpEZW5pYWwsXG4gIHJlcXVpcmVQZXJtaXNzaW9uLFxuICByZXF1aXJlQWxsUGVybWlzc2lvbnMsXG4gIHJlcXVpcmVQZXJtaXNzaW9uT3JTZXJ2aWNlLFxuICByZXF1aXJlU2VydmljZVByaW5jaXBhbCxcbiAgcmVxdWlyZUludGVybmFsU2VydmljZSxcbiAgaXNTeXN0ZW1BZG1pbixcbiAgaGFzU2NvcGUsXG4gIHJlcXVpcmVTeXN0ZW1BZG1pbixcbiAgcmVxdWlyZUZlYXR1cmUsXG4gIHR5cGUgQXV0aHpEZW5pYWxJbmZvLFxufSBmcm9tICcuL3Blcm1pc3Npb24tZ2F0ZXMuanMnO1xuZXhwb3J0IHtcbiAgaXNTeXN0ZW1PcmdJZCxcbiAgU1lTVEVNX09SR19JRCxcbiAgU1lTVEVNX09SR19TTFVHLFxufSBmcm9tICcuL3N5c3RlbS1vcmcuanMnO1xuZXhwb3J0IHtcbiAgc2VydmljZU5hbWVPZixcbiAgaXNTZXJ2aWNlVG9rZW5EZW5pZWQsXG4gIHNpZ25TZXJ2aWNlVG9rZW4sXG4gIGdldFNlcnZpY2VBdXRoSGVhZGVyLFxuICBpc1NlcnZpY2VQcmluY2lwYWwsXG4gIGlzU2VydmljZUFjY291bnRQcmluY2lwYWwsXG4gIGlzU2VydmljZVByaW5jaXBhbE5hbWVkLFxuICB2ZXJpZnlTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICcuL3NlcnZpY2UtdG9rZW5zLmpzJztcbmV4cG9ydCB7IHJlcXVpcmVTeXN0ZW1PcmcsIHJlcXVpcmVTeXN0ZW1PcmdQZXJtaXNzaW9uIH0gZnJvbSAnLi9lY29zeXN0ZW0tZ3VhcmQuanMnO1xuZXhwb3J0IHtcbiAgbW9uZ29TYW5pdGl6ZSxcbiAgTUFYX1NBTklUSVpFX0RFUFRILFxufSBmcm9tICcuL21vbmdvLXNhbml0aXplLmpzJztcbmV4cG9ydCB7XG4gIHByb3Bvc2FibGUsXG4gIEFTS19QUk9WRU5BTkNFX1JFRlVTRURfQ09VTlRFUixcbn0gZnJvbSAnLi9hc2stcHJvdmVuYW5jZS5qcyc7XG5leHBvcnQge1xuICByZXF1aXJlU3RlcFVwLFxuICB0eXBlIFN0ZXBVcE1ldGhvZCxcbiAgU1RST05HX1NURVBfVVBfTUVUSE9EUyxcbn0gZnJvbSAnLi9zdGVwLXVwLmpzJztcbmV4cG9ydCB7XG4gIHRhZ1JvdXRlR2F0ZSxcbiAgZ2V0Um91dGVHYXRlcyxcbiAgYXVkaXRlZCxcbiAgZHluYW1pY0F1dGh6LFxuICBidWlsZFJvdXRlVGFibGUsXG4gIGlzV3JpdGVNZXRob2QsXG4gIHN1bW1hcml6ZVJvdXRlVGFibGUsXG4gIERZTkFNSUNfUFJJTkNJUEFMUyxcbiAgdHlwZSBEeW5hbWljUHJpbmNpcGFsLFxuICB0eXBlIFJvdXRlVGFibGVFbnRyeSxcbn0gZnJvbSAnLi9yb3V0ZS10YWJsZS5qcyc7XG5leHBvcnQge1xuICBhcm1EZWZlcnJlZFF1b3RhQ2hlY2ssXG4gIHJ1bkRlZmVycmVkUXVvdGFDaGVjayxcbn0gZnJvbSAnLi9kZWZlcnJlZC1xdW90YS1jaGVjay5qcyc7XG5leHBvcnQge1xuICBPTl9CRUhBTEZfSEVBREVSLFxuICBPTl9CRUhBTEZfQ0FMTEVSUyxcbiAgb25CZWhhbGZIZWFkZXJzLFxuICBvbkJlaGFsZkNhbGxlcixcbiAgdHlwZSBPbkJlaGFsZlN1YmplY3QsXG59IGZyb20gJy4vb24tYmVoYWxmLmpzJztcbmV4cG9ydCB7XG4gIFFVT1RBX0VYRU1QVF9ST1VURVMsXG4gIGlzUXVvdGFFeGVtcHRSb3V0ZSxcbiAgdHlwZSBRdW90YUV4ZW1wdFJvdXRlLFxufSBmcm9tICcuL3F1b3RhLWV4ZW1wdC1yb3V0ZXMuanMnO1xuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsc0JBQXNCLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLFdBQVcsR0FDWixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixHQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLDBCQUEwQixFQUMxQix3QkFBd0IsR0FFekIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixhQUFhLEVBQ2IsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixjQUFjLEdBRWYsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixlQUFlLEdBQ2hCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2QixzQkFBc0IsR0FDdkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQ0wsYUFBYSxFQUNiLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsOEJBQThCLEdBQy9CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGFBQWEsRUFFYixzQkFBc0IsR0FDdkIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsT0FBTyxFQUNQLFlBQVksRUFDWixlQUFlLEVBQ2YsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixrQkFBa0IsR0FHbkIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixjQUFjLEdBRWYsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUVuQixNQUFNLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7XG4gIHZlcmlmeVVzZXJKd3QsXG4gIHZlcmlmeUJlYXJlclRva2VuLFxuICBoYXNWYWxpZElkZW50aXR5Q2xhaW1zLFxufSBmcm9tICcuL2p3dC12ZXJpZnkuanMnO1xuZXhwb3J0IHtcbiAgcmVxdWlyZUF1dGgsXG59IGZyb20gJy4vYXV0aC5qcyc7XG5leHBvcnQge1xuICBzZXRUb2tlblJldm9jYXRpb25TdG9yZSxcbiAgaXNBY2Nlc3NUb2tlblJldm9rZWQsXG59IGZyb20gJy4vcmV2b2NhdGlvbi5qcyc7XG5leHBvcnQge1xuICByZXF1aXJlQXNzdXJhbmNlLFxuICByZWZ1c2VXZWFrU2Vzc2lvbixcbiAgcmVmdXNlRm9yT3JnQWRtaW5Bc3N1cmFuY2UsXG4gIHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZSxcbiAgdHlwZSBBc3N1cmFuY2VPcHRpb25zLFxufSBmcm9tICcuL2Fzc3VyYW5jZS5qcyc7XG5leHBvcnQge1xuICB1c2VySGFzUGVybWlzc2lvbixcbiAgc2V0QXV0aHpEZW5pYWxBdWRpdG9yLFxuICByZWNvcmRBdXRoekRlbmlhbCxcbiAgcmVxdWlyZVBlcm1pc3Npb24sXG4gIHJlcXVpcmVBbGxQZXJtaXNzaW9ucyxcbiAgcmVxdWlyZVBlcm1pc3Npb25PclNlcnZpY2UsXG4gIHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsLFxuICByZXF1aXJlSW50ZXJuYWxTZXJ2aWNlLFxuICBpc1N5c3RlbUFkbWluLFxuICBoYXNTY29wZSxcbiAgcmVxdWlyZVN5c3RlbUFkbWluLFxuICByZXF1aXJlRmVhdHVyZSxcbiAgdHlwZSBBdXRoekRlbmlhbEluZm8sXG59IGZyb20gJy4vcGVybWlzc2lvbi1nYXRlcy5qcyc7XG5leHBvcnQge1xuICBpc1N5c3RlbU9yZ0lkLFxuICBTWVNURU1fT1JHX0lELFxuICBTWVNURU1fT1JHX1NMVUcsXG59IGZyb20gJy4vc3lzdGVtLW9yZy5qcyc7XG5leHBvcnQge1xuICBzZXJ2aWNlTmFtZU9mLFxuICBpc1NlcnZpY2VUb2tlbkRlbmllZCxcbiAgc2lnblNlcnZpY2VUb2tlbixcbiAgZ2V0U2VydmljZUF1dGhIZWFkZXIsXG4gIGlzU2VydmljZVByaW5jaXBhbCxcbiAgaXNTZXJ2aWNlQWNjb3VudFByaW5jaXBhbCxcbiAgaXNTZXJ2aWNlUHJpbmNpcGFsTmFtZWQsXG4gIHZlcmlmeVNlcnZpY2VQcmluY2lwYWwsXG59IGZyb20gJy4vc2VydmljZS10b2tlbnMuanMnO1xuZXhwb3J0IHsgcmVxdWlyZVN5c3RlbU9yZywgcmVxdWlyZVN5c3RlbU9yZ1Blcm1pc3Npb24gfSBmcm9tICcuL2Vjb3N5c3RlbS1ndWFyZC5qcyc7XG5leHBvcnQge1xuICBtb25nb1Nhbml0aXplLFxuICBNQVhfU0FOSVRJWkVfREVQVEgsXG59IGZyb20gJy4vbW9uZ28tc2FuaXRpemUuanMnO1xuZXhwb3J0IHtcbiAgcHJvcG9zYWJsZSxcbiAgQVNLX1BST1ZFTkFOQ0VfUkVGVVNFRF9DT1VOVEVSLFxufSBmcm9tICcuL2Fzay1wcm92ZW5hbmNlLmpzJztcbmV4cG9ydCB7XG4gIHJlcXVpcmVTdGVwVXAsXG4gIHR5cGUgU3RlcFVwTWV0aG9kLFxuICBTVFJPTkdfU1RFUF9VUF9NRVRIT0RTLFxufSBmcm9tICcuL3N0ZXAtdXAuanMnO1xuZXhwb3J0IHtcbiAgdGFnUm91dGVHYXRlLFxuICBnZXRSb3V0ZUdhdGVzLFxuICBhdWRpdGVkLFxuICBkeW5hbWljQXV0aHosXG4gIGJ1aWxkUm91dGVUYWJsZSxcbiAgaXNXcml0ZU1ldGhvZCxcbiAgc3VtbWFyaXplUm91dGVUYWJsZSxcbiAgRFlOQU1JQ19QUklOQ0lQQUxTLFxuICB0eXBlIER5bmFtaWNQcmluY2lwYWwsXG4gIHR5cGUgUm91dGVUYWJsZUVudHJ5LFxufSBmcm9tICcuL3JvdXRlLXRhYmxlLmpzJztcbmV4cG9ydCB7XG4gIGFybURlZmVycmVkUXVvdGFDaGVjayxcbiAgcnVuRGVmZXJyZWRRdW90YUNoZWNrLFxufSBmcm9tICcuL2RlZmVycmVkLXF1b3RhLWNoZWNrLmpzJztcbmV4cG9ydCB7XG4gIE9OX0JFSEFMRl9IRUFERVIsXG4gIE9OX0JFSEFMRl9DQUxMRVJTLFxuICBvbkJlaGFsZkhlYWRlcnMsXG4gIG9uQmVoYWxmQ2FsbGVyLFxuICB0eXBlIE9uQmVoYWxmU3ViamVjdCxcbn0gZnJvbSAnLi9vbi1iZWhhbGYuanMnO1xuZXhwb3J0IHtcbiAgUVVPVEFfRVhFTVBUX1JPVVRFUyxcbiAgaXNRdW90YUV4ZW1wdFJvdXRlLFxuICB0eXBlIFF1b3RhRXhlbXB0Um91dGUsXG59IGZyb20gJy4vcXVvdGEtZXhlbXB0LXJvdXRlcy5qcyc7XG4iXX0=
@@ -102,4 +102,4 @@ export function hasValidIdentityClaims(decoded) {
102
102
  && (decoded.aal === 1 || decoded.aal === 2)
103
103
  && typeof decoded.auth_time === 'number';
104
104
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZlcmlmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2p3dC12ZXJpZnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7O0dBR0c7QUFFSCxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELDJGQUEyRjtBQUMzRixNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU87UUFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUM1RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQWlCLEtBQWE7SUFDL0QsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RD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LEdBQUcsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7V0FDeEMsT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQmVhcmVyLXRva2VuIHZlcmlmaWNhdGlvbjogdGhlIHVzZXIgY2hhaW4gKEVTMjU2IGFnYWluc3QgcGxhdGZvcm0ncyBKV0tTKSBhbmRcbiAqIHRoZSBpZGVudGl0eS1jbGFpbSBzaGFwZSBldmVyeSBnYXRlIHJlYXNvbnMgYWJvdXQuXG4gKi9cblxuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuaW1wb3J0IHsgcGxhdGZvcm1Kd2tzQ2FjaGUgfSBmcm9tICcuLi9zZXJ2aWNlcy9qd2tzLWNhY2hlLmpzJztcbmltcG9ydCB7IFNFUlZJQ0VfU1VCSkVDVF9QUkVGSVgsIGlzU2VydmljZUtpZCwgdmVyaWZ5U2VydmljZUp3dCB9IGZyb20gJy4uL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy5qcyc7XG5pbXBvcnQgeyBBVVRIX01FVEhPRFMsIFBSSU5DSVBBTF9UWVBFUywgVE9LRU5fVVNFUywgdHlwZSBKd3RQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB7IFVTRVJfVE9LRU5fQUxHT1JJVEhNLCBkZWNvZGVKd3RIZWFkZXIgfSBmcm9tICcuLi91dGlscy9qd2suanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG4vKiogSXNzdWVyL2F1ZGllbmNlIHBpbm5pbmcsIHdoZW4gdGhlIGRlcGxveW1lbnQgY29uZmlndXJlcyB0aGVtLiBTaGFyZWQgYnkgYm90aCBjaGFpbnMuICovXG5leHBvcnQgZnVuY3Rpb24gaXNzdWVyQXVkaWVuY2VPcHRpb25zKCk6IHsgaXNzdWVyPzogc3RyaW5nOyBhdWRpZW5jZT86IHN0cmluZyB9IHtcbiAgcmV0dXJuIHtcbiAgICAuLi4ocHJvY2Vzcy5lbnYuSldUX0lTU1VFUiA/IHsgaXNzdWVyOiBwcm9jZXNzLmVudi5KV1RfSVNTVUVSIH0gOiB7fSksXG4gICAgLi4uKHByb2Nlc3MuZW52LkpXVF9BVURJRU5DRSA/IHsgYXVkaWVuY2U6IHByb2Nlc3MuZW52LkpXVF9BVURJRU5DRSB9IDoge30pLFxuICB9O1xufVxuXG4vKipcbiAqIFZlcmlmeSBhIHRva2VuIHRoYXQgc3BlYWtzIGZvciBhIFBFUlNPTiDigJQgYWNjZXNzLCBzdGVwLXVwLCBhbmQgdGhlIHRva2VuIGFuXG4gKiBvcGFxdWUgYWNjZXNzIGtleSBpcyBleGNoYW5nZWQgZm9yIOKAlCBhZ2FpbnN0IHBsYXRmb3JtJ3MgcHVibGlzaGVkIHNpZ25pbmdcbiAqIGtleXMuXG4gKlxuICogRVMyNTYgYW5kIGEgYGtpZGAgYXJlIGJvdGggbWFuZGF0b3J5OiBubyBga2lkYCBtZWFucyBubyB3YXkgdG8gcGljayB0aGUgcmlnaHRcbiAqIGtleSBhY3Jvc3MgYSByb3RhdGlvbiwgYW5kIGFueSBvdGhlciBhbGdvcml0aG0gaXMgcmVmdXNlZCBvdXRyaWdodCwgd2hpY2ggaXNcbiAqIHdoYXQgbWFrZXMgXCJubyBzZXJ2aWNlIGFjY2VwdHMgYW4gSFMyNTYgdXNlciB0b2tlblwiIGEgcHJvcGVydHkgb2YgdGhlIGNvZGVcbiAqIHJhdGhlciB0aGFuIGEgY29udmVudGlvbi4gS2V5IGxvb2t1cCBnb2VzIHRocm91Z2ggdGhlIHNoYXJlZCBKV0tTIGNhY2hlXG4gKiAoMTAtbWludXRlIHJlZnJlc2gsIG9uZSByZWZldGNoIG9uIGFuIHVua25vd24gYGtpZGAsIGJyaWVmIG5lZ2F0aXZlIGNhY2hlKS5cbiAqXG4gKiBAdGhyb3dzIHtVbmtub3duS2lkRXJyb3J9IHRoZSBrZXkgc2V0IGlzIGN1cnJlbnQgYW5kIGhhcyBubyBzdWNoIGtleSDihpIgNDAxLlxuICogQHRocm93cyB7Sndrc1VuYXZhaWxhYmxlRXJyb3J9IHRoZSBrZXkgc2V0IGNvdWxkIG5vdCBiZSBvYnRhaW5lZCDihpIgNTAzOyBhblxuICogICAgICAgICB1bnZlcmlmaWFibGUgdG9rZW4gaXMgbmV2ZXIgdHJlYXRlZCBhcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVVzZXJKd3Q8VCA9IEp3dFBheWxvYWQ+KHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgaGVhZGVyID0gZGVjb2RlSnd0SGVhZGVyKHRva2VuKTtcbiAgaWYgKGhlYWRlcj8uYWxnICE9PSBVU0VSX1RPS0VOX0FMR09SSVRITSB8fCAhaGVhZGVyLmtpZCkge1xuICAgIHRocm93IG5ldyBqd3QuSnNvbldlYlRva2VuRXJyb3IoYFVzZXIgdG9rZW5zIG11c3QgYmUgc2lnbmVkIHdpdGggJHtVU0VSX1RPS0VOX0FMR09SSVRITX0gYW5kIGNhcnJ5IGEga2lkYCk7XG4gIH1cbiAgY29uc3Qga2V5ID0gYXdhaXQgcGxhdGZvcm1Kd2tzQ2FjaGUoKS5nZXRLZXkoaGVhZGVyLmtpZCk7XG4gIHJldHVybiBqd3QudmVyaWZ5KHRva2VuLCBrZXksIHsgYWxnb3JpdGhtczogW1VTRVJfVE9LRU5fQUxHT1JJVEhNXSwgLi4uaXNzdWVyQXVkaWVuY2VPcHRpb25zKCkgfSkgYXMgVDtcbn1cblxuLyoqXG4gKiBWZXJpZnkgQU5ZIGJlYXJlciB0b2tlbiBhbmQgcmV0dXJuIGl0cyBjbGFpbXMuXG4gKlxuICogU2luY2UgIzE0IHRoZXJlIGlzIG5vIHNoYXJlZCBzZWNyZXQgbGVmdDogQk9USCBjaGFpbnMgYXJlIEVTMjU2IHdpdGggYSBga2lkYCxcbiAqIHNvIHRoZSBkaXNwYXRjaCBpcyBieSAqKndobyBvd25zIHRoZSBga2lkYCoqIHJhdGhlciB0aGFuIGJ5IGFsZ29yaXRobSDigJQgYW5kXG4gKiBiZWNhdXNlIGEgYGtpZGAgaXMgYW4gUkZDIDc2MzggdGh1bWJwcmludCwgb3duZXJzaGlwIGlzIGEgZmFjdCBhYm91dCB0aGUga2V5LFxuICogbm90IGEgY2xhaW0gdGhlIHRva2VuIG1ha2VzIGFib3V0IGl0c2VsZjpcbiAqXG4gKiAtIGEgYGtpZGAgcHVibGlzaGVkIGluIHRoZSBwZXItc2VydmljZSBrZXkgYnVuZGxlIOKGkiBhbiBJTlRFUk5BTCBTRVJWSUNFIHRva2VuXG4gKiAgICh7QGxpbmsgc2lnblNlcnZpY2VUb2tlbn0pLCB2ZXJpZmllZCB3aXRoIHRoYXQgc2VydmljZSdzIGtleTsgaXRzIGBzdWJgIG11c3RcbiAqICAgbmFtZSB0aGUgc2FtZSBzZXJ2aWNlLCBzbyBvbmUgc2VydmljZSBjYW4gbmV2ZXIgc3BlYWsgZm9yIGFub3RoZXIuXG4gKiAtIGFueXRoaW5nIGVsc2Ug4oaSIGEgcGxhdGZvcm0tc2lnbmVkIFVTRVIgdG9rZW4sIHZlcmlmaWVkIGFnYWluc3QgcGxhdGZvcm0nc1xuICogICBwdWJsaXNoZWQgSldLUy4gQSB0b2tlbiBjbGFpbWluZyBgcHJpbmNpcGFsVHlwZTogJ3NlcnZpY2UnYCBpcyByZWZ1c2VkXG4gKiAgIGhlcmU6IGFuIGludGVybmFsIGlkZW50aXR5IG1heSBub3QgcmlkZSB0aGUgdXNlciBzaWduaW5nIGtleS5cbiAqXG4gKiBBbnl0aGluZyB0aGF0IGlzIG5vdCBFUzI1NiB3aXRoIGEgYGtpZGAgZmFpbHMgaW4gYm90aCBjaGFpbnMsIHdoaWNoIGlzIHdoYXRcbiAqIG1ha2VzIFwibm8gSFMyNTYgdG9rZW4gaXMgYWNjZXB0ZWQgYW55d2hlcmVcIiBhIHByb3BlcnR5IG9mIHRoZSBjb2RlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5QmVhcmVyVG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8Snd0UGF5bG9hZD4ge1xuICBjb25zdCBoZWFkZXIgPSBkZWNvZGVKd3RIZWFkZXIodG9rZW4pO1xuICBpZiAoIWhlYWRlcj8uYWxnKSB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKCdNYWxmb3JtZWQgdG9rZW4gaGVhZGVyJyk7XG5cbiAgaWYgKGhlYWRlci5raWQgJiYgaXNTZXJ2aWNlS2lkKGhlYWRlci5raWQpKSB7XG4gICAgY29uc3QgY2xhaW1zID0gdmVyaWZ5U2VydmljZUp3dDxKd3RQYXlsb2FkPih0b2tlbiwgeyBraWQ6IGhlYWRlci5raWQsIC4uLmlzc3VlckF1ZGllbmNlT3B0aW9ucygpIH0pO1xuICAgIGlmIChjbGFpbXMucHJpbmNpcGFsVHlwZSAhPT0gJ3NlcnZpY2UnKSB7XG4gICAgICBlbWl0Q291bnRlcignc2VydmljZV9rZXlfbm9uX3NlcnZpY2VfdG9rZW5fcmVqZWN0ZWRfdG90YWwnLCB7IGFsZzogaGVhZGVyLmFsZyB9KTtcbiAgICAgIHRocm93IG5ldyBqd3QuSnNvbldlYlRva2VuRXJyb3IoJ0Egc2VydmljZSBzaWduaW5nIGtleSBtYXkgb25seSBtaW50IGEgc2VydmljZSBwcmluY2lwYWwnKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYWltcztcbiAgfVxuXG4gIGNvbnN0IGNsYWltcyA9IGF3YWl0IHZlcmlmeVVzZXJKd3QodG9rZW4pO1xuICBpZiAoY2xhaW1zLnByaW5jaXBhbFR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgIHRocm93IG5ldyBqd3QuSnNvbldlYlRva2VuRXJyb3IoJ1NlcnZpY2UgcHJpbmNpcGFscyBtYXkgbm90IGJlIHNpZ25lZCB3aXRoIHRoZSB1c2VyIHNpZ25pbmcga2V5Jyk7XG4gIH1cbiAgcmV0dXJuIGNsYWltcztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgdmVyaWZpZWQgdG9rZW4gY2FycmllcyBhIHdlbGwtZm9ybWVkIGlkZW50aXR5OiBhIGtub3duXG4gKiBgcHJpbmNpcGFsVHlwZWAgYW5kIGB0b2tlbl91c2VgLCBhbmQgdGhlIGNsYWltcyB0aGF0IGtpbmQgb2YgcHJpbmNpcGFsIG11c3RcbiAqIGhhdmUuIEZhaWxzIGNsb3NlZCDigJQgYSB0b2tlbiBtaW50ZWQgYmVmb3JlIHRoZXNlIGNsYWltcyBleGlzdGVkLCBvciBvbmUgd2l0aCBhXG4gKiBjb250cmFkaWN0b3J5IGNvbWJpbmF0aW9uLCBpcyBub3QgYW4gaWRlbnRpdHkgYW55IGdhdGUgc2hvdWxkIHJlYXNvbiBhYm91dC5cbiAqXG4gKiAtIGBzZXJ2aWNlYDogYHRva2VuX3VzZTogJ2FjY2VzcydgIGFuZCBhIGBzZXJ2aWNlOjxuYW1lPmAgc3ViamVjdCAodGhlIG5hbWVcbiAqICAgZmVlZHMgdGhlIGRlbnlsaXN0IGFuZCBhdWRpdCBhdHRyaWJ1dGlvbikuXG4gKiAtIGB1c2VyYCAvIGBzZXJ2aWNlX2FjY291bnRgOiBgYW1yYCAoa25vd24gbWV0aG9kcyksIGBhYWxgIGFuZCBgYXV0aF90aW1lYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1ZhbGlkSWRlbnRpdHlDbGFpbXMoZGVjb2RlZDogUGFydGlhbDxKd3RQYXlsb2FkPik6IGJvb2xlYW4ge1xuICBpZiAoIWRlY29kZWQucHJpbmNpcGFsVHlwZSB8fCAhUFJJTkNJUEFMX1RZUEVTLmluY2x1ZGVzKGRlY29kZWQucHJpbmNpcGFsVHlwZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFkZWNvZGVkLnRva2VuX3VzZSB8fCAhVE9LRU5fVVNFUy5pbmNsdWRlcyhkZWNvZGVkLnRva2VuX3VzZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKGRlY29kZWQucHJpbmNpcGFsVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgcmV0dXJuIGRlY29kZWQudG9rZW5fdXNlID09PSAnYWNjZXNzJ1xuICAgICAgJiYgdHlwZW9mIGRlY29kZWQuc3ViID09PSAnc3RyaW5nJ1xuICAgICAgJiYgZGVjb2RlZC5zdWIuc3RhcnRzV2l0aChTRVJWSUNFX1NVQkpFQ1RfUFJFRklYKVxuICAgICAgJiYgZGVjb2RlZC5zdWIubGVuZ3RoID4gU0VSVklDRV9TVUJKRUNUX1BSRUZJWC5sZW5ndGg7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGVjb2RlZC5hbXIpXG4gICAgJiYgZGVjb2RlZC5hbXIuZXZlcnkoKG0pID0+IEFVVEhfTUVUSE9EUy5pbmNsdWRlcyhtKSlcbiAgICAmJiAoZGVjb2RlZC5hYWwgPT09IDEgfHwgZGVjb2RlZC5hYWwgPT09IDIpXG4gICAgJiYgdHlwZW9mIGRlY29kZWQuYXV0aF90aW1lID09PSAnbnVtYmVyJztcbn1cblxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZlcmlmeS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvand0LXZlcmlmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7R0FHRztBQUVILE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFtQixNQUFNLG9CQUFvQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTztRQUNMLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQzVFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBaUIsS0FBYTtJQUMvRCxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEVBQUUs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SUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztXQUN4QyxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBCZWFyZXItdG9rZW4gdmVyaWZpY2F0aW9uOiB0aGUgdXNlciBjaGFpbiAoRVMyNTYgYWdhaW5zdCBwbGF0Zm9ybSdzIEpXS1MpIGFuZFxuICogdGhlIGlkZW50aXR5LWNsYWltIHNoYXBlIGV2ZXJ5IGdhdGUgcmVhc29ucyBhYm91dC5cbiAqL1xuXG5pbXBvcnQgand0IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5pbXBvcnQgeyBwbGF0Zm9ybUp3a3NDYWNoZSB9IGZyb20gJy4uL3NlcnZpY2VzL2p3a3MtY2FjaGUuanMnO1xuaW1wb3J0IHsgU0VSVklDRV9TVUJKRUNUX1BSRUZJWCwgaXNTZXJ2aWNlS2lkLCB2ZXJpZnlTZXJ2aWNlSnd0IH0gZnJvbSAnLi4vc2VydmljZXMvc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IEFVVEhfTUVUSE9EUywgUFJJTkNJUEFMX1RZUEVTLCBUT0tFTl9VU0VTLCB0eXBlIEp3dFBheWxvYWQgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgVVNFUl9UT0tFTl9BTEdPUklUSE0sIGRlY29kZUp3dEhlYWRlciB9IGZyb20gJy4uL3V0aWxzL2p3ay5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbi8qKiBJc3N1ZXIvYXVkaWVuY2UgcGlubmluZywgd2hlbiB0aGUgZGVwbG95bWVudCBjb25maWd1cmVzIHRoZW0uIFNoYXJlZCBieSBib3RoIGNoYWlucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc3N1ZXJBdWRpZW5jZU9wdGlvbnMoKTogeyBpc3N1ZXI/OiBzdHJpbmc7IGF1ZGllbmNlPzogc3RyaW5nIH0ge1xuICByZXR1cm4ge1xuICAgIC4uLihwcm9jZXNzLmVudi5KV1RfSVNTVUVSID8geyBpc3N1ZXI6IHByb2Nlc3MuZW52LkpXVF9JU1NVRVIgfSA6IHt9KSxcbiAgICAuLi4ocHJvY2Vzcy5lbnYuSldUX0FVRElFTkNFID8geyBhdWRpZW5jZTogcHJvY2Vzcy5lbnYuSldUX0FVRElFTkNFIH0gOiB7fSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZ5IGEgdG9rZW4gdGhhdCBzcGVha3MgZm9yIGEgUEVSU09OIOKAlCBhY2Nlc3MsIHN0ZXAtdXAsIGFuZCB0aGUgdG9rZW4gYW5cbiAqIG9wYXF1ZSBhY2Nlc3Mga2V5IGlzIGV4Y2hhbmdlZCBmb3Ig4oCUIGFnYWluc3QgcGxhdGZvcm0ncyBwdWJsaXNoZWQgc2lnbmluZ1xuICoga2V5cy5cbiAqXG4gKiBFUzI1NiBhbmQgYSBga2lkYCBhcmUgYm90aCBtYW5kYXRvcnk6IG5vIGBraWRgIG1lYW5zIG5vIHdheSB0byBwaWNrIHRoZSByaWdodFxuICoga2V5IGFjcm9zcyBhIHJvdGF0aW9uLCBhbmQgYW55IG90aGVyIGFsZ29yaXRobSBpcyByZWZ1c2VkIG91dHJpZ2h0LCB3aGljaCBpc1xuICogd2hhdCBtYWtlcyBcIm5vIHNlcnZpY2UgYWNjZXB0cyBhbiBIUzI1NiB1c2VyIHRva2VuXCIgYSBwcm9wZXJ0eSBvZiB0aGUgY29kZVxuICogcmF0aGVyIHRoYW4gYSBjb252ZW50aW9uLiBLZXkgbG9va3VwIGdvZXMgdGhyb3VnaCB0aGUgc2hhcmVkIEpXS1MgY2FjaGVcbiAqICgxMC1taW51dGUgcmVmcmVzaCwgb25lIHJlZmV0Y2ggb24gYW4gdW5rbm93biBga2lkYCwgYnJpZWYgbmVnYXRpdmUgY2FjaGUpLlxuICpcbiAqIEB0aHJvd3Mge1Vua25vd25LaWRFcnJvcn0gdGhlIGtleSBzZXQgaXMgY3VycmVudCBhbmQgaGFzIG5vIHN1Y2gga2V5IOKGkiA0MDEuXG4gKiBAdGhyb3dzIHtKd2tzVW5hdmFpbGFibGVFcnJvcn0gdGhlIGtleSBzZXQgY291bGQgbm90IGJlIG9idGFpbmVkIOKGkiA1MDM7IGFuXG4gKiAgICAgICAgIHVudmVyaWZpYWJsZSB0b2tlbiBpcyBuZXZlciB0cmVhdGVkIGFzIHZhbGlkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5VXNlckp3dDxUID0gSnd0UGF5bG9hZD4odG9rZW46IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICBjb25zdCBoZWFkZXIgPSBkZWNvZGVKd3RIZWFkZXIodG9rZW4pO1xuICBpZiAoaGVhZGVyPy5hbGcgIT09IFVTRVJfVE9LRU5fQUxHT1JJVEhNIHx8ICFoZWFkZXIua2lkKSB7XG4gICAgdGhyb3cgbmV3IGp3dC5Kc29uV2ViVG9rZW5FcnJvcihgVXNlciB0b2tlbnMgbXVzdCBiZSBzaWduZWQgd2l0aCAke1VTRVJfVE9LRU5fQUxHT1JJVEhNfSBhbmQgY2FycnkgYSBraWRgKTtcbiAgfVxuICBjb25zdCBrZXkgPSBhd2FpdCBwbGF0Zm9ybUp3a3NDYWNoZSgpLmdldEtleShoZWFkZXIua2lkKTtcbiAgcmV0dXJuIGp3dC52ZXJpZnkodG9rZW4sIGtleSwgeyBhbGdvcml0aG1zOiBbVVNFUl9UT0tFTl9BTEdPUklUSE1dLCAuLi5pc3N1ZXJBdWRpZW5jZU9wdGlvbnMoKSB9KSBhcyBUO1xufVxuXG4vKipcbiAqIFZlcmlmeSBBTlkgYmVhcmVyIHRva2VuIGFuZCByZXR1cm4gaXRzIGNsYWltcy5cbiAqXG4gKiBTaW5jZSAjMTQgdGhlcmUgaXMgbm8gc2hhcmVkIHNlY3JldCBsZWZ0OiBCT1RIIGNoYWlucyBhcmUgRVMyNTYgd2l0aCBhIGBraWRgLFxuICogc28gdGhlIGRpc3BhdGNoIGlzIGJ5ICoqd2hvIG93bnMgdGhlIGBraWRgKiogcmF0aGVyIHRoYW4gYnkgYWxnb3JpdGhtIOKAlCBhbmRcbiAqIGJlY2F1c2UgYSBga2lkYCBpcyBhbiBSRkMgNzYzOCB0aHVtYnByaW50LCBvd25lcnNoaXAgaXMgYSBmYWN0IGFib3V0IHRoZSBrZXksXG4gKiBub3QgYSBjbGFpbSB0aGUgdG9rZW4gbWFrZXMgYWJvdXQgaXRzZWxmOlxuICpcbiAqIC0gYSBga2lkYCBwdWJsaXNoZWQgaW4gdGhlIHBlci1zZXJ2aWNlIGtleSBidW5kbGUg4oaSIGFuIElOVEVSTkFMIFNFUlZJQ0UgdG9rZW5cbiAqICAgKHtAbGluayBzaWduU2VydmljZVRva2VufSksIHZlcmlmaWVkIHdpdGggdGhhdCBzZXJ2aWNlJ3Mga2V5OyBpdHMgYHN1YmAgbXVzdFxuICogICBuYW1lIHRoZSBzYW1lIHNlcnZpY2UsIHNvIG9uZSBzZXJ2aWNlIGNhbiBuZXZlciBzcGVhayBmb3IgYW5vdGhlci5cbiAqIC0gYW55dGhpbmcgZWxzZSDihpIgYSBwbGF0Zm9ybS1zaWduZWQgVVNFUiB0b2tlbiwgdmVyaWZpZWQgYWdhaW5zdCBwbGF0Zm9ybSdzXG4gKiAgIHB1Ymxpc2hlZCBKV0tTLiBBIHRva2VuIGNsYWltaW5nIGBwcmluY2lwYWxUeXBlOiAnc2VydmljZSdgIGlzIHJlZnVzZWRcbiAqICAgaGVyZTogYW4gaW50ZXJuYWwgaWRlbnRpdHkgbWF5IG5vdCByaWRlIHRoZSB1c2VyIHNpZ25pbmcga2V5LlxuICpcbiAqIEFueXRoaW5nIHRoYXQgaXMgbm90IEVTMjU2IHdpdGggYSBga2lkYCBmYWlscyBpbiBib3RoIGNoYWlucywgd2hpY2ggaXMgd2hhdFxuICogbWFrZXMgXCJubyBIUzI1NiB0b2tlbiBpcyBhY2NlcHRlZCBhbnl3aGVyZVwiIGEgcHJvcGVydHkgb2YgdGhlIGNvZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlCZWFyZXJUb2tlbih0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxKd3RQYXlsb2FkPiB7XG4gIGNvbnN0IGhlYWRlciA9IGRlY29kZUp3dEhlYWRlcih0b2tlbik7XG4gIGlmICghaGVhZGVyPy5hbGcpIHRocm93IG5ldyBqd3QuSnNvbldlYlRva2VuRXJyb3IoJ01hbGZvcm1lZCB0b2tlbiBoZWFkZXInKTtcblxuICBpZiAoaGVhZGVyLmtpZCAmJiBpc1NlcnZpY2VLaWQoaGVhZGVyLmtpZCkpIHtcbiAgICBjb25zdCBjbGFpbXMgPSB2ZXJpZnlTZXJ2aWNlSnd0PEp3dFBheWxvYWQ+KHRva2VuLCB7IGtpZDogaGVhZGVyLmtpZCwgLi4uaXNzdWVyQXVkaWVuY2VPcHRpb25zKCkgfSk7XG4gICAgaWYgKGNsYWltcy5wcmluY2lwYWxUeXBlICE9PSAnc2VydmljZScpIHtcbiAgICAgIGVtaXRDb3VudGVyKCdzZXJ2aWNlX2tleV9ub25fc2VydmljZV90b2tlbl9yZWplY3RlZF90b3RhbCcsIHsgYWxnOiBoZWFkZXIuYWxnIH0pO1xuICAgICAgdGhyb3cgbmV3IGp3dC5Kc29uV2ViVG9rZW5FcnJvcignQSBzZXJ2aWNlIHNpZ25pbmcga2V5IG1heSBvbmx5IG1pbnQgYSBzZXJ2aWNlIHByaW5jaXBhbCcpO1xuICAgIH1cbiAgICByZXR1cm4gY2xhaW1zO1xuICB9XG5cbiAgY29uc3QgY2xhaW1zID0gYXdhaXQgdmVyaWZ5VXNlckp3dCh0b2tlbik7XG4gIGlmIChjbGFpbXMucHJpbmNpcGFsVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgdGhyb3cgbmV3IGp3dC5Kc29uV2ViVG9rZW5FcnJvcignU2VydmljZSBwcmluY2lwYWxzIG1heSBub3QgYmUgc2lnbmVkIHdpdGggdGhlIHVzZXIgc2lnbmluZyBrZXknKTtcbiAgfVxuICByZXR1cm4gY2xhaW1zO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSB2ZXJpZmllZCB0b2tlbiBjYXJyaWVzIGEgd2VsbC1mb3JtZWQgaWRlbnRpdHk6IGEga25vd25cbiAqIGBwcmluY2lwYWxUeXBlYCBhbmQgYHRva2VuX3VzZWAsIGFuZCB0aGUgY2xhaW1zIHRoYXQga2luZCBvZiBwcmluY2lwYWwgbXVzdFxuICogaGF2ZS4gRmFpbHMgY2xvc2VkIOKAlCBhIHRva2VuIG1pbnRlZCBiZWZvcmUgdGhlc2UgY2xhaW1zIGV4aXN0ZWQsIG9yIG9uZSB3aXRoIGFcbiAqIGNvbnRyYWRpY3RvcnkgY29tYmluYXRpb24sIGlzIG5vdCBhbiBpZGVudGl0eSBhbnkgZ2F0ZSBzaG91bGQgcmVhc29uIGFib3V0LlxuICpcbiAqIC0gYHNlcnZpY2VgOiBgdG9rZW5fdXNlOiAnYWNjZXNzJ2AgYW5kIGEgYHNlcnZpY2U6PG5hbWU+YCBzdWJqZWN0ICh0aGUgbmFtZVxuICogICBmZWVkcyB0aGUgZGVueWxpc3QgYW5kIGF1ZGl0IGF0dHJpYnV0aW9uKS5cbiAqIC0gYHVzZXJgIC8gYHNlcnZpY2VfYWNjb3VudGA6IGBhbXJgIChrbm93biBtZXRob2RzKSwgYGFhbGAgYW5kIGBhdXRoX3RpbWVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVmFsaWRJZGVudGl0eUNsYWltcyhkZWNvZGVkOiBQYXJ0aWFsPEp3dFBheWxvYWQ+KTogYm9vbGVhbiB7XG4gIGlmICghZGVjb2RlZC5wcmluY2lwYWxUeXBlIHx8ICFQUklOQ0lQQUxfVFlQRVMuaW5jbHVkZXMoZGVjb2RlZC5wcmluY2lwYWxUeXBlKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWRlY29kZWQudG9rZW5fdXNlIHx8ICFUT0tFTl9VU0VTLmluY2x1ZGVzKGRlY29kZWQudG9rZW5fdXNlKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoZGVjb2RlZC5wcmluY2lwYWxUeXBlID09PSAnc2VydmljZScpIHtcbiAgICByZXR1cm4gZGVjb2RlZC50b2tlbl91c2UgPT09ICdhY2Nlc3MnXG4gICAgICAmJiB0eXBlb2YgZGVjb2RlZC5zdWIgPT09ICdzdHJpbmcnXG4gICAgICAmJiBkZWNvZGVkLnN1Yi5zdGFydHNXaXRoKFNFUlZJQ0VfU1VCSkVDVF9QUkVGSVgpXG4gICAgICAmJiBkZWNvZGVkLnN1Yi5sZW5ndGggPiBTRVJWSUNFX1NVQkpFQ1RfUFJFRklYLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gQXJyYXkuaXNBcnJheShkZWNvZGVkLmFtcilcbiAgICAmJiBkZWNvZGVkLmFtci5ldmVyeSgobSkgPT4gQVVUSF9NRVRIT0RTLmluY2x1ZGVzKG0pKVxuICAgICYmIChkZWNvZGVkLmFhbCA9PT0gMSB8fCBkZWNvZGVkLmFhbCA9PT0gMilcbiAgICAmJiB0eXBlb2YgZGVjb2RlZC5hdXRoX3RpbWUgPT09ICdudW1iZXInO1xufVxuXG4iXX0=
@@ -97,4 +97,4 @@ function sanitizeObject(obj, depth = 0) {
97
97
  }
98
98
  }
99
99
  }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tc2FuaXRpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9tb25nby1zYW5pdGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpELCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxLQUFLO0lBQ25DLFVBQVUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQzdDLFlBQVksT0FBTyxHQUFHLHdEQUF3RCxrQkFBa0IsRUFBRTtRQUNoRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQUMsR0FBWSxFQUFFLEdBQWEsRUFBRSxJQUFrQixFQUFFLEVBQUU7UUFDekQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO2dCQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkUsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRO2dCQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBaUMsQ0FBQyxDQUFDO1lBQ3hHLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFnQyxDQUFDO2dCQUMvQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLHNFQUFzRTtnQkFDdEUsaURBQWlEO2dCQUNqRCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzFHLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLHlFQUF5RTtnQkFDM0UsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLHVFQUF1RTtZQUN2RSx3RUFBd0U7WUFDeEUsSUFBSSxHQUFHLFlBQVksbUJBQW1CLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRixDQUFDO1lBQ0QsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSxpRkFBaUY7QUFDakYsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFFMUUsU0FBUyxjQUFjLENBQUMsR0FBNEIsRUFBRSxLQUFLLEdBQUcsQ0FBQztJQUM3RCx3RUFBd0U7SUFDeEUseUVBQXlFO0lBQ3pFLHVEQUF1RDtJQUN2RCxJQUFJLEtBQUssR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxtQkFBbUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEIsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7d0JBQUUsY0FBYyxDQUFDLElBQStCLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuRyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGNBQWMsQ0FBQyxDQUE0QixFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgTmV4dEZ1bmN0aW9uLCBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgSHR0cFN0YXR1cyB9IGZyb20gJy4uL2NvbnN0YW50cy9odHRwLXN0YXR1cy5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbi8qKiBNYXhpbXVtIG5lc3RpbmcgZGVwdGggYWNjZXB0ZWQgYnkge0BsaW5rIG1vbmdvU2FuaXRpemV9LiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9TQU5JVElaRV9ERVBUSCA9IDEwO1xuXG4vKipcbiAqIFRocm93biB3aGVuIGEgcmVxdWVzdCBwYXlsb2FkIG5lc3RzIGRlZXBlciB0aGFuIHtAbGluayBNQVhfU0FOSVRJWkVfREVQVEh9LlxuICogVGhlIG1pZGRsZXdhcmUgbWFwcyB0aGlzIHRvIEhUVFAgNDAwIGluc3RlYWQgb2Ygc2lsZW50bHkgdHJ1bmNhdGluZyB0aGUgd2Fsa1xuICogKHdoaWNoIHdvdWxkIGxldCBvcGVyYXRvci1zaGFwZWQga2V5cyBiZWxvdyB0aGUgY2FwIHNsaXAgdGhyb3VnaCB1bnNhbml0aXplZCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXlsb2FkVG9vRGVlcEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBzdGF0dXNDb2RlID0gSHR0cFN0YXR1cy5CQURfUkVRVUVTVDtcbiAgY29uc3RydWN0b3IobWVzc2FnZSA9IGBSZXF1ZXN0IHBheWxvYWQgbmVzdGluZyBleGNlZWRzIHRoZSBtYXhpbXVtIGRlcHRoIG9mICR7TUFYX1NBTklUSVpFX0RFUFRIfWApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnUGF5bG9hZFRvb0RlZXBFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBNb25nb0RCIG9wZXJhdG9yLWluamVjdGlvbiBtaWRkbGV3YXJlLlxuICpcbiAqIFJlY3Vyc2l2ZWx5IHN0cmlwcyBvYmplY3Qga2V5cyBzdGFydGluZyB3aXRoIGAkYCAoTW9uZ28gb3BlcmF0b3JzIGxpa2VcbiAqIGAkbmVgLCBgJGd0YCwgYCR3aGVyZWApIGFuZCBrZXlzIGNvbnRhaW5pbmcgYC5gIChkb3Qtd2Fsa3MpIGZyb21cbiAqIGByZXEuYm9keWAsIGByZXEucXVlcnlgLCBhbmQgYHJlcS5wYXJhbXNgLiBXaXRob3V0IHRoaXMsIGEgSlNPTiByZXF1ZXN0XG4gKiBsaWtlIGB7XCJlbWFpbFwiOiB7XCIkbmVcIjogbnVsbH19YCBhZ2FpbnN0IGEgTW9uZ28tYmFja2VkIHNlcnZpY2UgY2FuIG1hdGNoXG4gKiBhbnkgZG9jdW1lbnQg4oCUIFpvZCBjYXRjaGVzIHRoZSB3cm9uZyAqdHlwZSogYnV0IHdvbid0IHJlYWNoIGludG8gbmVzdGVkXG4gKiBvYmplY3RzIHRvIHN0cmlwIG9wZXJhdG9yLXNoYXBlZCBrZXlzLlxuICpcbiAqIEFwcGx5IEJFRk9SRSBhbnkgTW9uZ28gcXVlcnkgaGFuZGxlciAodHlwaWNhbGx5IHJpZ2h0IGFmdGVyXG4gKiBgZXhwcmVzcy5qc29uKClgKS4gUG9zdGdyZXMtYmFja2VkIHNlcnZpY2VzIGRvbid0IG5lZWQgaXQuXG4gKlxuICogYHJlcS5ib2R5YCBhbmQgYHJlcS5wYXJhbXNgIGFyZSBwbGFpbiB3cml0YWJsZSBvYmplY3RzLCBzbyB0aGV5J3JlIHNhbml0aXplZFxuICogaW4gcGxhY2UuIE9uIEV4cHJlc3MgNSBgcmVxLnF1ZXJ5YCBpcyBhIEdFVFRFUiB0aGF0IHJlLXBhcnNlcyB0aGUgVVJMIGFuZFxuICogcmV0dXJucyBhIGZyZXNoIG9iamVjdCBvbiBldmVyeSBhY2Nlc3Mg4oCUIG11dGF0aW5nIGl0IGlzIGEgbm8tb3Ag4oCUIHNvIHdlXG4gKiBzYW5pdGl6ZSBhIHNuYXBzaG90IGFuZCBwaW4gaXQgb250byB0aGUgcmVxdWVzdCBpbnN0YW5jZSB3aXRoXG4gKiBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCwgc2hhZG93aW5nIHRoZSBnZXR0ZXIgZm9yIGFsbCBkb3duc3RyZWFtIHJlYWRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9uZ29TYW5pdGl6ZSgpIHtcbiAgcmV0dXJuIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAocmVxLmJvZHkgJiYgdHlwZW9mIHJlcS5ib2R5ID09PSAnb2JqZWN0Jykgc2FuaXRpemVPYmplY3QocmVxLmJvZHkpO1xuICAgICAgaWYgKHJlcS5wYXJhbXMgJiYgdHlwZW9mIHJlcS5wYXJhbXMgPT09ICdvYmplY3QnKSBzYW5pdGl6ZU9iamVjdChyZXEucGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICAgIGlmIChyZXEucXVlcnkgJiYgdHlwZW9mIHJlcS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgc2FuaXRpemVPYmplY3QocSk7XG4gICAgICAgIC8vIFBpbiB0aGUgc2FuaXRpemVkIHNuYXBzaG90IHNvIHRoZSBFeHByZXNzIDUgZ2V0dGVyIGNhbid0IHJlLXBhcnNlIGFcbiAgICAgICAgLy8gZnJlc2ggKHVuc2FuaXRpemVkKSBvYmplY3Qgb24gdGhlIG5leHQgYWNjZXNzLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXEsICdxdWVyeScsIHsgdmFsdWU6IHEsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIEV4cHJlc3MgNCAod3JpdGFibGUgZGF0YSBwcm9wKSDigJQgdGhlIGluLXBsYWNlIHNhbml0aXplIGFib3ZlIHN1ZmZpY2VkLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBSZWplY3Qgb3Zlci1kZWVwIHBheWxvYWRzIHdpdGggYSA0MDAgcmF0aGVyIHRoYW4gc2lsZW50bHkgdHJ1bmNhdGluZ1xuICAgICAgLy8gdGhlIHNhbml0aXplIHdhbGsgKHdoaWNoIHJpc2tlZCBsZWF2aW5nIGRlZXAgb3BlcmF0b3Iga2V5cyBpbiBwbGFjZSkuXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgUGF5bG9hZFRvb0RlZXBFcnJvcikge1xuICAgICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgZXJyLnN0YXR1c0NvZGUsIGVyci5tZXNzYWdlLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuLy8gUHJvdG90eXBlLXBvbGx1dGlvbiBrZXlzIOKAlCB0aGVzZSBuZXZlciBiZWxvbmcgaW4gSlNPTiByZXF1ZXN0IGJvZGllcywgYW5kIGFcbi8vIGRvd25zdHJlYW0gcmVjdXJzaXZlIG1lcmdlL2Fzc2lnbiBvbiB0aGUgcGFyc2VkIG9iamVjdCBjb3VsZCBvdGhlcndpc2Ugd2Fsa1xuLy8gYGNvbnN0cnVjdG9yLnByb3RvdHlwZWAgdG8gaW5qZWN0IE1vbmdvIG9wZXJhdG9ycyBvciBwb2xsdXRlIE9iamVjdC5wcm90b3R5cGUuXG5jb25zdCBGT1JCSURERU5fS0VZUyA9IG5ldyBTZXQoWydfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAncHJvdG90eXBlJ10pO1xuXG5mdW5jdGlvbiBzYW5pdGl6ZU9iamVjdChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBkZXB0aCA9IDApOiB2b2lkIHtcbiAgLy8gUmVqZWN0IHBhdGhvbG9naWNhbGx5IG5lc3RlZCBpbnB1dCByYXRoZXIgdGhhbiBzaWxlbnRseSByZXR1cm5pbmcg4oCUIGFcbiAgLy8gc2lsZW50IGNhcCB3b3VsZCBsZWF2ZSBhbnkgb3BlcmF0b3IvZG90L3Byb3RvdHlwZSBrZXlzIGRlZXBlciB0aGFuIHRoZVxuICAvLyBjYXAgdW4tc2FuaXRpemVkLiBUaGUgbWlkZGxld2FyZSBtYXBzIHRoaXMgdG8gYSA0MDAuXG4gIGlmIChkZXB0aCA+IE1BWF9TQU5JVElaRV9ERVBUSCkge1xuICAgIHRocm93IG5ldyBQYXlsb2FkVG9vRGVlcEVycm9yKCk7XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnJCcpIHx8IGtleS5pbmNsdWRlcygnLicpIHx8IEZPUkJJRERFTl9LRVlTLmhhcyhrZXkpKSB7XG4gICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdiA9IG9ialtrZXldO1xuICAgIGlmICh2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHYpIHtcbiAgICAgICAgICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHNhbml0aXplT2JqZWN0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGRlcHRoICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNhbml0aXplT2JqZWN0KHYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tc2FuaXRpemUuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL21vbmdvLXNhbml0aXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUVyQzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLEtBQUs7SUFDbkMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7SUFDN0MsWUFBWSxPQUFPLEdBQUcsd0RBQXdELGtCQUFrQixFQUFFO1FBQ2hHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FBQyxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQUUsRUFBRTtRQUN6RCxJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVE7Z0JBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLFFBQVE7Z0JBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFpQyxDQUFDLENBQUM7WUFDeEcsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQWdDLENBQUM7Z0JBQy9DLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsc0VBQXNFO2dCQUN0RSxpREFBaUQ7Z0JBQ2pELElBQUksQ0FBQztvQkFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDMUcsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AseUVBQXlFO2dCQUMzRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsdUVBQXVFO1lBQ3ZFLHdFQUF3RTtZQUN4RSxJQUFJLEdBQUcsWUFBWSxtQkFBbUIsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLGlGQUFpRjtBQUNqRixNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUUxRSxTQUFTLGNBQWMsQ0FBQyxHQUE0QixFQUFFLEtBQUssR0FBRyxDQUFDO0lBQzdELHdFQUF3RTtJQUN4RSx5RUFBeUU7SUFDekUsdURBQXVEO0lBQ3ZELElBQUksS0FBSyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLG1CQUFtQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25DLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQixTQUFTO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTt3QkFBRSxjQUFjLENBQUMsSUFBK0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25HLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sY0FBYyxDQUFDLENBQTRCLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBOZXh0RnVuY3Rpb24sIFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBIdHRwU3RhdHVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2h0dHAtc3RhdHVzLmpzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uL3R5cGVzL2Vycm9yLWNvZGVzLmpzJztcbmltcG9ydCB7IHNlbmRFcnJvciB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuLyoqIE1heGltdW0gbmVzdGluZyBkZXB0aCBhY2NlcHRlZCBieSB7QGxpbmsgbW9uZ29TYW5pdGl6ZX0uICovXG5leHBvcnQgY29uc3QgTUFYX1NBTklUSVpFX0RFUFRIID0gMTA7XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSByZXF1ZXN0IHBheWxvYWQgbmVzdHMgZGVlcGVyIHRoYW4ge0BsaW5rIE1BWF9TQU5JVElaRV9ERVBUSH0uXG4gKiBUaGUgbWlkZGxld2FyZSBtYXBzIHRoaXMgdG8gSFRUUCA0MDAgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0aW5nIHRoZSB3YWxrXG4gKiAod2hpY2ggd291bGQgbGV0IG9wZXJhdG9yLXNoYXBlZCBrZXlzIGJlbG93IHRoZSBjYXAgc2xpcCB0aHJvdWdoIHVuc2FuaXRpemVkKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBheWxvYWRUb29EZWVwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IHN0YXR1c0NvZGUgPSBIdHRwU3RhdHVzLkJBRF9SRVFVRVNUO1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gYFJlcXVlc3QgcGF5bG9hZCBuZXN0aW5nIGV4Y2VlZHMgdGhlIG1heGltdW0gZGVwdGggb2YgJHtNQVhfU0FOSVRJWkVfREVQVEh9YCkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdQYXlsb2FkVG9vRGVlcEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIE1vbmdvREIgb3BlcmF0b3ItaW5qZWN0aW9uIG1pZGRsZXdhcmUuXG4gKlxuICogUmVjdXJzaXZlbHkgc3RyaXBzIG9iamVjdCBrZXlzIHN0YXJ0aW5nIHdpdGggYCRgIChNb25nbyBvcGVyYXRvcnMgbGlrZVxuICogYCRuZWAsIGAkZ3RgLCBgJHdoZXJlYCkgYW5kIGtleXMgY29udGFpbmluZyBgLmAgKGRvdC13YWxrcykgZnJvbVxuICogYHJlcS5ib2R5YCwgYHJlcS5xdWVyeWAsIGFuZCBgcmVxLnBhcmFtc2AuIFdpdGhvdXQgdGhpcywgYSBKU09OIHJlcXVlc3RcbiAqIGxpa2UgYHtcImVtYWlsXCI6IHtcIiRuZVwiOiBudWxsfX1gIGFnYWluc3QgYSBNb25nby1iYWNrZWQgc2VydmljZSBjYW4gbWF0Y2hcbiAqIGFueSBkb2N1bWVudCDigJQgWm9kIGNhdGNoZXMgdGhlIHdyb25nICp0eXBlKiBidXQgd29uJ3QgcmVhY2ggaW50byBuZXN0ZWRcbiAqIG9iamVjdHMgdG8gc3RyaXAgb3BlcmF0b3Itc2hhcGVkIGtleXMuXG4gKlxuICogQXBwbHkgQkVGT1JFIGFueSBNb25nbyBxdWVyeSBoYW5kbGVyICh0eXBpY2FsbHkgcmlnaHQgYWZ0ZXJcbiAqIGBleHByZXNzLmpzb24oKWApLiBQb3N0Z3Jlcy1iYWNrZWQgc2VydmljZXMgZG9uJ3QgbmVlZCBpdC5cbiAqXG4gKiBgcmVxLmJvZHlgIGFuZCBgcmVxLnBhcmFtc2AgYXJlIHBsYWluIHdyaXRhYmxlIG9iamVjdHMsIHNvIHRoZXkncmUgc2FuaXRpemVkXG4gKiBpbiBwbGFjZS4gT24gRXhwcmVzcyA1IGByZXEucXVlcnlgIGlzIGEgR0VUVEVSIHRoYXQgcmUtcGFyc2VzIHRoZSBVUkwgYW5kXG4gKiByZXR1cm5zIGEgZnJlc2ggb2JqZWN0IG9uIGV2ZXJ5IGFjY2VzcyDigJQgbXV0YXRpbmcgaXQgaXMgYSBuby1vcCDigJQgc28gd2VcbiAqIHNhbml0aXplIGEgc25hcHNob3QgYW5kIHBpbiBpdCBvbnRvIHRoZSByZXF1ZXN0IGluc3RhbmNlIHdpdGhcbiAqIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgLCBzaGFkb3dpbmcgdGhlIGdldHRlciBmb3IgYWxsIGRvd25zdHJlYW0gcmVhZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb25nb1Nhbml0aXplKCkge1xuICByZXR1cm4gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChyZXEuYm9keSAmJiB0eXBlb2YgcmVxLmJvZHkgPT09ICdvYmplY3QnKSBzYW5pdGl6ZU9iamVjdChyZXEuYm9keSk7XG4gICAgICBpZiAocmVxLnBhcmFtcyAmJiB0eXBlb2YgcmVxLnBhcmFtcyA9PT0gJ29iamVjdCcpIHNhbml0aXplT2JqZWN0KHJlcS5wYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgaWYgKHJlcS5xdWVyeSAmJiB0eXBlb2YgcmVxLnF1ZXJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBxID0gcmVxLnF1ZXJ5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBzYW5pdGl6ZU9iamVjdChxKTtcbiAgICAgICAgLy8gUGluIHRoZSBzYW5pdGl6ZWQgc25hcHNob3Qgc28gdGhlIEV4cHJlc3MgNSBnZXR0ZXIgY2FuJ3QgcmUtcGFyc2UgYVxuICAgICAgICAvLyBmcmVzaCAodW5zYW5pdGl6ZWQpIG9iamVjdCBvbiB0aGUgbmV4dCBhY2Nlc3MuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcSwgJ3F1ZXJ5JywgeyB2YWx1ZTogcSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gRXhwcmVzcyA0ICh3cml0YWJsZSBkYXRhIHByb3ApIOKAlCB0aGUgaW4tcGxhY2Ugc2FuaXRpemUgYWJvdmUgc3VmZmljZWQuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFJlamVjdCBvdmVyLWRlZXAgcGF5bG9hZHMgd2l0aCBhIDQwMCByYXRoZXIgdGhhbiBzaWxlbnRseSB0cnVuY2F0aW5nXG4gICAgICAvLyB0aGUgc2FuaXRpemUgd2FsayAod2hpY2ggcmlza2VkIGxlYXZpbmcgZGVlcCBvcGVyYXRvciBrZXlzIGluIHBsYWNlKS5cbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBQYXlsb2FkVG9vRGVlcEVycm9yKSB7XG4gICAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBlcnIuc3RhdHVzQ29kZSwgZXJyLm1lc3NhZ2UsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG4vLyBQcm90b3R5cGUtcG9sbHV0aW9uIGtleXMg4oCUIHRoZXNlIG5ldmVyIGJlbG9uZyBpbiBKU09OIHJlcXVlc3QgYm9kaWVzLCBhbmQgYVxuLy8gZG93bnN0cmVhbSByZWN1cnNpdmUgbWVyZ2UvYXNzaWduIG9uIHRoZSBwYXJzZWQgb2JqZWN0IGNvdWxkIG90aGVyd2lzZSB3YWxrXG4vLyBgY29uc3RydWN0b3IucHJvdG90eXBlYCB0byBpbmplY3QgTW9uZ28gb3BlcmF0b3JzIG9yIHBvbGx1dGUgT2JqZWN0LnByb3RvdHlwZS5cbmNvbnN0IEZPUkJJRERFTl9LRVlTID0gbmV3IFNldChbJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdwcm90b3R5cGUnXSk7XG5cbmZ1bmN0aW9uIHNhbml0aXplT2JqZWN0KG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGRlcHRoID0gMCk6IHZvaWQge1xuICAvLyBSZWplY3QgcGF0aG9sb2dpY2FsbHkgbmVzdGVkIGlucHV0IHJhdGhlciB0aGFuIHNpbGVudGx5IHJldHVybmluZyDigJQgYVxuICAvLyBzaWxlbnQgY2FwIHdvdWxkIGxlYXZlIGFueSBvcGVyYXRvci9kb3QvcHJvdG90eXBlIGtleXMgZGVlcGVyIHRoYW4gdGhlXG4gIC8vIGNhcCB1bi1zYW5pdGl6ZWQuIFRoZSBtaWRkbGV3YXJlIG1hcHMgdGhpcyB0byBhIDQwMC5cbiAgaWYgKGRlcHRoID4gTUFYX1NBTklUSVpFX0RFUFRIKSB7XG4gICAgdGhyb3cgbmV3IFBheWxvYWRUb29EZWVwRXJyb3IoKTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCckJykgfHwga2V5LmluY2x1ZGVzKCcuJykgfHwgRk9SQklEREVOX0tFWVMuaGFzKGtleSkpIHtcbiAgICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2ID0gb2JqW2tleV07XG4gICAgaWYgKHYgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygdikge1xuICAgICAgICAgIGlmIChpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0Jykgc2FuaXRpemVPYmplY3QoaXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZGVwdGggKyAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2FuaXRpemVPYmplY3QodiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -140,4 +140,4 @@ function verifyMarker(req) {
140
140
  return reject('invalid');
141
141
  }
142
142
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tYmVoYWxmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvb24tYmVoYWxmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXpDLHNGQUFzRjtBQUN0RixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUVqRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFzQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUV4RSxvRkFBb0Y7QUFDcEYsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFFbEMsMEVBQTBFO0FBQzFFLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDO0FBVXpDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUF5QjtJQUN2RCxNQUFN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ZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBPTi1CRUhBTEYgY2FsbHM6IGEgc2VydmljZSBmb3J3YXJkaW5nIHRoZSBlbmQgdXNlcidzIG93biBiZWFyZXIgdG9rZW4gdG8gYVxuICogcGVlciwgYXMgcGFydCBvZiBhIHJlcXVlc3QgdGhhdCB3YXMgQUxSRUFEWSBtZXRlcmVkIHdoZXJlIGl0IGFycml2ZWQuXG4gKlxuICogVGhlIGFzayBhZ2VudCBhY3RzIHN0cmljdGx5IGFzIHRoZSBjYWxsaW5nIHVzZXIg4oCUIGl0cyB0b29scyBmb3J3YXJkIHRoZVxuICogdXNlcidzIHRva2VuIHNvIHRoZSBwZWVyJ3MgdGVuYW5jeSwgcGVybWlzc2lvbiBhbmQgY29tcGxpYW5jZSBnYXRlcyBhcHBseSBhc1xuICogaWYgdGhlIHVzZXIgaGFkIGNhbGxlZCB0aGVtIOKAlCBhbmQgcGlwZWxpbmUncyBjb25maXJtLXBsYWNlaG9sZGVyLXBsdWdpbnMgZG9lc1xuICogdGhlIHNhbWUgYWdhaW5zdCB0aGUgcGx1Z2luIHNlcnZpY2UuIEVhY2ggb2YgdGhvc2UgaG9wcyBpcyBhIFVTRVIgcmVxdWVzdCB0b1xuICogdGhlIHBlZXIsIHNvIHRoZSBwZWVyJ3MgYGFwaUNhbGxzYCBtZXRlciBiaWxsZWQgaXQ6IG9uZSBhZ2VudCB0dXJuIHdhcyAxMC0yMFxuICogYXBpQ2FsbHMgb24gdG9wIG9mIHRoZSB0dXJuIGl0c2VsZiAod2hpY2ggaXMgbWV0ZXJlZCwgYW5kIEFJLXJlc2VydmVkKS5cbiAqXG4gKiBUaGUgbWFya2VyIHRoYXQgd2FpdmVzIHRoYXQgc2Vjb25kIGNoYXJnZSBoYXMgdG8gYmUgc29tZXRoaW5nIHRoZSBVU0VSIENBTk5PVFxuICogUFJPRFVDRSwgb3IgYW55IG1lbWJlciBjb3VsZCBzdG9wIHBheWluZyBmb3IgQVBJIGNhbGxzIGJ5IHNldHRpbmcgYSBoZWFkZXIuXG4gKiBTbyBpdCBpcyBhIFNJR05FRCBTRVJWSUNFIFRPS0VOICh0aGUgY2FsbGluZyBzZXJ2aWNlJ3Mgb3duIEVTMjU2IGtleSwgdGhlIHNhbWVcbiAqIGtleSBtYXRlcmlhbCBgcmVxdWlyZUF1dGhgIHRydXN0cyBmb3Igc2VydmljZSBwcmluY2lwYWxzKSwgY2FycmllZCBpblxuICoge0BsaW5rIE9OX0JFSEFMRl9IRUFERVJ9IGJlc2lkZSB0aGUgdXNlcidzIHVudG91Y2hlZCBgQXV0aG9yaXphdGlvbmA6XG4gKlxuICogIC0gYHR5cGU6ICdvbl9iZWhhbGYnYCDigJQgbmV2ZXIgYGFjY2Vzc2AsIHNvIHRoZSBtYXJrZXIgaXMgdXNlbGVzcyBhcyBhIGJlYXJlclxuICogICAgdG9rZW4gYW55d2hlcmUgKGByZXF1aXJlQXV0aGAgYW5kIGB2ZXJpZnlTZXJ2aWNlUHJpbmNpcGFsYCBib3RoIGRlbWFuZFxuICogICAgYHR5cGU6ICdhY2Nlc3MnYCk7XG4gKiAgLSBgb2JvYCArIGBvcmdhbml6YXRpb25JZGAg4oCUIEJPVU5EIHRvIHRoZSB1c2VyIGFuZCBvcmcgaXQgdm91Y2hlcyBmb3IsIGFuZFxuICogICAgaG9ub3VyZWQgb25seSB3aGVuIGJvdGggZXF1YWwgdGhlIHJlcXVlc3QncyB2ZXJpZmllZCBgcmVxLnVzZXJgO1xuICogIC0gdGhlIHNpZ25lciBtdXN0IGJlIG9uIHtAbGluayBPTl9CRUhBTEZfQ0FMTEVSU30g4oCUIGEgc2VydmljZSB0aGF0IGZvcndhcmRzXG4gKiAgICB1c2VyIHRva2VucyBieSBkZXNpZ24g4oCUIGFuZCBub3Qgb24gdGhlIHNlcnZpY2UtdG9rZW4gZGVueWxpc3Q7XG4gKiAgLSAxMjAgcyBUVEwsIG1pbnRlZCBwZXIgb3V0Ym91bmQgY2FsbC5cbiAqXG4gKiBXaGF0IGEgdmFsaWQgbWFya2VyIGNoYW5nZXMgaXMgbmFycm93OiB0aGUgYXBpQ2FsbHMvYXV0b21hdGlvbkNhbGxzIE1FVEVSIGFuZFxuICogQ0hFQ0sgc2tpcCB0aGUgcmVxdWVzdCAoYGNhbGxRdW90YUV4ZW1wdGlvbmApLiBUZW5hbmN5LCBwZXJtaXNzaW9ucywgYXVkaXQgYW5kXG4gKiBldmVyeSByZXNlcnZhdGlvbi1nYXRlZCBxdW90YSAoYWlDYWxscywgcGlwZWxpbmVzLCBwbHVnaW5zKSBhcHBseSBleGFjdGx5IGFzXG4gKiBiZWZvcmUg4oCUIGFuIG9uLWJlaGFsZiBgL2dlbmVyYXRlYCBzdGlsbCByZXNlcnZlcyBpdHMgb3duIGFpQ2FsbHMgc2xvdC5cbiAqL1xuXG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgaXNzdWVyQXVkaWVuY2VPcHRpb25zIH0gZnJvbSAnLi9qd3QtdmVyaWZ5LmpzJztcbmltcG9ydCB7IGlzU2VydmljZVRva2VuRGVuaWVkLCBzZXJ2aWNlTmFtZU9mIH0gZnJvbSAnLi9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyBjdXJyZW50QXVkaXRDb250ZXh0IH0gZnJvbSAnLi4vc2VydmljZXMvYXVkaXQtY29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc1NlcnZpY2VLaWQsIHNpZ25TZXJ2aWNlSnd0LCB2ZXJpZnlTZXJ2aWNlSnd0IH0gZnJvbSAnLi4vc2VydmljZXMvc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IGRlY29kZUp3dEhlYWRlciB9IGZyb20gJy4uL3V0aWxzL2p3ay5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignb24tYmVoYWxmJyk7XG5cbi8qKiBUaGUgaGVhZGVyIGNhcnJ5aW5nIHRoZSBzaWduZWQgb24tYmVoYWxmIG1hcmtlciAobG93ZXItY2FzZSwgYXMgTm9kZSByZWFkcyBpdCkuICovXG5leHBvcnQgY29uc3QgT05fQkVIQUxGX0hFQURFUiA9ICd4LXBiLW9uLWJlaGFsZic7XG5cbi8qKlxuICogU2VydmljZXMgd2hvc2Ugb24tYmVoYWxmIG1hcmtlciBpcyBob25vdXJlZDogdGhlIG9uZXMgdGhhdCBmb3J3YXJkIGEgdXNlcidzXG4gKiB0b2tlbiBhcyBhIG1hdHRlciBvZiBkZXNpZ24uIEEgbWFya2VyIHNpZ25lZCBieSBhbnkgb3RoZXIgc2VydmljZSDigJQgdmFsaWRcbiAqIHNpZ25hdHVyZSBvciBub3Qg4oCUIGlzIGlnbm9yZWQsIHNvIGEgY29tcHJvbWlzZWQgcGVlciB0aGF0IG5ldmVyIGZvcndhcmRzIHVzZXJcbiAqIHRva2VucyBjYW5ub3Qgc3RhcnQgd2FpdmluZyBpdHMgdGVuYW50cycgbWV0ZXJzLlxuICovXG5leHBvcnQgY29uc3QgT05fQkVIQUxGX0NBTExFUlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydhc2snLCAncGlwZWxpbmUnXTtcblxuLyoqIE1hcmtlciBsaWZldGltZS4gTWludGVkIHBlciBvdXRib3VuZCBjYWxsLCBzbyBpdCBvbmx5IGhhcyB0byBvdXRsaXZlIG9uZSBob3AuICovXG5jb25zdCBPTl9CRUhBTEZfVFRMX1NFQ09ORFMgPSAxMjA7XG5cbi8qKiBUaGUgYHR5cGVgIGNsYWltIHRoYXQgbWFrZXMgdGhlIG1hcmtlciB1bnVzYWJsZSBhcyBhbiBhY2Nlc3MgdG9rZW4uICovXG5jb25zdCBPTl9CRUhBTEZfVE9LRU5fVFlQRSA9ICdvbl9iZWhhbGYnO1xuXG4vKiogV2hvIGEgbWFya2VyIHZvdWNoZXMgZm9yLiBEZWZhdWx0cyB0byB0aGUgYW1iaWVudCByZXF1ZXN0J3MgdmVyaWZpZWQgcHJpbmNpcGFsLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkJlaGFsZlN1YmplY3Qge1xuICAvKiogVGhlIHVzZXIgKGBzdWJgKSB3aG9zZSB0b2tlbiByaWRlcyB0aGUgc2FtZSByZXF1ZXN0LiAqL1xuICBzdWI6IHN0cmluZztcbiAgLyoqIFRoZWlyIGFjdGl2ZSBvcmcuICovXG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVhZGVycyB0byBhZGQgYmVzaWRlIGEgZm9yd2FyZGVkIHVzZXIgYEF1dGhvcml6YXRpb25gIHNvIHRoZSBwZWVyIGRvZXMgbm90XG4gKiBiaWxsIHRoZSBob3AgYSBzZWNvbmQgdGltZS4gTWludCBwZXIgY2FsbCAodGhlIG1hcmtlciBleHBpcmVzIGluIDEyMCBzKS5cbiAqXG4gKiBUaGUgc3ViamVjdCBkZWZhdWx0cyB0byB0aGUgYW1iaWVudCBhdWRpdCBjb250ZXh0J3MgVkVSSUZJRUQgcHJpbmNpcGFsICh0aGVcbiAqIGluYm91bmQgcmVxdWVzdCB0aGlzIGNhbGwgc2VydmVzKS4gUmV0dXJucyBge31gIOKAlCB0aGUgaG9wIGlzIGJpbGxlZCBub3JtYWxseSxcbiAqIHRoZSBzYWZlIGRpcmVjdGlvbiDigJQgd2hlbiB0aGVyZSBpcyBubyB1c2VyIHByaW5jaXBhbCB0byB2b3VjaCBmb3IsIG9yIHdoZW5cbiAqIHRoaXMgcHJvY2VzcyBjYW5ub3Qgc2lnbiAobm8gc2VydmljZSBrZXkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25CZWhhbGZIZWFkZXJzKHN1YmplY3Q/OiBPbkJlaGFsZlN1YmplY3QpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcHJpbmNpcGFsID0gc3ViamVjdCA/PyBhbWJpZW50U3ViamVjdCgpO1xuICBpZiAoIXByaW5jaXBhbCkgcmV0dXJuIHt9O1xuICB0cnkge1xuICAgIGNvbnN0IHRva2VuID0gc2lnblNlcnZpY2VKd3QoXG4gICAgICB7XG4gICAgICAgIHR5cGU6IE9OX0JFSEFMRl9UT0tFTl9UWVBFLFxuICAgICAgICBwcmluY2lwYWxUeXBlOiAnc2VydmljZScsXG4gICAgICAgIG9ibzogcHJpbmNpcGFsLnN1YixcbiAgICAgICAgb3JnYW5pemF0aW9uSWQ6IHByaW5jaXBhbC5vcmdhbml6YXRpb25JZCxcbiAgICAgICAganRpOiByYW5kb21VVUlEKCksXG4gICAgICB9LFxuICAgICAgeyBzZXJ2aWNlTmFtZTogcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknLCBleHBpcmVzSW5TZWNvbmRzOiBPTl9CRUhBTEZfVFRMX1NFQ09ORFMsIC4uLmlzc3VlckF1ZGllbmNlT3B0aW9ucygpIH0sXG4gICAgKTtcbiAgICByZXR1cm4geyBbT05fQkVIQUxGX0hFQURFUl06IHRva2VuIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5kZWJ1ZygnT24tYmVoYWxmIG1hcmtlciBub3QgbWludGVkOyB0aGUgcGVlciB3aWxsIG1ldGVyIHRoZSBob3AnLCB7IGVycm9yOiBTdHJpbmcoZXJyKSB9KTtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZnVuY3Rpb24gYW1iaWVudFN1YmplY3QoKTogT25CZWhhbGZTdWJqZWN0IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdXNlciA9IGN1cnJlbnRBdWRpdENvbnRleHQoKT8ucHJpbmNpcGFsPy4oKTtcbiAgaWYgKCF1c2VyIHx8IHVzZXIucHJpbmNpcGFsVHlwZSA9PT0gJ3NlcnZpY2UnIHx8ICF1c2VyLnN1YiB8fCAhdXNlci5vcmdhbml6YXRpb25JZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHsgc3ViOiB1c2VyLnN1Yiwgb3JnYW5pemF0aW9uSWQ6IHVzZXIub3JnYW5pemF0aW9uSWQgfTtcbn1cblxuLyoqIE1lbW8gcGVyIHJlcXVlc3Q6IHRoZSBtZXRlciAob24gYGZpbmlzaGApIGFuZCB0aGUgY2hlY2sgKGluIHJlcXVpcmVBdXRoKSBib3RoIGFzay4gKi9cbmNvbnN0IHZlcmRpY3RzID0gbmV3IFdlYWtNYXA8UmVxdWVzdCwgc3RyaW5nIHwgbnVsbD4oKTtcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgc2VydmljZSB0aGF0IHZvdWNoZWQgZm9yIHRoaXMgcmVxdWVzdCB3aXRoIGEgVkFMSUQgb24tYmVoYWxmXG4gKiBtYXJrZXIsIGVsc2UgYHVuZGVmaW5lZGAuIFJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGF1dGhlbnRpY2F0ZWQgKGByZXEudXNlcmBcbiAqIHNldCBieSByZXF1aXJlQXV0aCkg4oCUIHRoZSBtYXJrZXIgaXMgb25seSBtZWFuaW5nZnVsIGFnYWluc3QgYSB2ZXJpZmllZCB1c2VyLlxuICpcbiAqIEV2ZXJ5IHJlamVjdGlvbiBvZiBhIFBSRVNFTlQgaGVhZGVyIGlzIGNvdW50ZWQgb25cbiAqIGBxdW90YV9vbl9iZWhhbGZfcmVqZWN0ZWRfdG90YWx7cmVhc29ufWA6IGEgZm9yZ2VkIGhlYWRlciBmcm9tIGEgdXNlciBsYW5kc1xuICogdGhlcmUgYXMgYGludmFsaWRgIChubyBzZXJ2aWNlIGtleSBzaWducyBpdCksIGFuZCB0aGUgcmVxdWVzdCBpcyBiaWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkJlaGFsZkNhbGxlcihyZXE6IFJlcXVlc3QpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBtZW1vID0gdmVyZGljdHMuZ2V0KHJlcSk7XG4gIGlmIChtZW1vICE9PSB1bmRlZmluZWQpIHJldHVybiBtZW1vID8/IHVuZGVmaW5lZDtcbiAgY29uc3QgdmVyZGljdCA9IHZlcmlmeU1hcmtlcihyZXEpO1xuICB2ZXJkaWN0cy5zZXQocmVxLCB2ZXJkaWN0KTtcbiAgcmV0dXJuIHZlcmRpY3QgPz8gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlNYXJrZXIocmVxOiBSZXF1ZXN0KTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJhdyA9IHJlcS5oZWFkZXJzPy5bT05fQkVIQUxGX0hFQURFUl07XG4gIGNvbnN0IHRva2VuID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3WzBdIDogcmF3O1xuICBpZiAoIXRva2VuKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcmVqZWN0ID0gKHJlYXNvbjogc3RyaW5nKTogbnVsbCA9PiB7XG4gICAgZW1pdENvdW50ZXIoJ3F1b3RhX29uX2JlaGFsZl9yZWplY3RlZF90b3RhbCcsIHsgcmVhc29uIH0pO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuICBjb25zdCB1c2VyID0gcmVxLnVzZXI7XG4gIGlmICghdXNlcj8uc3ViIHx8ICF1c2VyLm9yZ2FuaXphdGlvbklkKSByZXR1cm4gcmVqZWN0KCd1bmF1dGhlbnRpY2F0ZWQnKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBoZWFkZXIgPSBkZWNvZGVKd3RIZWFkZXIodG9rZW4pO1xuICAgIGlmICghaGVhZGVyPy5raWQgfHwgIWlzU2VydmljZUtpZChoZWFkZXIua2lkKSkgcmV0dXJuIHJlamVjdCgnaW52YWxpZCcpO1xuICAgIGNvbnN0IGNsYWltcyA9IHZlcmlmeVNlcnZpY2VKd3Q8eyB0eXBlPzogc3RyaW5nOyBwcmluY2lwYWxUeXBlPzogc3RyaW5nOyBzdWI/OiBzdHJpbmc7IG9ibz86IHN0cmluZzsgb3JnYW5pemF0aW9uSWQ/OiBzdHJpbmcgfT4oXG4gICAgICB0b2tlbiwgeyBraWQ6IGhlYWRlci5raWQsIC4uLmlzc3VlckF1ZGllbmNlT3B0aW9ucygpIH0sXG4gICAgKTtcbiAgICBpZiAoY2xhaW1zLnR5cGUgIT09IE9OX0JFSEFMRl9UT0tFTl9UWVBFIHx8IGNsYWltcy5wcmluY2lwYWxUeXBlICE9PSAnc2VydmljZScpIHJldHVybiByZWplY3QoJ2ludmFsaWQnKTtcbiAgICBjb25zdCBjYWxsZXIgPSBzZXJ2aWNlTmFtZU9mKGNsYWltcyk7XG4gICAgaWYgKCFjYWxsZXIgfHwgaXNTZXJ2aWNlVG9rZW5EZW5pZWQoY2xhaW1zKSkgcmV0dXJuIHJlamVjdCgnZGVuaWVkJyk7XG4gICAgaWYgKCFPTl9CRUhBTEZfQ0FMTEVSUy5pbmNsdWRlcyhjYWxsZXIpKSByZXR1cm4gcmVqZWN0KCdjYWxsZXInKTtcbiAgICBpZiAoY2xhaW1zLm9ibyAhPT0gdXNlci5zdWIpIHJldHVybiByZWplY3QoJ3N1YmplY3QnKTtcbiAgICBpZiAoU3RyaW5nKGNsYWltcy5vcmdhbml6YXRpb25JZCA/PyAnJykudG9Mb3dlckNhc2UoKSAhPT0gdXNlci5vcmdhbml6YXRpb25JZC50b0xvd2VyQ2FzZSgpKSByZXR1cm4gcmVqZWN0KCdvcmcnKTtcbiAgICByZXR1cm4gY2FsbGVyO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gcmVqZWN0KCdpbnZhbGlkJyk7XG4gIH1cbn1cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tYmVoYWxmLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9vbi1iZWhhbGYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFekMsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBRWpEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXNCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRXhFLG9GQUFvRjtBQUNwRixNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUVsQywwRUFBMEU7QUFDMUUsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUM7QUFVekM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQXlCO0lBQ3ZELE1BQU0sU0FBUyxHQUFHLE9BQU8s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XG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIE9OLUJFSEFMRiBjYWxsczogYSBzZXJ2aWNlIGZvcndhcmRpbmcgdGhlIGVuZCB1c2VyJ3Mgb3duIGJlYXJlciB0b2tlbiB0byBhXG4gKiBwZWVyLCBhcyBwYXJ0IG9mIGEgcmVxdWVzdCB0aGF0IHdhcyBBTFJFQURZIG1ldGVyZWQgd2hlcmUgaXQgYXJyaXZlZC5cbiAqXG4gKiBUaGUgYXNrIGFnZW50IGFjdHMgc3RyaWN0bHkgYXMgdGhlIGNhbGxpbmcgdXNlciDigJQgaXRzIHRvb2xzIGZvcndhcmQgdGhlXG4gKiB1c2VyJ3MgdG9rZW4gc28gdGhlIHBlZXIncyB0ZW5hbmN5LCBwZXJtaXNzaW9uIGFuZCBjb21wbGlhbmNlIGdhdGVzIGFwcGx5IGFzXG4gKiBpZiB0aGUgdXNlciBoYWQgY2FsbGVkIHRoZW0g4oCUIGFuZCBwaXBlbGluZSdzIGNvbmZpcm0tcGxhY2Vob2xkZXItcGx1Z2lucyBkb2VzXG4gKiB0aGUgc2FtZSBhZ2FpbnN0IHRoZSBwbHVnaW4gc2VydmljZS4gRWFjaCBvZiB0aG9zZSBob3BzIGlzIGEgVVNFUiByZXF1ZXN0IHRvXG4gKiB0aGUgcGVlciwgc28gdGhlIHBlZXIncyBgYXBpQ2FsbHNgIG1ldGVyIGJpbGxlZCBpdDogb25lIGFnZW50IHR1cm4gd2FzIDEwLTIwXG4gKiBhcGlDYWxscyBvbiB0b3Agb2YgdGhlIHR1cm4gaXRzZWxmICh3aGljaCBpcyBtZXRlcmVkLCBhbmQgQUktcmVzZXJ2ZWQpLlxuICpcbiAqIFRoZSBtYXJrZXIgdGhhdCB3YWl2ZXMgdGhhdCBzZWNvbmQgY2hhcmdlIGhhcyB0byBiZSBzb21ldGhpbmcgdGhlIFVTRVIgQ0FOTk9UXG4gKiBQUk9EVUNFLCBvciBhbnkgbWVtYmVyIGNvdWxkIHN0b3AgcGF5aW5nIGZvciBBUEkgY2FsbHMgYnkgc2V0dGluZyBhIGhlYWRlci5cbiAqIFNvIGl0IGlzIGEgU0lHTkVEIFNFUlZJQ0UgVE9LRU4gKHRoZSBjYWxsaW5nIHNlcnZpY2UncyBvd24gRVMyNTYga2V5LCB0aGUgc2FtZVxuICoga2V5IG1hdGVyaWFsIGByZXF1aXJlQXV0aGAgdHJ1c3RzIGZvciBzZXJ2aWNlIHByaW5jaXBhbHMpLCBjYXJyaWVkIGluXG4gKiB7QGxpbmsgT05fQkVIQUxGX0hFQURFUn0gYmVzaWRlIHRoZSB1c2VyJ3MgdW50b3VjaGVkIGBBdXRob3JpemF0aW9uYDpcbiAqXG4gKiAgLSBgdHlwZTogJ29uX2JlaGFsZidgIOKAlCBuZXZlciBgYWNjZXNzYCwgc28gdGhlIG1hcmtlciBpcyB1c2VsZXNzIGFzIGEgYmVhcmVyXG4gKiAgICB0b2tlbiBhbnl3aGVyZSAoYHJlcXVpcmVBdXRoYCBhbmQgYHZlcmlmeVNlcnZpY2VQcmluY2lwYWxgIGJvdGggZGVtYW5kXG4gKiAgICBgdHlwZTogJ2FjY2VzcydgKTtcbiAqICAtIGBvYm9gICsgYG9yZ2FuaXphdGlvbklkYCDigJQgQk9VTkQgdG8gdGhlIHVzZXIgYW5kIG9yZyBpdCB2b3VjaGVzIGZvciwgYW5kXG4gKiAgICBob25vdXJlZCBvbmx5IHdoZW4gYm90aCBlcXVhbCB0aGUgcmVxdWVzdCdzIHZlcmlmaWVkIGByZXEudXNlcmA7XG4gKiAgLSB0aGUgc2lnbmVyIG11c3QgYmUgb24ge0BsaW5rIE9OX0JFSEFMRl9DQUxMRVJTfSDigJQgYSBzZXJ2aWNlIHRoYXQgZm9yd2FyZHNcbiAqICAgIHVzZXIgdG9rZW5zIGJ5IGRlc2lnbiDigJQgYW5kIG5vdCBvbiB0aGUgc2VydmljZS10b2tlbiBkZW55bGlzdDtcbiAqICAtIDEyMCBzIFRUTCwgbWludGVkIHBlciBvdXRib3VuZCBjYWxsLlxuICpcbiAqIFdoYXQgYSB2YWxpZCBtYXJrZXIgY2hhbmdlcyBpcyBuYXJyb3c6IHRoZSBhcGlDYWxscy9hdXRvbWF0aW9uQ2FsbHMgTUVURVIgYW5kXG4gKiBDSEVDSyBza2lwIHRoZSByZXF1ZXN0IChgY2FsbFF1b3RhRXhlbXB0aW9uYCkuIFRlbmFuY3ksIHBlcm1pc3Npb25zLCBhdWRpdCBhbmRcbiAqIGV2ZXJ5IHJlc2VydmF0aW9uLWdhdGVkIHF1b3RhIChhaUNhbGxzLCBwaXBlbGluZXMsIHBsdWdpbnMpIGFwcGx5IGV4YWN0bHkgYXNcbiAqIGJlZm9yZSDigJQgYW4gb24tYmVoYWxmIGAvZ2VuZXJhdGVgIHN0aWxsIHJlc2VydmVzIGl0cyBvd24gYWlDYWxscyBzbG90LlxuICovXG5cbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBpc3N1ZXJBdWRpZW5jZU9wdGlvbnMgfSBmcm9tICcuL2p3dC12ZXJpZnkuanMnO1xuaW1wb3J0IHsgaXNTZXJ2aWNlVG9rZW5EZW5pZWQsIHNlcnZpY2VOYW1lT2YgfSBmcm9tICcuL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB7IGN1cnJlbnRBdWRpdENvbnRleHQgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdWRpdC1jb250ZXh0LmpzJztcbmltcG9ydCB7IGlzU2VydmljZUtpZCwgc2lnblNlcnZpY2VKd3QsIHZlcmlmeVNlcnZpY2VKd3QgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXJ2aWNlLWtleXMuanMnO1xuaW1wb3J0IHsgZGVjb2RlSnd0SGVhZGVyIH0gZnJvbSAnLi4vdXRpbHMvandrLmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdvbi1iZWhhbGYnKTtcblxuLyoqIFRoZSBoZWFkZXIgY2FycnlpbmcgdGhlIHNpZ25lZCBvbi1iZWhhbGYgbWFya2VyIChsb3dlci1jYXNlLCBhcyBOb2RlIHJlYWRzIGl0KS4gKi9cbmV4cG9ydCBjb25zdCBPTl9CRUhBTEZfSEVBREVSID0gJ3gtcGItb24tYmVoYWxmJztcblxuLyoqXG4gKiBTZXJ2aWNlcyB3aG9zZSBvbi1iZWhhbGYgbWFya2VyIGlzIGhvbm91cmVkOiB0aGUgb25lcyB0aGF0IGZvcndhcmQgYSB1c2VyJ3NcbiAqIHRva2VuIGFzIGEgbWF0dGVyIG9mIGRlc2lnbi4gQSBtYXJrZXIgc2lnbmVkIGJ5IGFueSBvdGhlciBzZXJ2aWNlIOKAlCB2YWxpZFxuICogc2lnbmF0dXJlIG9yIG5vdCDigJQgaXMgaWdub3JlZCwgc28gYSBjb21wcm9taXNlZCBwZWVyIHRoYXQgbmV2ZXIgZm9yd2FyZHMgdXNlclxuICogdG9rZW5zIGNhbm5vdCBzdGFydCB3YWl2aW5nIGl0cyB0ZW5hbnRzJyBtZXRlcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBPTl9CRUhBTEZfQ0FMTEVSUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ2FzaycsICdwaXBlbGluZSddO1xuXG4vKiogTWFya2VyIGxpZmV0aW1lLiBNaW50ZWQgcGVyIG91dGJvdW5kIGNhbGwsIHNvIGl0IG9ubHkgaGFzIHRvIG91dGxpdmUgb25lIGhvcC4gKi9cbmNvbnN0IE9OX0JFSEFMRl9UVExfU0VDT05EUyA9IDEyMDtcblxuLyoqIFRoZSBgdHlwZWAgY2xhaW0gdGhhdCBtYWtlcyB0aGUgbWFya2VyIHVudXNhYmxlIGFzIGFuIGFjY2VzcyB0b2tlbi4gKi9cbmNvbnN0IE9OX0JFSEFMRl9UT0tFTl9UWVBFID0gJ29uX2JlaGFsZic7XG5cbi8qKiBXaG8gYSBtYXJrZXIgdm91Y2hlcyBmb3IuIERlZmF1bHRzIHRvIHRoZSBhbWJpZW50IHJlcXVlc3QncyB2ZXJpZmllZCBwcmluY2lwYWwuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uQmVoYWxmU3ViamVjdCB7XG4gIC8qKiBUaGUgdXNlciAoYHN1YmApIHdob3NlIHRva2VuIHJpZGVzIHRoZSBzYW1lIHJlcXVlc3QuICovXG4gIHN1Yjogc3RyaW5nO1xuICAvKiogVGhlaXIgYWN0aXZlIG9yZy4gKi9cbiAgb3JnYW5pemF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBIZWFkZXJzIHRvIGFkZCBiZXNpZGUgYSBmb3J3YXJkZWQgdXNlciBgQXV0aG9yaXphdGlvbmAgc28gdGhlIHBlZXIgZG9lcyBub3RcbiAqIGJpbGwgdGhlIGhvcCBhIHNlY29uZCB0aW1lLiBNaW50IHBlciBjYWxsICh0aGUgbWFya2VyIGV4cGlyZXMgaW4gMTIwIHMpLlxuICpcbiAqIFRoZSBzdWJqZWN0IGRlZmF1bHRzIHRvIHRoZSBhbWJpZW50IGF1ZGl0IGNvbnRleHQncyBWRVJJRklFRCBwcmluY2lwYWwgKHRoZVxuICogaW5ib3VuZCByZXF1ZXN0IHRoaXMgY2FsbCBzZXJ2ZXMpLiBSZXR1cm5zIGB7fWAg4oCUIHRoZSBob3AgaXMgYmlsbGVkIG5vcm1hbGx5LFxuICogdGhlIHNhZmUgZGlyZWN0aW9uIOKAlCB3aGVuIHRoZXJlIGlzIG5vIHVzZXIgcHJpbmNpcGFsIHRvIHZvdWNoIGZvciwgb3Igd2hlblxuICogdGhpcyBwcm9jZXNzIGNhbm5vdCBzaWduIChubyBzZXJ2aWNlIGtleSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkJlaGFsZkhlYWRlcnMoc3ViamVjdD86IE9uQmVoYWxmU3ViamVjdCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBwcmluY2lwYWwgPSBzdWJqZWN0ID8/IGFtYmllbnRTdWJqZWN0KCk7XG4gIGlmICghcHJpbmNpcGFsKSByZXR1cm4ge307XG4gIHRyeSB7XG4gICAgY29uc3QgdG9rZW4gPSBzaWduU2VydmljZUp3dChcbiAgICAgIHtcbiAgICAgICAgdHlwZTogT05fQkVIQUxGX1RPS0VOX1RZUEUsXG4gICAgICAgIHByaW5jaXBhbFR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgb2JvOiBwcmluY2lwYWwuc3ViLFxuICAgICAgICBvcmdhbml6YXRpb25JZDogcHJpbmNpcGFsLm9yZ2FuaXphdGlvbklkLFxuICAgICAgICBqdGk6IHJhbmRvbVVVSUQoKSxcbiAgICAgIH0sXG4gICAgICB7IHNlcnZpY2VOYW1lOiBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ2FwaScsIGV4cGlyZXNJblNlY29uZHM6IE9OX0JFSEFMRl9UVExfU0VDT05EUywgLi4uaXNzdWVyQXVkaWVuY2VPcHRpb25zKCkgfSxcbiAgICApO1xuICAgIHJldHVybiB7IFtPTl9CRUhBTEZfSEVBREVSXTogdG9rZW4gfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdPbi1iZWhhbGYgbWFya2VyIG5vdCBtaW50ZWQ7IHRoZSBwZWVyIHdpbGwgbWV0ZXIgdGhlIGhvcCcsIHsgZXJyb3I6IFN0cmluZyhlcnIpIH0pO1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhbWJpZW50U3ViamVjdCgpOiBPbkJlaGFsZlN1YmplY3QgfCB1bmRlZmluZWQge1xuICBjb25zdCB1c2VyID0gY3VycmVudEF1ZGl0Q29udGV4dCgpPy5wcmluY2lwYWw/LigpO1xuICBpZiAoIXVzZXIgfHwgdXNlci5wcmluY2lwYWxUeXBlID09PSAnc2VydmljZScgfHwgIXVzZXIuc3ViIHx8ICF1c2VyLm9yZ2FuaXphdGlvbklkKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4geyBzdWI6IHVzZXIuc3ViLCBvcmdhbml6YXRpb25JZDogdXNlci5vcmdhbml6YXRpb25JZCB9O1xufVxuXG4vKiogTWVtbyBwZXIgcmVxdWVzdDogdGhlIG1ldGVyIChvbiBgZmluaXNoYCkgYW5kIHRoZSBjaGVjayAoaW4gcmVxdWlyZUF1dGgpIGJvdGggYXNrLiAqL1xuY29uc3QgdmVyZGljdHMgPSBuZXcgV2Vha01hcDxSZXF1ZXN0LCBzdHJpbmcgfCBudWxsPigpO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBzZXJ2aWNlIHRoYXQgdm91Y2hlZCBmb3IgdGhpcyByZXF1ZXN0IHdpdGggYSBWQUxJRCBvbi1iZWhhbGZcbiAqIG1hcmtlciwgZWxzZSBgdW5kZWZpbmVkYC4gUmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgYXV0aGVudGljYXRlZCAoYHJlcS51c2VyYFxuICogc2V0IGJ5IHJlcXVpcmVBdXRoKSDigJQgdGhlIG1hcmtlciBpcyBvbmx5IG1lYW5pbmdmdWwgYWdhaW5zdCBhIHZlcmlmaWVkIHVzZXIuXG4gKlxuICogRXZlcnkgcmVqZWN0aW9uIG9mIGEgUFJFU0VOVCBoZWFkZXIgaXMgY291bnRlZCBvblxuICogYHF1b3RhX29uX2JlaGFsZl9yZWplY3RlZF90b3RhbHtyZWFzb259YDogYSBmb3JnZWQgaGVhZGVyIGZyb20gYSB1c2VyIGxhbmRzXG4gKiB0aGVyZSBhcyBgaW52YWxpZGAgKG5vIHNlcnZpY2Uga2V5IHNpZ25zIGl0KSwgYW5kIHRoZSByZXF1ZXN0IGlzIGJpbGxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQmVoYWxmQ2FsbGVyKHJlcTogUmVxdWVzdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1lbW8gPSB2ZXJkaWN0cy5nZXQocmVxKTtcbiAgaWYgKG1lbW8gIT09IHVuZGVmaW5lZCkgcmV0dXJuIG1lbW8gPz8gdW5kZWZpbmVkO1xuICBjb25zdCB2ZXJkaWN0ID0gdmVyaWZ5TWFya2VyKHJlcSk7XG4gIHZlcmRpY3RzLnNldChyZXEsIHZlcmRpY3QpO1xuICByZXR1cm4gdmVyZGljdCA/PyB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU1hcmtlcihyZXE6IFJlcXVlc3QpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgcmF3ID0gcmVxLmhlYWRlcnM/LltPTl9CRUhBTEZfSEVBREVSXTtcbiAgY29uc3QgdG9rZW4gPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXdbMF0gOiByYXc7XG4gIGlmICghdG9rZW4pIHJldHVybiBudWxsO1xuICBjb25zdCByZWplY3QgPSAocmVhc29uOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICBlbWl0Q291bnRlcigncXVvdGFfb25fYmVoYWxmX3JlamVjdGVkX3RvdGFsJywgeyByZWFzb24gfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIGNvbnN0IHVzZXIgPSByZXEudXNlcjtcbiAgaWYgKCF1c2VyPy5zdWIgfHwgIXVzZXIub3JnYW5pemF0aW9uSWQpIHJldHVybiByZWplY3QoJ3VuYXV0aGVudGljYXRlZCcpO1xuICB0cnkge1xuICAgIGNvbnN0IGhlYWRlciA9IGRlY29kZUp3dEhlYWRlcih0b2tlbik7XG4gICAgaWYgKCFoZWFkZXI/LmtpZCB8fCAhaXNTZXJ2aWNlS2lkKGhlYWRlci5raWQpKSByZXR1cm4gcmVqZWN0KCdpbnZhbGlkJyk7XG4gICAgY29uc3QgY2xhaW1zID0gdmVyaWZ5U2VydmljZUp3dDx7IHR5cGU/OiBzdHJpbmc7IHByaW5jaXBhbFR5cGU/OiBzdHJpbmc7IHN1Yj86IHN0cmluZzsgb2JvPzogc3RyaW5nOyBvcmdhbml6YXRpb25JZD86IHN0cmluZyB9PihcbiAgICAgIHRva2VuLCB7IGtpZDogaGVhZGVyLmtpZCwgLi4uaXNzdWVyQXVkaWVuY2VPcHRpb25zKCkgfSxcbiAgICApO1xuICAgIGlmIChjbGFpbXMudHlwZSAhPT0gT05fQkVIQUxGX1RPS0VOX1RZUEUgfHwgY2xhaW1zLnByaW5jaXBhbFR5cGUgIT09ICdzZXJ2aWNlJykgcmV0dXJuIHJlamVjdCgnaW52YWxpZCcpO1xuICAgIGNvbnN0IGNhbGxlciA9IHNlcnZpY2VOYW1lT2YoY2xhaW1zKTtcbiAgICBpZiAoIWNhbGxlciB8fCBpc1NlcnZpY2VUb2tlbkRlbmllZChjbGFpbXMpKSByZXR1cm4gcmVqZWN0KCdkZW5pZWQnKTtcbiAgICBpZiAoIU9OX0JFSEFMRl9DQUxMRVJTLmluY2x1ZGVzKGNhbGxlcikpIHJldHVybiByZWplY3QoJ2NhbGxlcicpO1xuICAgIGlmIChjbGFpbXMub2JvICE9PSB1c2VyLnN1YikgcmV0dXJuIHJlamVjdCgnc3ViamVjdCcpO1xuICAgIGlmIChTdHJpbmcoY2xhaW1zLm9yZ2FuaXphdGlvbklkID8/ICcnKS50b0xvd2VyQ2FzZSgpICE9PSB1c2VyLm9yZ2FuaXphdGlvbklkLnRvTG93ZXJDYXNlKCkpIHJldHVybiByZWplY3QoJ29yZycpO1xuICAgIHJldHVybiBjYWxsZXI7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiByZWplY3QoJ2ludmFsaWQnKTtcbiAgfVxufVxuIl19
@@ -263,4 +263,4 @@ export function requireFeature(feature) {
263
263
  next();
264
264
  }, { kind: 'feature', feature });
265
265
  }
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1nYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL3Blcm1pc3Npb24tZ2F0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQVF0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUF1QixNQUFNLDhCQUE4QixDQUFDO0FBQ2xKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFtQixhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMvQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVksRUFBRSxVQUFzQjtJQUNwRSxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBOEJEOzs7Ozs7O0dBT0c7QUFDSCxJQUFJLGtCQUFpRSxDQUFDO0FBRXRFOzs7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QVMsQ0FBQyx3QkFBd0IsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQztBQUNULENBQUM7QUFDRCxZQUFZLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUUxRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sWUFBWSxDQUFDLENBQUMsR0FBWSxFQUFFLEdBQWEsRUFBRSxJQUFrQixFQUFRLEVBQUU7UUFDNUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTztRQUVuQyxxRUFBcUU7UUFDckUsdUVBQXVFO1FBQ3ZFLHFFQUFxRTtRQUNyRSxrQkFBa0I7UUFDbEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUVsRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsNERBQTREO1lBQzVELDJEQUEyRDtZQUMzRCxzRUFBc0U7WUFDdEUsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFdBQVcsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM3QyxPQUFPLFNBQVMsQ0FDZCxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFDekIsd0NBQXdDLE9BQU8sR0FBRyxFQUNsRCxTQUFTLENBQUMsd0JBQXdCLENBQ25DLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEF1dGhvcml6YXRpb24gZ2F0ZXMg4oCUIHBlcm1pc3Npb25zLCBzeXN0ZW0gYWRtaW4sIGZlYXR1cmVzIOKAlCBhbmQgdGhlXG4gKiBgYXV0aHouZGVuaWVkYCBhdWRpdCBzaW5rIHRoZXkgcmVwb3J0IHJlZnVzYWxzIHRvLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgdGFnUm91dGVHYXRlIH0gZnJvbSAnLi9yb3V0ZS10YWJsZS5qcyc7XG5pbXBvcnQgeyBpc1NlcnZpY2VQcmluY2lwYWwsIHNlcnZpY2VOYW1lT2YgfSBmcm9tICcuL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB7IEh0dHBTdGF0dXMgfSBmcm9tICcuLi9jb25zdGFudHMvaHR0cC1zdGF0dXMuanMnO1xuaW1wb3J0IHsgYXVkaXRBdXRoQmxvY2ssIGN1cnJlbnRBdWRpdENvbnRleHQsIHNhbml0aXplQ29ycmVsYXRpb25JZCwgc2FuaXRpemVVc2VyQWdlbnQsIHR5cGUgQXVkaXRBdXRoQmxvY2sgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdWRpdC1jb250ZXh0LmpzJztcbmltcG9ydCB7IHNlcnZpY2VJZGVudGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIFBlcm1pc3Npb24sIGhhc1Blcm1pc3Npb24gfSBmcm9tICcuLi90eXBlcy9wZXJtaXNzaW9ucy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYXV0aC1taWRkbGV3YXJlJyk7XG4vKipcbiAqIFdoZXRoZXIgdGhlIHJlcXVlc3QncyB1c2VyIGhvbGRzIGBwZXJtaXNzaW9uYC4gU3VwZXJhZG1pbnMgaW1wbGljaXRseSBob2xkXG4gKiBldmVyeSBwZXJtaXNzaW9uLiBSZWFkcyB0aGUgcmVzb2x2ZWQgYHBlcm1pc3Npb25zYCBjbGFpbSAoc2V0IGF0IHRva2VuIGlzc3VlLFxuICogb3IgcmUtZGVyaXZlZCBwZXIgcmVxdWVzdCBieSB0aGUgcGxhdGZvcm0pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlckhhc1Blcm1pc3Npb24ocmVxOiBSZXF1ZXN0LCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBoYXNQZXJtaXNzaW9uKHJlcS51c2VyPy5wZXJtaXNzaW9ucywgcGVybWlzc2lvbiwgcmVxLnVzZXI/LmlzU3VwZXJBZG1pbik7XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gYSByZWdpc3RlcmVkIGF1dGhvcml6YXRpb24tZGVuaWFsIGF1ZGl0b3Igd2hlbiBhXG4gKiBzdGF0ZS1jaGFuZ2luZyByZXF1ZXN0IGlzIHJlamVjdGVkIGJ5IGByZXF1aXJlUGVybWlzc2lvbmAgL1xuICogYHJlcXVpcmVTeXN0ZW1BZG1pbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aHpEZW5pYWxJbmZvIHtcbiAgLyoqIFRoZSBkZW5pZWQgdXNlcidzIGlkIChgc3ViYCksIGlmIGF1dGhlbnRpY2F0ZWQuICovXG4gIGFjdG9ySWQ/OiBzdHJpbmc7XG4gIGFjdG9yRW1haWw/OiBzdHJpbmc7XG4gIC8qKiBUaGUgdXNlcidzIGFjdGl2ZSBvcmcgYXQgZGVuaWFsIHRpbWUuICovXG4gIG9yZ0lkPzogc3RyaW5nO1xuICAvKiogSFRUUCBtZXRob2QgKyBwYXRoIG9mIHRoZSByZWplY3RlZCByZXF1ZXN0LiAqL1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICAvKiogV2hhdCB3YXMgcmVxdWlyZWQ6IHRoZSBtaXNzaW5nIHBlcm1pc3Npb24ocyksIG9yICdzeXN0ZW0tYWRtaW4nLiAqL1xuICByZXF1aXJlZDogc3RyaW5nO1xuICAvKiogQ2xpZW50IGlwIChgcmVxLmlwYCwgcHJveHktcmVzb2x2ZWQpLiAqL1xuICBpcD86IHN0cmluZztcbiAgLyoqIFNhbml0aXplZCwgbGVuZ3RoLWNhcHBlZCBVc2VyLUFnZW50LiAqL1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIC8qKiBUaGUgcmVxdWVzdCdzIGNvcnJlbGF0aW9uIGlkICh0aGUgYW1iaWVudCBhdWRpdCBjb250ZXh0J3MsIGVsc2UgYSB2YWxpZCBgWC1SZXF1ZXN0LUlkYCkuICovXG4gIHJlcXVlc3RJZD86IHN0cmluZztcbiAgLyoqIFRoZSByZWFsIHN5c2FkbWluIGJlaGluZCBhbiBpbXBlcnNvbmF0aW9uIHRva2VuLCBmcm9tIHRoZSB2ZXJpZmllZCB0b2tlbi4gKi9cbiAgaW1wZXJzb25hdG9ySWQ/OiBzdHJpbmc7XG4gIC8qKiBUaGUgY3JlZGVudGlhbCB0aGF0IHdhcyByZWZ1c2VkIChrZXkgaWQsIHNlc3Npb24sIHNjb3BlLCDigKYpIOKAlCB0aGUgYF9hdXRoYCBibG9jay4gKi9cbiAgYXV0aD86IEF1ZGl0QXV0aEJsb2NrO1xufVxuXG4vKipcbiAqIE9wdGlvbmFsIHNpbmsgZm9yIGRlbmllZC1hdXRob3JpemF0aW9uIGV2ZW50cy4gTGVmdCB1bnNldCBieSBkZWZhdWx0IHNvXG4gKiBhcGktY29yZSBzdGF5cyBkZWNvdXBsZWQgZnJvbSBhbnkgYXVkaXQgdHJhbnNwb3J0IOKAlCBhIHNlcnZpY2UgcmVnaXN0ZXJzIG9uZVxuICogYXQgYm9vdCAodHlwaWNhbGx5IGZvcndhcmRpbmcgdG8gaXRzIGBSZW1vdGVBdWRpdENsaWVudGAgYXMgYW5cbiAqIGBhdXRoei5kZW5pZWRgIGV2ZW50LCBvciwgb24gcGxhdGZvcm0sIHRvIHRoZSBsb2NhbCBgYXVkaXQoKWAgaGVscGVyKS5cbiAqIE1VU1QgYmUgYmVzdC1lZmZvcnQ6IGl0IGlzIGludm9rZWQgaW5zaWRlIHRoZSByZXF1ZXN0IHBhdGgsIHNvIGl0IG11c3QgbmV2ZXJcbiAqIHRocm93IG9yIGJsb2NrICh0aGUgZ2F0ZSB3cmFwcyB0aGUgY2FsbCBpbiB0cnkvY2F0Y2ggcmVnYXJkbGVzcykuXG4gKi9cbmxldCBhdXRoekRlbmlhbEF1ZGl0b3I6ICgoaW5mbzogQXV0aHpEZW5pYWxJbmZvKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZWdpc3RlciAob3IgY2xlYXIsIHdpdGggYHVuZGVmaW5lZGApIHRoZSBwcm9jZXNzLXdpZGUgYXV0aG9yaXphdGlvbi1kZW5pYWxcbiAqIGF1ZGl0b3IuIElkZW1wb3RlbnQ7IHRoZSBsYXN0IHJlZ2lzdHJhdGlvbiB3aW5zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0QXV0aHpEZW5pYWxBdWRpdG9yKGZuOiAoKGluZm86IEF1dGh6RGVuaWFsSW5mbykgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgYXV0aHpEZW5pYWxBdWRpdG9yID0gZm47XG59XG5cbi8qKlxuICogRW1pdCBhIGRlbmlhbCBldmVudCwgYmVzdC1lZmZvcnQuIE9ubHkgZmlyZXMgZm9yIHN0YXRlLWNoYW5naW5nIChub24tR0VULFxuICogbm9uLUhFQUQvT1BUSU9OUykgcmVxdWVzdHMg4oCUIGEgcmVqZWN0ZWQgR0VUIGlzIGxvdy1zaWduYWwgcHJvYmluZyBub2lzZSBhbmRcbiAqIHdvdWxkIGFtcGxpZnkgYXVkaXQgdm9sdW1lIHVuZGVyIGEgc2Nhbi4gTmV2ZXIgdGhyb3dzLlxuICpcbiAqIFRoZSBwZXJtaXNzaW9uIGdhdGVzIGhlcmUgY2FsbCBpdCB0aGVtc2VsdmVzLiBFeHBvcnQgaXQgZm9yIGRhdGEtZHJpdmVuIGNoZWNrc1xuICogYSByb3V0ZSBtYWtlcyBpbmxpbmUgKGNyb3NzLW9yZyBhY2Nlc3MsIHNlcnZpY2Utb25seSBlbmRwb2ludHMpLCBzbyB0aG9zZSA0MDNzXG4gKiByZWFjaCB0aGUgc2FtZSBgYXV0aHouZGVuaWVkYCB0cmFpbC4gYHJlcXVpcmVkYCBuYW1lcyB3aGF0IHdhcyBtaXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkQXV0aHpEZW5pYWwocmVxOiBSZXF1ZXN0LCByZXF1aXJlZDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGF1ZGl0b3IgPSBhdXRoekRlbmlhbEF1ZGl0b3I7XG4gIGlmICghYXVkaXRvcikgcmV0dXJuO1xuICBjb25zdCBtZXRob2QgPSByZXEubWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gIGlmIChtZXRob2QgPT09ICdHRVQnIHx8IG1ldGhvZCA9PT0gJ0hFQUQnIHx8IG1ldGhvZCA9PT0gJ09QVElPTlMnKSByZXR1cm47XG4gIHRyeSB7XG4gICAgYXVkaXRvcih7XG4gICAgICBhY3RvcklkOiByZXEudXNlcj8uc3ViLFxuICAgICAgYWN0b3JFbWFpbDogcmVxLnVzZXI/LmVtYWlsLFxuICAgICAgb3JnSWQ6IHJlcS51c2VyPy5vcmdhbml6YXRpb25JZCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIC8vIFN0cmlwIHRoZSBxdWVyeSBzdHJpbmcg4oCUIGEgZGVuaWVkIHJlcXVlc3QgbWF5IGNhcnJ5IGEgdG9rZW4vc2VjcmV0IGFzIGFcbiAgICAgIC8vIHF1ZXJ5IHBhcmFtLCBhbmQgdGhpcyBwYXRoIGlzIHBlcnNpc3RlZCB2ZXJiYXRpbSBpbnRvIHRoZSBhdWRpdCBsb2cuXG4gICAgICBwYXRoOiAocmVxLm9yaWdpbmFsVXJsIHx8IHJlcS51cmwpLnNwbGl0KCc/JylbMF0sXG4gICAgICByZXF1aXJlZCxcbiAgICAgIGlwOiByZXEuaXAsXG4gICAgICB1c2VyQWdlbnQ6IHNhbml0aXplVXNlckFnZW50KHJlcS5oZWFkZXJzPy5bJ3VzZXItYWdlbnQnXSksXG4gICAgICByZXF1ZXN0SWQ6IGN1cnJlbnRBdWRpdENvbnRleHQoKT8ucmVxdWVzdElkID8/IHNhbml0aXplQ29ycmVsYXRpb25JZChyZXEuaGVhZGVycz8uWyd4LXJlcXVlc3QtaWQnXSksXG4gICAgICBpbXBlcnNvbmF0b3JJZDogcmVxLnVzZXI/LmltcGVyc29uYXRvcklkLFxuICAgICAgYXV0aDogYXVkaXRBdXRoQmxvY2socmVxLnVzZXIpLFxuICAgIH0pO1xuICB9IGNhdGNoIHtcbiAgICAvLyBCZXN0LWVmZm9ydCDigJQgYSBicm9rZW4gYXVkaXRvciBtdXN0IG5ldmVyIGJyZWFrIHRoZSBhdXRoIGdhdGUuXG4gIH1cbn1cblxuLyoqIFRoZSBzaGFyZWQgZ2F0ZSBwcmVhbWJsZTogYW5zd2VyIDQwMSBhbmQgcmV0dXJuIGZhbHNlIHdoZW4gdW5hdXRoZW50aWNhdGVkLiAqL1xuZnVuY3Rpb24gcmVxdWlyZVVzZXIocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKTogcmVxIGlzIFJlcXVlc3QgJiB7IHVzZXI6IE5vbk51bGxhYmxlPFJlcXVlc3RbJ3VzZXInXT4gfSB7XG4gIGlmIChyZXEudXNlcikgcmV0dXJuIHRydWU7XG4gIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnQXV0aGVudGljYXRpb24gcmVxdWlyZWQnLCBFcnJvckNvZGUuVU5BVVRIT1JJWkVEKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKiogQXVkaXQgKyBhbnN3ZXIgYSBwZXJtaXNzaW9uIHJlZnVzYWwgKGBtaXNzaW5nYCBkZWZhdWx0cyB0byBldmVyeSByZXF1aXJlZCBwZXJtaXNzaW9uKS4gKi9cbmZ1bmN0aW9uIGRlbnlQZXJtaXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSwgbW9kZTogJ29yJyB8ICdhbmQnLCBtaXNzaW5nOiBQZXJtaXNzaW9uW10gPSBwZXJtaXNzaW9ucyk6IHZvaWQge1xuICByZWNvcmRBdXRoekRlbmlhbChyZXEsIHBlcm1pc3Npb25zLmpvaW4oYCAke21vZGV9IGApKTtcbiAgc2VuZEVycm9yKFxuICAgIHJlcywgSHR0cFN0YXR1cy5GT1JCSURERU4sXG4gICAgYE1pc3NpbmcgcmVxdWlyZWQgcGVybWlzc2lvbjogJHttaXNzaW5nLmpvaW4oYCAke21vZGV9IGApfWAsXG4gICAgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXF1aXJlcyB0aGF0IHRoZSB1c2VyIGhvbGQgQVQgTEVBU1QgT05FIG9mIHRoZSBnaXZlbiBwZXJtaXNzaW9ucyAob3IgYmUgYVxuICogc3VwZXJhZG1pbikuIFVzZSBhZnRlciByZXF1aXJlQXV0aC4gTWlycm9ycyBgcmVxdWlyZVJvbGVgJ3MgYW55LW9mIHNlbWFudGljcztcbiAqIHBhc3MgYSBzaW5nbGUgcGVybWlzc2lvbiBmb3IgYSBzcGVjaWZpYyBhY3Rpb24sIG9yIHNldmVyYWwgd2hlbiBhbnkgb25lIG9mXG4gKiB0aGVtIHNob3VsZCBncmFudCBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlUGVybWlzc2lvbiguLi5wZXJtaXNzaW9uczogUGVybWlzc2lvbltdKSB7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgaWYgKCFyZXF1aXJlVXNlcihyZXEsIHJlcykpIHJldHVybjtcbiAgICAvLyB1c2VySGFzUGVybWlzc2lvbiDihpIgaGFzUGVybWlzc2lvbiBhbHJlYWR5IGdyYW50cyBzdXBlcmFkbWlucyBldmVyeVxuICAgIC8vIHBlcm1pc3Npb24sIHNvIHRoaXMgc2luZ2xlIGNoZWNrIGNvdmVycyBib3RoIHRoZSBzdXBlcmFkbWluIGJ5cGFzcyBhbmRcbiAgICAvLyB0aGUgYW55LW9mIG1lbWJlcnNoaXAgdGVzdCB3aXRob3V0IHJlLWlubGluaW5nIGVpdGhlci5cbiAgICBpZiAocGVybWlzc2lvbnMuc29tZSgocCkgPT4gdXNlckhhc1Blcm1pc3Npb24ocmVxLCBwKSkpIHJldHVybiBuZXh0KCk7XG4gICAgZGVueVBlcm1pc3Npb24ocmVxLCByZXMsIHBlcm1pc3Npb25zLCAnb3InKTtcbiAgfSwgeyBraW5kOiAncGVybWlzc2lvbicsIG1vZGU6ICdhbnknLCBwZXJtaXNzaW9ucyB9KTtcbn1cblxuLyoqXG4gKiBSZXF1aXJlcyB0aGF0IHRoZSB1c2VyIGhvbGQgRVZFUlkgb25lIG9mIHRoZSBnaXZlbiBwZXJtaXNzaW9ucyAob3IgYmUgYVxuICogc3VwZXJhZG1pbikg4oCUIHRoZSBBTkQgY291bnRlcnBhcnQgdG8gYHJlcXVpcmVQZXJtaXNzaW9uYCdzIGFueS1vZi4gVXNlIGZvciBhXG4gKiBzZW5zaXRpdmUgYWN0aW9uIHRoYXQgbGVnaXRpbWF0ZWx5IGRlbWFuZHMgdHdvIGRpc3RpbmN0IGNhcGFiaWxpdGllcyBhdCBvbmNlXG4gKiAoZS5nLiBhIGNyb3NzLXN1cmZhY2Ugb3BlcmF0aW9uKSwgc28gdGhlIGd1YXJhbnRlZSBpcyBleHBsaWNpdCByYXRoZXIgdGhhblxuICogYXBwcm94aW1hdGVkIGJ5IGNoYWluaW5nIHR3byBgcmVxdWlyZVBlcm1pc3Npb25gIGdhdGVzLiBTdXBlcmFkbWlucyBieXBhc3NcbiAqICh0aGV5IGltcGxpY2l0bHkgaG9sZCBldmVyeSBwZXJtaXNzaW9uKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVBbGxQZXJtaXNzaW9ucyguLi5wZXJtaXNzaW9uczogUGVybWlzc2lvbltdKSB7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgaWYgKCFyZXF1aXJlVXNlcihyZXEsIHJlcykpIHJldHVybjtcbiAgICBjb25zdCBtaXNzaW5nID0gcGVybWlzc2lvbnMuZmlsdGVyKChwKSA9PiAhdXNlckhhc1Blcm1pc3Npb24ocmVxLCBwKSk7XG4gICAgaWYgKG1pc3NpbmcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV4dCgpO1xuICAgIGRlbnlQZXJtaXNzaW9uKHJlcSwgcmVzLCBwZXJtaXNzaW9ucywgJ2FuZCcsIG1pc3NpbmcpO1xuICB9LCB7IGtpbmQ6ICdwZXJtaXNzaW9uJywgbW9kZTogJ2FsbCcsIHBlcm1pc3Npb25zIH0pO1xufVxuXG4vKipcbiAqIExpa2Uge0BsaW5rIHJlcXVpcmVQZXJtaXNzaW9ufSAoYW55LW9mKSBidXQgQUxTTyBhZG1pdHMgYW4gaW50ZXJuYWwgc2VydmljZVxuICogcHJpbmNpcGFsIChgcHJpbmNpcGFsVHlwZTogJ3NlcnZpY2UnYCkuIEZvciBSRUFEIGVuZHBvaW50cyB0aGF0IEJPVEhcbiAqIGludGVyYWN0aXZlIHVzZXJzIOKAlCB3aG8gbXVzdCBob2xkIG9uZSBvZiB0aGUgYDpyZWFkYCBjYXBhYmlsaXRpZXMg4oCUIEFORFxuICogc2VydmljZS10by1zZXJ2aWNlIGNhbGxlcnMgbGVnaXRpbWF0ZWx5IGhpdDsgc2VydmljZSB0b2tlbnMgY2Fycnkgbm9cbiAqIHBlcm1pc3Npb24gY2xhaW1zICh0aGV5J3JlIGxlYXN0LXByaXZpbGVnZSBgcm9sZTptZW1iZXJgKSwgc28gYSBwbGFpblxuICogYHJlcXVpcmVQZXJtaXNzaW9uYCB3b3VsZCB3cm9uZ2x5IDQwMyB0aGVtLiBTdXBlcmFkbWlucyBwYXNzIHZpYVxuICogYHVzZXJIYXNQZXJtaXNzaW9uYCdzIGltcGxpY2l0LWFsbC4gVXNlIG9ubHkgd2hlcmUgYSBzZXJ2aWNlIGNhbGxlciBpcyBhIGtub3duLFxuICogaW50ZW5kZWQgY29uc3VtZXIgb2YgdGhlIHJvdXRlICh2ZXJpZnkgdGhlIGNhbGxlcnMpOyBwcmVmZXIgcGxhaW5cbiAqIGByZXF1aXJlUGVybWlzc2lvbmAgZm9yIHB1cmVseSB1c2VyLWZhY2luZyByZWFkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVQZXJtaXNzaW9uT3JTZXJ2aWNlKC4uLnBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW10pIHtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICBpZiAoIXJlcXVpcmVVc2VyKHJlcSwgcmVzKSkgcmV0dXJuO1xuICAgIGlmIChpc1NlcnZpY2VQcmluY2lwYWwocmVxKSB8fCBwZXJtaXNzaW9ucy5zb21lKChwKSA9PiB1c2VySGFzUGVybWlzc2lvbihyZXEsIHApKSkgcmV0dXJuIG5leHQoKTtcbiAgICBkZW55UGVybWlzc2lvbihyZXEsIHJlcywgcGVybWlzc2lvbnMsICdvcicpO1xuICB9LCB7IGtpbmQ6ICdwZXJtaXNzaW9uJywgbW9kZTogJ2FueScsIHBlcm1pc3Npb25zLCBhbGxvd1NlcnZpY2U6IHRydWUgfSk7XG59XG5cbi8qKlxuICogR2F0ZSBhbiBlbmRwb2ludCB0byBpbnRlcm5hbCBzZXJ2aWNlLXRvLXNlcnZpY2UgY2FsbGVycyBvbmx5IChhXG4gKiBgcHJpbmNpcGFsVHlwZTogJ3NlcnZpY2UnYCBwcmluY2lwYWwgbWludGVkIHZpYSB7QGxpbmsgc2lnblNlcnZpY2VUb2tlbn0gLyBgZ2V0U2VydmljZUF1dGhIZWFkZXJgKS5cbiAqIFJlamVjdHMgYW55IHVzZXIgdG9rZW4uIEZvciBOT04tdXNlci1mYWNpbmcgZW5kcG9pbnRzIOKAlCBlbnRpdHktZXZlbnQgaW5nZXN0LFxuICogYXV0by1zdWJzY3JpYmUsIGFuZCBzaW1pbGFyIHBlZXItc2VydmljZSBob29rcyDigJQgdGhhdCBhIGJyb3dzZXIgbXVzdCBuZXZlclxuICogcmVhY2guIENvbXBvc2UgYWZ0ZXIgYHJlcXVpcmVBdXRoYCBzbyBgcmVxLnVzZXJgIGlzIHBvcHVsYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCB7XG4gIGlmICghaXNTZXJ2aWNlUHJpbmNpcGFsKHJlcSkpIHtcbiAgICAvLyA0MDMgKG5vdCA0MDApIOKAlCB0aGlzIGlzIGFuIGF1dGhvcml6YXRpb24gcmVmdXNhbDsgc3RhdHVzIG11c3QgbWF0Y2ggdGhlXG4gICAgLy8gSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TIGNvZGUgYW5kIHRoZSBzaWJsaW5nIGdhdGVzIChyZXF1aXJlUGVybWlzc2lvbiwgZXRjLikuXG4gICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuRk9SQklEREVOLCAnSW50ZXJuYWwgc2VydmljZSBjYWxscyBvbmx5JywgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyk7XG4gIH1cbiAgbmV4dCgpO1xufVxudGFnUm91dGVHYXRlKHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsLCB7IGtpbmQ6ICdzZXJ2aWNlUHJpbmNpcGFsJyB9KTtcblxuLyoqXG4gKiBUSEUgZ2F0ZSBmb3IgYW4gSU5URVJOQUwgcm91dGUg4oCUIHRoZSBvbmUgZXZlcnkgYC9pbnRlcm5hbC8qYCBwYXRoLCB0aGVcbiAqIHF1b3RhIHVzYWdlIGNvdW50ZXJzLCB0aGUgZW50aXR5LWV2ZW50IGluZ2VzdCBhbmQgdGhlIGF1ZGl0IGluZ2VzdCBnbyB0aHJvdWdoLlxuICpcbiAqIFR3byBydWxlcywgYm90aCBmYWlsLWNsb3NlZDpcbiAqXG4gKiAgMS4gKipObyB1c2VyIHRva2VuLCBldmVyLioqIE5vdCBhIG1lbWJlcidzLCBub3QgYSBzdXBlcmFkbWluJ3MsIG5vdCBhXG4gKiAgICAgc2VydmljZS1hY2NvdW50IGtleSdzLiBBbiBpbnRlcm5hbCByb3V0ZSBpcyBhIHBlZXItc2VydmljZSBBUEkgc3VyZmFjZSwgc29cbiAqICAgICBcImEgc3VmZmljaWVudGx5IHByaXZpbGVnZWQgaHVtYW5cIiBpcyBub3QgYW4gYWNjZXB0YWJsZSBjYWxsZXIg4oCUIHRoYXRcbiAqICAgICBlcXVpdmFsZW5jZSBpcyBleGFjdGx5IGhvdyBhIGJyb3dzZXItcmVhY2hhYmxlIHBhdGggYmVjb21lcyBhIHRlbmFudFxuICogICAgIGJvdW5kYXJ5IGJ1Zy4gYHJlcXVpcmVTZXJ2aWNlUHJpbmNpcGFsYCBhbHJlYWR5IHJlZnVzZWQgdXNlcnM7IHRoaXMgYWxzb1xuICogICAgIGNsb3NlcyB0aGUgYHx8IGlzU3lzdGVtQWRtaW4ocmVxKWAgZXNjYXBlIGhhdGNoZXMgdGhhdCBoYWQgZ3Jvd24gYXJvdW5kXG4gKiAgICAgdGhlIGluZGl2aWR1YWwgaW50ZXJuYWwgcm91dGVzLlxuICogIDIuICoqT25seSB0aGUgTkFNRUQgY2FsbGVycy4qKiBgY2FsbGVyc2AgbGlzdHMgdGhlIHNlcnZpY2VzIHRoYXQgbGVnaXRpbWF0ZWx5XG4gKiAgICAgY2FsbCB0aGlzIHJvdXRlLCBhbmQgdGhlIG5hbWUgaXMgY3J5cHRvZ3JhcGhpY2FsbHkgYm91bmQgdG8gdGhlIHNpZ25pbmdcbiAqICAgICBrZXkgKGBzZXJ2aWNlcy9zZXJ2aWNlLWtleXMudHNgKSwgc28gdGhpcyBpcyBhbiBpZGVudGl0eSBjaGVjayByYXRoZXIgdGhhblxuICogICAgIGEgY2xhaW0gY2hlY2suIEl0IGlzIHRoZSBzYW1lIGFsbG93LWxpc3QgdGhlIG1lc2ggcG9saWN5IG5hbWVzLCBhdCB0aGVcbiAqICAgICBsYXllciB0aGF0IGFsc28gaG9sZHMgaW4gZG9ja2VyIGNvbXBvc2UsIHdoZXJlIHRoZXJlIGlzIG5vIG1lc2ggYXQgYWxsIOKAlFxuICogICAgIHRoZSBJc3RpbyBgQXV0aG9yaXphdGlvblBvbGljeWAgaXMgZGVmZW5jZSBpbiBkZXB0aCBvbiB0b3AsIG5ldmVyIHRoZVxuICogICAgIGVuZm9yY2VtZW50LlxuICpcbiAqIENvbXBvc2UgYWZ0ZXIgYHJlcXVpcmVBdXRoYCBzbyBgcmVxLnVzZXJgIGlzIHBvcHVsYXRlZC4gUmVmdXNhbHMgYXJlIGNvdW50ZWRcbiAqIChgaW50ZXJuYWxfcm91dGVfcmVmdXNlZF90b3RhbGApIGFuZCBhdWRpdGVkIHRocm91Z2ggdGhlIHNoYXJlZCBgYXV0aHouZGVuaWVkYFxuICogc2luay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVJbnRlcm5hbFNlcnZpY2Uob3B0aW9uczogeyBjYWxsZXJzOiByZWFkb25seSBzdHJpbmdbXSB9KSB7XG4gIGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KG9wdGlvbnMuY2FsbGVycyk7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgY29uc3QgcmVmdXNlID0gKHJlYXNvbjogJ3VuYXV0aGVudGljYXRlZCcgfCAndXNlcl90b2tlbicgfCAnd3JvbmdfY2FsbGVyJyk6IHZvaWQgPT4ge1xuICAgICAgZW1pdENvdW50ZXIoJ2ludGVybmFsX3JvdXRlX3JlZnVzZWRfdG90YWwnLCB7XG4gICAgICAgIHNlcnZpY2U6IHNlcnZpY2VJZGVudGl0eSgpLFxuICAgICAgICByb3V0ZTogcmVxLnJvdXRlPy5wYXRoID8gYCR7cmVxLm1ldGhvZH0gJHtyZXEuYmFzZVVybH0ke3JlcS5yb3V0ZS5wYXRofWAgOiBgJHtyZXEubWV0aG9kfSAkeyhyZXEub3JpZ2luYWxVcmwgfHwgcmVxLnVybCkuc3BsaXQoJz8nKVswXX1gLFxuICAgICAgICByZWFzb24sXG4gICAgICAgIGNhbGxlcjogc2VydmljZU5hbWVPZihyZXEudXNlcikgPz8gJ25vbmUnLFxuICAgICAgfSk7XG4gICAgICByZWNvcmRBdXRoekRlbmlhbChyZXEsIGBpbnRlcm5hbC1zZXJ2aWNlICgke29wdGlvbnMuY2FsbGVycy5qb2luKCcsICcpfSlgKTtcbiAgICAgIGlmIChyZWFzb24gPT09ICd1bmF1dGhlbnRpY2F0ZWQnKSB7XG4gICAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gICAgICB9XG4gICAgICBsb2dnZXIud2FybignUmVmdXNlZCBhbiBpbnRlcm5hbCByb3V0ZScsIHsgcmVhc29uLCBwYXRoOiAocmVxLm9yaWdpbmFsVXJsIHx8IHJlcS51cmwpLnNwbGl0KCc/JylbMF0sIGNhbGxlcjogc2VydmljZU5hbWVPZihyZXEudXNlcikgfSk7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5GT1JCSURERU4sICdJbnRlcm5hbCBzZXJ2aWNlIGNhbGxzIG9ubHknLCBFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TKTtcbiAgICB9O1xuXG4gICAgaWYgKCFyZXEudXNlcikgcmV0dXJuIHJlZnVzZSgndW5hdXRoZW50aWNhdGVkJyk7XG4gICAgaWYgKCFpc1NlcnZpY2VQcmluY2lwYWwocmVxKSkgcmV0dXJuIHJlZnVzZSgndXNlcl90b2tlbicpO1xuICAgIGNvbnN0IGNhbGxlciA9IHNlcnZpY2VOYW1lT2YocmVxLnVzZXIpO1xuICAgIGlmICghY2FsbGVyIHx8ICFhbGxvd2VkLmhhcyhjYWxsZXIpKSByZXR1cm4gcmVmdXNlKCd3cm9uZ19jYWxsZXInKTtcbiAgICBuZXh0KCk7XG4gIH0sIHsga2luZDogJ3NlcnZpY2VQcmluY2lwYWwnIH0sIHsga2luZDogJ2ludGVybmFsU2VydmljZScsIGNhbGxlcnM6IFsuLi5vcHRpb25zLmNhbGxlcnNdIH0pO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGZyb20gYSBzeXN0ZW0gYWRtaW4uXG4gKlxuICogQXV0aG9yaXR5IGlzIGdyYW50ZWQgc29sZWx5IGJ5IHRoZSB1c2VyLWxldmVsIGBpc1N1cGVyQWRtaW5gIGZsYWcgY2FycmllZFxuICogaW4gdGhlIEpXVCDigJQgbmV2ZXIgYnkgbWVtYmVyc2hpcCBpbiB0aGUgd2VsbC1rbm93biAnc3lzdGVtJyBvcmcsIHdoaWNoIHdvdWxkXG4gKiBjb25mbGF0ZSBhIFBpcGVsaW5lIEJ1aWxkZXIgb3BlcmF0b3Igd2l0aCBhIGN1c3RvbWVyIHRlbmFudCBhbmQgbGV0IGFueVxuICogd3JpdGUgdGhhdCBjcmVhdGVkIGEgJ3N5c3RlbSctbmFtZWQgb3JnIHF1aWV0bHkgZ3JhbnQgY3Jvc3Mtb3JnIGF1dGhvcml0eS4gVGhlIGBzeXN0ZW1gIG9yZyBzdGlsbCBleGlzdHMgYXMgYSAqY29udGVudCBob2xkZXIqIGZvciBzaGFyZWRcbiAqIHNhbXBsZSBkYXRhOyBpdCBjb25mZXJzIG5vIHByaXZpbGVnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3lzdGVtQWRtaW4ocmVxOiBSZXF1ZXN0KTogYm9vbGVhbiB7XG4gIHJldHVybiByZXEudXNlcj8uaXNTdXBlckFkbWluID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIHJlcXVlc3QncyB0b2tlbiBjYXJyaWVzIGEgc3BlY2lmaWMgY2FwYWJpbGl0eSBgc2NvcGVgIChlLmcuXG4gKiBgJ3JlcG9ydGluZzppbmdlc3QnYCkuIFVzZWQgdG8gZ2F0ZSBlbmRwb2ludHMgdGhhdCBhY2NlcHQgYSBuYXJyb3cgbWFjaGluZVxuICogaWRlbnRpdHkg4oCUIGEgbm9ybWFsIGludGVyYWN0aXZlIHVzZXIgdG9rZW4gaGFzIG5vIGBzY29wZWAgYW5kIHJldHVybnMgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTY29wZShyZXE6IFJlcXVlc3QsIHNjb3BlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlcS51c2VyPy5zY29wZSA9PT0gc2NvcGU7XG59XG5cbi8qKiBSZXF1aXJlcyBhIHN5c3RlbSBhZG1pbiDigJQgZ3JhbnRlZCBzb2xlbHkgYnkgdGhlIGBpc1N1cGVyQWRtaW5gIHRva2VuIGNsYWltLlxuICogIFVzZSBhZnRlciByZXF1aXJlQXV0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlU3lzdGVtQWRtaW4oXG4gIHJlcTogUmVxdWVzdCxcbiAgcmVzOiBSZXNwb25zZSxcbiAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuKTogdm9pZCB7XG4gIGlmICghaXNTeXN0ZW1BZG1pbihyZXEpKSB7XG4gICAgcmVjb3JkQXV0aHpEZW5pYWwocmVxLCAnc3lzdGVtLWFkbWluJyk7XG4gICAgcmV0dXJuIHNlbmRFcnJvcihcbiAgICAgIHJlcywgSHR0cFN0YXR1cy5GT1JCSURERU4sXG4gICAgICAnQWNjZXNzIGRlbmllZC4gT25seSBzeXN0ZW0gYWRtaW5pc3RyYXRvcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uJyxcbiAgICAgIEVycm9yQ29kZS5JTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMsXG4gICAgKTtcbiAgfVxuICBuZXh0KCk7XG59XG50YWdSb3V0ZUdhdGUocmVxdWlyZVN5c3RlbUFkbWluLCB7IGtpbmQ6ICdzeXN0ZW1BZG1pbicgfSk7XG5cbi8qKlxuICogUmVxdWlyZSBhIHNwZWNpZmljIGZlYXR1cmUgZmxhZy4gVXNlIGFmdGVyIHJlcXVpcmVBdXRoLlxuICogQ2hlY2tzIHRoZSBgZmVhdHVyZXNgIGFycmF5IGluIHRoZSBKV1QgcGF5bG9hZCAoc2V0IGF0IHRva2VuIGlzc3VhbmNlKS5cbiAqIFN5c2FkbWlucyAoaXNTdXBlckFkbWluKSBieXBhc3Mg4oCUIHRoZXkgYWx3YXlzIGhhdmUgZXZlcnkgZmVhdHVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVGZWF0dXJlKGZlYXR1cmU6IHN0cmluZykge1xuICByZXR1cm4gdGFnUm91dGVHYXRlKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIGlmICghcmVxdWlyZVVzZXIocmVxLCByZXMpKSByZXR1cm47XG5cbiAgICAvLyBTeXNhZG1pbnMgZ2V0IGFsbCBmZWF0dXJlczsgdGhlIGBmZWF0dXJlc2AgYXJyYXkgb24gdGhlaXIgdG9rZW4gaXNcbiAgICAvLyBwb3B1bGF0ZWQgd2l0aCBldmVyeSBmbGFnIGF0IGlzc3VhbmNlIHRpbWUgYnV0IHRoZSBieXBhc3MgaGVyZSBrZWVwc1xuICAgIC8vIHRoZSBydWxlIGV4cGxpY2l0IGFuZCBzdXJ2aXZlcyBhIHRva2VuIGlzc3VlZCBiZWZvcmUgYSBuZXcgZmVhdHVyZVxuICAgIC8vIGZsYWcgd2FzIGFkZGVkLlxuICAgIGlmIChyZXEudXNlci5pc1N1cGVyQWRtaW4gPT09IHRydWUpIHJldHVybiBuZXh0KCk7XG5cbiAgICBpZiAoIXJlcS51c2VyLmZlYXR1cmVzPy5pbmNsdWRlcyhmZWF0dXJlKSkge1xuICAgICAgLy8gUm91dGUgZmVhdHVyZS1nYXRlIGRlbmlhbHMgdGhyb3VnaCB0aGUgc2FtZSBhdWRpdCBzaW5rIGFzXG4gICAgICAvLyByZXF1aXJlUGVybWlzc2lvbiAvIHJlcXVpcmVTeXN0ZW1BZG1pbiBzbyBhIHByb2JlIGZvciBhblxuICAgICAgLy8gdW5lbnRpdGxlZCBjYXBhYmlsaXR5IGxlYXZlcyBhIHRyYWlsIChzdGF0ZS1jaGFuZ2luZyBtZXRob2RzIG9ubHkpLlxuICAgICAgcmVjb3JkQXV0aHpEZW5pYWwocmVxLCBgZmVhdHVyZToke2ZlYXR1cmV9YCk7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKFxuICAgICAgICByZXMsIEh0dHBTdGF0dXMuRk9SQklEREVOLFxuICAgICAgICBgVGhpcyBmZWF0dXJlIHJlcXVpcmVzIGEgaGlnaGVyIHBsYW4gKCR7ZmVhdHVyZX0pYCxcbiAgICAgICAgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xuICB9LCB7IGtpbmQ6ICdmZWF0dXJlJywgZmVhdHVyZSB9KTtcbn1cblxuIl19
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1nYXRlcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvcGVybWlzc2lvbi1nYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBUXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0sOEJBQThCLENBQUM7QUFDbEosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQy9DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBWSxFQUFFLFVBQXNCO0lBQ3BFLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUE4QkQ7Ozs7Ozs7R0FPRztBQUNILElBQUksa0JBQWlFLENBQUM7QUFFdEU7OztHQUdHO0FBQ0gsTUFBTSxV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QUNuQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksRUFBRSxDQUFDO0FBQ1QsQ0FBQztBQUNELFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRTFEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQWU7SUFDNUMsT0FBTyxZQUFZLENBQUMsQ0FBQyxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQVEsRUFBRTtRQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFBRSxPQUFPO1FBRW5DLHFFQUFxRTtRQUNyRSx1RUFBdUU7UUFDdkUscUVBQXFFO1FBQ3JFLGtCQUFrQjtRQUNsQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUk7WUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQyw0REFBNEQ7WUFDNUQsMkRBQTJEO1lBQzNELHNFQUFzRTtZQUN0RSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sU0FBUyxDQUNkLEdBQUcsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUN6Qix3Q0FBd0MsT0FBTyxHQUFHLEVBQ2xELFNBQVMsQ0FBQyx3QkFBd0IsQ0FDbkMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQXV0aG9yaXphdGlvbiBnYXRlcyDigJQgcGVybWlzc2lvbnMsIHN5c3RlbSBhZG1pbiwgZmVhdHVyZXMg4oCUIGFuZCB0aGVcbiAqIGBhdXRoei5kZW5pZWRgIGF1ZGl0IHNpbmsgdGhleSByZXBvcnQgcmVmdXNhbHMgdG8uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyB0YWdSb3V0ZUdhdGUgfSBmcm9tICcuL3JvdXRlLXRhYmxlLmpzJztcbmltcG9ydCB7IGlzU2VydmljZVByaW5jaXBhbCwgc2VydmljZU5hbWVPZiB9IGZyb20gJy4vc2VydmljZS10b2tlbnMuanMnO1xuaW1wb3J0IHsgSHR0cFN0YXR1cyB9IGZyb20gJy4uL2NvbnN0YW50cy9odHRwLXN0YXR1cy5qcyc7XG5pbXBvcnQgeyBhdWRpdEF1dGhCbG9jaywgY3VycmVudEF1ZGl0Q29udGV4dCwgc2FuaXRpemVDb3JyZWxhdGlvbklkLCBzYW5pdGl6ZVVzZXJBZ2VudCwgdHlwZSBBdWRpdEF1dGhCbG9jayB9IGZyb20gJy4uL3NlcnZpY2VzL2F1ZGl0LWNvbnRleHQuanMnO1xuaW1wb3J0IHsgc2VydmljZUlkZW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uL3R5cGVzL2Vycm9yLWNvZGVzLmpzJztcbmltcG9ydCB7IHR5cGUgUGVybWlzc2lvbiwgaGFzUGVybWlzc2lvbiB9IGZyb20gJy4uL3R5cGVzL3Blcm1pc3Npb25zLmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IHNlbmRFcnJvciB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdhdXRoLW1pZGRsZXdhcmUnKTtcbi8qKlxuICogV2hldGhlciB0aGUgcmVxdWVzdCdzIHVzZXIgaG9sZHMgYHBlcm1pc3Npb25gLiBTdXBlcmFkbWlucyBpbXBsaWNpdGx5IGhvbGRcbiAqIGV2ZXJ5IHBlcm1pc3Npb24uIFJlYWRzIHRoZSByZXNvbHZlZCBgcGVybWlzc2lvbnNgIGNsYWltIChzZXQgYXQgdG9rZW4gaXNzdWUsXG4gKiBvciByZS1kZXJpdmVkIHBlciByZXF1ZXN0IGJ5IHRoZSBwbGF0Zm9ybSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VySGFzUGVybWlzc2lvbihyZXE6IFJlcXVlc3QsIHBlcm1pc3Npb246IFBlcm1pc3Npb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGhhc1Blcm1pc3Npb24ocmVxLnVzZXI/LnBlcm1pc3Npb25zLCBwZXJtaXNzaW9uLCByZXEudXNlcj8uaXNTdXBlckFkbWluKTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byBhIHJlZ2lzdGVyZWQgYXV0aG9yaXphdGlvbi1kZW5pYWwgYXVkaXRvciB3aGVuIGFcbiAqIHN0YXRlLWNoYW5naW5nIHJlcXVlc3QgaXMgcmVqZWN0ZWQgYnkgYHJlcXVpcmVQZXJtaXNzaW9uYCAvXG4gKiBgcmVxdWlyZVN5c3RlbUFkbWluYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoekRlbmlhbEluZm8ge1xuICAvKiogVGhlIGRlbmllZCB1c2VyJ3MgaWQgKGBzdWJgKSwgaWYgYXV0aGVudGljYXRlZC4gKi9cbiAgYWN0b3JJZD86IHN0cmluZztcbiAgYWN0b3JFbWFpbD86IHN0cmluZztcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZlIG9yZyBhdCBkZW5pYWwgdGltZS4gKi9cbiAgb3JnSWQ/OiBzdHJpbmc7XG4gIC8qKiBIVFRQIG1ldGhvZCArIHBhdGggb2YgdGhlIHJlamVjdGVkIHJlcXVlc3QuICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBXaGF0IHdhcyByZXF1aXJlZDogdGhlIG1pc3NpbmcgcGVybWlzc2lvbihzKSwgb3IgJ3N5c3RlbS1hZG1pbicuICovXG4gIHJlcXVpcmVkOiBzdHJpbmc7XG4gIC8qKiBDbGllbnQgaXAgKGByZXEuaXBgLCBwcm94eS1yZXNvbHZlZCkuICovXG4gIGlwPzogc3RyaW5nO1xuICAvKiogU2FuaXRpemVkLCBsZW5ndGgtY2FwcGVkIFVzZXItQWdlbnQuICovXG4gIHVzZXJBZ2VudD86IHN0cmluZztcbiAgLyoqIFRoZSByZXF1ZXN0J3MgY29ycmVsYXRpb24gaWQgKHRoZSBhbWJpZW50IGF1ZGl0IGNvbnRleHQncywgZWxzZSBhIHZhbGlkIGBYLVJlcXVlc3QtSWRgKS4gKi9cbiAgcmVxdWVzdElkPzogc3RyaW5nO1xuICAvKiogVGhlIHJlYWwgc3lzYWRtaW4gYmVoaW5kIGFuIGltcGVyc29uYXRpb24gdG9rZW4sIGZyb20gdGhlIHZlcmlmaWVkIHRva2VuLiAqL1xuICBpbXBlcnNvbmF0b3JJZD86IHN0cmluZztcbiAgLyoqIFRoZSBjcmVkZW50aWFsIHRoYXQgd2FzIHJlZnVzZWQgKGtleSBpZCwgc2Vzc2lvbiwgc2NvcGUsIOKApikg4oCUIHRoZSBgX2F1dGhgIGJsb2NrLiAqL1xuICBhdXRoPzogQXVkaXRBdXRoQmxvY2s7XG59XG5cbi8qKlxuICogT3B0aW9uYWwgc2luayBmb3IgZGVuaWVkLWF1dGhvcml6YXRpb24gZXZlbnRzLiBMZWZ0IHVuc2V0IGJ5IGRlZmF1bHQgc29cbiAqIGFwaS1jb3JlIHN0YXlzIGRlY291cGxlZCBmcm9tIGFueSBhdWRpdCB0cmFuc3BvcnQg4oCUIGEgc2VydmljZSByZWdpc3RlcnMgb25lXG4gKiBhdCBib290ICh0eXBpY2FsbHkgZm9yd2FyZGluZyB0byBpdHMgYFJlbW90ZUF1ZGl0Q2xpZW50YCBhcyBhblxuICogYGF1dGh6LmRlbmllZGAgZXZlbnQsIG9yLCBvbiBwbGF0Zm9ybSwgdG8gdGhlIGxvY2FsIGBhdWRpdCgpYCBoZWxwZXIpLlxuICogTVVTVCBiZSBiZXN0LWVmZm9ydDogaXQgaXMgaW52b2tlZCBpbnNpZGUgdGhlIHJlcXVlc3QgcGF0aCwgc28gaXQgbXVzdCBuZXZlclxuICogdGhyb3cgb3IgYmxvY2sgKHRoZSBnYXRlIHdyYXBzIHRoZSBjYWxsIGluIHRyeS9jYXRjaCByZWdhcmRsZXNzKS5cbiAqL1xubGV0IGF1dGh6RGVuaWFsQXVkaXRvcjogKChpbmZvOiBBdXRoekRlbmlhbEluZm8pID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJlZ2lzdGVyIChvciBjbGVhciwgd2l0aCBgdW5kZWZpbmVkYCkgdGhlIHByb2Nlc3Mtd2lkZSBhdXRob3JpemF0aW9uLWRlbmlhbFxuICogYXVkaXRvci4gSWRlbXBvdGVudDsgdGhlIGxhc3QgcmVnaXN0cmF0aW9uIHdpbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBdXRoekRlbmlhbEF1ZGl0b3IoZm46ICgoaW5mbzogQXV0aHpEZW5pYWxJbmZvKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBhdXRoekRlbmlhbEF1ZGl0b3IgPSBmbjtcbn1cblxuLyoqXG4gKiBFbWl0IGEgZGVuaWFsIGV2ZW50LCBiZXN0LWVmZm9ydC4gT25seSBmaXJlcyBmb3Igc3RhdGUtY2hhbmdpbmcgKG5vbi1HRVQsXG4gKiBub24tSEVBRC9PUFRJT05TKSByZXF1ZXN0cyDigJQgYSByZWplY3RlZCBHRVQgaXMgbG93LXNpZ25hbCBwcm9iaW5nIG5vaXNlIGFuZFxuICogd291bGQgYW1wbGlmeSBhdWRpdCB2b2x1bWUgdW5kZXIgYSBzY2FuLiBOZXZlciB0aHJvd3MuXG4gKlxuICogVGhlIHBlcm1pc3Npb24gZ2F0ZXMgaGVyZSBjYWxsIGl0IHRoZW1zZWx2ZXMuIEV4cG9ydCBpdCBmb3IgZGF0YS1kcml2ZW4gY2hlY2tzXG4gKiBhIHJvdXRlIG1ha2VzIGlubGluZSAoY3Jvc3Mtb3JnIGFjY2Vzcywgc2VydmljZS1vbmx5IGVuZHBvaW50cyksIHNvIHRob3NlIDQwM3NcbiAqIHJlYWNoIHRoZSBzYW1lIGBhdXRoei5kZW5pZWRgIHRyYWlsLiBgcmVxdWlyZWRgIG5hbWVzIHdoYXQgd2FzIG1pc3NpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRBdXRoekRlbmlhbChyZXE6IFJlcXVlc3QsIHJlcXVpcmVkOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgYXVkaXRvciA9IGF1dGh6RGVuaWFsQXVkaXRvcjtcbiAgaWYgKCFhdWRpdG9yKSByZXR1cm47XG4gIGNvbnN0IG1ldGhvZCA9IHJlcS5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcgfHwgbWV0aG9kID09PSAnSEVBRCcgfHwgbWV0aG9kID09PSAnT1BUSU9OUycpIHJldHVybjtcbiAgdHJ5IHtcbiAgICBhdWRpdG9yKHtcbiAgICAgIGFjdG9ySWQ6IHJlcS51c2VyPy5zdWIsXG4gICAgICBhY3RvckVtYWlsOiByZXEudXNlcj8uZW1haWwsXG4gICAgICBvcmdJZDogcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkLFxuICAgICAgbWV0aG9kLFxuICAgICAgLy8gU3RyaXAgdGhlIHF1ZXJ5IHN0cmluZyDigJQgYSBkZW5pZWQgcmVxdWVzdCBtYXkgY2FycnkgYSB0b2tlbi9zZWNyZXQgYXMgYVxuICAgICAgLy8gcXVlcnkgcGFyYW0sIGFuZCB0aGlzIHBhdGggaXMgcGVyc2lzdGVkIHZlcmJhdGltIGludG8gdGhlIGF1ZGl0IGxvZy5cbiAgICAgIHBhdGg6IChyZXEub3JpZ2luYWxVcmwgfHwgcmVxLnVybCkuc3BsaXQoJz8nKVswXSxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgaXA6IHJlcS5pcCxcbiAgICAgIHVzZXJBZ2VudDogc2FuaXRpemVVc2VyQWdlbnQocmVxLmhlYWRlcnM/LlsndXNlci1hZ2VudCddKSxcbiAgICAgIHJlcXVlc3RJZDogY3VycmVudEF1ZGl0Q29udGV4dCgpPy5yZXF1ZXN0SWQgPz8gc2FuaXRpemVDb3JyZWxhdGlvbklkKHJlcS5oZWFkZXJzPy5bJ3gtcmVxdWVzdC1pZCddKSxcbiAgICAgIGltcGVyc29uYXRvcklkOiByZXEudXNlcj8uaW1wZXJzb25hdG9ySWQsXG4gICAgICBhdXRoOiBhdWRpdEF1dGhCbG9jayhyZXEudXNlciksXG4gICAgfSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEJlc3QtZWZmb3J0IOKAlCBhIGJyb2tlbiBhdWRpdG9yIG11c3QgbmV2ZXIgYnJlYWsgdGhlIGF1dGggZ2F0ZS5cbiAgfVxufVxuXG4vKiogVGhlIHNoYXJlZCBnYXRlIHByZWFtYmxlOiBhbnN3ZXIgNDAxIGFuZCByZXR1cm4gZmFsc2Ugd2hlbiB1bmF1dGhlbnRpY2F0ZWQuICovXG5mdW5jdGlvbiByZXF1aXJlVXNlcihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiByZXEgaXMgUmVxdWVzdCAmIHsgdXNlcjogTm9uTnVsbGFibGU8UmVxdWVzdFsndXNlciddPiB9IHtcbiAgaWYgKHJlcS51c2VyKSByZXR1cm4gdHJ1ZTtcbiAgc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdBdXRoZW50aWNhdGlvbiByZXF1aXJlZCcsIEVycm9yQ29kZS5VTkFVVEhPUklaRUQpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBBdWRpdCArIGFuc3dlciBhIHBlcm1pc3Npb24gcmVmdXNhbCAoYG1pc3NpbmdgIGRlZmF1bHRzIHRvIGV2ZXJ5IHJlcXVpcmVkIHBlcm1pc3Npb24pLiAqL1xuZnVuY3Rpb24gZGVueVBlcm1pc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBwZXJtaXNzaW9uczogUGVybWlzc2lvbltdLCBtb2RlOiAnb3InIHwgJ2FuZCcsIG1pc3Npbmc6IFBlcm1pc3Npb25bXSA9IHBlcm1pc3Npb25zKTogdm9pZCB7XG4gIHJlY29yZEF1dGh6RGVuaWFsKHJlcSwgcGVybWlzc2lvbnMuam9pbihgICR7bW9kZX0gYCkpO1xuICBzZW5kRXJyb3IoXG4gICAgcmVzLCBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICBgTWlzc2luZyByZXF1aXJlZCBwZXJtaXNzaW9uOiAke21pc3Npbmcuam9pbihgICR7bW9kZX0gYCl9YCxcbiAgICBFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TLFxuICApO1xufVxuXG4vKipcbiAqIFJlcXVpcmVzIHRoYXQgdGhlIHVzZXIgaG9sZCBBVCBMRUFTVCBPTkUgb2YgdGhlIGdpdmVuIHBlcm1pc3Npb25zIChvciBiZSBhXG4gKiBzdXBlcmFkbWluKS4gVXNlIGFmdGVyIHJlcXVpcmVBdXRoLiBNaXJyb3JzIGByZXF1aXJlUm9sZWAncyBhbnktb2Ygc2VtYW50aWNzO1xuICogcGFzcyBhIHNpbmdsZSBwZXJtaXNzaW9uIGZvciBhIHNwZWNpZmljIGFjdGlvbiwgb3Igc2V2ZXJhbCB3aGVuIGFueSBvbmUgb2ZcbiAqIHRoZW0gc2hvdWxkIGdyYW50IGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVQZXJtaXNzaW9uKC4uLnBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW10pIHtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICBpZiAoIXJlcXVpcmVVc2VyKHJlcSwgcmVzKSkgcmV0dXJuO1xuICAgIC8vIHVzZXJIYXNQZXJtaXNzaW9uIOKGkiBoYXNQZXJtaXNzaW9uIGFscmVhZHkgZ3JhbnRzIHN1cGVyYWRtaW5zIGV2ZXJ5XG4gICAgLy8gcGVybWlzc2lvbiwgc28gdGhpcyBzaW5nbGUgY2hlY2sgY292ZXJzIGJvdGggdGhlIHN1cGVyYWRtaW4gYnlwYXNzIGFuZFxuICAgIC8vIHRoZSBhbnktb2YgbWVtYmVyc2hpcCB0ZXN0IHdpdGhvdXQgcmUtaW5saW5pbmcgZWl0aGVyLlxuICAgIGlmIChwZXJtaXNzaW9ucy5zb21lKChwKSA9PiB1c2VySGFzUGVybWlzc2lvbihyZXEsIHApKSkgcmV0dXJuIG5leHQoKTtcbiAgICBkZW55UGVybWlzc2lvbihyZXEsIHJlcywgcGVybWlzc2lvbnMsICdvcicpO1xuICB9LCB7IGtpbmQ6ICdwZXJtaXNzaW9uJywgbW9kZTogJ2FueScsIHBlcm1pc3Npb25zIH0pO1xufVxuXG4vKipcbiAqIFJlcXVpcmVzIHRoYXQgdGhlIHVzZXIgaG9sZCBFVkVSWSBvbmUgb2YgdGhlIGdpdmVuIHBlcm1pc3Npb25zIChvciBiZSBhXG4gKiBzdXBlcmFkbWluKSDigJQgdGhlIEFORCBjb3VudGVycGFydCB0byBgcmVxdWlyZVBlcm1pc3Npb25gJ3MgYW55LW9mLiBVc2UgZm9yIGFcbiAqIHNlbnNpdGl2ZSBhY3Rpb24gdGhhdCBsZWdpdGltYXRlbHkgZGVtYW5kcyB0d28gZGlzdGluY3QgY2FwYWJpbGl0aWVzIGF0IG9uY2VcbiAqIChlLmcuIGEgY3Jvc3Mtc3VyZmFjZSBvcGVyYXRpb24pLCBzbyB0aGUgZ3VhcmFudGVlIGlzIGV4cGxpY2l0IHJhdGhlciB0aGFuXG4gKiBhcHByb3hpbWF0ZWQgYnkgY2hhaW5pbmcgdHdvIGByZXF1aXJlUGVybWlzc2lvbmAgZ2F0ZXMuIFN1cGVyYWRtaW5zIGJ5cGFzc1xuICogKHRoZXkgaW1wbGljaXRseSBob2xkIGV2ZXJ5IHBlcm1pc3Npb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZUFsbFBlcm1pc3Npb25zKC4uLnBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW10pIHtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICBpZiAoIXJlcXVpcmVVc2VyKHJlcSwgcmVzKSkgcmV0dXJuO1xuICAgIGNvbnN0IG1pc3NpbmcgPSBwZXJtaXNzaW9ucy5maWx0ZXIoKHApID0+ICF1c2VySGFzUGVybWlzc2lvbihyZXEsIHApKTtcbiAgICBpZiAobWlzc2luZy5sZW5ndGggPT09IDApIHJldHVybiBuZXh0KCk7XG4gICAgZGVueVBlcm1pc3Npb24ocmVxLCByZXMsIHBlcm1pc3Npb25zLCAnYW5kJywgbWlzc2luZyk7XG4gIH0sIHsga2luZDogJ3Blcm1pc3Npb24nLCBtb2RlOiAnYWxsJywgcGVybWlzc2lvbnMgfSk7XG59XG5cbi8qKlxuICogTGlrZSB7QGxpbmsgcmVxdWlyZVBlcm1pc3Npb259IChhbnktb2YpIGJ1dCBBTFNPIGFkbWl0cyBhbiBpbnRlcm5hbCBzZXJ2aWNlXG4gKiBwcmluY2lwYWwgKGBwcmluY2lwYWxUeXBlOiAnc2VydmljZSdgKS4gRm9yIFJFQUQgZW5kcG9pbnRzIHRoYXQgQk9USFxuICogaW50ZXJhY3RpdmUgdXNlcnMg4oCUIHdobyBtdXN0IGhvbGQgb25lIG9mIHRoZSBgOnJlYWRgIGNhcGFiaWxpdGllcyDigJQgQU5EXG4gKiBzZXJ2aWNlLXRvLXNlcnZpY2UgY2FsbGVycyBsZWdpdGltYXRlbHkgaGl0OyBzZXJ2aWNlIHRva2VucyBjYXJyeSBub1xuICogcGVybWlzc2lvbiBjbGFpbXMgKHRoZXkncmUgbGVhc3QtcHJpdmlsZWdlIGByb2xlOm1lbWJlcmApLCBzbyBhIHBsYWluXG4gKiBgcmVxdWlyZVBlcm1pc3Npb25gIHdvdWxkIHdyb25nbHkgNDAzIHRoZW0uIFN1cGVyYWRtaW5zIHBhc3MgdmlhXG4gKiBgdXNlckhhc1Blcm1pc3Npb25gJ3MgaW1wbGljaXQtYWxsLiBVc2Ugb25seSB3aGVyZSBhIHNlcnZpY2UgY2FsbGVyIGlzIGEga25vd24sXG4gKiBpbnRlbmRlZCBjb25zdW1lciBvZiB0aGUgcm91dGUgKHZlcmlmeSB0aGUgY2FsbGVycyk7IHByZWZlciBwbGFpblxuICogYHJlcXVpcmVQZXJtaXNzaW9uYCBmb3IgcHVyZWx5IHVzZXItZmFjaW5nIHJlYWRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVBlcm1pc3Npb25PclNlcnZpY2UoLi4ucGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSkge1xuICByZXR1cm4gdGFnUm91dGVHYXRlKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIGlmICghcmVxdWlyZVVzZXIocmVxLCByZXMpKSByZXR1cm47XG4gICAgaWYgKGlzU2VydmljZVByaW5jaXBhbChyZXEpIHx8IHBlcm1pc3Npb25zLnNvbWUoKHApID0+IHVzZXJIYXNQZXJtaXNzaW9uKHJlcSwgcCkpKSByZXR1cm4gbmV4dCgpO1xuICAgIGRlbnlQZXJtaXNzaW9uKHJlcSwgcmVzLCBwZXJtaXNzaW9ucywgJ29yJyk7XG4gIH0sIHsga2luZDogJ3Blcm1pc3Npb24nLCBtb2RlOiAnYW55JywgcGVybWlzc2lvbnMsIGFsbG93U2VydmljZTogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBHYXRlIGFuIGVuZHBvaW50IHRvIGludGVybmFsIHNlcnZpY2UtdG8tc2VydmljZSBjYWxsZXJzIG9ubHkgKGFcbiAqIGBwcmluY2lwYWxUeXBlOiAnc2VydmljZSdgIHByaW5jaXBhbCBtaW50ZWQgdmlhIHtAbGluayBzaWduU2VydmljZVRva2VufSAvIGBnZXRTZXJ2aWNlQXV0aEhlYWRlcmApLlxuICogUmVqZWN0cyBhbnkgdXNlciB0b2tlbi4gRm9yIE5PTi11c2VyLWZhY2luZyBlbmRwb2ludHMg4oCUIGVudGl0eS1ldmVudCBpbmdlc3QsXG4gKiBhdXRvLXN1YnNjcmliZSwgYW5kIHNpbWlsYXIgcGVlci1zZXJ2aWNlIGhvb2tzIOKAlCB0aGF0IGEgYnJvd3NlciBtdXN0IG5ldmVyXG4gKiByZWFjaC4gQ29tcG9zZSBhZnRlciBgcmVxdWlyZUF1dGhgIHNvIGByZXEudXNlcmAgaXMgcG9wdWxhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVNlcnZpY2VQcmluY2lwYWwocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkIHtcbiAgaWYgKCFpc1NlcnZpY2VQcmluY2lwYWwocmVxKSkge1xuICAgIC8vIDQwMyAobm90IDQwMCkg4oCUIHRoaXMgaXMgYW4gYXV0aG9yaXphdGlvbiByZWZ1c2FsOyBzdGF0dXMgbXVzdCBtYXRjaCB0aGVcbiAgICAvLyBJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMgY29kZSBhbmQgdGhlIHNpYmxpbmcgZ2F0ZXMgKHJlcXVpcmVQZXJtaXNzaW9uLCBldGMuKS5cbiAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5GT1JCSURERU4sICdJbnRlcm5hbCBzZXJ2aWNlIGNhbGxzIG9ubHknLCBFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TKTtcbiAgfVxuICBuZXh0KCk7XG59XG50YWdSb3V0ZUdhdGUocmVxdWlyZVNlcnZpY2VQcmluY2lwYWwsIHsga2luZDogJ3NlcnZpY2VQcmluY2lwYWwnIH0pO1xuXG4vKipcbiAqIFRIRSBnYXRlIGZvciBhbiBJTlRFUk5BTCByb3V0ZSDigJQgdGhlIG9uZSBldmVyeSBgL2ludGVybmFsLypgIHBhdGgsIHRoZVxuICogcXVvdGEgdXNhZ2UgY291bnRlcnMsIHRoZSBlbnRpdHktZXZlbnQgaW5nZXN0IGFuZCB0aGUgYXVkaXQgaW5nZXN0IGdvIHRocm91Z2guXG4gKlxuICogVHdvIHJ1bGVzLCBib3RoIGZhaWwtY2xvc2VkOlxuICpcbiAqICAxLiAqKk5vIHVzZXIgdG9rZW4sIGV2ZXIuKiogTm90IGEgbWVtYmVyJ3MsIG5vdCBhIHN1cGVyYWRtaW4ncywgbm90IGFcbiAqICAgICBzZXJ2aWNlLWFjY291bnQga2V5J3MuIEFuIGludGVybmFsIHJvdXRlIGlzIGEgcGVlci1zZXJ2aWNlIEFQSSBzdXJmYWNlLCBzb1xuICogICAgIFwiYSBzdWZmaWNpZW50bHkgcHJpdmlsZWdlZCBodW1hblwiIGlzIG5vdCBhbiBhY2NlcHRhYmxlIGNhbGxlciDigJQgdGhhdFxuICogICAgIGVxdWl2YWxlbmNlIGlzIGV4YWN0bHkgaG93IGEgYnJvd3Nlci1yZWFjaGFibGUgcGF0aCBiZWNvbWVzIGEgdGVuYW50XG4gKiAgICAgYm91bmRhcnkgYnVnLiBgcmVxdWlyZVNlcnZpY2VQcmluY2lwYWxgIGFscmVhZHkgcmVmdXNlZCB1c2VyczsgdGhpcyBhbHNvXG4gKiAgICAgY2xvc2VzIHRoZSBgfHwgaXNTeXN0ZW1BZG1pbihyZXEpYCBlc2NhcGUgaGF0Y2hlcyB0aGF0IGhhZCBncm93biBhcm91bmRcbiAqICAgICB0aGUgaW5kaXZpZHVhbCBpbnRlcm5hbCByb3V0ZXMuXG4gKiAgMi4gKipPbmx5IHRoZSBOQU1FRCBjYWxsZXJzLioqIGBjYWxsZXJzYCBsaXN0cyB0aGUgc2VydmljZXMgdGhhdCBsZWdpdGltYXRlbHlcbiAqICAgICBjYWxsIHRoaXMgcm91dGUsIGFuZCB0aGUgbmFtZSBpcyBjcnlwdG9ncmFwaGljYWxseSBib3VuZCB0byB0aGUgc2lnbmluZ1xuICogICAgIGtleSAoYHNlcnZpY2VzL3NlcnZpY2Uta2V5cy50c2ApLCBzbyB0aGlzIGlzIGFuIGlkZW50aXR5IGNoZWNrIHJhdGhlciB0aGFuXG4gKiAgICAgYSBjbGFpbSBjaGVjay4gSXQgaXMgdGhlIHNhbWUgYWxsb3ctbGlzdCB0aGUgbWVzaCBwb2xpY3kgbmFtZXMsIGF0IHRoZVxuICogICAgIGxheWVyIHRoYXQgYWxzbyBob2xkcyBpbiBkb2NrZXIgY29tcG9zZSwgd2hlcmUgdGhlcmUgaXMgbm8gbWVzaCBhdCBhbGwg4oCUXG4gKiAgICAgdGhlIElzdGlvIGBBdXRob3JpemF0aW9uUG9saWN5YCBpcyBkZWZlbmNlIGluIGRlcHRoIG9uIHRvcCwgbmV2ZXIgdGhlXG4gKiAgICAgZW5mb3JjZW1lbnQuXG4gKlxuICogQ29tcG9zZSBhZnRlciBgcmVxdWlyZUF1dGhgIHNvIGByZXEudXNlcmAgaXMgcG9wdWxhdGVkLiBSZWZ1c2FscyBhcmUgY291bnRlZFxuICogKGBpbnRlcm5hbF9yb3V0ZV9yZWZ1c2VkX3RvdGFsYCkgYW5kIGF1ZGl0ZWQgdGhyb3VnaCB0aGUgc2hhcmVkIGBhdXRoei5kZW5pZWRgXG4gKiBzaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZUludGVybmFsU2VydmljZShvcHRpb25zOiB7IGNhbGxlcnM6IHJlYWRvbmx5IHN0cmluZ1tdIH0pIHtcbiAgY29uc3QgYWxsb3dlZCA9IG5ldyBTZXQob3B0aW9ucy5jYWxsZXJzKTtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICBjb25zdCByZWZ1c2UgPSAocmVhc29uOiAndW5hdXRoZW50aWNhdGVkJyB8ICd1c2VyX3Rva2VuJyB8ICd3cm9uZ19jYWxsZXInKTogdm9pZCA9PiB7XG4gICAgICBlbWl0Q291bnRlcignaW50ZXJuYWxfcm91dGVfcmVmdXNlZF90b3RhbCcsIHtcbiAgICAgICAgc2VydmljZTogc2VydmljZUlkZW50aXR5KCksXG4gICAgICAgIHJvdXRlOiByZXEucm91dGU/LnBhdGggPyBgJHtyZXEubWV0aG9kfSAke3JlcS5iYXNlVXJsfSR7cmVxLnJvdXRlLnBhdGh9YCA6IGAke3JlcS5tZXRob2R9ICR7KHJlcS5vcmlnaW5hbFVybCB8fCByZXEudXJsKS5zcGxpdCgnPycpWzBdfWAsXG4gICAgICAgIHJlYXNvbixcbiAgICAgICAgY2FsbGVyOiBzZXJ2aWNlTmFtZU9mKHJlcS51c2VyKSA/PyAnbm9uZScsXG4gICAgICB9KTtcbiAgICAgIHJlY29yZEF1dGh6RGVuaWFsKHJlcSwgYGludGVybmFsLXNlcnZpY2UgKCR7b3B0aW9ucy5jYWxsZXJzLmpvaW4oJywgJyl9KWApO1xuICAgICAgaWYgKHJlYXNvbiA9PT0gJ3VuYXV0aGVudGljYXRlZCcpIHtcbiAgICAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnQXV0aGVudGljYXRpb24gcmVxdWlyZWQnLCBFcnJvckNvZGUuVU5BVVRIT1JJWkVEKTtcbiAgICAgIH1cbiAgICAgIGxvZ2dlci53YXJuKCdSZWZ1c2VkIGFuIGludGVybmFsIHJvdXRlJywgeyByZWFzb24sIHBhdGg6IChyZXEub3JpZ2luYWxVcmwgfHwgcmVxLnVybCkuc3BsaXQoJz8nKVswXSwgY2FsbGVyOiBzZXJ2aWNlTmFtZU9mKHJlcS51c2VyKSB9KTtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLkZPUkJJRERFTiwgJ0ludGVybmFsIHNlcnZpY2UgY2FsbHMgb25seScsIEVycm9yQ29kZS5JTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMpO1xuICAgIH07XG5cbiAgICBpZiAoIXJlcS51c2VyKSByZXR1cm4gcmVmdXNlKCd1bmF1dGhlbnRpY2F0ZWQnKTtcbiAgICBpZiAoIWlzU2VydmljZVByaW5jaXBhbChyZXEpKSByZXR1cm4gcmVmdXNlKCd1c2VyX3Rva2VuJyk7XG4gICAgY29uc3QgY2FsbGVyID0gc2VydmljZU5hbWVPZihyZXEudXNlcik7XG4gICAgaWYgKCFjYWxsZXIgfHwgIWFsbG93ZWQuaGFzKGNhbGxlcikpIHJldHVybiByZWZ1c2UoJ3dyb25nX2NhbGxlcicpO1xuICAgIG5leHQoKTtcbiAgfSwgeyBraW5kOiAnc2VydmljZVByaW5jaXBhbCcgfSwgeyBraW5kOiAnaW50ZXJuYWxTZXJ2aWNlJywgY2FsbGVyczogWy4uLm9wdGlvbnMuY2FsbGVyc10gfSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgZnJvbSBhIHN5c3RlbSBhZG1pbi5cbiAqXG4gKiBBdXRob3JpdHkgaXMgZ3JhbnRlZCBzb2xlbHkgYnkgdGhlIHVzZXItbGV2ZWwgYGlzU3VwZXJBZG1pbmAgZmxhZyBjYXJyaWVkXG4gKiBpbiB0aGUgSldUIOKAlCBuZXZlciBieSBtZW1iZXJzaGlwIGluIHRoZSB3ZWxsLWtub3duICdzeXN0ZW0nIG9yZywgd2hpY2ggd291bGRcbiAqIGNvbmZsYXRlIGEgUGlwZWxpbmUgQnVpbGRlciBvcGVyYXRvciB3aXRoIGEgY3VzdG9tZXIgdGVuYW50IGFuZCBsZXQgYW55XG4gKiB3cml0ZSB0aGF0IGNyZWF0ZWQgYSAnc3lzdGVtJy1uYW1lZCBvcmcgcXVpZXRseSBncmFudCBjcm9zcy1vcmcgYXV0aG9yaXR5LiBUaGUgYHN5c3RlbWAgb3JnIHN0aWxsIGV4aXN0cyBhcyBhICpjb250ZW50IGhvbGRlciogZm9yIHNoYXJlZFxuICogc2FtcGxlIGRhdGE7IGl0IGNvbmZlcnMgbm8gcHJpdmlsZWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTeXN0ZW1BZG1pbihyZXE6IFJlcXVlc3QpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlcS51c2VyPy5pc1N1cGVyQWRtaW4gPT09IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgcmVxdWVzdCdzIHRva2VuIGNhcnJpZXMgYSBzcGVjaWZpYyBjYXBhYmlsaXR5IGBzY29wZWAgKGUuZy5cbiAqIGAncmVwb3J0aW5nOmluZ2VzdCdgKS4gVXNlZCB0byBnYXRlIGVuZHBvaW50cyB0aGF0IGFjY2VwdCBhIG5hcnJvdyBtYWNoaW5lXG4gKiBpZGVudGl0eSDigJQgYSBub3JtYWwgaW50ZXJhY3RpdmUgdXNlciB0b2tlbiBoYXMgbm8gYHNjb3BlYCBhbmQgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1Njb3BlKHJlcTogUmVxdWVzdCwgc2NvcGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVxLnVzZXI/LnNjb3BlID09PSBzY29wZTtcbn1cblxuLyoqIFJlcXVpcmVzIGEgc3lzdGVtIGFkbWluIOKAlCBncmFudGVkIHNvbGVseSBieSB0aGUgYGlzU3VwZXJBZG1pbmAgdG9rZW4gY2xhaW0uXG4gKiAgVXNlIGFmdGVyIHJlcXVpcmVBdXRoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVTeXN0ZW1BZG1pbihcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICBuZXh0OiBOZXh0RnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgaWYgKCFpc1N5c3RlbUFkbWluKHJlcSkpIHtcbiAgICByZWNvcmRBdXRoekRlbmlhbChyZXEsICdzeXN0ZW0tYWRtaW4nKTtcbiAgICByZXR1cm4gc2VuZEVycm9yKFxuICAgICAgcmVzLCBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICAgICdBY2Nlc3MgZGVuaWVkLiBPbmx5IHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi4nLFxuICAgICAgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyxcbiAgICApO1xuICB9XG4gIG5leHQoKTtcbn1cbnRhZ1JvdXRlR2F0ZShyZXF1aXJlU3lzdGVtQWRtaW4sIHsga2luZDogJ3N5c3RlbUFkbWluJyB9KTtcblxuLyoqXG4gKiBSZXF1aXJlIGEgc3BlY2lmaWMgZmVhdHVyZSBmbGFnLiBVc2UgYWZ0ZXIgcmVxdWlyZUF1dGguXG4gKiBDaGVja3MgdGhlIGBmZWF0dXJlc2AgYXJyYXkgaW4gdGhlIEpXVCBwYXlsb2FkIChzZXQgYXQgdG9rZW4gaXNzdWFuY2UpLlxuICogU3lzYWRtaW5zIChpc1N1cGVyQWRtaW4pIGJ5cGFzcyDigJQgdGhleSBhbHdheXMgaGF2ZSBldmVyeSBmZWF0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZUZlYXR1cmUoZmVhdHVyZTogc3RyaW5nKSB7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgaWYgKCFyZXF1aXJlVXNlcihyZXEsIHJlcykpIHJldHVybjtcblxuICAgIC8vIFN5c2FkbWlucyBnZXQgYWxsIGZlYXR1cmVzOyB0aGUgYGZlYXR1cmVzYCBhcnJheSBvbiB0aGVpciB0b2tlbiBpc1xuICAgIC8vIHBvcHVsYXRlZCB3aXRoIGV2ZXJ5IGZsYWcgYXQgaXNzdWFuY2UgdGltZSBidXQgdGhlIGJ5cGFzcyBoZXJlIGtlZXBzXG4gICAgLy8gdGhlIHJ1bGUgZXhwbGljaXQgYW5kIHN1cnZpdmVzIGEgdG9rZW4gaXNzdWVkIGJlZm9yZSBhIG5ldyBmZWF0dXJlXG4gICAgLy8gZmxhZyB3YXMgYWRkZWQuXG4gICAgaWYgKHJlcS51c2VyLmlzU3VwZXJBZG1pbiA9PT0gdHJ1ZSkgcmV0dXJuIG5leHQoKTtcblxuICAgIGlmICghcmVxLnVzZXIuZmVhdHVyZXM/LmluY2x1ZGVzKGZlYXR1cmUpKSB7XG4gICAgICAvLyBSb3V0ZSBmZWF0dXJlLWdhdGUgZGVuaWFscyB0aHJvdWdoIHRoZSBzYW1lIGF1ZGl0IHNpbmsgYXNcbiAgICAgIC8vIHJlcXVpcmVQZXJtaXNzaW9uIC8gcmVxdWlyZVN5c3RlbUFkbWluIHNvIGEgcHJvYmUgZm9yIGFuXG4gICAgICAvLyB1bmVudGl0bGVkIGNhcGFiaWxpdHkgbGVhdmVzIGEgdHJhaWwgKHN0YXRlLWNoYW5naW5nIG1ldGhvZHMgb25seSkuXG4gICAgICByZWNvcmRBdXRoekRlbmlhbChyZXEsIGBmZWF0dXJlOiR7ZmVhdHVyZX1gKTtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IoXG4gICAgICAgIHJlcywgSHR0cFN0YXR1cy5GT1JCSURERU4sXG4gICAgICAgIGBUaGlzIGZlYXR1cmUgcmVxdWlyZXMgYSBoaWdoZXIgcGxhbiAoJHtmZWF0dXJlfSlgLFxuICAgICAgICBFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBuZXh0KCk7XG4gIH0sIHsga2luZDogJ2ZlYXR1cmUnLCBmZWF0dXJlIH0pO1xufVxuXG4iXX0=
@@ -44,4 +44,4 @@ export function isQuotaExemptRoute(method, path) {
44
44
  const m = upper === 'HEAD' ? 'GET' : upper;
45
45
  return QUOTA_EXEMPT_ROUTES.some((r) => r.method === m && r.path.test(path));
46
46
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtZXhlbXB0LXJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL3F1b3RhLWV4ZW1wdC1yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQW9DdEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdDO0lBQzlEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLE1BQU0sRUFBRSxnRkFBZ0Y7S0FDekY7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixNQUFNLEVBQUUsNENBQTRDO0tBQ3JEO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSwrQ0FBK0M7UUFDckQsTUFBTSxFQUFFLDhFQUE4RTtLQUN2RjtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLE1BQU0sRUFBRSwrR0FBK0c7S0FDeEg7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDZCQUE2QjtRQUNuQyxNQUFNLEVBQUUsK0VBQStFO0tBQ3hGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxxQ0FBcUM7UUFDM0MsTUFBTSxFQUFFLGtGQUFrRjtLQUMzRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsd0NBQXdDO1FBQzlDLE1BQU0sRUFBRSxzRkFBc0Y7S0FDL0Y7Q0FDRixDQUFDO0FBRUYsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUEwQixFQUFFLElBQVk7SUFDekUsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxHQUFHLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzNDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcm91dGVzIHRoYXQgbmV2ZXIgc3BlbmQgYGFwaUNhbGxzYCAob3IgYGF1dG9tYXRpb25DYWxsc2ApLCBmbGVldC13aWRlLlxuICpcbiAqIEV2ZXJ5IHNlcnZpY2UgbWV0ZXJzIGFuZCBnYXRlcyBpdHMgYXV0aGVudGljYXRlZCB1c2VyIHN1cmZhY2Ugb24gYGFwaUNhbGxzYFxuICogKGBtZXRlclF1b3RhT25TdWNjZXNzYCArIGBjaGVja1F1b3RhYCwgbW91bnRlZCBhdCB0aGUgYXBwLXJvdXRlcyBsZXZlbCkuIEEgZmV3XG4gKiByZWFkcyBhcmUgbWFkZSBCWSBUSEUgQ09OU09MRSBJVFNFTEYsIG9uIGV2ZXJ5IHBhZ2UgbG9hZCBvciBvbiBhIHRpbWVyLCBub3QgYnlcbiAqIGEgcGVyc29uIGRvaW5nIHNvbWV0aGluZyDigJQgbWV0ZXJpbmcgdGhlbSB3b3VsZCBidXJuIGFuIGlkbGUgdGFiJ3Mgb3JnIGJ1ZGdldFxuICogYWxsIGRheSwgYW5kIGdhdGluZyB0aGVtIHdvdWxkIG1ha2UgYSBxdW90YS1leGhhdXN0ZWQgb3JnJ3MgY29uc29sZSB1bmFibGUgdG9cbiAqIHJlbmRlciB0aGUgdmVyeSBiYW5uZXIgdGhhdCBzYXlzIHNvLiBUaGlzIGxpc3QgaXMgdGhhdCBjYXJ2ZS1vdXQsIGFuZCBpdCBpc1xuICogZGVsaWJlcmF0ZWx5IHNob3J0OiBlYWNoIGVudHJ5IG5hbWVzIGl0cyBjYWxsZXIgYW5kIHdoeSBpdCBpcyBmcmVlLlxuICpcbiAqIE9ORSBsaXN0LCByZWFkIGluIHRocmVlIHBsYWNlcywgc28gdGhleSBjYW5ub3QgZHJpZnQ6XG4gKiAgIC0gYG1ldGVyUXVvdGFPblN1Y2Nlc3NgIHNraXBzIGEgbWF0Y2hpbmcgcmVxdWVzdCAobm8gaW5jcmVtZW50KTtcbiAqICAgLSBgY2hlY2tRdW90YWAgc2tpcHMgYSBtYXRjaGluZyByZXF1ZXN0IChuZXZlciA0MjlzKTtcbiAqICAgLSBgYnVpbGRSb3V0ZVRhYmxlYCBtYXJrcyB0aGUgcm91dGUgYHF1b3RhLmV4ZW1wdGAsIGFuZCB0aGUgcXVvdGEgY292ZXJhZ2VcbiAqICAgICBjaGVjayAoYXBpLWNvcmUgdGVzdGluZykgdHJlYXRzIGl0IGFzIGNvdmVyZWQuXG4gKlxuICogRWFjaCBgcGF0aGAgaXMgbWF0Y2hlZCBhZ2FpbnN0IEJPVEggdGhlIGNvbmNyZXRlIHJlcXVlc3QgcGF0aFxuICogKGAvb3JnYW5pemF0aW9uLzY0ZuKApi9zZWF0LXVzYWdlYCkgYW5kIHRoZSByb3V0ZS10YWJsZSBwYXR0ZXJuXG4gKiAoYC9vcmdhbml6YXRpb24vOmlkL3NlYXQtdXNhZ2VgKSwgc28gYSBgOnBhcmFtYCBzZWdtZW50IGlzIHdyaXR0ZW4gYXNcbiAqIGBbXi9dK2AuIFBhdGhzIGFyZSBzZXJ2aWNlLWxvY2FsIChuZ2lueCBzdHJpcHMgYC9hcGlgKS5cbiAqXG4gKiBUaGUgcXVvdGEgc2VydmljZSBpdHNlbGYgaXMgbm90IG9uIHRoZSBsaXN0IGJlY2F1c2UgaXQgbWV0ZXJzIG5vdGhpbmc6IGl0c1xuICogcmVhZHMgKGBHRVQgL3F1b3Rhc2AsIHdoaWNoIFF1b3RhQmFubmVyIHBvbGxzIGV2ZXJ5IDYwcykgbmV2ZXIgY29zdCBhIGNhbGwuXG4gKiBEb2N1bWVudGVkIGluIGRvY3MvcXVvdGFzLm1kIChcIkV4ZW1wdCByb3V0ZXNcIikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGFFeGVtcHRSb3V0ZSB7XG4gIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCc7XG4gIC8qKiBBbmNob3JlZCBwYXR0ZXJuIG92ZXIgdGhlIHNlcnZpY2UtbG9jYWwgcGF0aC4gKi9cbiAgcGF0aDogUmVnRXhwO1xuICAvKiogV2hvIGNhbGxzIGl0LCBhbmQgd2h5IGl0IG11c3QgYmUgZnJlZS4gKi9cbiAgcmVhc29uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBRVU9UQV9FWEVNUFRfUk9VVEVTOiByZWFkb25seSBRdW90YUV4ZW1wdFJvdXRlW10gPSBbXG4gIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIHBhdGg6IC9eXFwvdXNlclxcL3Byb2ZpbGUkLyxcbiAgICByZWFzb246ICdTZXNzaW9uIGJvb3RzdHJhcDogdGhlIGNvbnNvbGUgcmVhZHMgdGhlIHNpZ25lZC1pbiBwcm9maWxlIG9uIGV2ZXJ5IHBhZ2UgbG9hZC4nLFxuICB9LFxuICB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBwYXRoOiAvXlxcL3VzZXJcXC9vcmdhbml6YXRpb25zJC8sXG4gICAgcmVhc29uOiAnVGhlIG9yZyBzd2l0Y2hlciwgcmVhZCBvbiBldmVyeSBwYWdlIGxvYWQuJyxcbiAgfSxcbiAge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgcGF0aDogL15cXC9vcmdhbml6YXRpb25cXC9bXi9dK1xcL2ZlYXR1cmUtZW50aXRsZW1lbnRzJC8sXG4gICAgcmVhc29uOiAnTmF2aWdhdGlvbiBnYXRpbmcgKHdoaWNoIGZlYXR1cmVzIHJlbmRlciB1bmxvY2tlZCksIHJlYWQgb24gZXZlcnkgcGFnZSBsb2FkLicsXG4gIH0sXG4gIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIHBhdGg6IC9eXFwvb3JnYW5pemF0aW9uXFwvW14vXStcXC9zZWF0LXVzYWdlJC8sXG4gICAgcmVhc29uOiAnQmlsbGluZy9xdW90YSBwYWdlIHJlYWQgYmVzaWRlIHRoZSAodW5tZXRlcmVkKSBxdW90YSByZWFkczsgYW4gZXhoYXVzdGVkIG9yZyBtdXN0IHN0aWxsIHNlZSB3aGF0IGl0IGlzIHVzaW5nLicsXG4gIH0sXG4gIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIHBhdGg6IC9eXFwvbWVzc2FnZXNcXC91bnJlYWRcXC9jb3VudCQvLFxuICAgIHJlYXNvbjogJ1RoZSBzaWRlYmFyIHVucmVhZCBiYWRnZSwgcG9sbGVkIGV2ZXJ5IDMwcyB3aGVuZXZlciB0aGUgbGl2ZSBjaGFubmVsIGlzIGRvd24uJyxcbiAgfSxcbiAge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIHBhdGg6IC9eXFwvbWVzc2FnZXNcXC9ub3RpZmljYXRpb25zXFwvdGlja2V0JC8sXG4gICAgcmVhc29uOiAnU1NFIHRpY2tldCBtaW50IGZvciB0aGUgbGl2ZSBub3RpZmljYXRpb24gY2hhbm5lbDsgcmUtbWludGVkIG9uIGV2ZXJ5IHJlY29ubmVjdC4nLFxuICB9LFxuICB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgcGF0aDogL15cXC9yZXBvcnRzXFwvZXhlY3V0aW9uXFwvc3RyZWFtXFwvdGlja2V0JC8sXG4gICAgcmVhc29uOiAnU1NFIHRpY2tldCBtaW50IGZvciB0aGUgbGl2ZSBleGVjdXRpb24tc3RhdHVzIGNoYW5uZWw7IHJlLW1pbnRlZCBvbiBldmVyeSByZWNvbm5lY3QuJyxcbiAgfSxcbl07XG5cbi8qKiBXaGV0aGVyIGBtZXRob2RgICsgYHBhdGhgIChhIHJlcXVlc3QgcGF0aCBvciBhIHJvdXRlLXRhYmxlIHBhdHRlcm4pIGlzIHF1b3RhLWV4ZW1wdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1F1b3RhRXhlbXB0Um91dGUobWV0aG9kOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBIRUFEIGlzIEdFVCB3aXRob3V0IGEgYm9keSAoRXhwcmVzcyBmb2xkcyBpdCB0aGUgc2FtZSB3YXkpLlxuICBjb25zdCB1cHBlciA9IChtZXRob2QgPz8gJycpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IG0gPSB1cHBlciA9PT0gJ0hFQUQnID8gJ0dFVCcgOiB1cHBlcjtcbiAgcmV0dXJuIFFVT1RBX0VYRU1QVF9ST1VURVMuc29tZSgocikgPT4gci5tZXRob2QgPT09IG0gJiYgci5wYXRoLnRlc3QocGF0aCkpO1xufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtZXhlbXB0LXJvdXRlcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvcXVvdGEtZXhlbXB0LXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBb0N0QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBZ0M7SUFDOUQ7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxtQkFBbUI7UUFDekIsTUFBTSxFQUFFLGdGQUFnRjtLQUN6RjtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUseUJBQXlCO1FBQy9CLE1BQU0sRUFBRSw0Q0FBNEM7S0FDckQ7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLCtDQUErQztRQUNyRCxNQUFNLEVBQUUsOEVBQThFO0tBQ3ZGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxxQ0FBcUM7UUFDM0MsTUFBTSxFQUFFLCtHQUErRztLQUN4SDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNkJBQTZCO1FBQ25DLE1BQU0sRUFBRSwrRUFBK0U7S0FDeEY7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLHFDQUFxQztRQUMzQyxNQUFNLEVBQUUsa0ZBQWtGO0tBQzNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSx3Q0FBd0M7UUFDOUMsTUFBTSxFQUFFLHNGQUFzRjtLQUMvRjtDQUNGLENBQUM7QUFFRiwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQTBCLEVBQUUsSUFBWTtJQUN6RSw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsTUFBTSxDQUFDLEdBQUcsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDM0MsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSByb3V0ZXMgdGhhdCBuZXZlciBzcGVuZCBgYXBpQ2FsbHNgIChvciBgYXV0b21hdGlvbkNhbGxzYCksIGZsZWV0LXdpZGUuXG4gKlxuICogRXZlcnkgc2VydmljZSBtZXRlcnMgYW5kIGdhdGVzIGl0cyBhdXRoZW50aWNhdGVkIHVzZXIgc3VyZmFjZSBvbiBgYXBpQ2FsbHNgXG4gKiAoYG1ldGVyUXVvdGFPblN1Y2Nlc3NgICsgYGNoZWNrUXVvdGFgLCBtb3VudGVkIGF0IHRoZSBhcHAtcm91dGVzIGxldmVsKS4gQSBmZXdcbiAqIHJlYWRzIGFyZSBtYWRlIEJZIFRIRSBDT05TT0xFIElUU0VMRiwgb24gZXZlcnkgcGFnZSBsb2FkIG9yIG9uIGEgdGltZXIsIG5vdCBieVxuICogYSBwZXJzb24gZG9pbmcgc29tZXRoaW5nIOKAlCBtZXRlcmluZyB0aGVtIHdvdWxkIGJ1cm4gYW4gaWRsZSB0YWIncyBvcmcgYnVkZ2V0XG4gKiBhbGwgZGF5LCBhbmQgZ2F0aW5nIHRoZW0gd291bGQgbWFrZSBhIHF1b3RhLWV4aGF1c3RlZCBvcmcncyBjb25zb2xlIHVuYWJsZSB0b1xuICogcmVuZGVyIHRoZSB2ZXJ5IGJhbm5lciB0aGF0IHNheXMgc28uIFRoaXMgbGlzdCBpcyB0aGF0IGNhcnZlLW91dCwgYW5kIGl0IGlzXG4gKiBkZWxpYmVyYXRlbHkgc2hvcnQ6IGVhY2ggZW50cnkgbmFtZXMgaXRzIGNhbGxlciBhbmQgd2h5IGl0IGlzIGZyZWUuXG4gKlxuICogT05FIGxpc3QsIHJlYWQgaW4gdGhyZWUgcGxhY2VzLCBzbyB0aGV5IGNhbm5vdCBkcmlmdDpcbiAqICAgLSBgbWV0ZXJRdW90YU9uU3VjY2Vzc2Agc2tpcHMgYSBtYXRjaGluZyByZXF1ZXN0IChubyBpbmNyZW1lbnQpO1xuICogICAtIGBjaGVja1F1b3RhYCBza2lwcyBhIG1hdGNoaW5nIHJlcXVlc3QgKG5ldmVyIDQyOXMpO1xuICogICAtIGBidWlsZFJvdXRlVGFibGVgIG1hcmtzIHRoZSByb3V0ZSBgcXVvdGEuZXhlbXB0YCwgYW5kIHRoZSBxdW90YSBjb3ZlcmFnZVxuICogICAgIGNoZWNrIChhcGktY29yZSB0ZXN0aW5nKSB0cmVhdHMgaXQgYXMgY292ZXJlZC5cbiAqXG4gKiBFYWNoIGBwYXRoYCBpcyBtYXRjaGVkIGFnYWluc3QgQk9USCB0aGUgY29uY3JldGUgcmVxdWVzdCBwYXRoXG4gKiAoYC9vcmdhbml6YXRpb24vNjRm4oCmL3NlYXQtdXNhZ2VgKSBhbmQgdGhlIHJvdXRlLXRhYmxlIHBhdHRlcm5cbiAqIChgL29yZ2FuaXphdGlvbi86aWQvc2VhdC11c2FnZWApLCBzbyBhIGA6cGFyYW1gIHNlZ21lbnQgaXMgd3JpdHRlbiBhc1xuICogYFteL10rYC4gUGF0aHMgYXJlIHNlcnZpY2UtbG9jYWwgKG5naW54IHN0cmlwcyBgL2FwaWApLlxuICpcbiAqIFRoZSBxdW90YSBzZXJ2aWNlIGl0c2VsZiBpcyBub3Qgb24gdGhlIGxpc3QgYmVjYXVzZSBpdCBtZXRlcnMgbm90aGluZzogaXRzXG4gKiByZWFkcyAoYEdFVCAvcXVvdGFzYCwgd2hpY2ggUXVvdGFCYW5uZXIgcG9sbHMgZXZlcnkgNjBzKSBuZXZlciBjb3N0IGEgY2FsbC5cbiAqIERvY3VtZW50ZWQgaW4gZG9jcy9xdW90YXMubWQgKFwiRXhlbXB0IHJvdXRlc1wiKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdW90YUV4ZW1wdFJvdXRlIHtcbiAgbWV0aG9kOiAnR0VUJyB8ICdQT1NUJztcbiAgLyoqIEFuY2hvcmVkIHBhdHRlcm4gb3ZlciB0aGUgc2VydmljZS1sb2NhbCBwYXRoLiAqL1xuICBwYXRoOiBSZWdFeHA7XG4gIC8qKiBXaG8gY2FsbHMgaXQsIGFuZCB3aHkgaXQgbXVzdCBiZSBmcmVlLiAqL1xuICByZWFzb246IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFFVT1RBX0VYRU1QVF9ST1VURVM6IHJlYWRvbmx5IFF1b3RhRXhlbXB0Um91dGVbXSA9IFtcbiAge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgcGF0aDogL15cXC91c2VyXFwvcHJvZmlsZSQvLFxuICAgIHJlYXNvbjogJ1Nlc3Npb24gYm9vdHN0cmFwOiB0aGUgY29uc29sZSByZWFkcyB0aGUgc2lnbmVkLWluIHByb2ZpbGUgb24gZXZlcnkgcGFnZSBsb2FkLicsXG4gIH0sXG4gIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIHBhdGg6IC9eXFwvdXNlclxcL29yZ2FuaXphdGlvbnMkLyxcbiAgICByZWFzb246ICdUaGUgb3JnIHN3aXRjaGVyLCByZWFkIG9uIGV2ZXJ5IHBhZ2UgbG9hZC4nLFxuICB9LFxuICB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBwYXRoOiAvXlxcL29yZ2FuaXphdGlvblxcL1teL10rXFwvZmVhdHVyZS1lbnRpdGxlbWVudHMkLyxcbiAgICByZWFzb246ICdOYXZpZ2F0aW9uIGdhdGluZyAod2hpY2ggZmVhdHVyZXMgcmVuZGVyIHVubG9ja2VkKSwgcmVhZCBvbiBldmVyeSBwYWdlIGxvYWQuJyxcbiAgfSxcbiAge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgcGF0aDogL15cXC9vcmdhbml6YXRpb25cXC9bXi9dK1xcL3NlYXQtdXNhZ2UkLyxcbiAgICByZWFzb246ICdCaWxsaW5nL3F1b3RhIHBhZ2UgcmVhZCBiZXNpZGUgdGhlICh1bm1ldGVyZWQpIHF1b3RhIHJlYWRzOyBhbiBleGhhdXN0ZWQgb3JnIG11c3Qgc3RpbGwgc2VlIHdoYXQgaXQgaXMgdXNpbmcuJyxcbiAgfSxcbiAge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgcGF0aDogL15cXC9tZXNzYWdlc1xcL3VucmVhZFxcL2NvdW50JC8sXG4gICAgcmVhc29uOiAnVGhlIHNpZGViYXIgdW5yZWFkIGJhZGdlLCBwb2xsZWQgZXZlcnkgMzBzIHdoZW5ldmVyIHRoZSBsaXZlIGNoYW5uZWwgaXMgZG93bi4nLFxuICB9LFxuICB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgcGF0aDogL15cXC9tZXNzYWdlc1xcL25vdGlmaWNhdGlvbnNcXC90aWNrZXQkLyxcbiAgICByZWFzb246ICdTU0UgdGlja2V0IG1pbnQgZm9yIHRoZSBsaXZlIG5vdGlmaWNhdGlvbiBjaGFubmVsOyByZS1taW50ZWQgb24gZXZlcnkgcmVjb25uZWN0LicsXG4gIH0sXG4gIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBwYXRoOiAvXlxcL3JlcG9ydHNcXC9leGVjdXRpb25cXC9zdHJlYW1cXC90aWNrZXQkLyxcbiAgICByZWFzb246ICdTU0UgdGlja2V0IG1pbnQgZm9yIHRoZSBsaXZlIGV4ZWN1dGlvbi1zdGF0dXMgY2hhbm5lbDsgcmUtbWludGVkIG9uIGV2ZXJ5IHJlY29ubmVjdC4nLFxuICB9LFxuXTtcblxuLyoqIFdoZXRoZXIgYG1ldGhvZGAgKyBgcGF0aGAgKGEgcmVxdWVzdCBwYXRoIG9yIGEgcm91dGUtdGFibGUgcGF0dGVybikgaXMgcXVvdGEtZXhlbXB0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUXVvdGFFeGVtcHRSb3V0ZShtZXRob2Q6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIEhFQUQgaXMgR0VUIHdpdGhvdXQgYSBib2R5IChFeHByZXNzIGZvbGRzIGl0IHRoZSBzYW1lIHdheSkuXG4gIGNvbnN0IHVwcGVyID0gKG1ldGhvZCA/PyAnJykudG9VcHBlckNhc2UoKTtcbiAgY29uc3QgbSA9IHVwcGVyID09PSAnSEVBRCcgPyAnR0VUJyA6IHVwcGVyO1xuICByZXR1cm4gUVVPVEFfRVhFTVBUX1JPVVRFUy5zb21lKChyKSA9PiByLm1ldGhvZCA9PT0gbSAmJiByLnBhdGgudGVzdChwYXRoKSk7XG59XG4iXX0=
@@ -159,4 +159,4 @@ export async function checkRevocation(decoded) {
159
159
  }
160
160
  return null;
161
161
  }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2NhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL3Jldm9jYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7O0dBR0c7QUFFSCxPQUFPLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBeUMvQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsTUFBcUU7SUFFckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNqQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEdBQUc7UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRyxJQUFJLE9BQU8sTUFBTSxDQUFDLFdBQVcsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFdBQVc7UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRyxNQUFNLEdBQUcsR0FBRyxPQUFPLE1BQU0sQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRixJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzNDLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FB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Q3BDLE1BQU0sS0FBSyxHQUFHLE1BQU0sc0JBQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sS0FBSyxLQUFLLFNBQVM7Z0JBQ3hCLENBQUMsQ0FBQywyQ0FBMkM7Z0JBQzdDLENBQUMsQ0FBQyxrREFBa0QsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLGdEQUFnRCxDQUFDO0lBQzFELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTZXNzaW9uIGludmFsaWRhdGlvbjogdGhlIHRva2VuLXZlcnNpb24gcmV2b2NhdGlvbiBzdG9yZSBhbmQgdGhlXG4gKiBpbXBlcnNvbmF0aW9uLXNlc3Npb24gbGl2ZW5lc3MgY2hlY2sgYHJlcXVpcmVBdXRoYCBjb25zdWx0cyBhZnRlciB2ZXJpZnlpbmcgYSB0b2tlbi5cbiAqL1xuXG5pbXBvcnQgeyB0eXBlIEp3dFBheWxvYWQgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdhdXRoLW1pZGRsZXdhcmUnKTtcbi8qKlxuICogQSBzb3VyY2Ugb2YgdGhlIENVUlJFTlQgYHRva2VuVmVyc2lvbmAgZm9yIGEgdXNlciwgYmFja2VkIGJ5IGEgc3RvcmUgdGhlXG4gKiBzdGF0ZWxlc3Mgc2VydmljZXMgY2FuIHJlYWQgKGluIHByYWN0aWNlIGEgUmVkaXMga2V5IHRoZSBwbGF0Zm9ybSBwdWJsaXNoZXNcbiAqIHRvIG9uIGV2ZXJ5IHByaXZpbGVnZSBjaGFuZ2UpLiBSZWdpc3RlcmVkIHZpYSB7QGxpbmsgc2V0VG9rZW5SZXZvY2F0aW9uU3RvcmV9LlxuICpcbiAqIGBnZXRDdXJyZW50VmVyc2lvbmAgcmV0dXJucyB0aGUgdXNlcidzIGN1cnJlbnQgdmVyc2lvbiwgb3IgYG51bGxgIHdoZW4gdGhlXG4gKiBzdG9yZSBoYXMgbm8gZW50cnkg4oCUIGEgbWlzcyBpcyB0cmVhdGVkIGFzIFwibm8ga25vd24gcmV2b2NhdGlvblwiIChmYWlsLW9wZW4pOlxuICogcmV2b2NhdGlvbiBlbnRyaWVzIGFyZSBwdWJsaXNoZWQgd2l0aCBhIFRUTCBtYXRjaGluZyB0aGUgYWNjZXNzLXRva2VuXG4gKiBsaWZldGltZSwgc28gYSBtaXNzaW5nIGVudHJ5IG1lYW5zIGFueSB0b2tlbiBvbGQgZW5vdWdoIHRvIHByZWRhdGUgaXQgaGFzXG4gKiBhbHJlYWR5IGV4cGlyZWQgb24gaXRzIG93bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlblJldm9jYXRpb25TdG9yZSB7XG4gIGdldEN1cnJlbnRWZXJzaW9uKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXIgfCBudWxsPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb25lIElNUEVSU09OQVRJT04gc2Vzc2lvbiAoYnkgdG9rZW4gYGp0aWApIGhhcyBiZWVuIGVuZGVkIGVhcmx5LlxuICAgKlxuICAgKiBPcHRpb25hbCBzbyBhIHN0b3JlIHRoYXQgcHJlZGF0ZXMgaXQgc3RpbGwgbGlua3Mg4oCUIGJ1dCBhIHN0b3JlIFdJVEhPVVQgaXRcbiAgICogY2Fubm90IGFuc3dlciwgYW5kIGFuIGltcGVyc29uYXRpb24gdG9rZW4gaXMgdGhlbiBSRUpFQ1RFRC4gVW5saWtlXG4gICAqIGBnZXRDdXJyZW50VmVyc2lvbmAsIHRoaXMgaXMgZGVsaWJlcmF0ZWx5IG5vdCBmYWlsLW9wZW46IHRoZSBwbGF0Zm9ybSBlbmRzIGFcbiAgICogc2Vzc2lvbiB3aGVuIHNvbWVvbmUgd2l0aGRyYXdzIGNvbnNlbnQsIGFuZCBhIHdpdGhkcmF3biBjb25zZW50IHRoYXQga2VlcHNcbiAgICogd29ya2luZyBpbiBldmVyeSBvdGhlciBzZXJ2aWNlIGlzIG5vdCB3aXRoZHJhd24uXG4gICAqL1xuICBnZXRTZXNzaW9uUmV2b2NhdGlvbj8oanRpOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25SZXZvY2F0aW9uU3RhdGU+O1xuICAvKipcbiAgICogV2hldGhlciBPTkUgY3JlZGVudGlhbCB0aGUgdG9rZW4gcmlkZXMgb24gaGFzIGJlZW4gcmV2b2tlZCDigJQgaXRzIHNlc3Npb25cbiAgICogc2xvdCAoYHNpZGApIG9yIHRoZSBhY2Nlc3Mga2V5IGl0IHdhcyBleGNoYW5nZWQgZnJvbSAvIGRlcml2ZWQgZnJvbSAoc2VlXG4gICAqIHtAbGluayBjcmVkZW50aWFsUmV2b2NhdGlvblJlZnN9KS4gRmFpbC1vcGVuIGxpa2UgYGdldEN1cnJlbnRWZXJzaW9uYDogYVxuICAgKiBzdG9yZSB0aGF0IGNhbid0IGFuc3dlciByZXR1cm5zIGBmYWxzZWAuXG4gICAqL1xuICBpc0NyZWRlbnRpYWxSZXZva2VkPyhyZWZzOiBDcmVkZW50aWFsUmV2b2NhdGlvblJlZnMpOiBQcm9taXNlPGJvb2xlYW4+O1xufVxuXG4vKiogVGhlIHNpbmdsZS1jcmVkZW50aWFsIGlkcyBhIHRva2VuIGNhbiBiZSByZXZva2VkIGJ5IChgcmV2b2tlOnNpZDpgIC8gYHJldm9rZTprZXk6YCkuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxSZXZvY2F0aW9uUmVmcyB7XG4gIC8qKiBUaGUgcmVmcmVzaC1zZXNzaW9uIHNsb3QgdGhlIHRva2VuIHdhcyBtaW50ZWQgd2l0aC4gKi9cbiAgc2lkPzogc3RyaW5nO1xuICAvKiogQWNjZXNzLWtleSBpZHM6IHRoZSBleGNoYW5nZWQga2V5J3Mgb3duIGBqdGlgLCBhbmQgYW55IGBwYXJlbnRLZXlJZGAuICovXG4gIGtleUlkczogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIGNyZWRlbnRpYWwgaWRzIGEgdmVyaWZpZWQgdG9rZW4gY2FuIGJlIHJldm9rZWQgYnkuIEFuIGV4Y2hhbmdlZCBrZXkgdG9rZW5cbiAqIChgdG9rZW5fdXNlOiAnYXBpX2tleSdgKSBpcyBuYW1lZCBieSBpdHMgYGp0aWA7IGEgdG9rZW4gZGVyaXZlZCBmcm9tIG9uZVxuICogY2FycmllcyBgcGFyZW50S2V5SWRgOyBhIHNlc3Npb24tbWludGVkIHRva2VuIGNhcnJpZXMgYHNpZGAuIFJldHVybnMgYG51bGxgXG4gKiB3aGVuIHRoZSB0b2tlbiBuYW1lcyBub25lIG9mIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVkZW50aWFsUmV2b2NhdGlvblJlZnMoXG4gIGNsYWltczogUGljazxKd3RQYXlsb2FkLCAnc2lkJyB8ICdwYXJlbnRLZXlJZCcgfCAnanRpJyB8ICd0b2tlbl91c2UnPixcbik6IENyZWRlbnRpYWxSZXZvY2F0aW9uUmVmcyB8IG51bGwge1xuICBjb25zdCBrZXlJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgaWYgKGNsYWltcy50b2tlbl91c2UgPT09ICdhcGlfa2V5JyAmJiB0eXBlb2YgY2xhaW1zLmp0aSA9PT0gJ3N0cmluZycgJiYgY2xhaW1zLmp0aSkga2V5SWRzLmFkZChjbGFpbXMuanRpKTtcbiAgaWYgKHR5cGVvZiBjbGFpbXMucGFyZW50S2V5SWQgPT09ICdzdHJpbmcnICYmIGNsYWltcy5wYXJlbnRLZXlJZCkga2V5SWRzLmFkZChjbGFpbXMucGFyZW50S2V5SWQpO1xuICBjb25zdCBzaWQgPSB0eXBlb2YgY2xhaW1zLnNpZCA9PT0gJ3N0cmluZycgJiYgY2xhaW1zLnNpZCA/IGNsYWltcy5zaWQgOiB1bmRlZmluZWQ7XG4gIGlmICghc2lkICYmIGtleUlkcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHsgLi4uKHNpZCA/IHsgc2lkIH0gOiB7fSksIGtleUlkczogWy4uLmtleUlkc10gfTtcbn1cblxuLyoqXG4gKiBgcmV2b2tlZGAgICAgIOKAlCB0aGUgc2Vzc2lvbiB3YXMgZW5kZWQ7IHJlamVjdC5cbiAqIGBsaXZlYCAgICAgICAg4oCUIG5vIHJldm9jYXRpb24gcmVjb3JkZWQ7IGFsbG93LlxuICogYHVuYXZhaWxhYmxlYCDigJQgdGhlIHN0b3JlIGNvdWxkbid0IGJlIHJlYWQgb3IgY2FuJ3QgYW5zd2VyOyBSRUpFQ1QuIERpc3RpbmN0XG4gKiAgICAgICAgICAgICAgICAgZnJvbSBgbGl2ZWAgcHJlY2lzZWx5IHNvIGFuIG91dGFnZSBjYW4ndCByZWFkIGFzIFwibm90IHJldm9rZWRcIi5cbiAqL1xuZXhwb3J0IHR5cGUgU2Vzc2lvblJldm9jYXRpb25TdGF0ZSA9ICdyZXZva2VkJyB8ICdsaXZlJyB8ICd1bmF2YWlsYWJsZSc7XG5cbmxldCB0b2tlblJldm9jYXRpb25TdG9yZTogVG9rZW5SZXZvY2F0aW9uU3RvcmUgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogUmVnaXN0ZXIgKG9yIGNsZWFyLCB3aXRoIGB1bmRlZmluZWRgKSB0aGUgcHJvY2Vzcy13aWRlIHRva2VuLXJldm9jYXRpb24gc3RvcmUuXG4gKiBXaGVuIHVuc2V0ICh0aGUgZGVmYXVsdCksIGByZXF1aXJlQXV0aGAgcGVyZm9ybXMgTk8gcmV2b2NhdGlvbiBjaGVjayAoaXQgcmVsaWVzXG4gKiBvbiB0aGUgc2hvcnQgYWNjZXNzLXRva2VuIFRUTCk7IHNlcnZpY2VzIG9wdCBpbiBhdCBib290IGJ5IHdpcmluZyB0aGVpciBSZWRpc1xuICogY2xpZW50LiBQbGF0Zm9ybSBrZWVwcyBpdHMgb3duIE1vbmdvLWJhY2tlZCBjaGVjayBhbmQgbmVlZCBub3QgcmVnaXN0ZXIgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9rZW5SZXZvY2F0aW9uU3RvcmUoc3RvcmU6IFRva2VuUmV2b2NhdGlvblN0b3JlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIHRva2VuUmV2b2NhdGlvblN0b3JlID0gc3RvcmU7XG4gIGlmIChzdG9yZSkgcmV2b2NhdGlvblN0b3JlTWlzc2luZ1dhcm5lZCA9IGZhbHNlOyAvLyByZS1hcm0gaWYgYSBzdG9yZSBpcyAocmUpcmVnaXN0ZXJlZFxufVxuXG4vKiogT25lLXNob3QgZ3VhcmQgc28gdGhlIFwicmV2b2NhdGlvbiBpbmFjdGl2ZVwiIHdhcm5pbmcgZG9lc24ndCBmbG9vZCB0aGUgbG9ncy4gKi9cbmxldCByZXZvY2F0aW9uU3RvcmVNaXNzaW5nV2FybmVkID0gZmFsc2U7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gYGRlY29kZWRgIGhhcyBiZWVuIHJldm9rZWQgcGVyIHRoZSByZWdpc3RlcmVkIHN0b3JlOiBpdHNcbiAqIGVtYmVkZGVkIGB0b2tlblZlcnNpb25gIGlzIHN0cmljdGx5IGJlaGluZCB0aGUgc3RvcmUncyBjdXJyZW50IHZlcnNpb24uXG4gKiBGYWlsLW9wZW4g4oCUIGFueSBzdG9yZSBlcnJvciwgYSBtaXNzaW5nIGVudHJ5LCBvciBhIHRva2VuL3N0b3JlIHdpdGhvdXQgYVxuICogdXNhYmxlIHZlcnNpb24geWllbGRzIGBmYWxzZWAgKGFsbG93KS4gTmV2ZXIgdGhyb3dzLlxuICovXG5hc3luYyBmdW5jdGlvbiBpc1Rva2VuUmV2b2tlZChkZWNvZGVkOiBKd3RQYXlsb2FkKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHN0b3JlID0gdG9rZW5SZXZvY2F0aW9uU3RvcmU7XG4gIGlmICghc3RvcmUpIHtcbiAgICAvLyBNYWtlIHRoZSBcInJldm9jYXRpb24gaXMgT0ZGXCIgc3RhdGUgT0JTRVJWQUJMRTogYSBzZXJ2aWNlIHRoYXQgdmVyaWZpZXMgdXNlclxuICAgIC8vIHRva2VucyBidXQgZm9yZ290IGBzZXRUb2tlblJldm9jYXRpb25TdG9yZSgpYCBzaWxlbnRseSBkaXNhYmxlcyB0aGUgc2Vzc2lvblxuICAgIC8vIGtpbGwtc3dpdGNoLiBXYXJuIE9OQ0UgKG9ubHkgZm9yIGEgcmV2b2NhYmxlIHVzZXIgdG9rZW4pIHNvIGEgbWlzY29uZmlndXJlZFxuICAgIC8vIGJvb3Qgc3VyZmFjZXMgaW4gdGhlIGxvZ3MgaW5zdGVhZCBvZiBmYWlsaW5nIG9wZW4gaW52aXNpYmx5LlxuICAgIGlmICghcmV2b2NhdGlvblN0b3JlTWlzc2luZ1dhcm5lZCAmJiBkZWNvZGVkLnN1YiAmJiB0eXBlb2YgZGVjb2RlZC50b2tlblZlcnNpb24gPT09ICdudW1iZXInKSB7XG4gICAgICByZXZvY2F0aW9uU3RvcmVNaXNzaW5nV2FybmVkID0gdHJ1ZTtcbiAgICAgIGxvZ2dlci53YXJuKCdUb2tlbiByZXZvY2F0aW9uIHN0b3JlIE5PVCByZWdpc3RlcmVkIOKAlCByZXZvY2F0aW9uIGNoZWNrcyBhcmUgSU5BQ1RJVkUgKHNldFRva2VuUmV2b2NhdGlvblN0b3JlIHdhcyBuZXZlciBjYWxsZWQpOyByZXZva2VkL2NvbXByb21pc2VkIHNlc3Npb25zIHN0YXkgdmFsaWQgdW50aWwgbmF0dXJhbCBUVEwnKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChzdG9yZS5pc0NyZWRlbnRpYWxSZXZva2VkKSB7XG4gICAgY29uc3QgcmVmcyA9IGNyZWRlbnRpYWxSZXZvY2F0aW9uUmVmcyhkZWNvZGVkKTtcbiAgICBpZiAocmVmcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGF3YWl0IHN0b3JlLmlzQ3JlZGVudGlhbFJldm9rZWQocmVmcykpIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIEZhaWwtb3BlbiwgYXMgYmVsb3cuXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghZGVjb2RlZC5zdWIgfHwgdHlwZW9mIGRlY29kZWQudG9rZW5WZXJzaW9uICE9PSAnbnVtYmVyJykgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBzdG9yZS5nZXRDdXJyZW50VmVyc2lvbihkZWNvZGVkLnN1Yik7XG4gICAgcmV0dXJuIGN1cnJlbnQgIT09IG51bGwgJiYgZGVjb2RlZC50b2tlblZlcnNpb24gPCBjdXJyZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBGYWlsLW9wZW46IGEgcmV2b2NhdGlvbi1zdG9yZSBvdXRhZ2UgbXVzdCBub3QgbG9jayBldmVyeSB1c2VyIG91dC5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIFdoZXRoZXIgdGhlIHJlZ2lzdGVyZWQgc3RvcmUgaGFzIGFueXRoaW5nIHRvIHNheSBhYm91dCB0aGlzIHRva2VuLiAqL1xuZnVuY3Rpb24gaGFzUmV2b2NhdGlvbkNoZWNrKGRlY29kZWQ6IEp3dFBheWxvYWQpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RvcmUgPSB0b2tlblJldm9jYXRpb25TdG9yZTtcbiAgaWYgKCFzdG9yZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoZGVjb2RlZC5zdWIgJiYgdHlwZW9mIGRlY29kZWQudG9rZW5WZXJzaW9uID09PSAnbnVtYmVyJykgcmV0dXJuIHRydWU7XG4gIHJldHVybiAhIXN0b3JlLmlzQ3JlZGVudGlhbFJldm9rZWQgJiYgY3JlZGVudGlhbFJldm9jYXRpb25SZWZzKGRlY29kZWQpICE9PSBudWxsO1xufVxuXG4vKiogTWV0aG9kcyBhIHJlYWQtb25seSBpbXBlcnNvbmF0aW9uIHRva2VuIG1heSB1c2UuICovXG5jb25zdCBJTVBFUlNPTkFUSU9OX1JFQURfTUVUSE9EUyA9IG5ldyBTZXQoWydHRVQnLCAnSEVBRCcsICdPUFRJT05TJ10pO1xuXG4vKipcbiAqIFdoZXRoZXIgYSByZXF1ZXN0IGlzIGEgV1JJVEUgdW5kZXIgYSByZWFkLW9ubHkgaW1wZXJzb25hdGlvbiB0b2tlbi4gRmFpbC1jbG9zZWRcbiAqIG9uIGEgbWlzc2luZyBtZXRob2Q6IG9ubHkgYSByZXF1ZXN0IHBvc2l0aXZlbHkga25vd24gdG8gYmUgYSByZWFkIHBhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW1wZXJzb25hdGlvbldyaXRlQmxvY2tlZChcbiAgbWV0aG9kOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNsYWltczogUGljazxKd3RQYXlsb2FkLCAnaW1wZXJzb25hdGlvblJlYWRPbmx5Jz4sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGNsYWltcy5pbXBlcnNvbmF0aW9uUmVhZE9ubHkgPT09IHRydWUgJiYgIUlNUEVSU09OQVRJT05fUkVBRF9NRVRIT0RTLmhhcygobWV0aG9kID8/ICcnKS50b1VwcGVyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGltcGVyc29uYXRpb24gc2Vzc2lvbidzIHJldm9jYXRpb24gc3RhdGUuIE5ldmVyIHRocm93czogYW55IGZhaWx1cmVcbiAqIOKAlCBubyBzdG9yZSwgYSBzdG9yZSB0aGF0IGNhbid0IGFuc3dlciwgYSByZWFkIGVycm9yIOKAlCBpcyBgdW5hdmFpbGFibGVgLCB3aGljaFxuICogY2FsbGVycyB0cmVhdCBhcyByZXZva2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uUmV2b2NhdGlvblN0YXRlKGp0aTogc3RyaW5nKTogUHJvbWlzZTxTZXNzaW9uUmV2b2NhdGlvblN0YXRlPiB7XG4gIGNvbnN0IHN0b3JlID0gdG9rZW5SZXZvY2F0aW9uU3RvcmU7XG4gIGlmICghc3RvcmU/LmdldFNlc3Npb25SZXZvY2F0aW9uKSByZXR1cm4gJ3VuYXZhaWxhYmxlJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgc3RvcmUuZ2V0U2Vzc2lvblJldm9jYXRpb24oanRpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICd1bmF2YWlsYWJsZSc7XG4gIH1cbn1cblxuLyoqIEFuIGltcGVyc29uYXRpb24gc2Vzc2lvbiB0b2tlbjogaXQgbmFtZXMgdGhlIG9wZXJhdG9yIEFORCBjYXJyaWVzIGl0cyBvd24gc2Vzc2lvbiBpZC4gKi9cbmZ1bmN0aW9uIGlzSW1wZXJzb25hdGlvblNlc3Npb24oZGVjb2RlZDogeyBpbXBlcnNvbmF0b3JJZD86IHVua25vd247IGp0aT86IHVua25vd24gfSk6IGRlY29kZWQgaXMgeyBpbXBlcnNvbmF0b3JJZDogc3RyaW5nOyBqdGk6IHN0cmluZyB9IHtcbiAgcmV0dXJuIHR5cGVvZiBkZWNvZGVkLmltcGVyc29uYXRvcklkID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgZGVjb2RlZC5qdGkgPT09ICdzdHJpbmcnICYmIGRlY29kZWQuanRpLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogUHVibGljIHJldm9jYXRpb24gY2hlY2sgZm9yIHJvdXRlcyB0aGF0IHZlcmlmeSBhIHBsYXRmb3JtIEpXVCBPVVRTSURFXG4gKiBgcmVxdWlyZUF1dGhgIChlLmcuIHRoZSBpbWFnZS1yZWdpc3RyeSBgL3Rva2VuYCBtaW50IHBhdGgsIHdoaWNoIHJlc29sdmVzXG4gKiBpZGVudGl0eSBpdHNlbGYpLiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdG9rZW4ncyBgdG9rZW5WZXJzaW9uYCBpcyBzdHJpY3RseVxuICogYmVoaW5kIHRoZSBzdG9yZSdzIGN1cnJlbnQgdmVyc2lvbi4gRmFpbC1vcGVuIChuZXZlciB0aHJvd3MpIOKAlCBhIHN0b3JlIG91dGFnZVxuICogb3IgYSB0b2tlbi9zdG9yZSB3aXRob3V0IGEgdXNhYmxlIHZlcnNpb24geWllbGRzIGZhbHNlIChhbGxvdyksIG1hdGNoaW5nXG4gKiBgcmVxdWlyZUF1dGhgLiBQYXNzIHRoZSB2ZXJpZmllZCBKV1QgY2xhaW1zIChgc3ViYCwgYHRva2VuVmVyc2lvbmApLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNBY2Nlc3NUb2tlblJldm9rZWQoXG4gIGNsYWltczoge1xuICAgIHN1Yj86IHN0cmluZztcbiAgICB0b2tlblZlcnNpb24/OiBudW1iZXI7XG4gICAganRpPzogc3RyaW5nO1xuICAgIGltcGVyc29uYXRvcklkPzogc3RyaW5nO1xuICAgIHNpZD86IHN0cmluZztcbiAgICBwYXJlbnRLZXlJZD86IHN0cmluZztcbiAgICB0b2tlbl91c2U/OiBKd3RQYXlsb2FkWyd0b2tlbl91c2UnXTtcbiAgfSxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAvLyBBbiBpbXBlcnNvbmF0aW9uIHNlc3Npb24gaXMgcmV2b2tlZCB1bmxlc3MgdGhlIHN0b3JlIHBvc2l0aXZlbHkgc2F5cyBsaXZlIOKAlFxuICAvLyBpbmNsdWRpbmcgb24gdGhpcyBvdXQtb2YtYmFuZCBwYXRoLCBvciBhIHJldm9rZWQgc2Vzc2lvbiBjb3VsZCBzdGlsbCBtaW50XG4gIC8vIHJlZ2lzdHJ5IHRva2Vucy5cbiAgaWYgKGlzSW1wZXJzb25hdGlvblNlc3Npb24oY2xhaW1zKSAmJiBhd2FpdCBzZXNzaW9uUmV2b2NhdGlvblN0YXRlKGNsYWltcy5qdGkpICE9PSAnbGl2ZScpIHJldHVybiB0cnVlO1xuICByZXR1cm4gaXNUb2tlblJldm9rZWQoY2xhaW1zIGFzIHVua25vd24gYXMgSnd0UGF5bG9hZCk7XG59XG5cblxuLyoqIFdoZXRoZXIgYHJlcXVpcmVBdXRoYCBtdXN0IGNvbnN1bHQgdGhlIHJldm9jYXRpb24gc3RvcmVzIGZvciB0aGlzIHRva2VuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzUmV2b2NhdGlvbkNoZWNrKGRlY29kZWQ6IEp3dFBheWxvYWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzSW1wZXJzb25hdGlvblNlc3Npb24oZGVjb2RlZCkgfHwgaGFzUmV2b2NhdGlvbkNoZWNrKGRlY29kZWQpO1xufVxuXG4vKipcbiAqIFRoZSBwb3N0LXZlcmlmaWNhdGlvbiBzZXNzaW9uLWludmFsaWRhdGlvbiBjaGVjay4gUmV0dXJucyB0aGUgcmVmdXNhbFxuICogbWVzc2FnZSwgb3IgYG51bGxgIHdoZW4gdGhlIHNlc3Npb24gaXMgbGl2ZS4gQW4gaW1wZXJzb25hdGlvbiBzZXNzaW9uIGlzXG4gKiBjaGVja2VkIGV2ZW4gd2hlbiBOTyBzdG9yZSBpcyByZWdpc3RlcmVkOiB0aGVyZSwgbm8gc3RvcmUg4oeSIHVuYXZhaWxhYmxlIOKHklxuICogcmVmdXNlZCAoc2VlIGBUb2tlblJldm9jYXRpb25TdG9yZS5nZXRTZXNzaW9uUmV2b2NhdGlvbmApOyB0aGUgdG9rZW5WZXJzaW9uXG4gKiBjaGVjayBpcyBhIG5vLW9wIHdpdGhvdXQgYSBzdG9yZSBhbmQgZmFpbHMgb3BlbiBvbiBhIHN0b3JlIGVycm9yLiBOZXZlciByZWplY3RzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tSZXZvY2F0aW9uKGRlY29kZWQ6IEp3dFBheWxvYWQpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgaWYgKGlzSW1wZXJzb25hdGlvblNlc3Npb24oZGVjb2RlZCkpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHNlc3Npb25SZXZvY2F0aW9uU3RhdGUoZGVjb2RlZC5qdGkpO1xuICAgIGlmIChzdGF0ZSAhPT0gJ2xpdmUnKSB7XG4gICAgICByZXR1cm4gc3RhdGUgPT09ICdyZXZva2VkJ1xuICAgICAgICA/ICdUaGlzIGltcGVyc29uYXRpb24gc2Vzc2lvbiBoYXMgYmVlbiBlbmRlZCdcbiAgICAgICAgOiAnVGhpcyBpbXBlcnNvbmF0aW9uIHNlc3Npb24gY291bGQgbm90IGJlIHZlcmlmaWVkJztcbiAgICB9XG4gIH1cbiAgaWYgKGhhc1Jldm9jYXRpb25DaGVjayhkZWNvZGVkKSAmJiBhd2FpdCBpc1Rva2VuUmV2b2tlZChkZWNvZGVkKSkge1xuICAgIHJldHVybiAnU2Vzc2lvbiBoYXMgYmVlbiByZXZva2VkOyBwbGVhc2Ugc2lnbiBpbiBhZ2Fpbic7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2NhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvcmV2b2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7R0FHRztBQUVILE9BQU8sRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUF5Qy9DOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxNQUFxRTtJQUVyRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2pDLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRztRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNHLElBQUksT0FBTyxNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsV0FBVztRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sR0FBRyxHQUFHLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xGLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0MsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUMxRCxDQUFDO0FBVUQsSUFBSSxvQkFBc0QsQ0FBQztBQUUzRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUF1QztJQUM3RSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsSUFBSSxLQUFLO1FBQUUsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLENBQUMsc0NBQXNDO0FBQ3pGLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsSUFBSSw0QkFBNEIsR0FBRyxLQUFLLENBQUM7QUFFekM7Ozs7O0dBS0c7QUFDSCxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQW1CO0lBQy9DLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLDhFQUE4RTtRQUM5RSw4RUFBOEU7UUFDOUUsOEVBQThFO1FBQzlFLCtEQUErRDtRQUMvRCxJQUFJLENBQUMsNEJBQTRCLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0YsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEtBQThLLENBQUMsQ0FBQztRQUM5TCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDO2dCQUNILElBQUksTUFBTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO29CQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3pELENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsdUJBQXVCO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDM0UsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUM1RCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AscUVBQXFFO1FBQ3JFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCx5RUFBeUU7QUFDekUsU0FBUyxrQkFBa0IsQ0FBQyxPQUFtQjtJQUM3QyxNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FBQztJQUNuQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUM7QUFDbkYsQ0FBQztBQUVELHVEQUF1RDtBQUN2RCxNQUFNLDBCQUEwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBRXZFOzs7R0FHRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsTUFBMEIsRUFDMUIsTUFBaUQ7SUFFakQsT0FBTyxNQUFNLENBQUMscUJBQXFCLEtBQUssSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDaEgsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsc0JBQXNCLENBQUMsR0FBVztJQUMvQyxNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FBQztJQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLG9CQUFvQjtRQUFFLE9BQU8sYUFBYSxDQUFDO0lBQ3ZELElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxLQUFLLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDO0FBRUQsNEZBQTRGO0FBQzVGLFNBQVMsc0JBQXNCLENBQUMsT0FBb0Q7SUFDbEYsT0FBTyxPQUFPLE9BQU8sQ0FBQyxjQUFjLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2pILENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsTUFRQztJQUVELDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsbUJBQW1CO0lBQ25CLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZHLE9BQU8sY0FBYyxDQUFDLE1BQStCLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBR0QsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFtQjtJQUN0RCxPQUFPLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxPQUFtQjtJQUN2RCxJQUFJLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDckIsT0FBTyxLQUFLLEtBQUssU0FBUztnQkFDeEIsQ0FBQyxDQUFDLDJDQUEyQztnQkFDN0MsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sZ0RBQWdELENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNlc3Npb24gaW52YWxpZGF0aW9uOiB0aGUgdG9rZW4tdmVyc2lvbiByZXZvY2F0aW9uIHN0b3JlIGFuZCB0aGVcbiAqIGltcGVyc29uYXRpb24tc2Vzc2lvbiBsaXZlbmVzcyBjaGVjayBgcmVxdWlyZUF1dGhgIGNvbnN1bHRzIGFmdGVyIHZlcmlmeWluZyBhIHRva2VuLlxuICovXG5cbmltcG9ydCB7IHR5cGUgSnd0UGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2F1dGgtbWlkZGxld2FyZScpO1xuLyoqXG4gKiBBIHNvdXJjZSBvZiB0aGUgQ1VSUkVOVCBgdG9rZW5WZXJzaW9uYCBmb3IgYSB1c2VyLCBiYWNrZWQgYnkgYSBzdG9yZSB0aGVcbiAqIHN0YXRlbGVzcyBzZXJ2aWNlcyBjYW4gcmVhZCAoaW4gcHJhY3RpY2UgYSBSZWRpcyBrZXkgdGhlIHBsYXRmb3JtIHB1Ymxpc2hlc1xuICogdG8gb24gZXZlcnkgcHJpdmlsZWdlIGNoYW5nZSkuIFJlZ2lzdGVyZWQgdmlhIHtAbGluayBzZXRUb2tlblJldm9jYXRpb25TdG9yZX0uXG4gKlxuICogYGdldEN1cnJlbnRWZXJzaW9uYCByZXR1cm5zIHRoZSB1c2VyJ3MgY3VycmVudCB2ZXJzaW9uLCBvciBgbnVsbGAgd2hlbiB0aGVcbiAqIHN0b3JlIGhhcyBubyBlbnRyeSDigJQgYSBtaXNzIGlzIHRyZWF0ZWQgYXMgXCJubyBrbm93biByZXZvY2F0aW9uXCIgKGZhaWwtb3Blbik6XG4gKiByZXZvY2F0aW9uIGVudHJpZXMgYXJlIHB1Ymxpc2hlZCB3aXRoIGEgVFRMIG1hdGNoaW5nIHRoZSBhY2Nlc3MtdG9rZW5cbiAqIGxpZmV0aW1lLCBzbyBhIG1pc3NpbmcgZW50cnkgbWVhbnMgYW55IHRva2VuIG9sZCBlbm91Z2ggdG8gcHJlZGF0ZSBpdCBoYXNcbiAqIGFscmVhZHkgZXhwaXJlZCBvbiBpdHMgb3duLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmV2b2NhdGlvblN0b3JlIHtcbiAgZ2V0Q3VycmVudFZlcnNpb24odXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlciB8IG51bGw+O1xuICAvKipcbiAgICogV2hldGhlciBvbmUgSU1QRVJTT05BVElPTiBzZXNzaW9uIChieSB0b2tlbiBganRpYCkgaGFzIGJlZW4gZW5kZWQgZWFybHkuXG4gICAqXG4gICAqIE9wdGlvbmFsIHNvIGEgc3RvcmUgdGhhdCBwcmVkYXRlcyBpdCBzdGlsbCBsaW5rcyDigJQgYnV0IGEgc3RvcmUgV0lUSE9VVCBpdFxuICAgKiBjYW5ub3QgYW5zd2VyLCBhbmQgYW4gaW1wZXJzb25hdGlvbiB0b2tlbiBpcyB0aGVuIFJFSkVDVEVELiBVbmxpa2VcbiAgICogYGdldEN1cnJlbnRWZXJzaW9uYCwgdGhpcyBpcyBkZWxpYmVyYXRlbHkgbm90IGZhaWwtb3BlbjogdGhlIHBsYXRmb3JtIGVuZHMgYVxuICAgKiBzZXNzaW9uIHdoZW4gc29tZW9uZSB3aXRoZHJhd3MgY29uc2VudCwgYW5kIGEgd2l0aGRyYXduIGNvbnNlbnQgdGhhdCBrZWVwc1xuICAgKiB3b3JraW5nIGluIGV2ZXJ5IG90aGVyIHNlcnZpY2UgaXMgbm90IHdpdGhkcmF3bi5cbiAgICovXG4gIGdldFNlc3Npb25SZXZvY2F0aW9uPyhqdGk6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvblJldm9jYXRpb25TdGF0ZT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIE9ORSBjcmVkZW50aWFsIHRoZSB0b2tlbiByaWRlcyBvbiBoYXMgYmVlbiByZXZva2VkIOKAlCBpdHMgc2Vzc2lvblxuICAgKiBzbG90IChgc2lkYCkgb3IgdGhlIGFjY2VzcyBrZXkgaXQgd2FzIGV4Y2hhbmdlZCBmcm9tIC8gZGVyaXZlZCBmcm9tIChzZWVcbiAgICoge0BsaW5rIGNyZWRlbnRpYWxSZXZvY2F0aW9uUmVmc30pLiBGYWlsLW9wZW4gbGlrZSBgZ2V0Q3VycmVudFZlcnNpb25gOiBhXG4gICAqIHN0b3JlIHRoYXQgY2FuJ3QgYW5zd2VyIHJldHVybnMgYGZhbHNlYC5cbiAgICovXG4gIGlzQ3JlZGVudGlhbFJldm9rZWQ/KHJlZnM6IENyZWRlbnRpYWxSZXZvY2F0aW9uUmVmcyk6IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbi8qKiBUaGUgc2luZ2xlLWNyZWRlbnRpYWwgaWRzIGEgdG9rZW4gY2FuIGJlIHJldm9rZWQgYnkgKGByZXZva2U6c2lkOmAgLyBgcmV2b2tlOmtleTpgKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGVudGlhbFJldm9jYXRpb25SZWZzIHtcbiAgLyoqIFRoZSByZWZyZXNoLXNlc3Npb24gc2xvdCB0aGUgdG9rZW4gd2FzIG1pbnRlZCB3aXRoLiAqL1xuICBzaWQ/OiBzdHJpbmc7XG4gIC8qKiBBY2Nlc3Mta2V5IGlkczogdGhlIGV4Y2hhbmdlZCBrZXkncyBvd24gYGp0aWAsIGFuZCBhbnkgYHBhcmVudEtleUlkYC4gKi9cbiAga2V5SWRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgY3JlZGVudGlhbCBpZHMgYSB2ZXJpZmllZCB0b2tlbiBjYW4gYmUgcmV2b2tlZCBieS4gQW4gZXhjaGFuZ2VkIGtleSB0b2tlblxuICogKGB0b2tlbl91c2U6ICdhcGlfa2V5J2ApIGlzIG5hbWVkIGJ5IGl0cyBganRpYDsgYSB0b2tlbiBkZXJpdmVkIGZyb20gb25lXG4gKiBjYXJyaWVzIGBwYXJlbnRLZXlJZGA7IGEgc2Vzc2lvbi1taW50ZWQgdG9rZW4gY2FycmllcyBgc2lkYC4gUmV0dXJucyBgbnVsbGBcbiAqIHdoZW4gdGhlIHRva2VuIG5hbWVzIG5vbmUgb2YgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWRlbnRpYWxSZXZvY2F0aW9uUmVmcyhcbiAgY2xhaW1zOiBQaWNrPEp3dFBheWxvYWQsICdzaWQnIHwgJ3BhcmVudEtleUlkJyB8ICdqdGknIHwgJ3Rva2VuX3VzZSc+LFxuKTogQ3JlZGVudGlhbFJldm9jYXRpb25SZWZzIHwgbnVsbCB7XG4gIGNvbnN0IGtleUlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBpZiAoY2xhaW1zLnRva2VuX3VzZSA9PT0gJ2FwaV9rZXknICYmIHR5cGVvZiBjbGFpbXMuanRpID09PSAnc3RyaW5nJyAmJiBjbGFpbXMuanRpKSBrZXlJZHMuYWRkKGNsYWltcy5qdGkpO1xuICBpZiAodHlwZW9mIGNsYWltcy5wYXJlbnRLZXlJZCA9PT0gJ3N0cmluZycgJiYgY2xhaW1zLnBhcmVudEtleUlkKSBrZXlJZHMuYWRkKGNsYWltcy5wYXJlbnRLZXlJZCk7XG4gIGNvbnN0IHNpZCA9IHR5cGVvZiBjbGFpbXMuc2lkID09PSAnc3RyaW5nJyAmJiBjbGFpbXMuc2lkID8gY2xhaW1zLnNpZCA6IHVuZGVmaW5lZDtcbiAgaWYgKCFzaWQgJiYga2V5SWRzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xuICByZXR1cm4geyAuLi4oc2lkID8geyBzaWQgfSA6IHt9KSwga2V5SWRzOiBbLi4ua2V5SWRzXSB9O1xufVxuXG4vKipcbiAqIGByZXZva2VkYCAgICAg4oCUIHRoZSBzZXNzaW9uIHdhcyBlbmRlZDsgcmVqZWN0LlxuICogYGxpdmVgICAgICAgICDigJQgbm8gcmV2b2NhdGlvbiByZWNvcmRlZDsgYWxsb3cuXG4gKiBgdW5hdmFpbGFibGVgIOKAlCB0aGUgc3RvcmUgY291bGRuJ3QgYmUgcmVhZCBvciBjYW4ndCBhbnN3ZXI7IFJFSkVDVC4gRGlzdGluY3RcbiAqICAgICAgICAgICAgICAgICBmcm9tIGBsaXZlYCBwcmVjaXNlbHkgc28gYW4gb3V0YWdlIGNhbid0IHJlYWQgYXMgXCJub3QgcmV2b2tlZFwiLlxuICovXG5leHBvcnQgdHlwZSBTZXNzaW9uUmV2b2NhdGlvblN0YXRlID0gJ3Jldm9rZWQnIHwgJ2xpdmUnIHwgJ3VuYXZhaWxhYmxlJztcblxubGV0IHRva2VuUmV2b2NhdGlvblN0b3JlOiBUb2tlblJldm9jYXRpb25TdG9yZSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZWdpc3RlciAob3IgY2xlYXIsIHdpdGggYHVuZGVmaW5lZGApIHRoZSBwcm9jZXNzLXdpZGUgdG9rZW4tcmV2b2NhdGlvbiBzdG9yZS5cbiAqIFdoZW4gdW5zZXQgKHRoZSBkZWZhdWx0KSwgYHJlcXVpcmVBdXRoYCBwZXJmb3JtcyBOTyByZXZvY2F0aW9uIGNoZWNrIChpdCByZWxpZXNcbiAqIG9uIHRoZSBzaG9ydCBhY2Nlc3MtdG9rZW4gVFRMKTsgc2VydmljZXMgb3B0IGluIGF0IGJvb3QgYnkgd2lyaW5nIHRoZWlyIFJlZGlzXG4gKiBjbGllbnQuIFBsYXRmb3JtIGtlZXBzIGl0cyBvd24gTW9uZ28tYmFja2VkIGNoZWNrIGFuZCBuZWVkIG5vdCByZWdpc3RlciBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUb2tlblJldm9jYXRpb25TdG9yZShzdG9yZTogVG9rZW5SZXZvY2F0aW9uU3RvcmUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgdG9rZW5SZXZvY2F0aW9uU3RvcmUgPSBzdG9yZTtcbiAgaWYgKHN0b3JlKSByZXZvY2F0aW9uU3RvcmVNaXNzaW5nV2FybmVkID0gZmFsc2U7IC8vIHJlLWFybSBpZiBhIHN0b3JlIGlzIChyZSlyZWdpc3RlcmVkXG59XG5cbi8qKiBPbmUtc2hvdCBndWFyZCBzbyB0aGUgXCJyZXZvY2F0aW9uIGluYWN0aXZlXCIgd2FybmluZyBkb2Vzbid0IGZsb29kIHRoZSBsb2dzLiAqL1xubGV0IHJldm9jYXRpb25TdG9yZU1pc3NpbmdXYXJuZWQgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiBgZGVjb2RlZGAgaGFzIGJlZW4gcmV2b2tlZCBwZXIgdGhlIHJlZ2lzdGVyZWQgc3RvcmU6IGl0c1xuICogZW1iZWRkZWQgYHRva2VuVmVyc2lvbmAgaXMgc3RyaWN0bHkgYmVoaW5kIHRoZSBzdG9yZSdzIGN1cnJlbnQgdmVyc2lvbi5cbiAqIEZhaWwtb3BlbiDigJQgYW55IHN0b3JlIGVycm9yLCBhIG1pc3NpbmcgZW50cnksIG9yIGEgdG9rZW4vc3RvcmUgd2l0aG91dCBhXG4gKiB1c2FibGUgdmVyc2lvbiB5aWVsZHMgYGZhbHNlYCAoYWxsb3cpLiBOZXZlciB0aHJvd3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzVG9rZW5SZXZva2VkKGRlY29kZWQ6IEp3dFBheWxvYWQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qgc3RvcmUgPSB0b2tlblJldm9jYXRpb25TdG9yZTtcbiAgaWYgKCFzdG9yZSkge1xuICAgIC8vIE1ha2UgdGhlIFwicmV2b2NhdGlvbiBpcyBPRkZcIiBzdGF0ZSBPQlNFUlZBQkxFOiBhIHNlcnZpY2UgdGhhdCB2ZXJpZmllcyB1c2VyXG4gICAgLy8gdG9rZW5zIGJ1dCBmb3Jnb3QgYHNldFRva2VuUmV2b2NhdGlvblN0b3JlKClgIHNpbGVudGx5IGRpc2FibGVzIHRoZSBzZXNzaW9uXG4gICAgLy8ga2lsbC1zd2l0Y2guIFdhcm4gT05DRSAob25seSBmb3IgYSByZXZvY2FibGUgdXNlciB0b2tlbikgc28gYSBtaXNjb25maWd1cmVkXG4gICAgLy8gYm9vdCBzdXJmYWNlcyBpbiB0aGUgbG9ncyBpbnN0ZWFkIG9mIGZhaWxpbmcgb3BlbiBpbnZpc2libHkuXG4gICAgaWYgKCFyZXZvY2F0aW9uU3RvcmVNaXNzaW5nV2FybmVkICYmIGRlY29kZWQuc3ViICYmIHR5cGVvZiBkZWNvZGVkLnRva2VuVmVyc2lvbiA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldm9jYXRpb25TdG9yZU1pc3NpbmdXYXJuZWQgPSB0cnVlO1xuICAgICAgbG9nZ2VyLndhcm4oJ1Rva2VuIHJldm9jYXRpb24gc3RvcmUgTk9UIHJlZ2lzdGVyZWQg4oCUIHJldm9jYXRpb24gY2hlY2tzIGFyZSBJTkFDVElWRSAoc2V0VG9rZW5SZXZvY2F0aW9uU3RvcmUgd2FzIG5ldmVyIGNhbGxlZCk7IHJldm9rZWQvY29tcHJvbWlzZWQgc2Vzc2lvbnMgc3RheSB2YWxpZCB1bnRpbCBuYXR1cmFsIFRUTCcpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHN0b3JlLmlzQ3JlZGVudGlhbFJldm9rZWQpIHtcbiAgICBjb25zdCByZWZzID0gY3JlZGVudGlhbFJldm9jYXRpb25SZWZzKGRlY29kZWQpO1xuICAgIGlmIChyZWZzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoYXdhaXQgc3RvcmUuaXNDcmVkZW50aWFsUmV2b2tlZChyZWZzKSkgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gRmFpbC1vcGVuLCBhcyBiZWxvdy5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFkZWNvZGVkLnN1YiB8fCB0eXBlb2YgZGVjb2RlZC50b2tlblZlcnNpb24gIT09ICdudW1iZXInKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHN0b3JlLmdldEN1cnJlbnRWZXJzaW9uKGRlY29kZWQuc3ViKTtcbiAgICByZXR1cm4gY3VycmVudCAhPT0gbnVsbCAmJiBkZWNvZGVkLnRva2VuVmVyc2lvbiA8IGN1cnJlbnQ7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEZhaWwtb3BlbjogYSByZXZvY2F0aW9uLXN0b3JlIG91dGFnZSBtdXN0IG5vdCBsb2NrIGV2ZXJ5IHVzZXIgb3V0LlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogV2hldGhlciB0aGUgcmVnaXN0ZXJlZCBzdG9yZSBoYXMgYW55dGhpbmcgdG8gc2F5IGFib3V0IHRoaXMgdG9rZW4uICovXG5mdW5jdGlvbiBoYXNSZXZvY2F0aW9uQ2hlY2soZGVjb2RlZDogSnd0UGF5bG9hZCk6IGJvb2xlYW4ge1xuICBjb25zdCBzdG9yZSA9IHRva2VuUmV2b2NhdGlvblN0b3JlO1xuICBpZiAoIXN0b3JlKSByZXR1cm4gZmFsc2U7XG4gIGlmIChkZWNvZGVkLnN1YiAmJiB0eXBlb2YgZGVjb2RlZC50b2tlblZlcnNpb24gPT09ICdudW1iZXInKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuICEhc3RvcmUuaXNDcmVkZW50aWFsUmV2b2tlZCAmJiBjcmVkZW50aWFsUmV2b2NhdGlvblJlZnMoZGVjb2RlZCkgIT09IG51bGw7XG59XG5cbi8qKiBNZXRob2RzIGEgcmVhZC1vbmx5IGltcGVyc29uYXRpb24gdG9rZW4gbWF5IHVzZS4gKi9cbmNvbnN0IElNUEVSU09OQVRJT05fUkVBRF9NRVRIT0RTID0gbmV3IFNldChbJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnXSk7XG5cbi8qKlxuICogV2hldGhlciBhIHJlcXVlc3QgaXMgYSBXUklURSB1bmRlciBhIHJlYWQtb25seSBpbXBlcnNvbmF0aW9uIHRva2VuLiBGYWlsLWNsb3NlZFxuICogb24gYSBtaXNzaW5nIG1ldGhvZDogb25seSBhIHJlcXVlc3QgcG9zaXRpdmVseSBrbm93biB0byBiZSBhIHJlYWQgcGFzc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbXBlcnNvbmF0aW9uV3JpdGVCbG9ja2VkKFxuICBtZXRob2Q6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY2xhaW1zOiBQaWNrPEp3dFBheWxvYWQsICdpbXBlcnNvbmF0aW9uUmVhZE9ubHknPixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW1zLmltcGVyc29uYXRpb25SZWFkT25seSA9PT0gdHJ1ZSAmJiAhSU1QRVJTT05BVElPTl9SRUFEX01FVEhPRFMuaGFzKChtZXRob2QgPz8gJycpLnRvVXBwZXJDYXNlKCkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gaW1wZXJzb25hdGlvbiBzZXNzaW9uJ3MgcmV2b2NhdGlvbiBzdGF0ZS4gTmV2ZXIgdGhyb3dzOiBhbnkgZmFpbHVyZVxuICog4oCUIG5vIHN0b3JlLCBhIHN0b3JlIHRoYXQgY2FuJ3QgYW5zd2VyLCBhIHJlYWQgZXJyb3Ig4oCUIGlzIGB1bmF2YWlsYWJsZWAsIHdoaWNoXG4gKiBjYWxsZXJzIHRyZWF0IGFzIHJldm9rZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNlc3Npb25SZXZvY2F0aW9uU3RhdGUoanRpOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25SZXZvY2F0aW9uU3RhdGU+IHtcbiAgY29uc3Qgc3RvcmUgPSB0b2tlblJldm9jYXRpb25TdG9yZTtcbiAgaWYgKCFzdG9yZT8uZ2V0U2Vzc2lvblJldm9jYXRpb24pIHJldHVybiAndW5hdmFpbGFibGUnO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBzdG9yZS5nZXRTZXNzaW9uUmV2b2NhdGlvbihqdGkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJ3VuYXZhaWxhYmxlJztcbiAgfVxufVxuXG4vKiogQW4gaW1wZXJzb25hdGlvbiBzZXNzaW9uIHRva2VuOiBpdCBuYW1lcyB0aGUgb3BlcmF0b3IgQU5EIGNhcnJpZXMgaXRzIG93biBzZXNzaW9uIGlkLiAqL1xuZnVuY3Rpb24gaXNJbXBlcnNvbmF0aW9uU2Vzc2lvbihkZWNvZGVkOiB7IGltcGVyc29uYXRvcklkPzogdW5rbm93bjsganRpPzogdW5rbm93biB9KTogZGVjb2RlZCBpcyB7IGltcGVyc29uYXRvcklkOiBzdHJpbmc7IGp0aTogc3RyaW5nIH0ge1xuICByZXR1cm4gdHlwZW9mIGRlY29kZWQuaW1wZXJzb25hdG9ySWQgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBkZWNvZGVkLmp0aSA9PT0gJ3N0cmluZycgJiYgZGVjb2RlZC5qdGkubGVuZ3RoID4gMDtcbn1cblxuLyoqXG4gKiBQdWJsaWMgcmV2b2NhdGlvbiBjaGVjayBmb3Igcm91dGVzIHRoYXQgdmVyaWZ5IGEgcGxhdGZvcm0gSldUIE9VVFNJREVcbiAqIGByZXF1aXJlQXV0aGAgKGUuZy4gdGhlIGltYWdlLXJlZ2lzdHJ5IGAvdG9rZW5gIG1pbnQgcGF0aCwgd2hpY2ggcmVzb2x2ZXNcbiAqIGlkZW50aXR5IGl0c2VsZikuIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB0b2tlbidzIGB0b2tlblZlcnNpb25gIGlzIHN0cmljdGx5XG4gKiBiZWhpbmQgdGhlIHN0b3JlJ3MgY3VycmVudCB2ZXJzaW9uLiBGYWlsLW9wZW4gKG5ldmVyIHRocm93cykg4oCUIGEgc3RvcmUgb3V0YWdlXG4gKiBvciBhIHRva2VuL3N0b3JlIHdpdGhvdXQgYSB1c2FibGUgdmVyc2lvbiB5aWVsZHMgZmFsc2UgKGFsbG93KSwgbWF0Y2hpbmdcbiAqIGByZXF1aXJlQXV0aGAuIFBhc3MgdGhlIHZlcmlmaWVkIEpXVCBjbGFpbXMgKGBzdWJgLCBgdG9rZW5WZXJzaW9uYCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0FjY2Vzc1Rva2VuUmV2b2tlZChcbiAgY2xhaW1zOiB7XG4gICAgc3ViPzogc3RyaW5nO1xuICAgIHRva2VuVmVyc2lvbj86IG51bWJlcjtcbiAgICBqdGk/OiBzdHJpbmc7XG4gICAgaW1wZXJzb25hdG9ySWQ/OiBzdHJpbmc7XG4gICAgc2lkPzogc3RyaW5nO1xuICAgIHBhcmVudEtleUlkPzogc3RyaW5nO1xuICAgIHRva2VuX3VzZT86IEp3dFBheWxvYWRbJ3Rva2VuX3VzZSddO1xuICB9LFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIC8vIEFuIGltcGVyc29uYXRpb24gc2Vzc2lvbiBpcyByZXZva2VkIHVubGVzcyB0aGUgc3RvcmUgcG9zaXRpdmVseSBzYXlzIGxpdmUg4oCUXG4gIC8vIGluY2x1ZGluZyBvbiB0aGlzIG91dC1vZi1iYW5kIHBhdGgsIG9yIGEgcmV2b2tlZCBzZXNzaW9uIGNvdWxkIHN0aWxsIG1pbnRcbiAgLy8gcmVnaXN0cnkgdG9rZW5zLlxuICBpZiAoaXNJbXBlcnNvbmF0aW9uU2Vzc2lvbihjbGFpbXMpICYmIGF3YWl0IHNlc3Npb25SZXZvY2F0aW9uU3RhdGUoY2xhaW1zLmp0aSkgIT09ICdsaXZlJykgcmV0dXJuIHRydWU7XG4gIHJldHVybiBpc1Rva2VuUmV2b2tlZChjbGFpbXMgYXMgdW5rbm93biBhcyBKd3RQYXlsb2FkKTtcbn1cblxuXG4vKiogV2hldGhlciBgcmVxdWlyZUF1dGhgIG11c3QgY29uc3VsdCB0aGUgcmV2b2NhdGlvbiBzdG9yZXMgZm9yIHRoaXMgdG9rZW4uICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNSZXZvY2F0aW9uQ2hlY2soZGVjb2RlZDogSnd0UGF5bG9hZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNJbXBlcnNvbmF0aW9uU2Vzc2lvbihkZWNvZGVkKSB8fCBoYXNSZXZvY2F0aW9uQ2hlY2soZGVjb2RlZCk7XG59XG5cbi8qKlxuICogVGhlIHBvc3QtdmVyaWZpY2F0aW9uIHNlc3Npb24taW52YWxpZGF0aW9uIGNoZWNrLiBSZXR1cm5zIHRoZSByZWZ1c2FsXG4gKiBtZXNzYWdlLCBvciBgbnVsbGAgd2hlbiB0aGUgc2Vzc2lvbiBpcyBsaXZlLiBBbiBpbXBlcnNvbmF0aW9uIHNlc3Npb24gaXNcbiAqIGNoZWNrZWQgZXZlbiB3aGVuIE5PIHN0b3JlIGlzIHJlZ2lzdGVyZWQ6IHRoZXJlLCBubyBzdG9yZSDih5IgdW5hdmFpbGFibGUg4oeSXG4gKiByZWZ1c2VkIChzZWUgYFRva2VuUmV2b2NhdGlvblN0b3JlLmdldFNlc3Npb25SZXZvY2F0aW9uYCk7IHRoZSB0b2tlblZlcnNpb25cbiAqIGNoZWNrIGlzIGEgbm8tb3Agd2l0aG91dCBhIHN0b3JlIGFuZCBmYWlscyBvcGVuIG9uIGEgc3RvcmUgZXJyb3IuIE5ldmVyIHJlamVjdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja1Jldm9jYXRpb24oZGVjb2RlZDogSnd0UGF5bG9hZCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBpZiAoaXNJbXBlcnNvbmF0aW9uU2Vzc2lvbihkZWNvZGVkKSkge1xuICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgc2Vzc2lvblJldm9jYXRpb25TdGF0ZShkZWNvZGVkLmp0aSk7XG4gICAgaWYgKHN0YXRlICE9PSAnbGl2ZScpIHtcbiAgICAgIHJldHVybiBzdGF0ZSA9PT0gJ3Jldm9rZWQnXG4gICAgICAgID8gJ1RoaXMgaW1wZXJzb25hdGlvbiBzZXNzaW9uIGhhcyBiZWVuIGVuZGVkJ1xuICAgICAgICA6ICdUaGlzIGltcGVyc29uYXRpb24gc2Vzc2lvbiBjb3VsZCBub3QgYmUgdmVyaWZpZWQnO1xuICAgIH1cbiAgfVxuICBpZiAoaGFzUmV2b2NhdGlvbkNoZWNrKGRlY29kZWQpICYmIGF3YWl0IGlzVG9rZW5SZXZva2VkKGRlY29kZWQpKSB7XG4gICAgcmV0dXJuICdTZXNzaW9uIGhhcyBiZWVuIHJldm9rZWQ7IHBsZWFzZSBzaWduIGluIGFnYWluJztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==