@aerokit/sdk 12.81.0 → 12.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/cjs/bpm/deployer.js +1 -1
  2. package/dist/cjs/bpm/index.js +1 -1
  3. package/dist/cjs/bpm/process.js +1 -1
  4. package/dist/cjs/bpm/tasks.js +1 -1
  5. package/dist/cjs/bpm/tracer.js +1 -1
  6. package/dist/cjs/bpm/values.js +1 -1
  7. package/dist/cjs/cache/cache.js +1 -1
  8. package/dist/cjs/cache/index.js +1 -1
  9. package/dist/cjs/cms/cmis.js +1 -1
  10. package/dist/cjs/cms/index.js +1 -1
  11. package/dist/cjs/component/decorators.js +1 -1
  12. package/dist/cjs/component/index.js +1 -1
  13. package/dist/cjs/core/configurations.js +1 -1
  14. package/dist/cjs/core/context.js +1 -1
  15. package/dist/cjs/core/env.js +1 -1
  16. package/dist/cjs/core/globals.js +1 -1
  17. package/dist/cjs/core/index.js +1 -1
  18. package/dist/cjs/db/dao.js +1 -1
  19. package/dist/cjs/db/database.js +1 -1
  20. package/dist/cjs/db/decorators.js +1 -1
  21. package/dist/cjs/db/index.js +1 -1
  22. package/dist/cjs/db/insert.js +1 -1
  23. package/dist/cjs/db/orm.js +1 -1
  24. package/dist/cjs/db/ormstatements.js +1 -1
  25. package/dist/cjs/db/procedure.js +1 -1
  26. package/dist/cjs/db/query.js +1 -1
  27. package/dist/cjs/db/repository.js +1 -1
  28. package/dist/cjs/db/sequence.js +1 -1
  29. package/dist/cjs/db/sql.js +1 -1
  30. package/dist/cjs/db/store.js +1 -1
  31. package/dist/cjs/db/translator.js +1 -1
  32. package/dist/cjs/db/update.js +1 -1
  33. package/dist/cjs/etcd/client.js +1 -1
  34. package/dist/cjs/etcd/index.js +1 -1
  35. package/dist/cjs/extensions/decorators.js +1 -1
  36. package/dist/cjs/extensions/extensions.js +1 -1
  37. package/dist/cjs/extensions/index.js +1 -1
  38. package/dist/cjs/git/client.js +1 -1
  39. package/dist/cjs/git/index.js +1 -1
  40. package/dist/cjs/http/client-async.js +1 -1
  41. package/dist/cjs/http/client.js +1 -1
  42. package/dist/cjs/http/decorators.js +1 -1
  43. package/dist/cjs/http/errors/ForbiddenError.js +1 -1
  44. package/dist/cjs/http/errors/ValidationError.js +1 -1
  45. package/dist/cjs/http/errors.js +1 -1
  46. package/dist/cjs/http/index.js +1 -1
  47. package/dist/cjs/http/request.js +1 -1
  48. package/dist/cjs/http/response.js +1 -1
  49. package/dist/cjs/http/rs/resource-http-controller.js +1 -1
  50. package/dist/cjs/http/rs/resource-mappings.js +1 -1
  51. package/dist/cjs/http/rs/resource-method.js +1 -1
  52. package/dist/cjs/http/rs/resource.js +1 -1
  53. package/dist/cjs/http/rs.js +1 -1
  54. package/dist/cjs/http/session.js +1 -1
  55. package/dist/cjs/http/upload.js +1 -1
  56. package/dist/cjs/http/utils.js +1 -1
  57. package/dist/cjs/indexing/index.js +1 -1
  58. package/dist/cjs/indexing/searcher.js +1 -1
  59. package/dist/cjs/indexing/writer.js +1 -1
  60. package/dist/cjs/integrations/index.js +1 -1
  61. package/dist/cjs/integrations/integrations.js +1 -1
  62. package/dist/cjs/io/bytes.js +1 -1
  63. package/dist/cjs/io/files.js +1 -1
  64. package/dist/cjs/io/image.js +1 -1
  65. package/dist/cjs/io/index.js +1 -1
  66. package/dist/cjs/io/streams.js +1 -1
  67. package/dist/cjs/io/zip.js +1 -1
  68. package/dist/cjs/job/decorators.js +1 -1
  69. package/dist/cjs/job/index.js +1 -1
  70. package/dist/cjs/job/scheduler.js +1 -1
  71. package/dist/cjs/junit/index.js +1 -1
  72. package/dist/cjs/junit/junit.js +1 -1
  73. package/dist/cjs/kafka/consumer.js +1 -1
  74. package/dist/cjs/kafka/index.js +1 -1
  75. package/dist/cjs/kafka/producer.js +1 -1
  76. package/dist/cjs/log/index.js +1 -1
  77. package/dist/cjs/log/logging.js +1 -1
  78. package/dist/cjs/mail/client.js +1 -1
  79. package/dist/cjs/mail/index.js +1 -1
  80. package/dist/cjs/messaging/consumer.js +1 -1
  81. package/dist/cjs/messaging/decorators.js +1 -1
  82. package/dist/cjs/messaging/index.js +1 -1
  83. package/dist/cjs/messaging/producer.js +1 -1
  84. package/dist/cjs/mongodb/client.js +1 -1
  85. package/dist/cjs/mongodb/dao.js +1 -1
  86. package/dist/cjs/mongodb/index.js +1 -1
  87. package/dist/cjs/net/decorators.js +1 -1
  88. package/dist/cjs/net/index.js +1 -1
  89. package/dist/cjs/net/soap.js +1 -1
  90. package/dist/cjs/net/websockets.js +1 -1
  91. package/dist/cjs/pdf/index.js +1 -1
  92. package/dist/cjs/pdf/pdf.js +3 -3
  93. package/dist/cjs/platform/command.js +1 -1
  94. package/dist/cjs/platform/engines.js +1 -1
  95. package/dist/cjs/platform/index.js +1 -1
  96. package/dist/cjs/platform/lifecycle.js +1 -1
  97. package/dist/cjs/platform/os.js +1 -1
  98. package/dist/cjs/platform/problems.js +1 -1
  99. package/dist/cjs/platform/registry.js +1 -1
  100. package/dist/cjs/platform/repository.js +1 -1
  101. package/dist/cjs/platform/workspace.js +1 -1
  102. package/dist/cjs/qldb/index.js +1 -1
  103. package/dist/cjs/qldb/qldb.js +1 -1
  104. package/dist/cjs/rabbitmq/consumer.js +1 -1
  105. package/dist/cjs/rabbitmq/index.js +1 -1
  106. package/dist/cjs/rabbitmq/producer.js +1 -1
  107. package/dist/cjs/redis/client.js +1 -1
  108. package/dist/cjs/redis/index.js +1 -1
  109. package/dist/cjs/security/decorators.js +1 -1
  110. package/dist/cjs/security/index.js +1 -1
  111. package/dist/cjs/security/oauth.js +1 -1
  112. package/dist/cjs/security/user.js +1 -1
  113. package/dist/cjs/template/engines.js +1 -1
  114. package/dist/cjs/template/index.js +1 -1
  115. package/dist/cjs/utils/alphanumeric.js +2 -2
  116. package/dist/cjs/utils/base64.js +1 -1
  117. package/dist/cjs/utils/converter.js +1 -1
  118. package/dist/cjs/utils/digest.js +1 -1
  119. package/dist/cjs/utils/escape.js +1 -1
  120. package/dist/cjs/utils/hex.js +1 -1
  121. package/dist/cjs/utils/index.js +1 -1
  122. package/dist/cjs/utils/jsonpath.js +1 -1
  123. package/dist/cjs/utils/qrcode.js +1 -1
  124. package/dist/cjs/utils/url.js +1 -1
  125. package/dist/cjs/utils/utf8.js +1 -1
  126. package/dist/cjs/utils/uuid.js +1 -1
  127. package/dist/cjs/utils/xml.js +1 -1
  128. package/dist/dts/bpm/deployer.d.ts +35 -3
  129. package/dist/dts/bpm/index.d.ts +14 -0
  130. package/dist/dts/bpm/process.d.ts +28 -3
  131. package/dist/dts/bpm/tasks.d.ts +32 -1
  132. package/dist/dts/bpm/tracer.d.ts +35 -0
  133. package/dist/dts/bpm/values.d.ts +17 -3
  134. package/dist/dts/cache/cache.d.ts +38 -0
  135. package/dist/dts/cache/index.d.ts +10 -0
  136. package/dist/dts/cms/cmis.d.ts +28 -3
  137. package/dist/dts/cms/index.d.ts +10 -0
  138. package/dist/dts/component/decorators.d.ts +35 -5
  139. package/dist/dts/component/index.d.ts +10 -0
  140. package/dist/dts/core/configurations.d.ts +43 -4
  141. package/dist/dts/core/context.d.ts +35 -2
  142. package/dist/dts/core/env.d.ts +29 -2
  143. package/dist/dts/core/globals.d.ts +34 -2
  144. package/dist/dts/core/index.d.ts +13 -0
  145. package/dist/dts/db/database.d.ts +34 -0
  146. package/dist/dts/db/decorators.d.ts +55 -2
  147. package/dist/dts/db/index.d.ts +19 -0
  148. package/dist/dts/db/orm.d.ts +43 -0
  149. package/dist/dts/db/procedure.d.ts +37 -0
  150. package/dist/dts/db/query.d.ts +25 -1
  151. package/dist/dts/db/repository.d.ts +52 -0
  152. package/dist/dts/db/sequence.d.ts +31 -2
  153. package/dist/dts/db/sql.d.ts +33 -0
  154. package/dist/dts/db/store.d.ts +27 -0
  155. package/dist/dts/db/translator.d.ts +34 -1
  156. package/dist/dts/db/update.d.ts +38 -0
  157. package/dist/dts/etcd/client.d.ts +36 -0
  158. package/dist/dts/etcd/index.d.ts +10 -0
  159. package/dist/dts/extensions/decorators.d.ts +28 -0
  160. package/dist/dts/extensions/extensions.d.ts +30 -1
  161. package/dist/dts/extensions/index.d.ts +11 -0
  162. package/dist/dts/git/client.d.ts +28 -0
  163. package/dist/dts/git/index.d.ts +10 -0
  164. package/dist/dts/http/client-async.d.ts +29 -1
  165. package/dist/dts/http/client.d.ts +29 -1
  166. package/dist/dts/http/decorators.d.ts +38 -0
  167. package/dist/dts/http/errors/ForbiddenError.d.ts +6 -2
  168. package/dist/dts/http/errors/ValidationError.d.ts +6 -2
  169. package/dist/dts/http/errors.d.ts +14 -0
  170. package/dist/dts/http/index.d.ts +18 -0
  171. package/dist/dts/http/request.d.ts +30 -3
  172. package/dist/dts/http/response.d.ts +40 -3
  173. package/dist/dts/http/rs/resource-mappings.d.ts +30 -0
  174. package/dist/dts/http/rs.d.ts +38 -0
  175. package/dist/dts/http/session.d.ts +34 -3
  176. package/dist/dts/http/upload.d.ts +27 -2
  177. package/dist/dts/http/utils.d.ts +42 -0
  178. package/dist/dts/indexing/index.d.ts +11 -0
  179. package/dist/dts/indexing/searcher.d.ts +35 -2
  180. package/dist/dts/indexing/writer.d.ts +23 -2
  181. package/dist/dts/integrations/index.d.ts +10 -0
  182. package/dist/dts/integrations/integrations.d.ts +27 -3
  183. package/dist/dts/io/bytes.d.ts +33 -2
  184. package/dist/dts/io/files.d.ts +34 -2
  185. package/dist/dts/io/image.d.ts +27 -2
  186. package/dist/dts/io/index.d.ts +14 -0
  187. package/dist/dts/io/streams.d.ts +40 -0
  188. package/dist/dts/io/zip.d.ts +32 -0
  189. package/dist/dts/job/decorators.d.ts +29 -0
  190. package/dist/dts/job/index.d.ts +11 -0
  191. package/dist/dts/job/scheduler.d.ts +33 -2
  192. package/dist/dts/junit/index.d.ts +10 -0
  193. package/dist/dts/junit/junit.d.ts +31 -0
  194. package/dist/dts/kafka/consumer.d.ts +31 -0
  195. package/dist/dts/kafka/index.d.ts +11 -0
  196. package/dist/dts/kafka/producer.d.ts +31 -0
  197. package/dist/dts/log/index.d.ts +10 -0
  198. package/dist/dts/log/logging.d.ts +32 -0
  199. package/dist/dts/mail/client.d.ts +27 -0
  200. package/dist/dts/mail/index.d.ts +10 -0
  201. package/dist/dts/messaging/consumer.d.ts +29 -2
  202. package/dist/dts/messaging/decorators.d.ts +32 -0
  203. package/dist/dts/messaging/index.d.ts +12 -0
  204. package/dist/dts/messaging/producer.d.ts +27 -2
  205. package/dist/dts/mongodb/client.d.ts +37 -0
  206. package/dist/dts/mongodb/dao.d.ts +53 -0
  207. package/dist/dts/mongodb/index.d.ts +11 -0
  208. package/dist/dts/net/decorators.d.ts +27 -0
  209. package/dist/dts/net/index.d.ts +13 -0
  210. package/dist/dts/net/soap.d.ts +34 -0
  211. package/dist/dts/net/websockets.d.ts +34 -0
  212. package/dist/dts/pdf/index.d.ts +10 -0
  213. package/dist/dts/pdf/pdf.d.ts +41 -2
  214. package/dist/dts/platform/command.d.ts +26 -0
  215. package/dist/dts/platform/engines.d.ts +38 -0
  216. package/dist/dts/platform/index.d.ts +19 -0
  217. package/dist/dts/platform/lifecycle.d.ts +29 -0
  218. package/dist/dts/platform/os.d.ts +30 -0
  219. package/dist/dts/platform/problems.d.ts +36 -0
  220. package/dist/dts/platform/registry.d.ts +39 -0
  221. package/dist/dts/platform/repository.d.ts +40 -0
  222. package/dist/dts/platform/workspace.d.ts +42 -0
  223. package/dist/dts/qldb/index.d.ts +12 -0
  224. package/dist/dts/qldb/qldb.d.ts +14 -0
  225. package/dist/dts/rabbitmq/consumer.d.ts +24 -3
  226. package/dist/dts/rabbitmq/index.d.ts +13 -0
  227. package/dist/dts/rabbitmq/producer.d.ts +20 -3
  228. package/dist/dts/redis/client.d.ts +31 -3
  229. package/dist/dts/redis/index.d.ts +12 -0
  230. package/dist/dts/security/decorators.d.ts +34 -0
  231. package/dist/dts/security/index.d.ts +14 -0
  232. package/dist/dts/security/oauth.d.ts +27 -0
  233. package/dist/dts/security/user.d.ts +39 -0
  234. package/dist/dts/template/engines.d.ts +31 -0
  235. package/dist/dts/template/index.d.ts +12 -0
  236. package/dist/dts/utils/alphanumeric.d.ts +36 -2
  237. package/dist/dts/utils/base64.d.ts +30 -0
  238. package/dist/dts/utils/converter.d.ts +37 -2
  239. package/dist/dts/utils/digest.d.ts +31 -0
  240. package/dist/dts/utils/escape.d.ts +28 -3
  241. package/dist/dts/utils/hex.d.ts +30 -0
  242. package/dist/dts/utils/index.d.ts +23 -0
  243. package/dist/dts/utils/jsonpath.d.ts +43 -0
  244. package/dist/dts/utils/qrcode.d.ts +24 -3
  245. package/dist/dts/utils/url.d.ts +37 -3
  246. package/dist/dts/utils/utf8.d.ts +34 -3
  247. package/dist/dts/utils/uuid.d.ts +28 -2
  248. package/dist/dts/utils/xml.d.ts +31 -2
  249. package/dist/esm/bpm/deployer.mjs +1 -1
  250. package/dist/esm/bpm/index.mjs +1 -1
  251. package/dist/esm/bpm/process.mjs +1 -1
  252. package/dist/esm/bpm/tasks.mjs +1 -1
  253. package/dist/esm/bpm/tracer.mjs +1 -1
  254. package/dist/esm/bpm/values.mjs +1 -1
  255. package/dist/esm/cache/cache.mjs +1 -1
  256. package/dist/esm/cache/index.mjs +1 -1
  257. package/dist/esm/cms/cmis.mjs +1 -1
  258. package/dist/esm/cms/index.mjs +1 -1
  259. package/dist/esm/component/decorators.mjs +1 -1
  260. package/dist/esm/component/index.mjs +1 -1
  261. package/dist/esm/core/configurations.mjs +1 -1
  262. package/dist/esm/core/context.mjs +1 -1
  263. package/dist/esm/core/env.mjs +1 -1
  264. package/dist/esm/core/globals.mjs +1 -1
  265. package/dist/esm/core/index.mjs +1 -1
  266. package/dist/esm/db/dao.mjs +1 -1
  267. package/dist/esm/db/database.mjs +1 -1
  268. package/dist/esm/db/decorators.mjs +1 -1
  269. package/dist/esm/db/index.mjs +1 -1
  270. package/dist/esm/db/insert.mjs +1 -1
  271. package/dist/esm/db/orm.mjs +1 -1
  272. package/dist/esm/db/ormstatements.mjs +1 -1
  273. package/dist/esm/db/procedure.mjs +1 -1
  274. package/dist/esm/db/query.mjs +1 -1
  275. package/dist/esm/db/repository.mjs +1 -1
  276. package/dist/esm/db/sequence.mjs +1 -1
  277. package/dist/esm/db/sql.mjs +1 -1
  278. package/dist/esm/db/store.mjs +1 -1
  279. package/dist/esm/db/translator.mjs +1 -1
  280. package/dist/esm/db/update.mjs +1 -1
  281. package/dist/esm/etcd/client.mjs +1 -1
  282. package/dist/esm/etcd/index.mjs +1 -1
  283. package/dist/esm/extensions/decorators.mjs +1 -1
  284. package/dist/esm/extensions/extensions.mjs +1 -1
  285. package/dist/esm/extensions/index.mjs +1 -1
  286. package/dist/esm/git/client.mjs +1 -1
  287. package/dist/esm/git/index.mjs +1 -1
  288. package/dist/esm/http/client-async.mjs +1 -1
  289. package/dist/esm/http/client.mjs +1 -1
  290. package/dist/esm/http/decorators.mjs +1 -1
  291. package/dist/esm/http/errors/ForbiddenError.mjs +1 -1
  292. package/dist/esm/http/errors/ValidationError.mjs +1 -1
  293. package/dist/esm/http/errors.mjs +1 -1
  294. package/dist/esm/http/index.mjs +1 -1
  295. package/dist/esm/http/request.mjs +1 -1
  296. package/dist/esm/http/response.mjs +1 -1
  297. package/dist/esm/http/rs/resource-http-controller.mjs +1 -1
  298. package/dist/esm/http/rs/resource-mappings.mjs +1 -1
  299. package/dist/esm/http/rs/resource-method.mjs +1 -1
  300. package/dist/esm/http/rs/resource.mjs +1 -1
  301. package/dist/esm/http/rs.mjs +1 -1
  302. package/dist/esm/http/session.mjs +1 -1
  303. package/dist/esm/http/upload.mjs +1 -1
  304. package/dist/esm/http/utils.mjs +1 -1
  305. package/dist/esm/indexing/index.mjs +1 -1
  306. package/dist/esm/indexing/searcher.mjs +1 -1
  307. package/dist/esm/indexing/writer.mjs +1 -1
  308. package/dist/esm/integrations/index.mjs +1 -1
  309. package/dist/esm/integrations/integrations.mjs +1 -1
  310. package/dist/esm/io/bytes.mjs +1 -1
  311. package/dist/esm/io/files.mjs +1 -1
  312. package/dist/esm/io/image.mjs +1 -1
  313. package/dist/esm/io/index.mjs +1 -1
  314. package/dist/esm/io/streams.mjs +1 -1
  315. package/dist/esm/io/zip.mjs +1 -1
  316. package/dist/esm/job/decorators.mjs +1 -1
  317. package/dist/esm/job/index.mjs +1 -1
  318. package/dist/esm/job/scheduler.mjs +1 -1
  319. package/dist/esm/junit/index.mjs +1 -1
  320. package/dist/esm/junit/junit.mjs +1 -1
  321. package/dist/esm/kafka/consumer.mjs +1 -1
  322. package/dist/esm/kafka/index.mjs +1 -1
  323. package/dist/esm/kafka/producer.mjs +1 -1
  324. package/dist/esm/log/index.mjs +1 -1
  325. package/dist/esm/log/logging.mjs +1 -1
  326. package/dist/esm/mail/client.mjs +1 -1
  327. package/dist/esm/mail/index.mjs +1 -1
  328. package/dist/esm/messaging/consumer.mjs +1 -1
  329. package/dist/esm/messaging/decorators.mjs +1 -1
  330. package/dist/esm/messaging/index.mjs +1 -1
  331. package/dist/esm/messaging/producer.mjs +1 -1
  332. package/dist/esm/mongodb/client.mjs +2 -2
  333. package/dist/esm/mongodb/dao.mjs +1 -1
  334. package/dist/esm/mongodb/index.mjs +1 -1
  335. package/dist/esm/net/decorators.mjs +1 -1
  336. package/dist/esm/net/index.mjs +1 -1
  337. package/dist/esm/net/soap.mjs +1 -1
  338. package/dist/esm/net/websockets.mjs +1 -1
  339. package/dist/esm/pdf/index.mjs +1 -1
  340. package/dist/esm/pdf/pdf.mjs +3 -3
  341. package/dist/esm/platform/command.mjs +1 -1
  342. package/dist/esm/platform/engines.mjs +1 -1
  343. package/dist/esm/platform/index.mjs +1 -1
  344. package/dist/esm/platform/lifecycle.mjs +1 -1
  345. package/dist/esm/platform/os.mjs +1 -1
  346. package/dist/esm/platform/problems.mjs +1 -1
  347. package/dist/esm/platform/registry.mjs +1 -1
  348. package/dist/esm/platform/repository.mjs +1 -1
  349. package/dist/esm/platform/workspace.mjs +1 -1
  350. package/dist/esm/qldb/index.mjs +1 -1
  351. package/dist/esm/qldb/qldb.mjs +1 -1
  352. package/dist/esm/rabbitmq/consumer.mjs +1 -1
  353. package/dist/esm/rabbitmq/index.mjs +1 -1
  354. package/dist/esm/rabbitmq/producer.mjs +1 -1
  355. package/dist/esm/redis/client.mjs +1 -1
  356. package/dist/esm/redis/index.mjs +1 -1
  357. package/dist/esm/security/decorators.mjs +1 -1
  358. package/dist/esm/security/index.mjs +1 -1
  359. package/dist/esm/security/oauth.mjs +1 -1
  360. package/dist/esm/security/user.mjs +1 -1
  361. package/dist/esm/template/engines.mjs +1 -1
  362. package/dist/esm/template/index.mjs +1 -1
  363. package/dist/esm/utils/alphanumeric.mjs +2 -2
  364. package/dist/esm/utils/base64.mjs +1 -1
  365. package/dist/esm/utils/converter.mjs +1 -1
  366. package/dist/esm/utils/digest.mjs +1 -1
  367. package/dist/esm/utils/escape.mjs +1 -1
  368. package/dist/esm/utils/hex.mjs +1 -1
  369. package/dist/esm/utils/index.mjs +1 -1
  370. package/dist/esm/utils/jsonpath.mjs +1 -1
  371. package/dist/esm/utils/qrcode.mjs +1 -1
  372. package/dist/esm/utils/url.mjs +1 -1
  373. package/dist/esm/utils/utf8.mjs +1 -1
  374. package/dist/esm/utils/uuid.mjs +1 -1
  375. package/dist/esm/utils/xml.mjs +1 -1
  376. package/package.json +1 -1
@@ -516,4 +516,4 @@ class DropSequenceBuilder extends AbstractSQLBuilder {
516
516
  if (typeof module !== "undefined") {
517
517
  module.exports = SQLBuilder;
518
518
  }
519
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3NxbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbi8vIEFzc3VtZWQgaW1wb3J0cyBmb3IgdGhlIG5hdGl2ZSBKYXZhIEFQSSBjYWxsc1xuY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIik7XG5jb25zdCBEYXRhVHlwZUVudW0gPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuZGF0YWJhc2Uuc3FsLkRhdGFUeXBlXCIpO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgcmVwcmVzZW50aW5nIGFsbCBzdXBwb3J0ZWQgU1FMIGRhdGEgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFUeXBlID1cblx0XCJWQVJDSEFSXCJcblx0fCBcIlRFWFRcIlxuXHR8IFwiQ0hBUlwiXG5cdHwgXCJEQVRFXCJcblx0fCBcIlNFQ09ORERBVEVcIlxuXHR8IFwiVElNRVwiXG5cdHwgXCJEQVRFVElNRVwiXG5cdHwgXCJUSU1FU1RBTVBcIlxuXHR8IFwiSU5URUdFUlwiXG5cdHwgXCJJTlRcIlxuXHR8IFwiVElOWUlOVFwiXG5cdHwgXCJCSUdJTlRcIlxuXHR8IFwiU01BTExJTlRcIlxuXHR8IFwiUkVBTFwiXG5cdHwgXCJET1VCTEVcIlxuXHR8IFwiRE9VQkxFIFBSRUNJU0lPXCJcblx0fCBcIkJPT0xFQU5cIlxuXHR8IFwiQkxPQlwiXG5cdHwgXCJERUNJTUFMXCJcblx0fCBcIkJJVFwiXG5cdHwgXCJOVkFSQ0hBUlwiXG5cdHwgXCJGTE9BVFwiXG5cdHwgXCJCWVRFXCJcblx0fCBcIk5DTE9CXCJcblx0fCBcIkFSUkFZXCJcblx0fCBcIlZBUkJJTkFSWVwiXG5cdHwgXCJCSU5BUlkgVkFSWUlOXCJcblx0fCBcIlNIT1JUVEVYVFwiXG5cdHwgXCJBTFBIQU5VTVwiXG5cdHwgXCJDTE9CXCJcblx0fCBcIlNNQUxMREVDSU1BTFwiXG5cdHwgXCJCSU5BUllcIlxuXHR8IFwiU1RfUE9JTlRcIlxuXHR8IFwiU1RfR0VPTUVUUllcIlxuXHR8IFwiQ0hBUkFDVEVSIFZBUllJTlwiXG5cdHwgXCJCSU5BUlkgTEFSRyBPQkpFQ1RcIlxuXHR8IFwiQ0hBUkFDVEVSIExBUkcgT0JKRUNUXCJcblx0fCBcIkNIQVJBQ1RFUlwiXG5cdHwgXCJOQ0hBUlwiXG5cdHwgXCJOVU1FUklDXCI7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIFNRTCBidWlsZGVycy4gSGFuZGxlcyBjb25uZWN0aW9uLCBuYXRpdmUgZmFjYWRlLFxuICogYW5kIHBhcmFtZXRlciBjb2xsZWN0aW9uLlxuICovXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdHB1YmxpYyByZWFkb25seSBwYXJhbXM6IGFueVtdID0gW107XG5cdHByb3RlY3RlZCByZWFkb25seSBjb25uZWN0aW9uPzogQ29ubmVjdGlvbjtcblx0cHJvdGVjdGVkIG5hdGl2ZTogYW55OyAvLyBUaGUgdW5kZXJseWluZyBKYXZhIFNRTCBCdWlsZGVyIG9iamVjdFxuXG5cdGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0dGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcblx0XHQvLyBJbml0aWFsaXplIHRoZSBuYXRpdmUgYnVpbGRlciBmcm9tIHRoZSBmYWNhZGVcblx0XHR0aGlzLm5hdGl2ZSA9IGNvbm5lY3Rpb24gPyBEYXRhYmFzZUZhY2FkZS5nZXROYXRpdmUoKGNvbm5lY3Rpb24gYXMgYW55KS5uYXRpdmUpIDogRGF0YWJhc2VGYWNhZGUuZ2V0RGVmYXVsdCgpO1xuXHRcdHRoaXMubmF0aXZlID0gdGhpcy5wcmVwYXJlQnVpbGRlcih0aGlzLm5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogSG9vayBmb3Igc3ViY2xhc3NlcyB0byBzZXQgdXAgdGhlIG5hdGl2ZSBidWlsZGVyIG9iamVjdCAoZS5nLiwgY2FsbGluZyAuc2VsZWN0KCkpLlxuXHQgKi9cblx0cHJvdGVjdGVkIHByZXBhcmVCdWlsZGVyKGJ1aWxkZXI6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIGJ1aWxkZXI7XG5cdH1cblxuXHRwdWJsaWMgcGFyYW1ldGVycygpOiBhbnlbXSB7XG5cdFx0cmV0dXJuIHRoaXMucGFyYW1zO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgcGFyYW1ldGVyKHMpIHRvIHRoZSBpbnRlcm5hbCBsaXN0LiBIYW5kbGVzIHNpbmdsZSB2YWx1ZXMgYW5kIGFycmF5cyBvZiB2YWx1ZXMuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYWRkUGFyYW1ldGVyKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm47IC8vIERvIG5vdCBhZGQgdW5kZWZpbmVkL251bGwgdW5sZXNzIGV4cGxpY2l0bHkgYW4gYXJyYXlcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR0aGlzLnBhcmFtcy5wdXNoKC4uLnZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5wYXJhbXMucHVzaCh2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbmQgcmV0dXJucyB0aGUgZmluYWwgU1FMIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBidWlsZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5idWlsZCgpO1xuXHR9XG59XG5cbi8qKlxuICogTWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIFNRTCBCdWlsZGVyLiBBY3RzIGFzIGEgZmFjdG9yeSBmb3Igc3BlY2lmaWMgYnVpbGRlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTUUxCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RTUUxCdWlsZGVyIHtcblxuXHQvKipcblx0ICogRmFjdG9yeSBtZXRob2QgdG8gZ2V0IGEgZGlhbGVjdC1zcGVjaWZpYyBTUUxCdWlsZGVyIGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXREaWFsZWN0KGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKTogU1FMQnVpbGRlciB7XG5cdFx0cmV0dXJuIG5ldyBTUUxCdWlsZGVyKGNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIHNlbGVjdCgpOiBTZWxlY3RCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IFNlbGVjdEJ1aWxkZXIodGhpcy5jb25uZWN0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBpbnNlcnQoKTogSW5zZXJ0QnVpbGRlciB7XG5cdFx0cmV0dXJuIG5ldyBJbnNlcnRCdWlsZGVyKHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlKCk6IFVwZGF0ZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgVXBkYXRlQnVpbGRlcih0aGlzLmNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIGRlbGV0ZSgpOiBEZWxldGVCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IERlbGV0ZUJ1aWxkZXIodGhpcy5jb25uZWN0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBuZXh0dmFsKG5hbWU6IHN0cmluZyk6IE5leHR2YWxCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IE5leHR2YWxCdWlsZGVyKG5hbWUsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlKCk6IENyZWF0ZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgQ3JlYXRlQnVpbGRlcih0aGlzLmNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIGRyb3AoKTogRHJvcEJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgRHJvcEJ1aWxkZXIodGhpcy5jb25uZWN0aW9uKTtcblx0fVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2VsZWN0QnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHJvdGVjdGVkIHByZXBhcmVCdWlsZGVyKGJ1aWxkZXI6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIGJ1aWxkZXIuc2VsZWN0KCk7XG5cdH1cblxuXHRwdWJsaWMgZGlzdGluY3QoKTogU2VsZWN0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuZGlzdGluY3QoKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmb3JVcGRhdGUoKTogU2VsZWN0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuZm9yVXBkYXRlKCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgY29sdW1uKGNvbHVtbjogc3RyaW5nKTogU2VsZWN0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uKGNvbHVtbik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZnJvbSh0YWJsZTogc3RyaW5nLCBhbGlhcz86IHN0cmluZyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmZyb20odGFibGUsIGFsaWFzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIE5PVEU6IFRoZSBvcmlnaW5hbCBKUyBsb2dpYyBmb3IgcGFyYW1ldGVyIGhhbmRsaW5nIGluIGpvaW5zIGlzIGNvbXBsZXggYW5kIHJlbGllcyBvblxuXHQvLyBhcmd1bWVudCBjb3VudC4gV2UgcmVwbGljYXRlIHRoaXMgYmVoYXZpb3IgYnkgdXNpbmcgdGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJndW1lbnQuXG5cblx0cHVibGljIGpvaW4odGFibGU6IHN0cmluZywgb246IHN0cmluZywgYWxpYXM/OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmpvaW4odGFibGUsIG9uLCBhbGlhcyk7XG5cdFx0Ly8gYXJndW1lbnRzWzNdIGlzIHRoZSA0dGggYXJndW1lbnQgKHBhcmFtZXRlcnMgd2hlbiBhbGlhcyBpcyBwcmVzZW50KS5cblx0XHQvLyBhcmd1bWVudHNbMl0gaXMgdGhlIDNyZCBhcmd1bWVudCAocGFyYW1ldGVycyB3aGVuIGFsaWFzIGlzIGFic2VudCkuXG5cdFx0Ly8gV2UgdXNlIGFyZ3VtZW50cyBhcnJheSB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9yaWdpbmFsIEpTIGltcGxlbWVudGF0aW9uLlxuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMykge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzNdKTtcblx0XHR9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG5cdFx0XHQvLyBUaGlzIGJyYW5jaCBpcyBoaWdobHkgZGVwZW5kZW50IG9uIGhvdyB0aGUgb3JpZ2luYWwgY29kZSB3YXMgdXNlZDpcblx0XHRcdC8vIGlmIChhbGlhcyA9PT0gdW5kZWZpbmVkICYmIHBhcmFtZXRlcnMgPT09IGFycmF5KTogcGFyYW1ldGVycyBhcmUgYXQgYXJndW1lbnRzWzJdXG5cdFx0XHR0aGlzLmFkZFBhcmFtZXRlcihhcmd1bWVudHNbMl0pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBpbm5lckpvaW4odGFibGU6IHN0cmluZywgb246IHN0cmluZywgYWxpYXM/OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmlubmVySm9pbih0YWJsZSwgb24sIGFsaWFzKTtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1szXSk7XG5cdFx0fSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzJdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgb3V0ZXJKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5vdXRlckpvaW4odGFibGUsIG9uLCBhbGlhcyk7XG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAzKSB7XG5cdFx0XHR0aGlzLmFkZFBhcmFtZXRlcihhcmd1bWVudHNbM10pO1xuXHRcdH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1syXSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGxlZnRKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5sZWZ0Sm9pbih0YWJsZSwgb24sIGFsaWFzKTtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1szXSk7XG5cdFx0fSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzJdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmlnaHRKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5yaWdodEpvaW4odGFibGUsIG9uLCBhbGlhcyk7XG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAzKSB7XG5cdFx0XHR0aGlzLmFkZFBhcmFtZXRlcihhcmd1bWVudHNbM10pO1xuXHRcdH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1syXSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGZ1bGxKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5mdWxsSm9pbih0YWJsZSwgb24sIGFsaWFzKTtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1szXSk7XG5cdFx0fSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzJdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgV0hFUkUgY29uZGl0aW9uLlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBTUUwgY29uZGl0aW9uIHN0cmluZyAoZS5nLiwgXCJjb2x1bW4xID0gP1wiKS5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT3B0aW9uYWwgcGFyYW1ldGVycyB0byByZXBsYWNlICc/JyBpbiB0aGUgY29uZGl0aW9uLlxuXHQgKi9cblx0cHVibGljIHdoZXJlKGNvbmRpdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS53aGVyZShjb25kaXRpb24pO1xuXHRcdHRoaXMuYWRkUGFyYW1ldGVyKHBhcmFtZXRlcnMpOyAvLyBhcmd1bWVudHNbMV0gaW4gSlNcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBvcmRlcihjb2x1bW46IHN0cmluZywgYXNjOiBib29sZWFuID0gdHJ1ZSk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLm9yZGVyKGNvbHVtbiwgYXNjKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBncm91cChjb2x1bW46IHN0cmluZyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmdyb3VwKGNvbHVtbik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgbGltaXQobGltaXQ6IG51bWJlcik6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmxpbWl0KGxpbWl0KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBvZmZzZXQob2Zmc2V0OiBudW1iZXIpOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5vZmZzZXQob2Zmc2V0KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBoYXZpbmcoaGF2aW5nOiBzdHJpbmcpOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5oYXZpbmcoaGF2aW5nKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyB1bmlvbihzZWxlY3Q6IHN0cmluZyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnVuaW9uKHNlbGVjdCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBJTlNFUlQgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEluc2VydEJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdHByb3RlY3RlZCBwcmVwYXJlQnVpbGRlcihidWlsZGVyOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBidWlsZGVyLmluc2VydCgpO1xuXHR9XG5cblx0cHVibGljIGludG8odGFibGU6IHN0cmluZyk6IEluc2VydEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmludG8odGFibGUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGNvbHVtbihjb2x1bW46IHN0cmluZyk6IEluc2VydEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbihjb2x1bW4pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciB0aGUgbGFzdCBjb2x1bW4gc3BlY2lmaWVkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHBsYWNlaG9sZGVyIChlLmcuLCBcIj9cIikgb3IgbGl0ZXJhbC5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT3B0aW9uYWwgcGFyYW1ldGVycyBpZiBhIHBsYWNlaG9sZGVyIHdhcyB1c2VkLlxuXHQgKi9cblx0cHVibGljIHZhbHVlKHZhbHVlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IEluc2VydEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLmFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzKTsgLy8gYXJndW1lbnRzWzFdIGluIEpTXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2VsZWN0KHNlbGVjdDogc3RyaW5nKTogSW5zZXJ0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuc2VsZWN0KHNlbGVjdCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBVUERBVEUgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdHByb3RlY3RlZCBwcmVwYXJlQnVpbGRlcihidWlsZGVyOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBidWlsZGVyLnVwZGF0ZSgpO1xuXHR9XG5cblx0cHVibGljIHRhYmxlKHRhYmxlOiBzdHJpbmcpOiBVcGRhdGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS50YWJsZSh0YWJsZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIGNvbHVtbiB0byBhIHZhbHVlLlxuXHQgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbmFtZS5cblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBwbGFjZWhvbGRlciAoZS5nLiwgXCI/XCIpIG9yIGxpdGVyYWwuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9wdGlvbmFsIHBhcmFtZXRlcnMgaWYgYSBwbGFjZWhvbGRlciB3YXMgdXNlZC5cblx0ICovXG5cdHB1YmxpYyBzZXQoY29sdW1uOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IFVwZGF0ZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnNldChjb2x1bW4sIHZhbHVlKTtcblx0XHR0aGlzLmFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzKTsgLy8gYXJndW1lbnRzWzJdIGluIEpTXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgV0hFUkUgY29uZGl0aW9uIGZvciB0aGUgdXBkYXRlLlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBTUUwgY29uZGl0aW9uIHN0cmluZyAoZS5nLiwgXCJjb2x1bW4xID0gP1wiKS5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT3B0aW9uYWwgcGFyYW1ldGVycyB0byByZXBsYWNlICc/JyBpbiB0aGUgY29uZGl0aW9uLlxuXHQgKi9cblx0cHVibGljIHdoZXJlKGNvbmRpdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBVcGRhdGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS53aGVyZShjb25kaXRpb24pO1xuXHRcdHRoaXMuYWRkUGFyYW1ldGVyKHBhcmFtZXRlcnMpOyAvLyBhcmd1bWVudHNbMV0gaW4gSlNcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIERFTEVURSBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRGVsZXRlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHJvdGVjdGVkIHByZXBhcmVCdWlsZGVyKGJ1aWxkZXI6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIGJ1aWxkZXIuZGVsZXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZnJvbSh0YWJsZTogc3RyaW5nKTogRGVsZXRlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuZnJvbSh0YWJsZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgV0hFUkUgY29uZGl0aW9uIGZvciB0aGUgZGVsZXRpb24uXG5cdCAqIEBwYXJhbSBjb25kaXRpb24gVGhlIFNRTCBjb25kaXRpb24gc3RyaW5nIChlLmcuLCBcImNvbHVtbjEgPSA/XCIpLlxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIHJlcGxhY2UgJz8nIGluIHRoZSBjb25kaXRpb24uXG5cdCAqL1xuXHRwdWJsaWMgd2hlcmUoY29uZGl0aW9uOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IERlbGV0ZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLndoZXJlKGNvbmRpdGlvbik7XG5cdFx0dGhpcy5hZGRQYXJhbWV0ZXIocGFyYW1ldGVycyk7IC8vIGFyZ3VtZW50c1sxXSBpbiBKU1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3Igc2VsZWN0aW5nIHRoZSBuZXh0IHZhbHVlIGZyb20gYSBzZXF1ZW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHR2YWxCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RTUUxCdWlsZGVyIHtcblxuXHRwcml2YXRlIG5hbWU6IHN0cmluZztcblxuXHRjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYW1lID0gbmFtZTtcblx0fVxuXG5cdHByb3RlY3RlZCBwcmVwYXJlQnVpbGRlcihidWlsZGVyOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBidWlsZGVyLm5leHR2YWwodGhpcy5uYW1lKTtcblx0fVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIENSRUFURSBzdGF0ZW1lbnRzIChUYWJsZSwgVmlldywgU2VxdWVuY2UpLlxuICovXG5leHBvcnQgY2xhc3MgQ3JlYXRlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHVibGljIHRhYmxlKHRhYmxlOiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdGNvbnNvbGUuZXJyb3IoYFRhYmxlIGluIENyZWF0ZUJ1aWxkZXIgaXM6ICR7dGFibGV9YCk7XG5cdFx0cmV0dXJuIG5ldyBDcmVhdGVUYWJsZUJ1aWxkZXIodGFibGUsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgdmlldyh2aWV3OiBzdHJpbmcpOiBDcmVhdGVWaWV3QnVpbGRlciB7XG5cdFx0cmV0dXJuIG5ldyBDcmVhdGVWaWV3QnVpbGRlcih2aWV3LCB0aGlzLmNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIHNlcXVlbmNlKHNlcXVlbmNlOiBzdHJpbmcpOiBDcmVhdGVTZXF1ZW5jZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgQ3JlYXRlU2VxdWVuY2VCdWlsZGVyKHNlcXVlbmNlLCB0aGlzLmNvbm5lY3Rpb24pXG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBDUkVBVEUgVEFCTEUgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENyZWF0ZVRhYmxlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0Ly8gT3ZlcnJpZGVzIGNvbnN0cnVjdG9yIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IHRoZSBuYXRpdmUgdGFibGUgYnVpbGRlclxuXHRjb25zdHJ1Y3Rvcih0YWJsZTogc3RyaW5nLCBjb25uZWN0aW9uPzogQ29ubmVjdGlvbikge1xuXHRcdHN1cGVyKGNvbm5lY3Rpb24pO1xuXHRcdHRoaXMubmF0aXZlID0gdGhpcy5uYXRpdmUuY3JlYXRlKCkudGFibGUodGFibGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBnZW5lcmljIGNvbHVtbiBkZWZpbml0aW9uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0dHlwZTogRGF0YVR5cGUsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0aXNJZGVudGl0eSA9IGZhbHNlLCBcblx0XHRpc0Z1enp5SW5kZXhFbmFibGVkID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0Y29uc3QgZGF0YVR5cGUgPSBEYXRhVHlwZUVudW0udmFsdWVPZkJ5TmFtZSh0eXBlKTtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW4obmFtZSwgZGF0YVR5cGUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIGlzRnV6enlJbmRleEVuYWJsZWQsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBWQVJDSEFSIGNvbHVtbi5cblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBkaWFsZWN0LXNwZWNpZmljIGFyZ3VtZW50cyBwYXNzZWQgYXMgYW4gYXJyYXkgdG8gbmF0aXZlLlxuXHQgKi9cblx0cHVibGljIGNvbHVtblZhcmNoYXIoXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRsZW5ndGg6IG51bWJlciwgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHRpc0lkZW50aXR5ID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uVmFyY2hhcihuYW1lLCBsZW5ndGgsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gTlZBUkNIQVIgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uTnZhcmNoYXIoXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRsZW5ndGg6IG51bWJlciwgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHRpc0lkZW50aXR5ID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uTnZhcmNoYXIobmFtZSwgbGVuZ3RoLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBpc0lkZW50aXR5LCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgQ0hBUiBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5DaGFyKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0bGVuZ3RoOiBudW1iZXIsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0aXNJZGVudGl0eSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbkNoYXIobmFtZSwgbGVuZ3RoLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBpc0lkZW50aXR5LCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgREFURSBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5EYXRlKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbkRhdGUobmFtZSwgaXNQcmltYXJ5S2V5LCBpc051bGxhYmxlLCBpc1VuaXF1ZSwgQXJyYXkuZnJvbShhcmdzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIFRJTUUgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uVGltZShcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5UaW1lKG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBUSU1FU1RBTVAgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uVGltZXN0YW1wKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtblRpbWVzdGFtcChuYW1lLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIElOVEVHRVIgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uSW50ZWdlcihcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0aXNJZGVudGl0eSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbkludGVnZXIobmFtZSwgaXNQcmltYXJ5S2V5LCBpc051bGxhYmxlLCBpc1VuaXF1ZSwgaXNJZGVudGl0eSwgQXJyYXkuZnJvbShhcmdzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIFRJTllJTlQgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uVGlueWludChcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5UaW55aW50KG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBCSUdJTlQgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uQmlnaW50KFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHRpc0lkZW50aXR5ID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uQmlnaW50KG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBTTUFMTElOVCBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5TbWFsbGludChcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5TbWFsbGludChuYW1lLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgUkVBTCBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5SZWFsKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtblJlYWwobmFtZSwgaXNQcmltYXJ5S2V5LCBpc051bGxhYmxlLCBpc1VuaXF1ZSwgQXJyYXkuZnJvbShhcmdzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIERPVUJMRSBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5Eb3VibGUoXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRpc1ByaW1hcnlLZXkgPSBmYWxzZSwgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdGlzVW5pcXVlID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uRG91YmxlKG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBCT09MRUFOIGNvbHVtbi5cblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBkaWFsZWN0LXNwZWNpZmljIGFyZ3VtZW50cyBwYXNzZWQgYXMgYW4gYXJyYXkgdG8gbmF0aXZlLlxuXHQgKi9cblx0cHVibGljIGNvbHVtbkJvb2xlYW4oXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRpc1ByaW1hcnlLZXkgPSBmYWxzZSwgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdGlzVW5pcXVlID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uQm9vbGVhbihuYW1lLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgQkxPQiBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5CbG9iKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uQmxvYihuYW1lLCBpc051bGxhYmxlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgREVDSU1BTCBjb2x1bW4gd2l0aCBwcmVjaXNpb24gYW5kIHNjYWxlLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uRGVjaW1hbChcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdHByZWNpc2lvbjogbnVtYmVyLCBcblx0XHRzY2FsZTogbnVtYmVyLCBcblx0XHRpc1ByaW1hcnlLZXkgPSBmYWxzZSwgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdGlzVW5pcXVlID0gZmFsc2UsIFxuXHRcdGlzSWRlbnRpdHkgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5EZWNpbWFsKG5hbWUsIHByZWNpc2lvbiwgc2NhbGUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHByaW1hcnlLZXkoY29sdW1uczogc3RyaW5nW10sIG5hbWU/OiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnByaW1hcnlLZXkobmFtZSwgY29sdW1ucyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZm9yZWlnbktleShuYW1lOiBzdHJpbmcsIGNvbHVtbnM6IHN0cmluZ1tdLCByZWZlcmVuY2VkVGFibGU6IHN0cmluZywgcmVmZXJlbmNlZENvbHVtbnM6IHN0cmluZ1tdLCByZWZlcmVuY2VkVGFibGVTY2hlbWE/OiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdC8vIE5PVEU6IFRoZSBuYXRpdmUgZnVuY3Rpb24gZXhwZWN0cyB0aGUgc2NoZW1hIGJlZm9yZSB0aGUgcmVmZXJlbmNlZCBjb2x1bW5zXG5cdFx0dGhpcy5uYXRpdmUuZm9yZWlnbktleShuYW1lLCBjb2x1bW5zLCByZWZlcmVuY2VkVGFibGUsIHJlZmVyZW5jZWRUYWJsZVNjaGVtYSwgcmVmZXJlbmNlZENvbHVtbnMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHVuaXF1ZShuYW1lOiBzdHJpbmcsIGNvbHVtbnM6IHN0cmluZ1tdKTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS51bmlxdWUobmFtZSwgY29sdW1ucyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgY2hlY2sobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNoZWNrKG5hbWUsIGV4cHJlc3Npb24pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgQ1JFQVRFIFZJRVcgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENyZWF0ZVZpZXdCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RTUUxCdWlsZGVyIHtcblxuXHRjb25zdHJ1Y3Rvcih2aWV3OiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGUoKS52aWV3KHZpZXcpO1xuXHR9XG5cblx0cHVibGljIGNvbHVtbihjb2x1bW46IHN0cmluZyk6IENyZWF0ZVZpZXdCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW4oY29sdW1uKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBhc1NlbGVjdChzZWxlY3Q6IHN0cmluZyk6IENyZWF0ZVZpZXdCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5hc1NlbGVjdChzZWxlY3QpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgQ1JFQVRFIFNFUVVFTkNFIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDcmVhdGVTZXF1ZW5jZUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdGNvbnN0cnVjdG9yKHNlcXVlbmNlOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGUoKS5zZXF1ZW5jZShzZXF1ZW5jZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBEUk9QIHN0YXRlbWVudHMgKFRhYmxlLCBWaWV3LCBTZXF1ZW5jZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEcm9wQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHVibGljIHRhYmxlKHRhYmxlOiBzdHJpbmcpOiBEcm9wVGFibGVCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IERyb3BUYWJsZUJ1aWxkZXIodGFibGUsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgdmlldyh2aWV3OiBzdHJpbmcpOiBEcm9wVmlld0J1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgRHJvcFZpZXdCdWlsZGVyKHZpZXcsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgc2VxdWVuY2Uoc2VxdWVuY2U6IHN0cmluZyk6IERyb3BTZXF1ZW5jZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgRHJvcFNlcXVlbmNlQnVpbGRlcihzZXF1ZW5jZSwgdGhpcy5jb25uZWN0aW9uKTtcblx0fTtcblxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIERST1AgVEFCTEUgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIERyb3BUYWJsZUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdGNvbnN0cnVjdG9yKHRhYmxlOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYXRpdmUgPSB0aGlzLm5hdGl2ZS5kcm9wKCkudGFibGUodGFibGUpO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgRFJPUCBWSUVXIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEcm9wVmlld0J1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdGNvbnN0cnVjdG9yKHZpZXc6IHN0cmluZywgY29ubmVjdGlvbj86IENvbm5lY3Rpb24pIHtcblx0XHRzdXBlcihjb25uZWN0aW9uKTtcblx0XHR0aGlzLm5hdGl2ZSA9IHRoaXMubmF0aXZlLmRyb3AoKS52aWV3KHZpZXcpO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgRFJPUCBTRVFVRU5DRSBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRHJvcFNlcXVlbmNlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0Y29uc3RydWN0b3Ioc2VxdWVuY2U6IHN0cmluZywgY29ubmVjdGlvbj86IENvbm5lY3Rpb24pIHtcblx0XHRzdXBlcihjb25uZWN0aW9uKTtcblx0XHR0aGlzLm5hdGl2ZSA9IHRoaXMubmF0aXZlLmRyb3AoKS5zZXF1ZW5jZShzZXF1ZW5jZSk7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBTUUxCdWlsZGVyO1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0EsTUFBTSxpQkFBaUIsS0FBSyxLQUFLLHdEQUF3RDtBQUN6RixNQUFNLGVBQWUsS0FBSyxLQUFLLDZDQUE2QztBQW1ENUUsTUFBZSxtQkFBbUI7QUFBQSxFQUVqQixTQUFnQixDQUFDO0FBQUEsRUFDZDtBQUFBLEVBQ1Q7QUFBQTtBQUFBLEVBRVYsWUFBWSxZQUF5QjtBQUNwQyxTQUFLLGFBQWE7QUFFbEIsU0FBSyxTQUFTLGFBQWEsZUFBZSxVQUFXLFdBQW1CLE1BQU0sSUFBSSxlQUFlLFdBQVc7QUFDNUcsU0FBSyxTQUFTLEtBQUssZUFBZSxLQUFLLE1BQU07QUFBQSxFQUM5QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS1UsZUFBZSxTQUFtQjtBQUMzQyxXQUFPO0FBQUEsRUFDUjtBQUFBLEVBRU8sYUFBb0I7QUFDMUIsV0FBTyxLQUFLO0FBQUEsRUFDYjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS1UsYUFBYSxPQUEwQjtBQUNoRCxRQUFJLFVBQVUsVUFBYSxVQUFVLE1BQU07QUFDMUM7QUFBQSxJ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
519
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3NxbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGRiL3NxbFxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2RiXG4gKiBAbmFtZSBTUUxcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGZsdWVudCBBUEkgZm9yIGJ1aWxkaW5nIFNRTCBzdGF0ZW1lbnRzIGluIGEgZGF0YWJhc2UtYWdub3N0aWMgd2F5LiBJdCBpbmNsdWRlcyBidWlsZGVycyBmb3IgU0VMRUNULCBJTlNFUlQsIFVQREFURSwgREVMRVRFLCBDUkVBVEUsIGFuZCBEUk9QIHN0YXRlbWVudHMsIGFzIHdlbGwgYXMgYSBidWlsZGVyIGZvciByZXRyaWV2aW5nIHRoZSBuZXh0IHZhbHVlIGZyb20gYSBzZXF1ZW5jZS4gVGhlIGJ1aWxkZXJzIGFsbG93IGZvciBtZXRob2QgY2hhaW5pbmcgdG8gY29uc3RydWN0IGNvbXBsZXggU1FMIHF1ZXJpZXMgd2hpbGUgbWFuYWdpbmcgcGFyYW1ldGVycyBzZXBhcmF0ZWx5IHRvIHByZXZlbnQgU1FMIGluamVjdGlvbi4gVGhlIG1vZHVsZSBhYnN0cmFjdHMgYXdheSBkaWZmZXJlbmNlcyBpbiBTUUwgZGlhbGVjdHMgYW5kIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIGNvbnN0cnVjdGluZyBTUUwgc3RhdGVtZW50cyBhY3Jvc3MgZGlmZmVyZW50IGRhdGFiYXNlcy5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogLSBGbHVlbnQgQVBJIGZvciBidWlsZGluZyBTUUwgc3RhdGVtZW50cyB3aXRoIG1ldGhvZCBjaGFpbmluZy5cbiAqIC0gU3VwcG9ydCBmb3IgU0VMRUNULCBJTlNFUlQsIFVQREFURSwgREVMRVRFLCBDUkVBVEUsIGFuZCBEUk9QIHN0YXRlbWVudHMuXG4gKiAtIFNlcGFyYXRlIHBhcmFtZXRlciBtYW5hZ2VtZW50IHRvIHByZXZlbnQgU1FMIGluamVjdGlvbi5cbiAqIC0gRGF0YWJhc2UtYWdub3N0aWMgZGVzaWduIHRoYXQgYWJzdHJhY3RzIGF3YXkgU1FMIGRpYWxlY3QgZGlmZmVyZW5jZXMuXG4gKiAtIEludGVncmF0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgZGF0YWJhc2UgY29ubmVjdGlvbiBmb3IgZXhlY3V0aW5nIGJ1aWx0IHN0YXRlbWVudHMuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gQ29uc3RydWN0aW5nIGNvbXBsZXggU1FMIHF1ZXJpZXMgaW4gYSByZWFkYWJsZSBhbmQgbWFpbnRhaW5hYmxlIHdheS5cbiAqIC0gQnVpbGRpbmcgU1FMIHN0YXRlbWVudHMgZHluYW1pY2FsbHkgYmFzZWQgb24gYXBwbGljYXRpb24gbG9naWMgb3IgdXNlciBpbnB1dC5cbiAqIC0gQWJzdHJhY3RpbmcgZGF0YWJhc2UgaW50ZXJhY3Rpb25zIHRvIGFsbG93IGZvciBlYXNpZXIgbWFpbnRlbmFuY2UgYW5kIHBvdGVudGlhbCBkYXRhYmFzZSBlbmdpbmUgY2hhbmdlcyBpbiB0aGUgZnV0dXJlLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNRTEJ1aWxkZXIgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2RiXCI7XG4gKiBcbiAqIC8vIEV4YW1wbGUgb2YgYnVpbGRpbmcgYSBTRUxFQ1Qgc3RhdGVtZW50XG4gKiBjb25zdCBzcWxCdWlsZGVyID0gU1FMQnVpbGRlci5nZXREaWFsZWN0KCk7XG4gKiBjb25zdCBzZWxlY3RRdWVyeSA9IHNxbEJ1aWxkZXIuc2VsZWN0KClcbiAqICAgLmNvbHVtbihcImlkXCIpXG4gKiAgIC5jb2x1bW4oXCJuYW1lXCIpXG4gKiAgIC5mcm9tKFwidXNlcnNcIilcbiAqICAgLndoZXJlKFwiaWQgPSA/XCIsIDEpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbi8vIEFzc3VtZWQgaW1wb3J0cyBmb3IgdGhlIG5hdGl2ZSBKYXZhIEFQSSBjYWxsc1xuY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIik7XG5jb25zdCBEYXRhVHlwZUVudW0gPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuZGF0YWJhc2Uuc3FsLkRhdGFUeXBlXCIpO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgcmVwcmVzZW50aW5nIGFsbCBzdXBwb3J0ZWQgU1FMIGRhdGEgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFUeXBlID1cblx0XCJWQVJDSEFSXCJcblx0fCBcIlRFWFRcIlxuXHR8IFwiQ0hBUlwiXG5cdHwgXCJEQVRFXCJcblx0fCBcIlNFQ09ORERBVEVcIlxuXHR8IFwiVElNRVwiXG5cdHwgXCJEQVRFVElNRVwiXG5cdHwgXCJUSU1FU1RBTVBcIlxuXHR8IFwiSU5URUdFUlwiXG5cdHwgXCJJTlRcIlxuXHR8IFwiVElOWUlOVFwiXG5cdHwgXCJCSUdJTlRcIlxuXHR8IFwiU01BTExJTlRcIlxuXHR8IFwiUkVBTFwiXG5cdHwgXCJET1VCTEVcIlxuXHR8IFwiRE9VQkxFIFBSRUNJU0lPXCJcblx0fCBcIkJPT0xFQU5cIlxuXHR8IFwiQkxPQlwiXG5cdHwgXCJERUNJTUFMXCJcblx0fCBcIkJJVFwiXG5cdHwgXCJOVkFSQ0hBUlwiXG5cdHwgXCJGTE9BVFwiXG5cdHwgXCJCWVRFXCJcblx0fCBcIk5DTE9CXCJcblx0fCBcIkFSUkFZXCJcblx0fCBcIlZBUkJJTkFSWVwiXG5cdHwgXCJCSU5BUlkgVkFSWUlOXCJcblx0fCBcIlNIT1JUVEVYVFwiXG5cdHwgXCJBTFBIQU5VTVwiXG5cdHwgXCJDTE9CXCJcblx0fCBcIlNNQUxMREVDSU1BTFwiXG5cdHwgXCJCSU5BUllcIlxuXHR8IFwiU1RfUE9JTlRcIlxuXHR8IFwiU1RfR0VPTUVUUllcIlxuXHR8IFwiQ0hBUkFDVEVSIFZBUllJTlwiXG5cdHwgXCJCSU5BUlkgTEFSRyBPQkpFQ1RcIlxuXHR8IFwiQ0hBUkFDVEVSIExBUkcgT0JKRUNUXCJcblx0fCBcIkNIQVJBQ1RFUlwiXG5cdHwgXCJOQ0hBUlwiXG5cdHwgXCJOVU1FUklDXCI7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIFNRTCBidWlsZGVycy4gSGFuZGxlcyBjb25uZWN0aW9uLCBuYXRpdmUgZmFjYWRlLFxuICogYW5kIHBhcmFtZXRlciBjb2xsZWN0aW9uLlxuICovXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdHB1YmxpYyByZWFkb25seSBwYXJhbXM6IGFueVtdID0gW107XG5cdHByb3RlY3RlZCByZWFkb25seSBjb25uZWN0aW9uPzogQ29ubmVjdGlvbjtcblx0cHJvdGVjdGVkIG5hdGl2ZTogYW55OyAvLyBUaGUgdW5kZXJseWluZyBKYXZhIFNRTCBCdWlsZGVyIG9iamVjdFxuXG5cdGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0dGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcblx0XHQvLyBJbml0aWFsaXplIHRoZSBuYXRpdmUgYnVpbGRlciBmcm9tIHRoZSBmYWNhZGVcblx0XHR0aGlzLm5hdGl2ZSA9IGNvbm5lY3Rpb24gPyBEYXRhYmFzZUZhY2FkZS5nZXROYXRpdmUoKGNvbm5lY3Rpb24gYXMgYW55KS5uYXRpdmUpIDogRGF0YWJhc2VGYWNhZGUuZ2V0RGVmYXVsdCgpO1xuXHRcdHRoaXMubmF0aXZlID0gdGhpcy5wcmVwYXJlQnVpbGRlcih0aGlzLm5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogSG9vayBmb3Igc3ViY2xhc3NlcyB0byBzZXQgdXAgdGhlIG5hdGl2ZSBidWlsZGVyIG9iamVjdCAoZS5nLiwgY2FsbGluZyAuc2VsZWN0KCkpLlxuXHQgKi9cblx0cHJvdGVjdGVkIHByZXBhcmVCdWlsZGVyKGJ1aWxkZXI6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIGJ1aWxkZXI7XG5cdH1cblxuXHRwdWJsaWMgcGFyYW1ldGVycygpOiBhbnlbXSB7XG5cdFx0cmV0dXJuIHRoaXMucGFyYW1zO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgcGFyYW1ldGVyKHMpIHRvIHRoZSBpbnRlcm5hbCBsaXN0LiBIYW5kbGVzIHNpbmdsZSB2YWx1ZXMgYW5kIGFycmF5cyBvZiB2YWx1ZXMuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYWRkUGFyYW1ldGVyKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm47IC8vIERvIG5vdCBhZGQgdW5kZWZpbmVkL251bGwgdW5sZXNzIGV4cGxpY2l0bHkgYW4gYXJyYXlcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR0aGlzLnBhcmFtcy5wdXNoKC4uLnZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5wYXJhbXMucHVzaCh2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbmQgcmV0dXJucyB0aGUgZmluYWwgU1FMIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBidWlsZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5idWlsZCgpO1xuXHR9XG59XG5cbi8qKlxuICogTWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIFNRTCBCdWlsZGVyLiBBY3RzIGFzIGEgZmFjdG9yeSBmb3Igc3BlY2lmaWMgYnVpbGRlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTUUxCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RTUUxCdWlsZGVyIHtcblxuXHQvKipcblx0ICogRmFjdG9yeSBtZXRob2QgdG8gZ2V0IGEgZGlhbGVjdC1zcGVjaWZpYyBTUUxCdWlsZGVyIGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXREaWFsZWN0KGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKTogU1FMQnVpbGRlciB7XG5cdFx0cmV0dXJuIG5ldyBTUUxCdWlsZGVyKGNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIHNlbGVjdCgpOiBTZWxlY3RCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IFNlbGVjdEJ1aWxkZXIodGhpcy5jb25uZWN0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBpbnNlcnQoKTogSW5zZXJ0QnVpbGRlciB7XG5cdFx0cmV0dXJuIG5ldyBJbnNlcnRCdWlsZGVyKHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlKCk6IFVwZGF0ZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgVXBkYXRlQnVpbGRlcih0aGlzLmNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIGRlbGV0ZSgpOiBEZWxldGVCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IERlbGV0ZUJ1aWxkZXIodGhpcy5jb25uZWN0aW9uKTtcblx0fVxuXG5cdHB1YmxpYyBuZXh0dmFsKG5hbWU6IHN0cmluZyk6IE5leHR2YWxCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IE5leHR2YWxCdWlsZGVyKG5hbWUsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlKCk6IENyZWF0ZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgQ3JlYXRlQnVpbGRlcih0aGlzLmNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIGRyb3AoKTogRHJvcEJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgRHJvcEJ1aWxkZXIodGhpcy5jb25uZWN0aW9uKTtcblx0fVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2VsZWN0QnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHJvdGVjdGVkIHByZXBhcmVCdWlsZGVyKGJ1aWxkZXI6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIGJ1aWxkZXIuc2VsZWN0KCk7XG5cdH1cblxuXHRwdWJsaWMgZGlzdGluY3QoKTogU2VsZWN0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuZGlzdGluY3QoKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmb3JVcGRhdGUoKTogU2VsZWN0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuZm9yVXBkYXRlKCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgY29sdW1uKGNvbHVtbjogc3RyaW5nKTogU2VsZWN0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uKGNvbHVtbik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZnJvbSh0YWJsZTogc3RyaW5nLCBhbGlhcz86IHN0cmluZyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmZyb20odGFibGUsIGFsaWFzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIE5PVEU6IFRoZSBvcmlnaW5hbCBKUyBsb2dpYyBmb3IgcGFyYW1ldGVyIGhhbmRsaW5nIGluIGpvaW5zIGlzIGNvbXBsZXggYW5kIHJlbGllcyBvblxuXHQvLyBhcmd1bWVudCBjb3VudC4gV2UgcmVwbGljYXRlIHRoaXMgYmVoYXZpb3IgYnkgdXNpbmcgdGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJndW1lbnQuXG5cblx0cHVibGljIGpvaW4odGFibGU6IHN0cmluZywgb246IHN0cmluZywgYWxpYXM/OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmpvaW4odGFibGUsIG9uLCBhbGlhcyk7XG5cdFx0Ly8gYXJndW1lbnRzWzNdIGlzIHRoZSA0dGggYXJndW1lbnQgKHBhcmFtZXRlcnMgd2hlbiBhbGlhcyBpcyBwcmVzZW50KS5cblx0XHQvLyBhcmd1bWVudHNbMl0gaXMgdGhlIDNyZCBhcmd1bWVudCAocGFyYW1ldGVycyB3aGVuIGFsaWFzIGlzIGFic2VudCkuXG5cdFx0Ly8gV2UgdXNlIGFyZ3VtZW50cyBhcnJheSB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9yaWdpbmFsIEpTIGltcGxlbWVudGF0aW9uLlxuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMykge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzNdKTtcblx0XHR9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG5cdFx0XHQvLyBUaGlzIGJyYW5jaCBpcyBoaWdobHkgZGVwZW5kZW50IG9uIGhvdyB0aGUgb3JpZ2luYWwgY29kZSB3YXMgdXNlZDpcblx0XHRcdC8vIGlmIChhbGlhcyA9PT0gdW5kZWZpbmVkICYmIHBhcmFtZXRlcnMgPT09IGFycmF5KTogcGFyYW1ldGVycyBhcmUgYXQgYXJndW1lbnRzWzJdXG5cdFx0XHR0aGlzLmFkZFBhcmFtZXRlcihhcmd1bWVudHNbMl0pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBpbm5lckpvaW4odGFibGU6IHN0cmluZywgb246IHN0cmluZywgYWxpYXM/OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmlubmVySm9pbih0YWJsZSwgb24sIGFsaWFzKTtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1szXSk7XG5cdFx0fSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzJdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgb3V0ZXJKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5vdXRlckpvaW4odGFibGUsIG9uLCBhbGlhcyk7XG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAzKSB7XG5cdFx0XHR0aGlzLmFkZFBhcmFtZXRlcihhcmd1bWVudHNbM10pO1xuXHRcdH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1syXSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGxlZnRKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5sZWZ0Sm9pbih0YWJsZSwgb24sIGFsaWFzKTtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1szXSk7XG5cdFx0fSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzJdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmlnaHRKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5yaWdodEpvaW4odGFibGUsIG9uLCBhbGlhcyk7XG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAzKSB7XG5cdFx0XHR0aGlzLmFkZFBhcmFtZXRlcihhcmd1bWVudHNbM10pO1xuXHRcdH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1syXSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGZ1bGxKb2luKHRhYmxlOiBzdHJpbmcsIG9uOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5mdWxsSm9pbih0YWJsZSwgb24sIGFsaWFzKTtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMpIHtcblx0XHRcdHRoaXMuYWRkUGFyYW1ldGVyKGFyZ3VtZW50c1szXSk7XG5cdFx0fSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdFx0dGhpcy5hZGRQYXJhbWV0ZXIoYXJndW1lbnRzWzJdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgV0hFUkUgY29uZGl0aW9uLlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBTUUwgY29uZGl0aW9uIHN0cmluZyAoZS5nLiwgXCJjb2x1bW4xID0gP1wiKS5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT3B0aW9uYWwgcGFyYW1ldGVycyB0byByZXBsYWNlICc/JyBpbiB0aGUgY29uZGl0aW9uLlxuXHQgKi9cblx0cHVibGljIHdoZXJlKGNvbmRpdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS53aGVyZShjb25kaXRpb24pO1xuXHRcdHRoaXMuYWRkUGFyYW1ldGVyKHBhcmFtZXRlcnMpOyAvLyBhcmd1bWVudHNbMV0gaW4gSlNcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBvcmRlcihjb2x1bW46IHN0cmluZywgYXNjOiBib29sZWFuID0gdHJ1ZSk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLm9yZGVyKGNvbHVtbiwgYXNjKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBncm91cChjb2x1bW46IHN0cmluZyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmdyb3VwKGNvbHVtbik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgbGltaXQobGltaXQ6IG51bWJlcik6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmxpbWl0KGxpbWl0KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBvZmZzZXQob2Zmc2V0OiBudW1iZXIpOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5vZmZzZXQob2Zmc2V0KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBoYXZpbmcoaGF2aW5nOiBzdHJpbmcpOiBTZWxlY3RCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5oYXZpbmcoaGF2aW5nKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyB1bmlvbihzZWxlY3Q6IHN0cmluZyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnVuaW9uKHNlbGVjdCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBJTlNFUlQgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEluc2VydEJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdHByb3RlY3RlZCBwcmVwYXJlQnVpbGRlcihidWlsZGVyOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBidWlsZGVyLmluc2VydCgpO1xuXHR9XG5cblx0cHVibGljIGludG8odGFibGU6IHN0cmluZyk6IEluc2VydEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmludG8odGFibGUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGNvbHVtbihjb2x1bW46IHN0cmluZyk6IEluc2VydEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbihjb2x1bW4pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIHZhbHVlIGZvciB0aGUgbGFzdCBjb2x1bW4gc3BlY2lmaWVkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHBsYWNlaG9sZGVyIChlLmcuLCBcIj9cIikgb3IgbGl0ZXJhbC5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT3B0aW9uYWwgcGFyYW1ldGVycyBpZiBhIHBsYWNlaG9sZGVyIHdhcyB1c2VkLlxuXHQgKi9cblx0cHVibGljIHZhbHVlKHZhbHVlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IEluc2VydEJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLmFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzKTsgLy8gYXJndW1lbnRzWzFdIGluIEpTXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2VsZWN0KHNlbGVjdDogc3RyaW5nKTogSW5zZXJ0QnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuc2VsZWN0KHNlbGVjdCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBVUERBVEUgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdHByb3RlY3RlZCBwcmVwYXJlQnVpbGRlcihidWlsZGVyOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBidWlsZGVyLnVwZGF0ZSgpO1xuXHR9XG5cblx0cHVibGljIHRhYmxlKHRhYmxlOiBzdHJpbmcpOiBVcGRhdGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS50YWJsZSh0YWJsZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIGNvbHVtbiB0byBhIHZhbHVlLlxuXHQgKiBAcGFyYW0gY29sdW1uIFRoZSBjb2x1bW4gbmFtZS5cblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBwbGFjZWhvbGRlciAoZS5nLiwgXCI/XCIpIG9yIGxpdGVyYWwuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9wdGlvbmFsIHBhcmFtZXRlcnMgaWYgYSBwbGFjZWhvbGRlciB3YXMgdXNlZC5cblx0ICovXG5cdHB1YmxpYyBzZXQoY29sdW1uOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IFVwZGF0ZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnNldChjb2x1bW4sIHZhbHVlKTtcblx0XHR0aGlzLmFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzKTsgLy8gYXJndW1lbnRzWzJdIGluIEpTXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgV0hFUkUgY29uZGl0aW9uIGZvciB0aGUgdXBkYXRlLlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBTUUwgY29uZGl0aW9uIHN0cmluZyAoZS5nLiwgXCJjb2x1bW4xID0gP1wiKS5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT3B0aW9uYWwgcGFyYW1ldGVycyB0byByZXBsYWNlICc/JyBpbiB0aGUgY29uZGl0aW9uLlxuXHQgKi9cblx0cHVibGljIHdoZXJlKGNvbmRpdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55IHwgYW55W10pOiBVcGRhdGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS53aGVyZShjb25kaXRpb24pO1xuXHRcdHRoaXMuYWRkUGFyYW1ldGVyKHBhcmFtZXRlcnMpOyAvLyBhcmd1bWVudHNbMV0gaW4gSlNcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIERFTEVURSBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRGVsZXRlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHJvdGVjdGVkIHByZXBhcmVCdWlsZGVyKGJ1aWxkZXI6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIGJ1aWxkZXIuZGVsZXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZnJvbSh0YWJsZTogc3RyaW5nKTogRGVsZXRlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuZnJvbSh0YWJsZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgV0hFUkUgY29uZGl0aW9uIGZvciB0aGUgZGVsZXRpb24uXG5cdCAqIEBwYXJhbSBjb25kaXRpb24gVGhlIFNRTCBjb25kaXRpb24gc3RyaW5nIChlLmcuLCBcImNvbHVtbjEgPSA/XCIpLlxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIHJlcGxhY2UgJz8nIGluIHRoZSBjb25kaXRpb24uXG5cdCAqL1xuXHRwdWJsaWMgd2hlcmUoY29uZGl0aW9uOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkgfCBhbnlbXSk6IERlbGV0ZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLndoZXJlKGNvbmRpdGlvbik7XG5cdFx0dGhpcy5hZGRQYXJhbWV0ZXIocGFyYW1ldGVycyk7IC8vIGFyZ3VtZW50c1sxXSBpbiBKU1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3Igc2VsZWN0aW5nIHRoZSBuZXh0IHZhbHVlIGZyb20gYSBzZXF1ZW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5leHR2YWxCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RTUUxCdWlsZGVyIHtcblxuXHRwcml2YXRlIG5hbWU6IHN0cmluZztcblxuXHRjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYW1lID0gbmFtZTtcblx0fVxuXG5cdHByb3RlY3RlZCBwcmVwYXJlQnVpbGRlcihidWlsZGVyOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiBidWlsZGVyLm5leHR2YWwodGhpcy5uYW1lKTtcblx0fVxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIENSRUFURSBzdGF0ZW1lbnRzIChUYWJsZSwgVmlldywgU2VxdWVuY2UpLlxuICovXG5leHBvcnQgY2xhc3MgQ3JlYXRlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHVibGljIHRhYmxlKHRhYmxlOiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdGNvbnNvbGUuZXJyb3IoYFRhYmxlIGluIENyZWF0ZUJ1aWxkZXIgaXM6ICR7dGFibGV9YCk7XG5cdFx0cmV0dXJuIG5ldyBDcmVhdGVUYWJsZUJ1aWxkZXIodGFibGUsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgdmlldyh2aWV3OiBzdHJpbmcpOiBDcmVhdGVWaWV3QnVpbGRlciB7XG5cdFx0cmV0dXJuIG5ldyBDcmVhdGVWaWV3QnVpbGRlcih2aWV3LCB0aGlzLmNvbm5lY3Rpb24pO1xuXHR9XG5cblx0cHVibGljIHNlcXVlbmNlKHNlcXVlbmNlOiBzdHJpbmcpOiBDcmVhdGVTZXF1ZW5jZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgQ3JlYXRlU2VxdWVuY2VCdWlsZGVyKHNlcXVlbmNlLCB0aGlzLmNvbm5lY3Rpb24pXG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBDUkVBVEUgVEFCTEUgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENyZWF0ZVRhYmxlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0Ly8gT3ZlcnJpZGVzIGNvbnN0cnVjdG9yIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IHRoZSBuYXRpdmUgdGFibGUgYnVpbGRlclxuXHRjb25zdHJ1Y3Rvcih0YWJsZTogc3RyaW5nLCBjb25uZWN0aW9uPzogQ29ubmVjdGlvbikge1xuXHRcdHN1cGVyKGNvbm5lY3Rpb24pO1xuXHRcdHRoaXMubmF0aXZlID0gdGhpcy5uYXRpdmUuY3JlYXRlKCkudGFibGUodGFibGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBnZW5lcmljIGNvbHVtbiBkZWZpbml0aW9uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0dHlwZTogRGF0YVR5cGUsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0aXNJZGVudGl0eSA9IGZhbHNlLCBcblx0XHRpc0Z1enp5SW5kZXhFbmFibGVkID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0Y29uc3QgZGF0YVR5cGUgPSBEYXRhVHlwZUVudW0udmFsdWVPZkJ5TmFtZSh0eXBlKTtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW4obmFtZSwgZGF0YVR5cGUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIGlzRnV6enlJbmRleEVuYWJsZWQsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBWQVJDSEFSIGNvbHVtbi5cblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBkaWFsZWN0LXNwZWNpZmljIGFyZ3VtZW50cyBwYXNzZWQgYXMgYW4gYXJyYXkgdG8gbmF0aXZlLlxuXHQgKi9cblx0cHVibGljIGNvbHVtblZhcmNoYXIoXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRsZW5ndGg6IG51bWJlciwgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHRpc0lkZW50aXR5ID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uVmFyY2hhcihuYW1lLCBsZW5ndGgsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gTlZBUkNIQVIgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uTnZhcmNoYXIoXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRsZW5ndGg6IG51bWJlciwgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHRpc0lkZW50aXR5ID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uTnZhcmNoYXIobmFtZSwgbGVuZ3RoLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBpc0lkZW50aXR5LCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgQ0hBUiBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5DaGFyKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0bGVuZ3RoOiBudW1iZXIsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0aXNJZGVudGl0eSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbkNoYXIobmFtZSwgbGVuZ3RoLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBpc0lkZW50aXR5LCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgREFURSBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5EYXRlKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbkRhdGUobmFtZSwgaXNQcmltYXJ5S2V5LCBpc051bGxhYmxlLCBpc1VuaXF1ZSwgQXJyYXkuZnJvbShhcmdzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIFRJTUUgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uVGltZShcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5UaW1lKG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBUSU1FU1RBTVAgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uVGltZXN0YW1wKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtblRpbWVzdGFtcChuYW1lLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIElOVEVHRVIgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uSW50ZWdlcihcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0aXNJZGVudGl0eSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtbkludGVnZXIobmFtZSwgaXNQcmltYXJ5S2V5LCBpc051bGxhYmxlLCBpc1VuaXF1ZSwgaXNJZGVudGl0eSwgQXJyYXkuZnJvbShhcmdzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIFRJTllJTlQgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uVGlueWludChcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5UaW55aW50KG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBCSUdJTlQgY29sdW1uLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uQmlnaW50KFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHRpc0lkZW50aXR5ID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uQmlnaW50KG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBTTUFMTElOVCBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5TbWFsbGludChcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdGlzUHJpbWFyeUtleSA9IGZhbHNlLCBcblx0XHRpc051bGxhYmxlID0gdHJ1ZSwgXG5cdFx0aXNVbmlxdWUgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5TbWFsbGludChuYW1lLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgUkVBTCBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5SZWFsKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNQcmltYXJ5S2V5ID0gZmFsc2UsIFxuXHRcdGlzTnVsbGFibGUgPSB0cnVlLCBcblx0XHRpc1VuaXF1ZSA9IGZhbHNlLCBcblx0XHQuLi5hcmdzOiBzdHJpbmdbXVxuXHQpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNvbHVtblJlYWwobmFtZSwgaXNQcmltYXJ5S2V5LCBpc051bGxhYmxlLCBpc1VuaXF1ZSwgQXJyYXkuZnJvbShhcmdzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIERPVUJMRSBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5Eb3VibGUoXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRpc1ByaW1hcnlLZXkgPSBmYWxzZSwgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdGlzVW5pcXVlID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uRG91YmxlKG5hbWUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBCT09MRUFOIGNvbHVtbi5cblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBkaWFsZWN0LXNwZWNpZmljIGFyZ3VtZW50cyBwYXNzZWQgYXMgYW4gYXJyYXkgdG8gbmF0aXZlLlxuXHQgKi9cblx0cHVibGljIGNvbHVtbkJvb2xlYW4oXG5cdFx0bmFtZTogc3RyaW5nLCBcblx0XHRpc1ByaW1hcnlLZXkgPSBmYWxzZSwgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdGlzVW5pcXVlID0gZmFsc2UsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uQm9vbGVhbihuYW1lLCBpc1ByaW1hcnlLZXksIGlzTnVsbGFibGUsIGlzVW5pcXVlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgQkxPQiBjb2x1bW4uXG5cdCAqIEBwYXJhbSBhcmdzIEFkZGl0aW9uYWwgZGlhbGVjdC1zcGVjaWZpYyBhcmd1bWVudHMgcGFzc2VkIGFzIGFuIGFycmF5IHRvIG5hdGl2ZS5cblx0ICovXG5cdHB1YmxpYyBjb2x1bW5CbG9iKFxuXHRcdG5hbWU6IHN0cmluZywgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdC4uLmFyZ3M6IHN0cmluZ1tdXG5cdCk6IENyZWF0ZVRhYmxlQnVpbGRlciB7XG5cdFx0dGhpcy5uYXRpdmUuY29sdW1uQmxvYihuYW1lLCBpc051bGxhYmxlLCBBcnJheS5mcm9tKGFyZ3MpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgREVDSU1BTCBjb2x1bW4gd2l0aCBwcmVjaXNpb24gYW5kIHNjYWxlLlxuXHQgKiBAcGFyYW0gYXJncyBBZGRpdGlvbmFsIGRpYWxlY3Qtc3BlY2lmaWMgYXJndW1lbnRzIHBhc3NlZCBhcyBhbiBhcnJheSB0byBuYXRpdmUuXG5cdCAqL1xuXHRwdWJsaWMgY29sdW1uRGVjaW1hbChcblx0XHRuYW1lOiBzdHJpbmcsIFxuXHRcdHByZWNpc2lvbjogbnVtYmVyLCBcblx0XHRzY2FsZTogbnVtYmVyLCBcblx0XHRpc1ByaW1hcnlLZXkgPSBmYWxzZSwgXG5cdFx0aXNOdWxsYWJsZSA9IHRydWUsIFxuXHRcdGlzVW5pcXVlID0gZmFsc2UsIFxuXHRcdGlzSWRlbnRpdHkgPSBmYWxzZSwgXG5cdFx0Li4uYXJnczogc3RyaW5nW11cblx0KTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW5EZWNpbWFsKG5hbWUsIHByZWNpc2lvbiwgc2NhbGUsIGlzUHJpbWFyeUtleSwgaXNOdWxsYWJsZSwgaXNVbmlxdWUsIGlzSWRlbnRpdHksIEFycmF5LmZyb20oYXJncykpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHByaW1hcnlLZXkoY29sdW1uczogc3RyaW5nW10sIG5hbWU/OiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLnByaW1hcnlLZXkobmFtZSwgY29sdW1ucyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZm9yZWlnbktleShuYW1lOiBzdHJpbmcsIGNvbHVtbnM6IHN0cmluZ1tdLCByZWZlcmVuY2VkVGFibGU6IHN0cmluZywgcmVmZXJlbmNlZENvbHVtbnM6IHN0cmluZ1tdLCByZWZlcmVuY2VkVGFibGVTY2hlbWE/OiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdC8vIE5PVEU6IFRoZSBuYXRpdmUgZnVuY3Rpb24gZXhwZWN0cyB0aGUgc2NoZW1hIGJlZm9yZSB0aGUgcmVmZXJlbmNlZCBjb2x1bW5zXG5cdFx0dGhpcy5uYXRpdmUuZm9yZWlnbktleShuYW1lLCBjb2x1bW5zLCByZWZlcmVuY2VkVGFibGUsIHJlZmVyZW5jZWRUYWJsZVNjaGVtYSwgcmVmZXJlbmNlZENvbHVtbnMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHVuaXF1ZShuYW1lOiBzdHJpbmcsIGNvbHVtbnM6IHN0cmluZ1tdKTogQ3JlYXRlVGFibGVCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS51bmlxdWUobmFtZSwgY29sdW1ucyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgY2hlY2sobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRcdHRoaXMubmF0aXZlLmNoZWNrKG5hbWUsIGV4cHJlc3Npb24pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgQ1JFQVRFIFZJRVcgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENyZWF0ZVZpZXdCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RTUUxCdWlsZGVyIHtcblxuXHRjb25zdHJ1Y3Rvcih2aWV3OiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGUoKS52aWV3KHZpZXcpO1xuXHR9XG5cblx0cHVibGljIGNvbHVtbihjb2x1bW46IHN0cmluZyk6IENyZWF0ZVZpZXdCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5jb2x1bW4oY29sdW1uKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBhc1NlbGVjdChzZWxlY3Q6IHN0cmluZyk6IENyZWF0ZVZpZXdCdWlsZGVyIHtcblx0XHR0aGlzLm5hdGl2ZS5hc1NlbGVjdChzZWxlY3QpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgQ1JFQVRFIFNFUVVFTkNFIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDcmVhdGVTZXF1ZW5jZUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdGNvbnN0cnVjdG9yKHNlcXVlbmNlOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGUoKS5zZXF1ZW5jZShzZXF1ZW5jZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBCdWlsZGVyIGZvciBEUk9QIHN0YXRlbWVudHMgKFRhYmxlLCBWaWV3LCBTZXF1ZW5jZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEcm9wQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0cHVibGljIHRhYmxlKHRhYmxlOiBzdHJpbmcpOiBEcm9wVGFibGVCdWlsZGVyIHtcblx0XHRyZXR1cm4gbmV3IERyb3BUYWJsZUJ1aWxkZXIodGFibGUsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgdmlldyh2aWV3OiBzdHJpbmcpOiBEcm9wVmlld0J1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgRHJvcFZpZXdCdWlsZGVyKHZpZXcsIHRoaXMuY29ubmVjdGlvbik7XG5cdH1cblxuXHRwdWJsaWMgc2VxdWVuY2Uoc2VxdWVuY2U6IHN0cmluZyk6IERyb3BTZXF1ZW5jZUJ1aWxkZXIge1xuXHRcdHJldHVybiBuZXcgRHJvcFNlcXVlbmNlQnVpbGRlcihzZXF1ZW5jZSwgdGhpcy5jb25uZWN0aW9uKTtcblx0fTtcblxufVxuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIERST1AgVEFCTEUgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIERyb3BUYWJsZUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdGNvbnN0cnVjdG9yKHRhYmxlOiBzdHJpbmcsIGNvbm5lY3Rpb24/OiBDb25uZWN0aW9uKSB7XG5cdFx0c3VwZXIoY29ubmVjdGlvbik7XG5cdFx0dGhpcy5uYXRpdmUgPSB0aGlzLm5hdGl2ZS5kcm9wKCkudGFibGUodGFibGUpO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgRFJPUCBWSUVXIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEcm9wVmlld0J1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNRTEJ1aWxkZXIge1xuXG5cdGNvbnN0cnVjdG9yKHZpZXc6IHN0cmluZywgY29ubmVjdGlvbj86IENvbm5lY3Rpb24pIHtcblx0XHRzdXBlcihjb25uZWN0aW9uKTtcblx0XHR0aGlzLm5hdGl2ZSA9IHRoaXMubmF0aXZlLmRyb3AoKS52aWV3KHZpZXcpO1xuXHR9XG59XG5cbi8qKlxuICogQnVpbGRlciBmb3IgRFJPUCBTRVFVRU5DRSBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRHJvcFNlcXVlbmNlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U1FMQnVpbGRlciB7XG5cblx0Y29uc3RydWN0b3Ioc2VxdWVuY2U6IHN0cmluZywgY29ubmVjdGlvbj86IENvbm5lY3Rpb24pIHtcblx0XHRzdXBlcihjb25uZWN0aW9uKTtcblx0XHR0aGlzLm5hdGl2ZSA9IHRoaXMubmF0aXZlLmRyb3AoKS5zZXF1ZW5jZShzZXF1ZW5jZSk7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBTUUxCdWlsZGVyO1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUNBLE1BQU0saUJBQWlCLEtBQUssS0FBSyx3REFBd0Q7QUFDekYsTUFBTSxlQUFlLEtBQUssS0FBSyw2Q0FBNkM7QUFtRDVFLE1BQWUsbUJBQW1CO0FBQUEsRUFFakIsU0FBZ0IsQ0FBQztBQUFBLEVBQ2Q7QUFBQSxFQUNUO0FBQUE7QUFBQSxFQUVWLFlBQVksWUFBeUI7QUFDcEMsU0FBSyxhQUFhO0FBRWxCLFNBQUssU0FBUyxhQUFhLGVBQWUsVUFBVyxXQUFtQixNQUFNLElBQUksZUFBZSxXQUFXO0FBQzVHLFNBQUssU0FBUyxLQUFLLGVBQWUsS0FBSyxNQUFNO0FBQUEsRUFDOUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtVLGVBQWUsU0FBbUI7QUFDM0MsV0FBTztBQUFBLEVBQ1I7QUFBQSxFQUVPLGFBQW9CO0FBQzFCLFdBQU8sS0FBSztBQUFBLEVBQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtVLGFBQWEsT0FBMEI7QUFDaEQsUUFBSSxVQUFVLFVBQWEsVUFBVSxNQUFNO0FBQzFDO0FBQUEsSUFDRDtBQUNBLFFBQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN6QixXQUFLLE9BQU8sS0FBSyxHQUFHLEtBQUs7QUFBQSxJQUMxQixPQUFPO0FBQ04sV0FBSyxPQUFPLEtBQUssS0FBSztBQUFBLElBQ3ZCO0FBQUEsRUFDRDtB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
@@ -254,4 +254,4 @@ class Store {
254
254
  if (typeof module !== "undefined") {
255
255
  module.exports = Store;
256
256
  }
257
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3N0b3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBEYXRhU3RvcmVGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YVN0b3JlRmFjYWRlXCIpO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGF2YWlsYWJsZSBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgcXVlcnkgY29uZGl0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuXHRFUSA9IFwiPVwiLCAvLyBFcXVhbHNcblx0TkUgPSBcIjw+XCIsIC8vIE5vdCBFcXVhbHNcblx0R1QgPSBcIj5cIiwgLy8gR3JlYXRlciBUaGFuXG5cdExUID0gXCI8XCIsIC8vIExlc3MgVGhhblxuXHRHRSA9IFwiPj1cIiwgLy8gR3JlYXRlciBUaGFuIG9yIEVxdWFsc1xuXHRMRSA9IFwiPD1cIiwgLy8gTGVzcyBUaGFuIG9yIEVxdWFsc1xuXHRMSUtFID0gXCJMSUtFXCIsIC8vIFNRTCBMSUtFIG9wZXJhdG9yXG5cdEJFVFdFRU4gPSBcIkJFVFdFRU5cIiwgLy8gU1FMIEJFVFdFRU4gb3BlcmF0b3IgKHJlcXVpcmVzIHR3byB2YWx1ZXMpXG5cdElOID0gXCJJTlwiIC8vIFNRTCBJTiBvcGVyYXRvciAocmVxdWlyZXMgYSBMaXN0IG9yIEFycmF5IG9mIHZhbHVlcylcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBkaXJlY3Rpb24gZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIERpcmVjdGlvbiB7XG5cdEFTQyA9IFwiQVNDXCIsIC8vIEFzY2VuZGluZ1xuXHRERVNDID0gXCJERVNDXCIgLy8gRGVzY2VuZGluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgY29uZGl0aW9uIGZvciBmaWx0ZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb24ge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHR2YWx1ZTogYW55IHwgYW55W11cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHNvcnRpbmcgaW5zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XG5cdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRkaXJlY3Rpb246IERpcmVjdGlvblxufVxuXG4vKipcbiAqIERlZmluZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgbGlzdCBhbmQgY291bnQgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcblx0Y29uZGl0aW9ucz86IENvbmRpdGlvbltdLFxuXHRzb3J0cz86IFNvcnRbXSxcblx0bGltaXQ/OiBudW1iZXIsXG5cdG9mZnNldD86IG51bWJlcixcblx0bGFuZ3VhZ2U/OiBzdHJpbmdcbn1cblxuaW1wb3J0IHsgVHlwZWRRdWVyeVBhcmFtZXRlciwgTmFtZWRRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4vcXVlcnknO1xuXG4vKipcbiAqIEZhY2FkZSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdW5kZXJseWluZyBEaXJpZ2libGUgRGF0YSBTdG9yZS5cbiAqIEFsbCBtZXRob2RzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBKYXZhU2NyaXB0IG9iamVjdHMgdG8vZnJvbSBKU09OIHN0cmluZ3NcbiAqIGJlZm9yZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuYXRpdmUgSmF2YSBmYWNhZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yZSB7XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgbmV3IGVudHJ5IHRvIHRoZSBkYXRhIHN0b3JlLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3QgdG8gc2F2ZS5cblx0ICogQHJldHVybnMgVGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGVudHJ5IChzdHJpbmcgb3IgbnVtYmVyKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2F2ZShuYW1lOiBzdHJpbmcsIGVudHJ5OiBhbnkpOiBzdHJpbmcgfCBudW1iZXIge1xuXHRcdHJldHVybiBEYXRhU3RvcmVGYWNhZGUuc2F2ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluc2VydHMgYSBuZXcgZW50cnkgb3IgdXBkYXRlcyBhbiBleGlzdGluZyBvbmUgaWYgdGhlIElEIGlzIHByZXNlbnQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB0byBpbnNlcnQvdXBkYXRlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cHNlcnQobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwc2VydChuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50cnkuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoZSBJRCBhbmQgdXBkYXRlZCBkYXRhLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwZGF0ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RzIGVudHJpZXMgYmFzZWQgb24gb3B0aW9uYWwgZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgcGFnaW5hdGlvbiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxpc3QobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUubGlzdChuYW1lLCBvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiBudWxsKTtcblx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGJhc2VkIG9uIG9wdGlvbmFsIGZpbHRlcmluZyBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgbWF0Y2hpbmcgZW50cmllcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY291bnQobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG5cdFx0Y29uc3Qgb3B0aW9uc1N0cmluZyA9IG9wdGlvbnMgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSA6IG51bGw7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmNvdW50KG5hbWUsIG9wdGlvbnNTdHJpbmcpO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgc2luZ2xlIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeS5cblx0ICogQHJldHVybnMgVGhlIGVudHJ5IG9iamVjdCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0KG5hbWU6IHN0cmluZywgaWQ6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmdldChuYW1lLCBpZCk7XG5cdFx0Ly8gQXNzdW1pbmcgdGhlIG5hdGl2ZSBBUEkgcmV0dXJucyBudWxsL3VuZGVmaW5lZCBvciBhbiBlbXB0eSBKU09OIHN0cmluZyBpZiBub3QgZm91bmQsIFxuXHRcdC8vIG90aGVyd2lzZSBKU09OLnBhcnNlIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24uXG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IFwiXCIpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGFuIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShuYW1lOiBzdHJpbmcsIGlkOiBhbnkpOiB2b2lkIHtcblx0XHREYXRhU3RvcmVGYWNhZGUuZGVsZXRlRW50cnkobmFtZSwgaWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbmRzIGVudHJpZXMgbWF0Y2hpbmcgYW4gZXhhbXBsZSBvYmplY3QgKHF1ZXJ5LWJ5LWV4YW1wbGUpLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBleGFtcGxlIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gbWF0Y2guXG5cdCAqIEBwYXJhbSBsaW1pdCBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybi5cblx0ICogQHBhcmFtIG9mZnNldCBOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtYXRjaGluZyBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZpbmQobmFtZTogc3RyaW5nLCBleGFtcGxlOiBhbnksIGxpbWl0OiBudW1iZXIgPSAxMDAsIG9mZnNldDogbnVtYmVyID0gMCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUuZmluZChuYW1lLCBKU09OLnN0cmluZ2lmeShleGFtcGxlKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBzY3JpcHQgd2l0aCBwYWdpbmF0aW9uLlxuXHQgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHNjcmlwdC5cblx0ICogQHBhcmFtIGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuLlxuXHQgKiBAcGFyYW0gb2Zmc2V0IE51bWJlciBvZiByZXN1bHRzIHRvIHNraXAuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEphdmFTY3JpcHQgb2JqZWN0cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdLCBsaW1pdDogbnVtYmVyID0gMTAwLCBvZmZzZXQ6IG51bWJlciA9IDApOiBhbnlbXSB7XG5cdFx0bGV0IGFycjogYW55W10gPSBbXTtcblx0XHRpZiAocGFyYW1ldGVycyA9PSBudWxsKSB7XG5cdFx0XHRhcnIgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpO1xuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklucHV0IHBhcmFtZXRlciBzdHJpbmcgbXVzdCByZXByZXNlbnQgYSBKU09OIGFycmF5XCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyciA9IHBhcnNlZDtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBKU09OIHBhcmFtZXRlcnM6IFwiICsgZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpKSB7XG5cdFx0XHRhcnIgPSBwYXJhbWV0ZXJzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgSlNPTiBzdHJpbmdcIik7XG5cdFx0fVxuXG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeShxdWVyeSwgbnVsbCwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmaXJzdCA9IGFyclswXTtcblxuXHRcdC8vIE5hbWVkUXVlcnlQYXJhbWV0ZXIgKGhhcyBuYW1lICsgdHlwZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYW1lZChxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHQvLyBUeXBlZFF1ZXJ5UGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gUHJpbWl0aXZlIGFycmF5XG5cdFx0aWYgKFxuXHRcdFx0YXJyLmV2ZXJ5KFxuXHRcdFx0XHQodikgPT5cblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG5cdFx0XHRcdFx0diBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KHYpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBlbnRpdHkgbmFtZSB3aXRob3V0IHBhZ2luYXRpb24uXG5cdCAqIEBwYXJhbSBxdWVyeSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHF1ZXJ5TmF0aXZlKHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSwgbGltaXQ6IG51bWJlciA9IDEwMCwgb2Zmc2V0OiBudW1iZXIgPSAwKTogYW55W10ge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cdFx0aWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuXHRcdFx0YXJyID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcnIgPSBwYXJzZWQ7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuXHRcdFx0YXJyID0gcGFyYW1ldGVycztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYXRpdmUocXVlcnksIG51bGwsIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0XHQvLyBOYW1lZFF1ZXJ5UGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlTmFtZWQocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gVHlwZWRRdWVyeVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcInR5cGVcIiBpbiBmaXJzdCAmJiAhKFwibmFtZVwiIGluIGZpcnN0KSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFByaW1pdGl2ZSBhcnJheVxuXHRcdGlmIChcblx0XHRcdGFyci5ldmVyeShcblx0XHRcdFx0KHYpID0+XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHRcdFx0XHRcdHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSh2KVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuXHR9XG5cblx0Ly8gLS0tIE1ldGFkYXRhIEdldHRlcnMgLS0tXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0b3JlIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEVudGl0eU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldEVudGl0eU5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldFRhYmxlTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgYXMgdGhlIElEIGZpZWxkIGluIHRoZSBlbnRpdHkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRJZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBuYW1lIHVzZWQgZm9yIHRoZSBJRCBmaWVsZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0SWRDb2x1bW4obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkQ29sdW1uKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGEgSlNPTiBzdHJpbmcuXG5cdCAqIFJldHVybnMgdW5kZWZpbmVkIGZvciBudWxsL2VtcHR5IGlucHV0cy5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIHBhcnNlUmVzdWx0KHJlc3VsdDogYW55KTogYW55IHtcblx0XHRpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gJycpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0Ly8gYWxyZWFkeSBhbiBvYmplY3QvYXJyYXlcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEpTT04ucGFyc2UocmVzdWx0KTtcblx0fVxuXG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gU3RvcmU7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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
257
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3N0b3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZGIvc3RvcmVcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9kYlxuICogQG5hbWUgU3RvcmVcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBTdG9yZWAgY2xhc3MgdGhhdCBzZXJ2ZXMgYXMgYSBmYWNhZGUgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHVuZGVybHlpbmcgRGlyaWdpYmxlIERhdGEgU3RvcmUuIFRoZSBgU3RvcmVgIGNsYXNzIG9mZmVycyBtZXRob2RzIGZvciBwZXJmb3JtaW5nIENSVUQgb3BlcmF0aW9ucywgZXhlY3V0aW5nIHBhcmFtZXRlcml6ZWQgcXVlcmllcywgYW5kIHJldHJpZXZpbmcgbWV0YWRhdGEgYWJvdXQgZW50aXRpZXMuIEl0IGFic3RyYWN0cyBhd2F5IHRoZSBjb21wbGV4aXRpZXMgb2YgSlNPTiBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gd2hlbiBjb21tdW5pY2F0aW5nIHdpdGggdGhlIG5hdGl2ZSBKYXZhIGZhY2FkZSwgYWxsb3dpbmcgZGV2ZWxvcGVycyB0byB3b3JrIHdpdGggcGxhaW4gSmF2YVNjcmlwdCBvYmplY3RzIGFuZCBhcnJheXMgc2VhbWxlc3NseS5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogLSBDUlVEIE9wZXJhdGlvbnM6IENyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIGVudHJpZXMgaW4gdGhlIGRhdGEgc3RvcmUgdXNpbmcgc2ltcGxlIG1ldGhvZHMuXG4gKiAtIFF1ZXJ5IEV4ZWN1dGlvbjogRXhlY3V0ZSBwYXJhbWV0ZXJpemVkIHF1ZXJpZXMgd2l0aCBzdXBwb3J0IGZvciBib3RoIHByaW1pdGl2ZSBhbmQgY29tcGxleCBwYXJhbWV0ZXJzLlxuICogLSBNZXRhZGF0YSBSZXRyaWV2YWw6IEFjY2VzcyBtZXRhZGF0YSBhYm91dCBlbnRpdGllcywgc3VjaCBhcyB0YWJsZSBuYW1lcyBhbmQgSUQgZmllbGRzLlxuICogLSBKU09OIEhhbmRsaW5nOiBBdXRvbWF0aWNhbGx5IGhhbmRsZXMgSlNPTiBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgSmF2YVNjcmlwdCBvYmplY3RzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbmF0aXZlIEphdmEgQVBJcy5cbiAqIFxuICogIyMjIFVzZSBDYXNlc1xuICogLSBNYW5hZ2luZyBhcHBsaWNhdGlvbiBkYXRhIGluIGEgc3RydWN0dXJlZCB3YXkgdXNpbmcgdGhlIGRhdGEgc3RvcmUuXG4gKiAtIEV4ZWN1dGluZyBjb21wbGV4IHF1ZXJpZXMgd2l0aCBkeW5hbWljIHBhcmFtZXRlcnMgdG8gcmV0cmlldmUgc3BlY2lmaWMgc3Vic2V0cyBvZiBkYXRhLlxuICogLSBBYnN0cmFjdGluZyBhd2F5IGRhdGFiYXNlIGludGVyYWN0aW9ucyB0byBhbGxvdyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlIGFuZCBwb3RlbnRpYWwgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgZGF0YSBzdG9yYWdlIG1lY2hhbmlzbS5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcbiAqIFxuICogLy8gU2F2ZSBhIG5ldyBlbnRyeSB0byB0aGUgXCJ1c2Vyc1wiIGVudGl0eVxuICogY29uc3QgdXNlcklkID0gU3RvcmUuc2F2ZShcInVzZXJzXCIsIHsgbmFtZTogXCJBbGljZVwiLCBlbWFpbDogXCJhbGljZUBleGFtcGxlLmNvbVwiIH0pO1xuICogYGBgXG4gKi9cblxuY29uc3QgRGF0YVN0b3JlRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmRiLkRhdGFTdG9yZUZhY2FkZVwiKTtcblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIHF1ZXJ5IGNvbmRpdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcblx0RVEgPSBcIj1cIiwgLy8gRXF1YWxzXG5cdE5FID0gXCI8PlwiLCAvLyBOb3QgRXF1YWxzXG5cdEdUID0gXCI+XCIsIC8vIEdyZWF0ZXIgVGhhblxuXHRMVCA9IFwiPFwiLCAvLyBMZXNzIFRoYW5cblx0R0UgPSBcIj49XCIsIC8vIEdyZWF0ZXIgVGhhbiBvciBFcXVhbHNcblx0TEUgPSBcIjw9XCIsIC8vIExlc3MgVGhhbiBvciBFcXVhbHNcblx0TElLRSA9IFwiTElLRVwiLCAvLyBTUUwgTElLRSBvcGVyYXRvclxuXHRCRVRXRUVOID0gXCJCRVRXRUVOXCIsIC8vIFNRTCBCRVRXRUVOIG9wZXJhdG9yIChyZXF1aXJlcyB0d28gdmFsdWVzKVxuXHRJTiA9IFwiSU5cIiAvLyBTUUwgSU4gb3BlcmF0b3IgKHJlcXVpcmVzIGEgTGlzdCBvciBBcnJheSBvZiB2YWx1ZXMpXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgZGlyZWN0aW9uIGZvciBzb3J0aW5nLlxuICovXG5leHBvcnQgZW51bSBEaXJlY3Rpb24ge1xuXHRBU0MgPSBcIkFTQ1wiLCAvLyBBc2NlbmRpbmdcblx0REVTQyA9IFwiREVTQ1wiIC8vIERlc2NlbmRpbmdcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGNvbmRpdGlvbiBmb3IgZmlsdGVyaW5nIGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uIHtcblx0cHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdG9wZXJhdG9yOiBPcGVyYXRvcixcblx0dmFsdWU6IGFueSB8IGFueVtdXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBzb3J0aW5nIGluc3RydWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvcnQge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0ZGlyZWN0aW9uOiBEaXJlY3Rpb25cbn1cblxuLyoqXG4gKiBEZWZpbmVzIG9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGxpc3QgYW5kIGNvdW50IG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG5cdGNvbmRpdGlvbnM/OiBDb25kaXRpb25bXSxcblx0c29ydHM/OiBTb3J0W10sXG5cdGxpbWl0PzogbnVtYmVyLFxuXHRvZmZzZXQ/OiBudW1iZXIsXG5cdGxhbmd1YWdlPzogc3RyaW5nXG59XG5cbmltcG9ydCB7IFR5cGVkUXVlcnlQYXJhbWV0ZXIsIE5hbWVkUXVlcnlQYXJhbWV0ZXIgfSBmcm9tICcuL3F1ZXJ5JztcblxuLyoqXG4gKiBGYWNhZGUgY2xhc3MgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHVuZGVybHlpbmcgRGlyaWdpYmxlIERhdGEgU3RvcmUuXG4gKiBBbGwgbWV0aG9kcyBzZXJpYWxpemUvZGVzZXJpYWxpemUgSmF2YVNjcmlwdCBvYmplY3RzIHRvL2Zyb20gSlNPTiBzdHJpbmdzXG4gKiBiZWZvcmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbmF0aXZlIEphdmEgZmFjYWRlLlxuICovXG5leHBvcnQgY2xhc3MgU3RvcmUge1xuXG5cdC8qKlxuXHQgKiBTYXZlcyBhIG5ldyBlbnRyeSB0byB0aGUgZGF0YSBzdG9yZS5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gZW50cnkgVGhlIEphdmFTY3JpcHQgb2JqZWN0IHRvIHNhdmUuXG5cdCAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBlbnRyeSAoc3RyaW5nIG9yIG51bWJlcikuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHNhdmUobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogc3RyaW5nIHwgbnVtYmVyIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLnNhdmUobmFtZSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbnNlcnRzIGEgbmV3IGVudHJ5IG9yIHVwZGF0ZXMgYW4gZXhpc3Rpbmcgb25lIGlmIHRoZSBJRCBpcyBwcmVzZW50LlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3QgdG8gaW5zZXJ0L3VwZGF0ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdXBzZXJ0KG5hbWU6IHN0cmluZywgZW50cnk6IGFueSk6IHZvaWQge1xuXHRcdERhdGFTdG9yZUZhY2FkZS51cHNlcnQobmFtZSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGVudHJ5LlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGUgSUQgYW5kIHVwZGF0ZWQgZGF0YS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdXBkYXRlKG5hbWU6IHN0cmluZywgZW50cnk6IGFueSk6IHZvaWQge1xuXHRcdERhdGFTdG9yZUZhY2FkZS51cGRhdGUobmFtZSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMaXN0cyBlbnRyaWVzIGJhc2VkIG9uIG9wdGlvbmFsIGZpbHRlcmluZywgc29ydGluZywgYW5kIHBhZ2luYXRpb24gb3B0aW9ucy5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCB7QGxpbmsgT3B0aW9uc30gZm9yIHF1ZXJ5IGV4ZWN1dGlvbi5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgSmF2YVNjcmlwdCBvYmplY3RzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBsaXN0KG5hbWU6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbnMpOiBhbnlbXSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmxpc3QobmFtZSwgb3B0aW9ucyA/IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpIDogbnVsbCk7XG5cdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ291bnRzIHRoZSBudW1iZXIgb2YgZW50cmllcyBiYXNlZCBvbiBvcHRpb25hbCBmaWx0ZXJpbmcgb3B0aW9ucy5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCB7QGxpbmsgT3B0aW9uc30gZm9yIHF1ZXJ5IGV4ZWN1dGlvbi5cblx0ICogQHJldHVybnMgVGhlIGNvdW50IG9mIG1hdGNoaW5nIGVudHJpZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNvdW50KG5hbWU6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbnMpOiBudW1iZXIge1xuXHRcdGNvbnN0IG9wdGlvbnNTdHJpbmcgPSBvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiBudWxsO1xuXHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5jb3VudChuYW1lLCBvcHRpb25zU3RyaW5nKTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHNpbmdsZSBlbnRyeSBieSBpdHMgSUQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50cnkuXG5cdCAqIEByZXR1cm5zIFRoZSBlbnRyeSBvYmplY3QsIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmQuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldChuYW1lOiBzdHJpbmcsIGlkOiBhbnkpOiBhbnkgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5nZXQobmFtZSwgaWQpO1xuXHRcdC8vIEFzc3VtaW5nIHRoZSBuYXRpdmUgQVBJIHJldHVybnMgbnVsbC91bmRlZmluZWQgb3IgYW4gZW1wdHkgSlNPTiBzdHJpbmcgaWYgbm90IGZvdW5kLCBcblx0XHQvLyBvdGhlcndpc2UgSlNPTi5wYXJzZSBoYW5kbGVzIHRoZSBjb252ZXJzaW9uLlxuXHRcdGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBcIlwiKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0fTtcblxuXHQvKipcblx0ICogRGVsZXRlcyBhbiBlbnRyeSBieSBpdHMgSUQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50cnkgdG8gcmVtb3ZlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyByZW1vdmUobmFtZTogc3RyaW5nLCBpZDogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLmRlbGV0ZUVudHJ5KG5hbWUsIGlkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kcyBlbnRyaWVzIG1hdGNoaW5nIGFuIGV4YW1wbGUgb2JqZWN0IChxdWVyeS1ieS1leGFtcGxlKS5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gZXhhbXBsZSBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIHRvIG1hdGNoLlxuXHQgKiBAcGFyYW0gbGltaXQgTWF4aW11bSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4uXG5cdCAqIEBwYXJhbSBvZmZzZXQgTnVtYmVyIG9mIHJlc3VsdHMgdG8gc2tpcC5cblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgbWF0Y2hpbmcgSmF2YVNjcmlwdCBvYmplY3RzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBmaW5kKG5hbWU6IHN0cmluZywgZXhhbXBsZTogYW55LCBsaW1pdDogbnVtYmVyID0gMTAwLCBvZmZzZXQ6IG51bWJlciA9IDApOiBhbnlbXSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmZpbmQobmFtZSwgSlNPTi5zdHJpbmdpZnkoZXhhbXBsZSksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFF1ZXJpZXMgYWxsIGVudHJpZXMgZm9yIGEgZ2l2ZW4gc2NyaXB0IHdpdGggcGFnaW5hdGlvbi5cblx0ICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSBzY3JpcHQuXG5cdCAqIEBwYXJhbSBsaW1pdCBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybi5cblx0ICogQHBhcmFtIG9mZnNldCBOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSwgbGltaXQ6IG51bWJlciA9IDEwMCwgb2Zmc2V0OiBudW1iZXIgPSAwKTogYW55W10ge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cdFx0aWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuXHRcdFx0YXJyID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcnIgPSBwYXJzZWQ7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuXHRcdFx0YXJyID0gcGFyYW1ldGVycztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIG51bGwsIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0XHQvLyBOYW1lZFF1ZXJ5UGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmFtZWQocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gVHlwZWRRdWVyeVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcInR5cGVcIiBpbiBmaXJzdCAmJiAhKFwibmFtZVwiIGluIGZpcnN0KSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5KHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFByaW1pdGl2ZSBhcnJheVxuXHRcdGlmIChcblx0XHRcdGFyci5ldmVyeShcblx0XHRcdFx0KHYpID0+XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHRcdFx0XHRcdHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSh2KVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5KHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFF1ZXJpZXMgYWxsIGVudHJpZXMgZm9yIGEgZ2l2ZW4gZW50aXR5IG5hbWUgd2l0aG91dCBwYWdpbmF0aW9uLlxuXHQgKiBAcGFyYW0gcXVlcnkgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgSmF2YVNjcmlwdCBvYmplY3RzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBxdWVyeU5hdGl2ZShxdWVyeTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgVHlwZWRRdWVyeVBhcmFtZXRlciB8IE5hbWVkUXVlcnlQYXJhbWV0ZXIpW10sIGxpbWl0OiBudW1iZXIgPSAxMDAsIG9mZnNldDogbnVtYmVyID0gMCk6IGFueVtdIHtcblx0XHRsZXQgYXJyOiBhbnlbXSA9IFtdO1xuXHRcdGlmIChwYXJhbWV0ZXJzID09IG51bGwpIHtcblx0XHRcdGFyciA9IFtdO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtZXRlcnMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocGFyYW1ldGVycyk7XG5cdFx0XHRcdGlmICghQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcGFyYW1ldGVyIHN0cmluZyBtdXN0IHJlcHJlc2VudCBhIEpTT04gYXJyYXlcIik7XG5cdFx0XHRcdH1cblx0XHRcdFx0YXJyID0gcGFyc2VkO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEpTT04gcGFyYW1ldGVyczogXCIgKyBlKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1ldGVycykpIHtcblx0XHRcdGFyciA9IHBhcmFtZXRlcnM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgbXVzdCBiZSBlaXRoZXIgYW4gYXJyYXkgb3IgYSBKU09OIHN0cmluZ1wiKTtcblx0XHR9XG5cblx0XHRpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBudWxsLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpcnN0ID0gYXJyWzBdO1xuXG5cdFx0Ly8gTmFtZWRRdWVyeVBhcmFtZXRlciAoaGFzIG5hbWUgKyB0eXBlKVxuXHRcdGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJuYW1lXCIgaW4gZmlyc3QgJiYgXCJ0eXBlXCIgaW4gZmlyc3QpIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeU5hdGl2ZU5hbWVkKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFR5cGVkUXVlcnlQYXJhbWV0ZXIgKGhhcyB0eXBlLCBubyBuYW1lKVxuXHRcdGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJ0eXBlXCIgaW4gZmlyc3QgJiYgIShcIm5hbWVcIiBpbiBmaXJzdCkpIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeU5hdGl2ZShxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHQvLyBQcmltaXRpdmUgYXJyYXlcblx0XHRpZiAoXG5cdFx0XHRhcnIuZXZlcnkoXG5cdFx0XHRcdCh2KSA9PlxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcInN0cmluZ1wiIHx8XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwibnVtYmVyXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIgfHxcblx0XHRcdFx0XHR2IGluc3RhbmNlb2YgRGF0ZSB8fFxuXHRcdFx0XHRcdEFycmF5LmlzQXJyYXkodilcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeU5hdGl2ZShxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBwYXJhbWV0ZXIgZm9ybWF0OiBcIiArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpKTtcblx0fVxuXG5cdC8vIC0tLSBNZXRhZGF0YSBHZXR0ZXJzIC0tLVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdG9yZSBuYW1lLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRFbnRpdHlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIERhdGFTdG9yZUZhY2FkZS5nZXRFbnRpdHlOYW1lKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YWJhc2UgdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0VGFibGVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIERhdGFTdG9yZUZhY2FkZS5nZXRUYWJsZU5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZSB1c2VkIGFzIHRoZSBJRCBmaWVsZCBpbiB0aGUgZW50aXR5IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0SWROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIERhdGFTdG9yZUZhY2FkZS5nZXRJZE5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBjb2x1bW4gbmFtZSB1c2VkIGZvciB0aGUgSUQgZmllbGQuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldElkQ29sdW1uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIERhdGFTdG9yZUZhY2FkZS5nZXRJZENvbHVtbihuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZSBhIEpTT04gc3RyaW5nLlxuXHQgKiBSZXR1cm5zIHVuZGVmaW5lZCBmb3IgbnVsbC9lbXB0eSBpbnB1dHMuXG5cdCAqL1xuXHRwcml2YXRlIHN0YXRpYyBwYXJzZVJlc3VsdChyZXN1bHQ6IGFueSk6IGFueSB7XG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09ICcnKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdC8vIGFscmVhZHkgYW4gb2JqZWN0L2FycmF5XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblxuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCk7XG5cdH1cblxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFN0b3JlO1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkEsTUFBTSxrQkFBa0IsS0FBSyxLQUFLLHlEQUF5RDtBQUtwRixJQUFLLFdBQUwsa0JBQUtBLGNBQUw7QUFDTixFQUFBQSxVQUFBLFFBQUs7QUFDTCxFQUFBQSxVQUFBLFFBQUs7QUFDTCxFQUFBQSxVQUFBLFFBQUs7QUFDTCxFQUFBQSxVQUFBLFFBQUs7QUFDTCxFQUFBQSxVQUFBLFFBQUs7QUFDTCxFQUFBQSxVQUFB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
@@ -97,4 +97,4 @@ class Translator {
97
97
  if (typeof module !== "undefined") {
98
98
  module.exports = Translator;
99
99
  }
100
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3RyYW5zbGF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHNxbCwgcXVlcnkgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2RiXCI7XG5cbi8qKlxuICogUHJvdmlkZXMgc3RhdGljIG1ldGhvZHMgZm9yIHRyYW5zbGF0aW5nIGVudGl0eSBwcm9wZXJ0aWVzIGJhc2VkIG9uIGEgZGVkaWNhdGVkIGxhbmd1YWdlIHRhYmxlLlxuICogVHJhbnNsYXRpb24gaXMgYWNoaWV2ZWQgYnkgcXVlcnlpbmcgYSBzZXBhcmF0ZSB0YWJsZSAoZS5nLiwgJ0JBU0VfVEFCTEVfTEFORycpIGFuZCBtZXJnaW5nXG4gKiB0aGUgdHJhbnNsYXRlZCBmaWVsZHMgYmFjayBpbnRvIHRoZSBvcmlnaW5hbCBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRvciB7XG5cblx0LyoqXG5cdCAqIFRyYW5zbGF0ZXMgcHJvcGVydGllcyBmb3IgYSBsaXN0IG9mIGVudGl0aWVzIGJ5IHF1ZXJ5aW5nIHRoZSBjb3JyZXNwb25kaW5nIGxhbmd1YWdlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0gbGlzdCBUaGUgYXJyYXkgb2YgZW50aXRpZXMgdG8gYmUgdHJhbnNsYXRlZC5cblx0ICogQHBhcmFtIGxhbmd1YWdlIFRoZSB0YXJnZXQgbGFuZ3VhZ2UgY29kZSAoZS5nLiwgJ2VuJywgJ2RlJykuIElmIHVuZGVmaW5lZCwgbm8gdHJhbnNsYXRpb24gb2NjdXJzLlxuXHQgKiBAcGFyYW0gYmFzZXRUYWJsZSBUaGUgbmFtZSBvZiB0aGUgYmFzZSBlbnRpdHkgdGFibGUgKHVzZWQgdG8gZGVyaXZlIHRoZSBsYW5ndWFnZSB0YWJsZSBuYW1lKS5cblx0ICogQHJldHVybnMgVGhlIHRyYW5zbGF0ZWQgYXJyYXkgb2YgZW50aXRpZXMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHRyYW5zbGF0ZUxpc3QobGlzdDogYW55W10sIGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGJhc2V0VGFibGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgaWYgKGxpc3QgJiYgbGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHRyeSB7XG5cdFx0XHRcdC8vIENvbnN0cnVjdCB0aGUgcXVlcnkgZm9yIGFsbCB0cmFuc2xhdGVkIGNvbHVtbnMgaW4gdGhlIHRhcmdldCBsYW5ndWFnZS5cblx0XHRcdFx0Ly8gQXNzdW1lcyB0aGUgbGFuZ3VhZ2UgdGFibGUgaXMgbmFtZWQgJ0JBU0VfVEFCTEVfTEFORycuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gc3FsLmdldERpYWxlY3QoKVxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KClcbiAgICAgICAgICAgICAgICAgICAgLmNvbHVtbihcIipcIilcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ1wiJyArIGJhc2V0VGFibGUgKyAnX0xBTkdcIicpXG4gICAgICAgICAgICAgICAgICAgIC53aGVyZSgnTGFuZ3VhZ2UgPSA/JylcbiAgICAgICAgICAgICAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRTZXQ6IGFueVtdID0gcXVlcnkuZXhlY3V0ZShzY3JpcHQsIFtsYW5ndWFnZV0pO1xuXG5cdFx0XHRcdC8vIENoZWNrIGlmIGFueSB0cmFuc2xhdGlvbnMgd2VyZSBmb3VuZFxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRTZXQgJiYgcmVzdWx0U2V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyZXN1bHRTZXRbMF0pO1xuICAgICAgICAgICAgICAgICAgICBcblx0XHRcdFx0XHQvLyBBc3N1bXB0aW9uOiB0cmFuc2xhdGVkUHJvcGVydGllc1swXSBpcyB0aGUgZW50aXR5IElEIHByb3BlcnR5IG5hbWUuXG5cdFx0XHRcdFx0Ly8gQXNzdW1wdGlvbjogVGhlIGxhc3QgdHdvIHByb3BlcnRpZXMgYXJlIHRoZSBJRCBwcm9wZXJ0eSBhbmQgdGhlIExhbmd1YWdlIHByb3BlcnR5LCBsZWF2aW5nIE4tMiBmb3IgdHJhbnNsYXRlZCBkYXRhLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBJRF9QUk9QRVJUWV9OQU1FID0gdHJhbnNsYXRlZFByb3BlcnRpZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IE5VTV9UUkFOU0xBVEVEX1BST1BFUlRJRVMgPSB0cmFuc2xhdGVkUHJvcGVydGllcy5sZW5ndGggLSAyO1xuICAgICAgICAgICAgICAgICAgICBcblx0XHRcdFx0XHQvLyBDcmVhdGUgYW4gYXJyYXkgb2YgbWFwcywgb25lIG1hcCBwZXIgdHJhbnNsYXRlZCBwcm9wZXJ0eSBuYW1lOiB7IElEX3ZhbHVlIC0+IHRyYW5zbGF0ZWRfdmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbk1hcHM6IFJlY29yZDxhbnksIGFueT5bXSA9IEFycmF5KE5VTV9UUkFOU0xBVEVEX1BST1BFUlRJRVMpLmZpbGwobnVsbCkubWFwKCgpID0+ICh7fSkpO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIHRyYW5zbGF0aW9uIG1hcHMgZnJvbSB0aGUgcmVzdWx0IHNldFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRTZXQuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRWYWx1ZSA9IHJbSURfUFJPUEVSVFlfTkFNRV07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5VTV9UUkFOU0xBVEVEX1BST1BFUlRJRVM7IGkrKykge1xuXHRcdFx0XHRcdFx0XHQvLyB0cmFuc2xhdGVkUHJvcGVydGllc1tpICsgMV0gaG9sZHMgdGhlIGFjdHVhbCB0cmFuc2xhdGVkIGZpZWxkIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk1hcHNbaV1baWRWYWx1ZV0gPSByW3RyYW5zbGF0ZWRQcm9wZXJ0aWVzW2kgKyAxXV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG5cdFx0XHRcdFx0Ly8gQXBwbHkgdGhlIHRyYW5zbGF0aW9ucyB0byB0aGUgb3JpZ2luYWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICBsaXN0LmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkVmFsdWUgPSByW0lEX1BST1BFUlRZX05BTUVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOVU1fVFJBTlNMQVRFRF9QUk9QRVJUSUVTOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkS2V5ID0gdHJhbnNsYXRlZFByb3BlcnRpZXNbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRWYWx1ZSA9IHRyYW5zbGF0aW9uTWFwc1tpXVtpZFZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlZFZhbHVlICE9PSB1bmRlZmluZWQgJiYgdHJhbnNsYXRlZFZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3ZlcndyaXRlIHRoZSBiYXNlIHByb3BlcnR5IHdpdGggdGhlIHRyYW5zbGF0ZWQgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgclt0cmFuc2xhdGVkS2V5XSA9IHRyYW5zbGF0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVudGl0eSBpcyBtYXJrZWQgYXMgbGFuZ3VhZ2UgZGVwZW5kZW50LCBidXQgbm8gbGFuZ3VhZ2UgdGFibGUgcHJlc2VudCBmb3I6IFwiICsgYmFzZXRUYWJsZSwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblx0XG5cdC8qKlxuXHQgKiBUcmFuc2xhdGVzIHByb3BlcnRpZXMgZm9yIGEgc2luZ2xlIGVudGl0eSBieSBxdWVyeWluZyB0aGUgY29ycmVzcG9uZGluZyBsYW5ndWFnZSB0YWJsZS5cblx0ICpcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgZW50aXR5IG9iamVjdCB0byBiZSB0cmFuc2xhdGVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHkuXG5cdCAqIEBwYXJhbSBsYW5ndWFnZSBUaGUgdGFyZ2V0IGxhbmd1YWdlIGNvZGUgKGUuZy4sICdlbicsICdkZScpLiBJZiB1bmRlZmluZWQsIG5vIHRyYW5zbGF0aW9uIG9jY3Vycy5cblx0ICogQHBhcmFtIGJhc2V0VGFibGUgVGhlIG5hbWUgb2YgdGhlIGJhc2UgZW50aXR5IHRhYmxlLlxuXHQgKiBAcmV0dXJucyBUaGUgdHJhbnNsYXRlZCBlbnRpdHkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB0cmFuc2xhdGVFbnRpdHkoZW50aXR5OiBhbnksIGlkOiBzdHJpbmcgfCBudW1iZXIsIGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGJhc2V0VGFibGU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChlbnRpdHkgJiYgbGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHRyeSB7XG5cdFx0XHRcdC8vIENvbnN0cnVjdCB0aGUgcXVlcnkgZm9yIGEgc3BlY2lmaWMgSUQgYW5kIExhbmd1YWdlXG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gc3FsLmdldERpYWxlY3QoKVxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KClcbiAgICAgICAgICAgICAgICAgICAgLmNvbHVtbihcIipcIilcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ1wiJyArIGJhc2V0VGFibGUgKyAnX0xBTkdcIicpXG4gICAgICAgICAgICAgICAgICAgIC53aGVyZSgnTGFuZ3VhZ2UgPSA/JylcbiAgICAgICAgICAgICAgICAgICAgLndoZXJlKCdJZCA9ID8nKVxuICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdFNldDogYW55W10gPSBxdWVyeS5leGVjdXRlKHNjcmlwdCwgW2xhbmd1YWdlLCBpZF0pO1xuXG5cdFx0XHRcdC8vIFNpbmNlIHdlIHF1ZXJ5IGJ5IElkIGFuZCBMYW5ndWFnZSwgd2UgZXhwZWN0IGF0IG1vc3Qgb25lIHJvdy5cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0U2V0ICYmIHJlc3VsdFNldC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uUm93ID0gcmVzdWx0U2V0WzBdO1xuICAgICAgICAgICAgICAgICAgICBcblx0XHRcdFx0XHQvLyBJdGVyYXRlIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgb2YgdGhlIHRyYW5zbGF0aW9uIHJvdyBhbmQgbWVyZ2UgdGhlbSBpbnRvIHRoZSBlbnRpdHkuXG5cdFx0XHRcdFx0Ly8gV2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgYmFzZSB0YWJsZSBjb2x1bW5zIChleGNlcHQgSUQgYW5kIExhbmd1YWdlIGtleXMpIGFsaWduIHdpdGggdGhlIHRyYW5zbGF0aW9uIHRhYmxlIGNvbHVtbnMuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRyYW5zbGF0aW9uUm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRpb25Sb3cuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdFx0XHRcdFx0XHQvLyBBdm9pZCBvdmVyd3JpdGluZyB0aGUgZW50aXR5J3MgSUQgYW5kIExhbmd1YWdlIGtleSBpZiB0aGV5IGV4aXN0LCBcblx0XHRcdFx0XHRcdFx0Ly8gYWx0aG91Z2ggdHlwaWNhbGx5IHRoZSBsYW5ndWFnZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGJhc2UgZW50aXR5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICdJZCcgJiYga2V5ICE9PSAnTGFuZ3VhZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eVtrZXldID0gdHJhbnNsYXRpb25Sb3dba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFbnRpdHkgaXMgbWFya2VkIGFzIGxhbmd1YWdlIGRlcGVuZGVudCwgYnV0IG5vIGxhbmd1YWdlIHRhYmxlIHByZXNlbnQgZm9yOiBcIiArIGJhc2V0VGFibGUsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgIH1cblx0XHRcbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBUcmFuc2xhdG9yO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQTJCO0FBT3BCLE1BQU0sV0FBVztBQUFBO0FBQUE7QUFBQTtB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
100
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3RyYW5zbGF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBkYi90cmFuc2xhdG9yXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvZGJcbiAqIEBuYW1lIFRyYW5zbGF0b3JcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgdHJhbnNsYXRpbmcgZW50aXR5IHByb3BlcnRpZXMgYmFzZWQgb24gYSBkZWRpY2F0ZWQgbGFuZ3VhZ2UgdGFibGUuXG4gKiBUcmFuc2xhdGlvbiBpcyBhY2hpZXZlZCBieSBxdWVyeWluZyBhIHNlcGFyYXRlIHRhYmxlIChlLmcuLCAnQkFTRV9UQUJMRV9MQU5HJykgYW5kIG1lcmdpbmdcbiAqIHRoZSB0cmFuc2xhdGVkIGZpZWxkcyBiYWNrIGludG8gdGhlIG9yaWdpbmFsIGRhdGEuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gVHJhbnNsYXRlcyBwcm9wZXJ0aWVzIGZvciBhIGxpc3Qgb2YgZW50aXRpZXMgYmFzZWQgb24gYSBzcGVjaWZpZWQgbGFuZ3VhZ2UgY29kZS5cbiAqIC0gVHJhbnNsYXRlcyBwcm9wZXJ0aWVzIGZvciBhIHNpbmdsZSBlbnRpdHkgYmFzZWQgb24gaXRzIElEIGFuZCBhIHNwZWNpZmllZCBsYW5ndWFnZSBjb2RlLlxuICogLSBIYW5kbGVzIGNhc2VzIHdoZXJlIHRoZSBsYW5ndWFnZSB0YWJsZSBtYXkgbm90IGJlIHByZXNlbnQsIHByb3ZpZGluZyBlcnJvciBsb2dnaW5nLlxuICogXG4gKiAjIyMgVXNlIENhc2VzXG4gKiAtIFN1cHBvcnRpbmcgbXVsdGlsaW5ndWFsIGFwcGxpY2F0aW9ucyBieSB0cmFuc2xhdGluZyBlbnRpdHkgcHJvcGVydGllcyBhY2NvcmRpbmcgdG8gdXNlciBwcmVmZXJlbmNlcyBvciBsb2NhbGUgc2V0dGluZ3MuXG4gKiAtIEludGVncmF0aW5nIHdpdGggZXhpc3RpbmcgZGF0YWJhc2Ugc2NoZW1hcyB0aGF0IHVzZSBzZXBhcmF0ZSBsYW5ndWFnZSB0YWJsZXMgZm9yIHRyYW5zbGF0aW9ucy5cbiAqIC0gUHJvdmlkaW5nIGEgY29uc2lzdGVudCB0cmFuc2xhdGlvbiBtZWNoYW5pc20gYWNyb3NzIGRpZmZlcmVudCBtb2R1bGVzIHRoYXQgcmVxdWlyZSBsb2NhbGl6ZWQgZGF0YS5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBUcmFuc2xhdG9yIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9kYlwiO1xuICogXG4gKiAvLyBFeGFtcGxlOiBUcmFuc2xhdGluZyBhIGxpc3Qgb2YgcHJvZHVjdHMgdG8gR2VybWFuXG4gKiBjb25zdCBwcm9kdWN0cyA9IFtcbiAqICAgeyBJZDogMSwgTmFtZTogXCJMYXB0b3BcIiwgRGVzY3JpcHRpb246IFwiQSBwb3J0YWJsZSBjb21wdXRlclwiIH0sXG4gKiAgIHsgSWQ6IDIsIE5hbWU6IFwiUGhvbmVcIiwgRGVzY3JpcHRpb246IFwiQSBtb2JpbGUgZGV2aWNlXCIgfVxuICogXTtcbiAqIGNvbnN0IHRyYW5zbGF0ZWRQcm9kdWN0cyA9IFRyYW5zbGF0b3IudHJhbnNsYXRlTGlzdChwcm9kdWN0cywgJ2RlJywgJ1BST0RVQ1RTJyk7XG4gKiBjb25zb2xlLmxvZyh0cmFuc2xhdGVkUHJvZHVjdHMpO1xuICogXG4gKiAvLyBFeGFtcGxlOiBUcmFuc2xhdGluZyBhIHNpbmdsZSB1c2VyIGVudGl0eSB0byBGcmVuY2hcbiAqIGNvbnN0IHVzZXIgPSB7IElkOiAxLCBGaXJzdE5hbWU6IFwiSm9oblwiLCBMYXN0TmFtZTogXCJEb2VcIiB9O1xuICogY29uc3QgdHJhbnNsYXRlZFVzZXIgPSBUcmFuc2xhdG9yLnRyYW5zbGF0ZUVudGl0eSh1c2VyLCAxLCAnZnInLCAnVVNFUlMnKTtcbiAqIGNvbnNvbGUubG9nKHRyYW5zbGF0ZWRVc2VyKTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IHNxbCwgcXVlcnkgfSBmcm9tIFwiQGFlcm9raXQvc2RrL2RiXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdG9yIHtcblxuXHQvKipcblx0ICogVHJhbnNsYXRlcyBwcm9wZXJ0aWVzIGZvciBhIGxpc3Qgb2YgZW50aXRpZXMgYnkgcXVlcnlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbGFuZ3VhZ2UgdGFibGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBsaXN0IFRoZSBhcnJheSBvZiBlbnRpdGllcyB0byBiZSB0cmFuc2xhdGVkLlxuXHQgKiBAcGFyYW0gbGFuZ3VhZ2UgVGhlIHRhcmdldCBsYW5ndWFnZSBjb2RlIChlLmcuLCAnZW4nLCAnZGUnKS4gSWYgdW5kZWZpbmVkLCBubyB0cmFuc2xhdGlvbiBvY2N1cnMuXG5cdCAqIEBwYXJhbSBiYXNldFRhYmxlIFRoZSBuYW1lIG9mIHRoZSBiYXNlIGVudGl0eSB0YWJsZSAodXNlZCB0byBkZXJpdmUgdGhlIGxhbmd1YWdlIHRhYmxlIG5hbWUpLlxuXHQgKiBAcmV0dXJucyBUaGUgdHJhbnNsYXRlZCBhcnJheSBvZiBlbnRpdGllcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgdHJhbnNsYXRlTGlzdChsaXN0OiBhbnlbXSwgbGFuZ3VhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCwgYmFzZXRUYWJsZTogc3RyaW5nKTogYW55W10ge1xuICAgICAgICBpZiAobGlzdCAmJiBsYW5ndWFnZSkge1xuICAgICAgICAgICAgdHJ5IHtcblx0XHRcdFx0Ly8gQ29uc3RydWN0IHRoZSBxdWVyeSBmb3IgYWxsIHRyYW5zbGF0ZWQgY29sdW1ucyBpbiB0aGUgdGFyZ2V0IGxhbmd1YWdlLlxuXHRcdFx0XHQvLyBBc3N1bWVzIHRoZSBsYW5ndWFnZSB0YWJsZSBpcyBuYW1lZCAnQkFTRV9UQUJMRV9MQU5HJy5cbiAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBzcWwuZ2V0RGlhbGVjdCgpXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAgICAgICAgICAgICAuY29sdW1uKFwiKlwiKVxuICAgICAgICAgICAgICAgICAgICAuZnJvbSgnXCInICsgYmFzZXRUYWJsZSArICdfTEFOR1wiJylcbiAgICAgICAgICAgICAgICAgICAgLndoZXJlKCdMYW5ndWFnZSA9ID8nKVxuICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdFNldDogYW55W10gPSBxdWVyeS5leGVjdXRlKHNjcmlwdCwgW2xhbmd1YWdlXSk7XG5cblx0XHRcdFx0Ly8gQ2hlY2sgaWYgYW55IHRyYW5zbGF0aW9ucyB3ZXJlIGZvdW5kXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFNldCAmJiByZXN1bHRTZXQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkUHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJlc3VsdFNldFswXSk7XG4gICAgICAgICAgICAgICAgICAgIFxuXHRcdFx0XHRcdC8vIEFzc3VtcHRpb246IHRyYW5zbGF0ZWRQcm9wZXJ0aWVzWzBdIGlzIHRoZSBlbnRpdHkgSUQgcHJvcGVydHkgbmFtZS5cblx0XHRcdFx0XHQvLyBBc3N1bXB0aW9uOiBUaGUgbGFzdCB0d28gcHJvcGVydGllcyBhcmUgdGhlIElEIHByb3BlcnR5IGFuZCB0aGUgTGFuZ3VhZ2UgcHJvcGVydHksIGxlYXZpbmcgTi0yIGZvciB0cmFuc2xhdGVkIGRhdGEuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IElEX1BST1BFUlRZX05BTUUgPSB0cmFuc2xhdGVkUHJvcGVydGllc1swXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgTlVNX1RSQU5TTEFURURfUFJPUEVSVElFUyA9IHRyYW5zbGF0ZWRQcm9wZXJ0aWVzLmxlbmd0aCAtIDI7XG4gICAgICAgICAgICAgICAgICAgIFxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBhcnJheSBvZiBtYXBzLCBvbmUgbWFwIHBlciB0cmFuc2xhdGVkIHByb3BlcnR5IG5hbWU6IHsgSURfdmFsdWUgLT4gdHJhbnNsYXRlZF92YWx1ZSB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uTWFwczogUmVjb3JkPGFueSwgYW55PltdID0gQXJyYXkoTlVNX1RSQU5TTEFURURfUFJPUEVSVElFUykuZmlsbChudWxsKS5tYXAoKCkgPT4gKHt9KSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgdHJhbnNsYXRpb24gbWFwcyBmcm9tIHRoZSByZXN1bHQgc2V0XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFNldC5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZFZhbHVlID0gcltJRF9QUk9QRVJUWV9OQU1FXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTlVNX1RSQU5TTEFURURfUFJPUEVSVElFUzsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdC8vIHRyYW5zbGF0ZWRQcm9wZXJ0aWVzW2kgKyAxXSBob2xkcyB0aGUgYWN0dWFsIHRyYW5zbGF0ZWQgZmllbGQgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uTWFwc1tpXVtpZFZhbHVlXSA9IHJbdHJhbnNsYXRlZFByb3BlcnRpZXNbaSArIDFdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cblx0XHRcdFx0XHQvLyBBcHBseSB0aGUgdHJhbnNsYXRpb25zIHRvIHRoZSBvcmlnaW5hbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRWYWx1ZSA9IHJbSURfUFJPUEVSVFlfTkFNRV07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5VTV9UUkFOU0xBVEVEX1BST1BFUlRJRVM7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRLZXkgPSB0cmFuc2xhdGVkUHJvcGVydGllc1tpICsgMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFZhbHVlID0gdHJhbnNsYXRpb25NYXBzW2ldW2lkVmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0cmFuc2xhdGVkVmFsdWUgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBPdmVyd3JpdGUgdGhlIGJhc2UgcHJvcGVydHkgd2l0aCB0aGUgdHJhbnNsYXRlZCB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByW3RyYW5zbGF0ZWRLZXldID0gdHJhbnNsYXRlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRW50aXR5IGlzIG1hcmtlZCBhcyBsYW5ndWFnZSBkZXBlbmRlbnQsIGJ1dCBubyBsYW5ndWFnZSB0YWJsZSBwcmVzZW50IGZvcjogXCIgKyBiYXNldFRhYmxlLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXHRcblx0LyoqXG5cdCAqIFRyYW5zbGF0ZXMgcHJvcGVydGllcyBmb3IgYSBzaW5nbGUgZW50aXR5IGJ5IHF1ZXJ5aW5nIHRoZSBjb3JyZXNwb25kaW5nIGxhbmd1YWdlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0gZW50aXR5IFRoZSBlbnRpdHkgb2JqZWN0IHRvIGJlIHRyYW5zbGF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eS5cblx0ICogQHBhcmFtIGxhbmd1YWdlIFRoZSB0YXJnZXQgbGFuZ3VhZ2UgY29kZSAoZS5nLiwgJ2VuJywgJ2RlJykuIElmIHVuZGVmaW5lZCwgbm8gdHJhbnNsYXRpb24gb2NjdXJzLlxuXHQgKiBAcGFyYW0gYmFzZXRUYWJsZSBUaGUgbmFtZSBvZiB0aGUgYmFzZSBlbnRpdHkgdGFibGUuXG5cdCAqIEByZXR1cm5zIFRoZSB0cmFuc2xhdGVkIGVudGl0eSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHRyYW5zbGF0ZUVudGl0eShlbnRpdHk6IGFueSwgaWQ6IHN0cmluZyB8IG51bWJlciwgbGFuZ3VhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCwgYmFzZXRUYWJsZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKGVudGl0eSAmJiBsYW5ndWFnZSkge1xuICAgICAgICAgICAgdHJ5IHtcblx0XHRcdFx0Ly8gQ29uc3RydWN0IHRoZSBxdWVyeSBmb3IgYSBzcGVjaWZpYyBJRCBhbmQgTGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBzcWwuZ2V0RGlhbGVjdCgpXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAgICAgICAgICAgICAuY29sdW1uKFwiKlwiKVxuICAgICAgICAgICAgICAgICAgICAuZnJvbSgnXCInICsgYmFzZXRUYWJsZSArICdfTEFOR1wiJylcbiAgICAgICAgICAgICAgICAgICAgLndoZXJlKCdMYW5ndWFnZSA9ID8nKVxuICAgICAgICAgICAgICAgICAgICAud2hlcmUoJ0lkID0gPycpXG4gICAgICAgICAgICAgICAgICAgIC5idWlsZCgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0U2V0OiBhbnlbXSA9IHF1ZXJ5LmV4ZWN1dGUoc2NyaXB0LCBbbGFuZ3VhZ2UsIGlkXSk7XG5cblx0XHRcdFx0Ly8gU2luY2Ugd2UgcXVlcnkgYnkgSWQgYW5kIExhbmd1YWdlLCB3ZSBleHBlY3QgYXQgbW9zdCBvbmUgcm93LlxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRTZXQgJiYgcmVzdWx0U2V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25Sb3cgPSByZXN1bHRTZXRbMF07XG4gICAgICAgICAgICAgICAgICAgIFxuXHRcdFx0XHRcdC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgdHJhbnNsYXRpb24gcm93IGFuZCBtZXJnZSB0aGVtIGludG8gdGhlIGVudGl0eS5cblx0XHRcdFx0XHQvLyBXZSBtdXN0IGFzc3VtZSB0aGF0IHRoZSBiYXNlIHRhYmxlIGNvbHVtbnMgKGV4Y2VwdCBJRCBhbmQgTGFuZ3VhZ2Uga2V5cykgYWxpZ24gd2l0aCB0aGUgdHJhbnNsYXRpb24gdGFibGUgY29sdW1ucy5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdHJhbnNsYXRpb25Sb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvblJvdy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdFx0XHRcdFx0XHRcdC8vIEF2b2lkIG92ZXJ3cml0aW5nIHRoZSBlbnRpdHkncyBJRCBhbmQgTGFuZ3VhZ2Uga2V5IGlmIHRoZXkgZXhpc3QsIFxuXHRcdFx0XHRcdFx0XHQvLyBhbHRob3VnaCB0eXBpY2FsbHkgdGhlIGxhbmd1YWdlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgYmFzZSBlbnRpdHkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ0lkJyAmJiBrZXkgIT09ICdMYW5ndWFnZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5W2tleV0gPSB0cmFuc2xhdGlvblJvd1trZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVudGl0eSBpcyBtYXJrZWQgYXMgbGFuZ3VhZ2UgZGVwZW5kZW50LCBidXQgbm8gbGFuZ3VhZ2UgdGFibGUgcHJlc2VudCBmb3I6IFwiICsgYmFzZXRUYWJsZSwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgfVxuXHRcdFxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFRyYW5zbGF0b3I7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1Q0EsZ0JBQTJCO0FBRXBCLE1BQU0sV0FBVztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVV2QixPQUFjLGNBQWMsTUFBYSxVQUE4QixZQUEyQjtBQUMzRixRQUFJLFFBQVEsVUFBVTtBQUNsQixVQUFJO0FBR0EsY0FBTSxTQUFTLGNBQUksV0FBVyxFQUN6QixPQUFPLEVBQ1AsT0FBTyxHQUFHLEVBQ1YsS0FBSyxNQUFNLGFBQWEsUUFBUSxFQUNoQyxNQUFNLGNBQWMsRUFDcEIsTUFBTTtBQUVYLGNBQU0sWUFBbUIsZ0JBQU0sUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDO0FBR3pELFlBQUksYUFBYSxVQUFVLFNBQVMsR0FBRztBQUNuQyxnQkFBTSx1QkFBdUIsT0FBTyxvQkFBb0IsVUFBVSxDQUFDLENBQUM7QUFJcEUsZ0JBQU0sbUJBQW1CLHFCQUFxQixDQUFDO0FBQy9DLGdCQUFNLDRCQUE0QixxQkFBcUIsU0FBUztBQUdoRSxnQkFBTSxrQkFBc0MsTUFBTSx5QkFBeUIsRUFBRSxLQUFLLElBQUksRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFO0FBR3RHLG9CQUFVLFFBQVEsQ0FBQyxNQUFNO0FBQ3JCLGtCQUFNLFVBQVUsRUFBRSxnQkFBZ0I7QUFDbEMscUJBQVMsSUFBSSxHQUFHLElBQUksMkJBQTJCLEtBQUs7QUFFaEQsOEJBQWdCLENBQUMsRUFBRSxPQUFPLElBQUksRUFBRSxxQkFBcUIsSUFBSSxDQUFDLENBQUM7QUFBQSxZQUMvRDtBQUFBLFVBQ0osQ0FBQztBQUdELGVBQUssUUFBUSxDQUFDLE1BQU07QUFDaEIsa0JBQU0sVUFBVSxFQUFFLGdCQUFnQjtBQUNsQyxxQkFBUyxJQUFJLEdBQUcsSUFBSSwyQkFBMkIsS0FBSztBQUNoRCxvQkFBTSxnQkFBZ0IscUJBQXFCLElBQUksQ0FBQztBQUNoRCxvQkFBTSxrQkFBa0IsZ0JBQWdCLENBQUMsRUFBRSxPQUFPO0FBRWxELGtCQUFJLG9CQUFvQixVQUFhLG9CQUFvQixNQUFNO0FBRTNELGtCQUFFLGFBQWEsSUFBSTtBQUFBLGNBQ3ZCO0FBQUEsWUFDSjtBQUFBLFVBQ0osQ0FBQztBQUFBLFFBQ0w7QUFBQSxNQUNKLFNBQVMsT0FBTztBQUNaLGdCQUFRLE1BQU0sZ0ZBQWdGLFlBQVksS0FBSztBQUFBLE1BQ25IO0FBQUEsSUFDSjtBQUNBLFdBQU87QUFBQSxFQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXSCxPQUFjLGdCQUFnQixRQUFhLElBQXFCLFVBQThCLFlBQXlCO0FBQ2hILFFBQUksVUFBVSxVQUFVO0FBQ3BCLFVBQUk7QUFFQSxjQUFNLFNBQVMsY0FBSSxXQUFXLEVBQ3pCLE9BQU8sRUFDUCxPQUFPLEdBQUcsRUFDVixLQUFLLE1BQU0sYUFBYSxRQUFRLEVBQ2hDLE1BQU0sY0FBYyxFQUNwQixNQUFNLFFBQVEsRUFDZCxNQUFNO0FBRVgsY0FBTSxZQUFtQixnQkFBTSxRQUFRLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUc3RCxZQUFJLGFBQWEsVUFBVSxTQUFTLEdBQUc7QUFDbkMsZ0JBQU0saUJBQWlCLFVBQVUsQ0FBQztBQUlsQyxxQkFBVyxPQUFPLGdCQUFnQjtBQUM5QixnQkFBSSxlQUFlLGVBQWUsR0FBRyxHQUFHO0FBR3BDLGtCQUFJLFFBQVEsUUFBUSxRQUFRLFlBQVk7QUFDcEMsdUJBQU8sR0FBRyxJQUFJLGVBQWUsR0FBRztBQUFBLGNBQ3BDO0FBQUEsWUFDSjtBQUFBLFVBQ0o7QUFBQSxRQUNKO0FBQUEsTUFDSixTQUFTLE9BQU87QUFDWixnQkFBUSxNQUFNLGdGQUFnRixZQUFZLEtBQUs7QUFBQSxNQUNuSDtBQUFBLElBQ0o7QUFDQSxXQUFPO0FBQUEsRUFDWDtBQUVKO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -74,4 +74,4 @@ class Update {
74
74
  if (typeof module !== "undefined") {
75
75
  module.exports = Update;
76
76
  }
77
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3VwZGF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIik7XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgZm9yIGNvbXBsZXggcGFyYW1ldGVyIHR5cGVzIGlmIG5lZWRlZCwgb3RoZXJ3aXNlIHByaW1pdGl2ZSB0eXBlcyBhcmUgdXNlZCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IHR5cGUgVHlwZWRVcGRhdGVQYXJhbWV0ZXIgPSB7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG59O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyBhIHBhcmFtZXRlciBmb3IgYSBuYW1lZCB1cGRhdGUgcXVlcnkgKHVzaW5nIHBsYWNlaG9sZGVycyBsaWtlIDpwYXJhbU5hbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkVXBkYXRlUGFyYW1ldGVyIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlOiBhbnk7XG59XG5cblxuLyoqXG4gKiBGYWNhZGUgY2xhc3MgZm9yIGV4ZWN1dGluZyBTUUwgVVBEQVRFLCBJTlNFUlQsIGFuZCBERUxFVEUgc3RhdGVtZW50cy5cbiAqIFBhcmFtZXRlcnMgYXJyYXkgc3VwcG9ydHMgcHJpbWl0aXZlcyBlLmcuIGBbMSwgJ0pvaG4nLCAzNC41Nl1gIG9yIG9iamVjdHMgaW4gZm9ybWF0IGVpdGhlciBgeyd0eXBlJzonW0RBVEFfVFlQRV0nLCAndmFsdWUnOltWQUxVRV19YCBvciBgeyduYW1lJzonW3N0cmluZ10nLCAndHlwZSc6J1tEQVRBX1RZUEVdJywgJ3ZhbHVlJzpbVkFMVUVdfWAgZS5nLiBgW3sndHlwZSc6J0NIQVInLCAndmFsdWUnOidJU0JOMTkyMDIzMjMzMjInfV1gIG9yIGBbeyduYW1lJzogJ29yZGVyX251bWJlcicsICd0eXBlJzonQ0hBUicsICd2YWx1ZSc6J0lTQk4xOTIwMjMyMzMyMid9XWBcbiAqL1xuZXhwb3J0IGNsYXNzIFVwZGF0ZSB7XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIGEgcGFyYW1ldGVyaXplZCBTUUwgdXBkYXRlIHN0YXRlbWVudCAoSU5TRVJULCBVUERBVEUsIG9yIERFTEVURSkuXG5cdCAqXG5cdCAqIEBwYXJhbSBzcWwgVGhlIFNRTCBxdWVyeSB0byBleGVjdXRlLlxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBBbiBvcHRpb25hbCBhcnJheSBvZiB2YWx1ZXMgKHByaW1pdGl2ZXMsIFR5cGVkUXVlcnlQYXJhbWV0ZXIgb3IgTmFtZWRRdWVyeVBhcmFtZXRlciBvYmplY3RzKSB0byByZXBsYWNlICc/JyBvciA6cGFyYW1OYW1lIHBsYWNlaG9sZGVycy5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIHVzZSAob3B0aW9uYWwpLlxuXHQgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIHJvd3MgYWZmZWN0ZWQgYnkgdGhlIHN0YXRlbWVudC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZXhlY3V0ZShzcWw6IHN0cmluZywgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkVXBkYXRlUGFyYW1ldGVyIHwgTmFtZWRVcGRhdGVQYXJhbWV0ZXIpW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogbnVtYmVyIHtcblx0XHRsZXQgYXJyOiBhbnlbXSA9IFtdO1xuXG5cdCAgICBpZiAocGFyYW1ldGVycyA9PSBudWxsKSB7XG5cdCAgICAgIGFyciA9IFtdO1xuXHQgICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocGFyYW1ldGVycyk7XG5cdCAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIklucHV0IHBhcmFtZXRlciBzdHJpbmcgbXVzdCByZXByZXNlbnQgYSBKU09OIGFycmF5XCIpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBhcnIgPSBwYXJzZWQ7XG5cdCAgICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEpTT04gcGFyYW1ldGVyczogXCIgKyBlKTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpKSB7XG5cdCAgICAgIGFyciA9IHBhcmFtZXRlcnM7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgSlNPTiBzdHJpbmdcIik7XG5cdCAgICB9XG5cblx0ICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0ICBjb25zdCByZXN1bHQgPSBEYXRhYmFzZUZhY2FkZS51cGRhdGUoc3FsLCBudWxsLCBkYXRhc291cmNlTmFtZSk7XG5cdCAgICAgIHJldHVybiByZXN1bHQ7XG5cdCAgICB9XG5cblx0ICAgIGNvbnN0IGZpcnN0ID0gYXJyWzBdO1xuXG5cdCAgICAvLyBOYW1lZFVwZGF0ZVBhcmFtZXRlciAoaGFzIG5hbWUgKyB0eXBlKVxuXHQgICAgaWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdCAgY29uc3QgcmVzdWx0ID0gRGF0YWJhc2VGYWNhZGUudXBkYXRlTmFtZWQoc3FsLCBKU09OLnN0cmluZ2lmeShhcnIpLCBkYXRhc291cmNlTmFtZSk7XG5cdFx0ICByZXR1cm4gcmVzdWx0O1xuXHQgICAgfVxuXG5cdCAgICAvLyBUeXBlZFVwZGF0ZVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdCAgICBpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG5cdFx0ICBjb25zdCByZXN1bHQgPSBEYXRhYmFzZUZhY2FkZS51cGRhdGUoc3FsLCBKU09OLnN0cmluZ2lmeShhcnIpLCBkYXRhc291cmNlTmFtZSk7XG5cdCAgICAgIHJldHVybiByZXN1bHQ7XG5cdCAgICB9XG5cblx0ICAgIC8vIFByaW1pdGl2ZSBhcnJheVxuXHQgICAgaWYgKFxuXHQgICAgICBhcnIuZXZlcnkoXG5cdCAgICAgICAgKHYpID0+XG5cdCAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuXHQgICAgICAgICAgdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgfHxcblx0ICAgICAgICAgIHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHQgICAgICAgICAgdiBpbnN0YW5jZW9mIERhdGVcdFx0XHQgIHx8XG5cdFx0XHQgIFx0ICBBcnJheS5pc0FycmF5KHYpXG5cdCAgICAgIClcblx0ICAgICkge1xuXHRcdCAgY29uc3QgcmVzdWx0ID0gRGF0YWJhc2VGYWNhZGUudXBkYXRlKHNxbCwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgZGF0YXNvdXJjZU5hbWUpO1xuXHRcdCAgcmV0dXJuIHJlc3VsdDtcblx0ICAgIH1cblxuXHQgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBVcGRhdGU7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBTSxpQkFBaUIsS0FBSyxLQUFLLHdEQUF3RDtBQXdCbEYsTUFBTSxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVW5CLE9BQWMsUUFBUSxLQUFhLFlBQWlHLGdCQUFpQztBQUNwSyxRQUFJLE1BQWEsQ0FBQztBQUVmLFFBQUksY0FBYyxNQUFNO0FBQ3RCLFlBQU0sQ0FBQztBQUFBLElBQ1QsV0FBVyxPQUFPLGVBQWUsVUFBVTtBQUN6QyxVQUFJO0FBQ0YsY0FBTSxTQUFTLEtBQUssTUFBTSxVQUFVO0FBQ3BDLFlBQUksQ0FBQyxNQUFNLFFBQVEsTUFBTSxHQUFHO0FBQzFCLGdCQUFNLElBQUksTUFBTSxvREFBb0Q7QUFBQSxRQUN0RTtBQUNBLGNBQU07QUFBQSxNQUNSLFNBQVMsR0FBRztBQUNWLGNBQU0sSUFBSSxNQUFNLDhCQUE4QixDQUFDO0FBQUEsTUFDakQ7QUFBQSxJQUNGLFdBQVcsTUFBTSxRQUFRLFVBQVUsR0FBRztBQUNwQyxZQUFNO0FBQUEsSUFDUixPQUFPO0FBQ0wsWUFBTSxJQUFJLE1BQU0scURBQXFEO0FBQUEsSUFDdkU7QUFFQSxRQUFJLElBQUksV0FBVyxHQUFHO0FBQ3ZCLFlBQU0sU0FBUyxlQUFlLE9BQU8sS0FBSyxNQUFNLGNBQWM7QUFDM0QsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFFBQVEsSUFBSSxDQUFDO0FBR25CLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsVUFBVSxPQUFPO0FBQy9FLFlBQU0sU0FBUyxlQUFlLFlBQVksS0FBSyxLQUFLLFVBQVUsR0FBRyxHQUFHLGNBQWM7QUFDbEYsYUFBTztBQUFBLElBQ047QUFHQSxRQUFJLFNBQVMsT0FBTyxVQUFVLFlBQVksVUFBVSxTQUFTLEVBQUUsVUFBVSxRQUFRO0FBQ2xGLFlBQU0sU0FBUyxlQUFlLE9BQU8sS0FBSyxLQUFLLFVBQVUsR0FBRyxHQUFHLGNBQWM7QUFDMUUsYUFBTztBQUFBLElBQ1Q7QUFHQSxRQUNFLElBQUk7QUFBQSxNQUNGLENBQUMsTUFDQyxPQUFPLE1BQU0sWUFDYixPQUFPLE1BQU0sWUFDYixPQUFPLE1BQU0sYUFDYixhQUFhLFFBQ2hCLE1BQU0sUUFBUSxDQUFDO0FBQUEsSUFDaEIsR0FDQTtBQUNILFlBQU0sU0FBUyxlQUFlLE9BQU8sS0FBSyxLQUFLLFVBQVUsR0FBRyxHQUFHLGNBQWM7QUFDN0UsYUFBTztBQUFBLElBQ047QUFFQSxVQUFNLElBQUksTUFBTSxtQ0FBbUMsS0FBSyxVQUFVLFVBQVUsQ0FBQztBQUFBLEVBQ2pGO0FBQ0Q7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
77
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3VwZGF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGRiL3VwZGF0ZVxuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2RiXG4gKiBAbmFtZSBVcGRhdGVcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgYFVwZGF0ZWAgY2xhc3MsIHdoaWNoIHNlcnZlcyBhcyBhIGZhY2FkZSBmb3IgZXhlY3V0aW5nIFNRTCBVUERBVEUsIElOU0VSVCwgYW5kIERFTEVURSBzdGF0ZW1lbnRzIGluIHRoZSBEaXJpZ2libGUgZW52aXJvbm1lbnQuIFRoZSBgZXhlY3V0ZWAgbWV0aG9kIGFsbG93cyBmb3IgcGFyYW1ldGVyaXplZCBxdWVyaWVzIHVzaW5nIGVpdGhlciBwcmltaXRpdmUgdmFsdWVzIG9yIHN0cnVjdHVyZWQgcGFyYW1ldGVyIG9iamVjdHMgdGhhdCBzcGVjaWZ5IGJvdGggdHlwZSBhbmQgdmFsdWUuIFRoaXMgZmxleGliaWxpdHkgZW5hYmxlcyBkZXZlbG9wZXJzIHRvIHdvcmsgd2l0aCB2YXJpb3VzIGRhdGEgdHlwZXMgYW5kIGRhdGFiYXNlLXNwZWNpZmljIHJlcXVpcmVtZW50cyB3aGVuIHBlcmZvcm1pbmcgdXBkYXRlIG9wZXJhdGlvbnMuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gKipQYXJhbWV0ZXJpemVkIFF1ZXJpZXMqKjogU3VwcG9ydHMgYm90aCBwcmltaXRpdmUgcGFyYW1ldGVycyBhbmQgc3RydWN0dXJlZCBwYXJhbWV0ZXIgb2JqZWN0cyBmb3IgZmxleGlibGUgcXVlcnkgZXhlY3V0aW9uLlxuICogLSAqKk5hbWVkIFBhcmFtZXRlcnMqKjogQWxsb3dzIGZvciBuYW1lZCBwYXJhbWV0ZXJzIGluIHRoZSBmb3JtIG9mIGA6cGFyYW1OYW1lYCBwbGFjZWhvbGRlcnMsIGVuaGFuY2luZyByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5IG9mIFNRTCBzdGF0ZW1lbnRzLlxuICogLSAqKlR5cGUgU3BlY2lmaWNhdGlvbioqOiBTdHJ1Y3R1cmVkIHBhcmFtZXRlcnMgY2FuIGluY2x1ZGUgdHlwZSBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgdXNlZnVsIGZvciBkYXRhYmFzZXMgdGhhdCByZXF1aXJlIGV4cGxpY2l0IHR5cGUgZGVmaW5pdGlvbnMgZm9yIGNlcnRhaW4gb3BlcmF0aW9ucy5cbiAqIC0gKipEYXRhc291cmNlIFN1cHBvcnQqKjogVGhlIG1ldGhvZCBhY2NlcHRzIGFuIG9wdGlvbmFsIGRhdGFzb3VyY2UgbmFtZSwgZW5hYmxpbmcgZXhlY3V0aW9uIGFnYWluc3Qgc3BlY2lmaWMgZGF0YWJhc2UgY29ubmVjdGlvbnMgaW4gYSBtdWx0aS1kYXRhYmFzZSBlbnZpcm9ubWVudC5cbiAqIFxuICogIyMjIFVzZSBDYXNlc1xuICogLSBQZXJmb3JtaW5nIHVwZGF0ZSBvcGVyYXRpb25zIG9uIGRhdGFiYXNlIHJlY29yZHMgd2l0aCBkeW5hbWljIHZhbHVlcy5cbiAqIC0gRXhlY3V0aW5nIGNvbXBsZXggU1FMIHN0YXRlbWVudHMgdGhhdCByZXF1aXJlIHNwZWNpZmljIGRhdGEgdHlwZXMgb3IgbmFtZWQgcGFyYW1ldGVycy5cbiAqIC0gSW50ZWdyYXRpbmcgd2l0aCBvdGhlciBtb2R1bGVzIHRoYXQgZ2VuZXJhdGUgcGFyYW1ldGVycyBpbiBKU09OIGZvcm1hdCwgYWxsb3dpbmcgZm9yIHNlYW1sZXNzIGRhdGEgZmxvdyB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IFVwZGF0ZSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcbiAqIFxuICogLy8gRXhhbXBsZSB3aXRoIHByaW1pdGl2ZSBwYXJhbWV0ZXJzXG4gKiBjb25zdCByb3dzQWZmZWN0ZWQxID0gVXBkYXRlLmV4ZWN1dGUoXCJVUERBVEUgVXNlcnMgU0VUIG5hbWUgPSA/IFdIRVJFIGlkID0gP1wiLCBbXCJBbGljZVwiLCAxXSk7XG4gKiBjb25zb2xlLmxvZyhyb3dzQWZmZWN0ZWQxKTsgLy8gT3V0cHV0OiBudW1iZXIgb2Ygcm93cyB1cGRhdGVkXG4gKiBcbiAqIC8vIEV4YW1wbGUgd2l0aCBzdHJ1Y3R1cmVkIHBhcmFtZXRlcnNcbiAqIGNvbnN0IHJvd3NBZmZlY3RlZDIgPSBVcGRhdGUuZXhlY3V0ZShcbiAqICAgXCJJTlNFUlQgSU5UTyBPcmRlcnMgKG9yZGVyX251bWJlciwgdG90YWwpIFZBTFVFUyAoOm9yZGVyX251bWJlciwgOnRvdGFsKVwiLFxuICogICBbXG4gKiAgICAgeyBuYW1lOiBcIm9yZGVyX251bWJlclwiLCB0eXBlOiBcIkNIQVJcIiwgdmFsdWU6IFwiT1JEMTIzNDVcIiB9LFxuICogICAgIHsgbmFtZTogXCJ0b3RhbFwiLCB0eXBlOiBcIkRFQ0lNQUxcIiwgdmFsdWU6IDk5Ljk5IH1cbiAqICAgXVxuICogKTtcbiAqIGNvbnNvbGUubG9nKHJvd3NBZmZlY3RlZDIpOyAvLyBPdXRwdXQ6IG51bWJlciBvZiByb3dzIGluc2VydGVkXG4gKiBgYGBcbiAqL1xuXG5jb25zdCBEYXRhYmFzZUZhY2FkZSA9IEphdmEudHlwZShcIm9yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmFwaS5kYi5EYXRhYmFzZUZhY2FkZVwiKTtcblxuLyoqXG4gKiBJbnRlcmZhY2UgdXNlZCBmb3IgY29tcGxleCBwYXJhbWV0ZXIgdHlwZXMgaWYgbmVlZGVkLCBvdGhlcndpc2UgcHJpbWl0aXZlIHR5cGVzIGFyZSB1c2VkIGRpcmVjdGx5LlxuICovXG5leHBvcnQgdHlwZSBUeXBlZFVwZGF0ZVBhcmFtZXRlciA9IHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbn07XG5cbi8qKlxuICogSW50ZXJmYWNlIGRlZmluaW5nIGEgcGFyYW1ldGVyIGZvciBhIG5hbWVkIHVwZGF0ZSBxdWVyeSAodXNpbmcgcGxhY2Vob2xkZXJzIGxpa2UgOnBhcmFtTmFtZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRVcGRhdGVQYXJhbWV0ZXIge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWU6IGFueTtcbn1cblxuXG4vKipcbiAqIEZhY2FkZSBjbGFzcyBmb3IgZXhlY3V0aW5nIFNRTCBVUERBVEUsIElOU0VSVCwgYW5kIERFTEVURSBzdGF0ZW1lbnRzLlxuICogUGFyYW1ldGVycyBhcnJheSBzdXBwb3J0cyBwcmltaXRpdmVzIGUuZy4gYFsxLCAnSm9obicsIDM0LjU2XWAgb3Igb2JqZWN0cyBpbiBmb3JtYXQgZWl0aGVyIGB7J3R5cGUnOidbREFUQV9UWVBFXScsICd2YWx1ZSc6W1ZBTFVFXX1gIG9yIGB7J25hbWUnOidbc3RyaW5nXScsICd0eXBlJzonW0RBVEFfVFlQRV0nLCAndmFsdWUnOltWQUxVRV19YCBlLmcuIGBbeyd0eXBlJzonQ0hBUicsICd2YWx1ZSc6J0lTQk4xOTIwMjMyMzMyMid9XWAgb3IgYFt7J25hbWUnOiAnb3JkZXJfbnVtYmVyJywgJ3R5cGUnOidDSEFSJywgJ3ZhbHVlJzonSVNCTjE5MjAyMzIzMzIyJ31dYFxuICovXG5leHBvcnQgY2xhc3MgVXBkYXRlIHtcblxuXHQvKipcblx0ICogRXhlY3V0ZXMgYSBwYXJhbWV0ZXJpemVkIFNRTCB1cGRhdGUgc3RhdGVtZW50IChJTlNFUlQsIFVQREFURSwgb3IgREVMRVRFKS5cblx0ICpcblx0ICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyAocHJpbWl0aXZlcywgVHlwZWRRdWVyeVBhcmFtZXRlciBvciBOYW1lZFF1ZXJ5UGFyYW1ldGVyIG9iamVjdHMpIHRvIHJlcGxhY2UgJz8nIG9yIDpwYXJhbU5hbWUgcGxhY2Vob2xkZXJzLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2Ygcm93cyBhZmZlY3RlZCBieSB0aGUgc3RhdGVtZW50LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgVHlwZWRVcGRhdGVQYXJhbWV0ZXIgfCBOYW1lZFVwZGF0ZVBhcmFtZXRlcilbXSwgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cblx0ICAgIGlmIChwYXJhbWV0ZXJzID09IG51bGwpIHtcblx0ICAgICAgYXJyID0gW107XG5cdCAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcInN0cmluZ1wiKSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0ICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuXHQgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgcGFyYW1ldGVyIHN0cmluZyBtdXN0IHJlcHJlc2VudCBhIEpTT04gYXJyYXlcIik7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGFyciA9IHBhcnNlZDtcblx0ICAgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1ldGVycykpIHtcblx0ICAgICAgYXJyID0gcGFyYW1ldGVycztcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgbXVzdCBiZSBlaXRoZXIgYW4gYXJyYXkgb3IgYSBKU09OIHN0cmluZ1wiKTtcblx0ICAgIH1cblxuXHQgICAgaWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHQgIGNvbnN0IHJlc3VsdCA9IERhdGFiYXNlRmFjYWRlLnVwZGF0ZShzcWwsIG51bGwsIGRhdGFzb3VyY2VOYW1lKTtcblx0ICAgICAgcmV0dXJuIHJlc3VsdDtcblx0ICAgIH1cblxuXHQgICAgY29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0ICAgIC8vIE5hbWVkVXBkYXRlUGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdCAgICBpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG5cdFx0ICBjb25zdCByZXN1bHQgPSBEYXRhYmFzZUZhY2FkZS51cGRhdGVOYW1lZChzcWwsIEpTT04uc3RyaW5naWZ5KGFyciksIGRhdGFzb3VyY2VOYW1lKTtcblx0XHQgIHJldHVybiByZXN1bHQ7XG5cdCAgICB9XG5cblx0ICAgIC8vIFR5cGVkVXBkYXRlUGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcblx0ICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIgJiYgXCJ0eXBlXCIgaW4gZmlyc3QgJiYgIShcIm5hbWVcIiBpbiBmaXJzdCkpIHtcblx0XHQgIGNvbnN0IHJlc3VsdCA9IERhdGFiYXNlRmFjYWRlLnVwZGF0ZShzcWwsIEpTT04uc3RyaW5naWZ5KGFyciksIGRhdGFzb3VyY2VOYW1lKTtcblx0ICAgICAgcmV0dXJuIHJlc3VsdDtcblx0ICAgIH1cblxuXHQgICAgLy8gUHJpbWl0aXZlIGFycmF5XG5cdCAgICBpZiAoXG5cdCAgICAgIGFyci5ldmVyeShcblx0ICAgICAgICAodikgPT5cblx0ICAgICAgICAgIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiIHx8XG5cdCAgICAgICAgICB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHQgICAgICAgICAgdHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG5cdCAgICAgICAgICB2IGluc3RhbmNlb2YgRGF0ZVx0XHRcdCAgfHxcblx0XHRcdCAgXHQgIEFycmF5LmlzQXJyYXkodilcblx0ICAgICAgKVxuXHQgICAgKSB7XG5cdFx0ICBjb25zdCByZXN1bHQgPSBEYXRhYmFzZUZhY2FkZS51cGRhdGUoc3FsLCBKU09OLnN0cmluZ2lmeShhcnIpLCBkYXRhc291cmNlTmFtZSk7XG5cdFx0ICByZXR1cm4gcmVzdWx0O1xuXHQgICAgfVxuXG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBwYXJhbWV0ZXIgZm9ybWF0OiBcIiArIEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMpKTtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFVwZGF0ZTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1Q0EsTUFBTSxpQkFBaUIsS0FBSyxLQUFLLHdEQUF3RDtBQXdCbEYsTUFBTSxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVW5CLE9BQWMsUUFBUSxLQUFhLFlBQWlHLGdCQUFpQztBQUNwSyxRQUFJLE1BQWEsQ0FBQztBQUVmLFFBQUksY0FBYyxNQUFNO0FBQ3RCLFlBQU0sQ0FBQztBQUFBLElBQ1QsV0FBVyxPQUFPLGVBQWUsVUFBVTtBQUN6QyxVQUFJO0FBQ0YsY0FBTSxTQUFTLEtBQUssTUFBTSxVQUFVO0FBQ3BDLFlBQUksQ0FBQyxNQUFNLFFBQVEsTUFBTSxHQUFHO0FBQzFCLGdCQUFNLElBQUksTUFBTSxvREFBb0Q7QUFBQSxRQUN0RTtBQUNBLGNBQU07QUFBQSxNQUNSLFNBQVMsR0FBRztBQUNWLGNBQU0sSUFBSSxNQUFNLDhCQUE4QixDQUFDO0FBQUEsTUFDakQ7QUFBQSxJQUNGLFdBQVcsTUFBTSxRQUFRLFVBQVUsR0FBRztBQUNwQyxZQUFNO0FBQUEsSUFDUixPQUFPO0FBQ0wsWUFBTSxJQUFJLE1BQU0scURBQXFEO0FBQUEsSUFDdkU7QUFFQSxRQUFJLElBQUksV0FBVyxHQUFHO0FBQ3ZCLFlBQU0sU0FBUyxlQUFlLE9BQU8sS0FBSyxNQUFNLGNBQWM7QUFDM0QsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLFFBQVEsSUFBSSxDQUFDO0FBR25CLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsVUFBVSxPQUFPO0FBQy9FLFlBQU0sU0FBUyxlQUFlLFlBQVksS0FBSyxLQUFLLFVBQVUsR0FBRyxHQUFHLGNBQWM7QUFDbEYsYUFBTztBQUFBLElBQ047QUFHQSxRQUFJLFNBQVMsT0FBTyxVQUFVLFlBQVksVUFBVSxTQUFTLEVBQUUsVUFBVSxRQUFRO0FBQ2xGLFlBQU0sU0FBUyxlQUFlLE9BQU8sS0FBSyxLQUFLLFVBQVUsR0FBRyxHQUFHLGNBQWM7QUFDMUUsYUFBTztBQUFBLElBQ1Q7QUFHQSxRQUNFLElBQUk7QUFBQSxNQUNGLENBQUMsTUFDQyxPQUFPLE1BQU0sWUFDYixPQUFPLE1BQU0sWUFDYixPQUFPLE1BQU0sYUFDYixhQUFhLFFBQ2hCLE1BQU0sUUFBUSxDQUFDO0FBQUEsSUFDaEIsR0FDQTtBQUNILFlBQU0sU0FBUyxlQUFlLE9BQU8sS0FBSyxLQUFLLFVBQVUsR0FBRyxHQUFHLGNBQWM7QUFDN0UsYUFBTztBQUFBLElBQ047QUFFQSxVQUFNLElBQUksTUFBTSxtQ0FBbUMsS0FBSyxVQUFVLFVBQVUsQ0FBQztBQUFBLEVBQ2pGO0FBQ0Q7QUFHQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0FBRWxDLFNBQU8sVUFBVTtBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -174,4 +174,4 @@ class Client {
174
174
  if (typeof module !== "undefined") {
175
175
  module.exports = Client;
176
176
  }
177
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBFdGNkRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmV0Y2QuRXRjZEZhY2FkZVwiKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVUSUxJVFkgRlVOQ1RJT05TXG4vLyBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIHRoZSBjb252ZXJzaW9uIGJldHdlZW4gSmF2YVNjcmlwdC9UeXBlU2NyaXB0IHR5cGVzIChzdHJpbmcsIEludDhBcnJheSlcbi8vIGFuZCB0aGUgbmF0aXZlIEphdmEvRXRjZCB0eXBlcyAoQnl0ZVNlcXVlbmNlLCBuYXRpdmUgYnl0ZSBhcnJheXMpLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIG5hdGl2ZSBFdGNkIEJ5dGVTZXF1ZW5jZSBvYmplY3QuXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBuYXRpdmUgQnl0ZVNlcXVlbmNlIG9iamVjdCAoSmF2YSB0eXBlKS5cbiAqL1xuZnVuY3Rpb24gU3RyaW5nVG9CeXRlU2VxdWVuY2Uoc3RyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBFdGNkRmFjYWRlLnN0cmluZ1RvQnl0ZVNlcXVlbmNlKHN0cik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBKYXZhU2NyaXB0IEludDhBcnJheSAoYnl0ZSBhcnJheSkgdG8gYSBuYXRpdmUgRXRjZCBCeXRlU2VxdWVuY2Ugb2JqZWN0LlxuICogQHBhcmFtIGFyciBUaGUgSW50OEFycmF5IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgbmF0aXZlIEJ5dGVTZXF1ZW5jZSBvYmplY3QgKEphdmEgdHlwZSkuXG4gKi9cbmZ1bmN0aW9uIEJ5dGVBcnJheVRvQnl0ZVNlcXVlbmNlKGFycjogSW50OEFycmF5KTogYW55IHtcbiAgICByZXR1cm4gRXRjZEZhY2FkZS5ieXRlQXJyYXlUb0J5dGVTZXF1ZW5jZShhcnIpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbmF0aXZlIEV0Y2QgQnl0ZVNlcXVlbmNlIG9iamVjdCBiYWNrIHRvIGEgc3RyaW5nLlxuICogQHBhcmFtIHZhbHVlIFRoZSBuYXRpdmUgQnl0ZVNlcXVlbmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gQnl0ZVNlcXVlbmNlVG9TdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEV0Y2RGYWNhZGUuYnl0ZVNlcXVlbmNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbmF0aXZlIEphdmEgYXJyYXkgb2YgYnl0ZXMgaW50byBhIEphdmFTY3JpcHQgSW50OEFycmF5LlxuICogQHBhcmFtIHZhbHVlIFRoZSBuYXRpdmUgQnl0ZVNlcXVlbmNlIG9iamVjdCBjb250YWluaW5nIHRoZSBieXRlcy5cbiAqIEByZXR1cm5zIEEgSmF2YVNjcmlwdCBJbnQ4QXJyYXkuXG4gKi9cbmZ1bmN0aW9uIEJ5dGVzVG9BcnJheSh2YWx1ZTogYW55KTogSW50OEFycmF5IHtcbiAgICBjb25zdCBhcnJheSA9IHZhbHVlLmdldEJ5dGVzKCk7IC8vIEdldCB0aGUgbmF0aXZlIGJ5dGUgYXJyYXlcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgSW50OEFycmF5KGFycmF5Lmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBDb252ZXJzaW9uIGZyb20gSmF2YSBieXRlIHRvIEphdmFTY3JpcHQgSW50OCB2YWx1ZVxuICAgICAgICByZXN1bHRbaV0gPSBwYXJzZUludChhcnJheVtpXSwgMTApOyBcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdG8gcHJvY2VzcyBhIGxpc3Qgb2YgS2V5LVZhbHVlIChLVikgb2JqZWN0cyBpbnRvIGEgc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ga3ZzTGlzdCBUaGUgbmF0aXZlIGxpc3Qgb2YgS1Ygb2JqZWN0cy5cbiAqIEBwYXJhbSBmdW5jIFRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0aGUgdmFsdWUgKGUuZy4sIEJ5dGVTZXF1ZW5jZVRvU3RyaW5nIG9yIEJ5dGVzVG9BcnJheSkuXG4gKiBAcmV0dXJucyBBIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IG1hcHBpbmcgc3RyaW5nIGtleXMgdG8gc3BlY2lmaWVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gS2V5VmFsdWVPYmplY3Q8VD4oa3ZzTGlzdDogYW55W10sIGZ1bmM6ICh2YWx1ZTogYW55KSA9PiBUKTogeyBba2V5OiBzdHJpbmddOiBUIH0ge1xuICAgIGNvbnN0IGt2T2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IFQgfSA9IHt9O1xuICAgIGt2c0xpc3QuZm9yRWFjaCgoa3ZzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSBCeXRlU2VxdWVuY2VUb1N0cmluZyhrdnMuZ2V0S2V5KCkpO1xuICAgICAgICBjb25zdCB2YWx1ZTogVCA9IGZ1bmMoa3ZzLmdldFZhbHVlKCkpO1xuICAgICAgICBrdk9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga3ZPYmplY3Q7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIG5hdGl2ZSBLVlMgbGlzdCB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggc3RyaW5nIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gS2V5VmFsdWVPYmplY3RTdHJpbmcoa3ZzTGlzdDogYW55W10pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gS2V5VmFsdWVPYmplY3Qoa3ZzTGlzdCwgQnl0ZVNlcXVlbmNlVG9TdHJpbmcpO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBuYXRpdmUgS1ZTIGxpc3QgdG8gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIEludDhBcnJheSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIEtleVZhbHVlT2JqZWN0Qnl0ZUFycmF5KGt2c0xpc3Q6IGFueVtdKTogeyBba2V5OiBzdHJpbmddOiBJbnQ4QXJyYXkgfSB7XG4gICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0KGt2c0xpc3QsIEJ5dGVzVG9BcnJheSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVENEIFJFU1BPTlNFIENMQVNTRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgaGVhZGVyIG1ldGFkYXRhIG9mIGFuIEV0Y2QgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWFkZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHJldmlzaW9uIG9mIHRoZSBrZXktdmFsdWUgc3RvcmUgd2hlbiB0aGUgcmVxdWVzdCB3YXMgcHJvY2Vzc2VkLiAqL1xuICAgIHB1YmxpYyBnZXRSZXZpc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0UmV2aXNpb24oKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIElEIG9mIHRoZSBjbHVzdGVyIHdoaWNoIHRoZSByZXF1ZXN0IHdhcyBzZW50IHRvLiAqL1xuICAgIHB1YmxpYyBnZXRDbHVzdGVySWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldENsdXN0ZXJJZCgpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgSUQgb2YgdGhlIG1lbWJlciB3aGljaCB0aGUgcmVxdWVzdCB3YXMgaGFuZGxlZCBieS4gKi9cbiAgICBwdWJsaWMgZ2V0TWVtYmVySWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldE1lbWJlcklkKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBSYWZ0IHRlcm0uICovXG4gICAgcHVibGljIGdldFJhZnRUZXJtKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSYWZ0VGVybSgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSByZXNwb25zZSBvYmplY3QgZm9yIGEgR2V0IG9wZXJhdGlvbiBmcm9tIEV0Y2QuXG4gKi9cbmV4cG9ydCBjbGFzcyBHZXRSZXNwb25zZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmF0aXZlO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIHJlc3BvbnNlIGhlYWRlciBjb250YWluaW5nIGNsdXN0ZXIgbWV0YWRhdGEuICovXG4gICAgcHVibGljIGdldEhlYWRlcigpOiBIZWFkZXIge1xuICAgICAgICBjb25zdCBuYXRpdmVIZWFkZXIgPSB0aGlzLm5hdGl2ZS5nZXRIZWFkZXIoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFkZXIobmF0aXZlSGVhZGVyKTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgd2l0aCB2YWx1ZXMgY29udmVydGVkIHRvIHN0cmluZ3MuICovXG4gICAgcHVibGljIGdldEt2c1N0cmluZygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0U3RyaW5nKHRoaXMubmF0aXZlLmdldEt2cygpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgd2l0aCB2YWx1ZXMgY29udmVydGVkIHRvIEludDhBcnJheSAoYnl0ZSBhcnJheXMpLiAqL1xuICAgIHB1YmxpYyBnZXRLdnNCeXRlQXJyYXkoKTogeyBba2V5OiBzdHJpbmddOiBJbnQ4QXJyYXkgfSB7XG4gICAgICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdEJ5dGVBcnJheSh0aGlzLm5hdGl2ZS5nZXRLdnMoKSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgbnVtYmVyIG9mIEtleS1WYWx1ZSBwYWlycyByZXR1cm5lZC4gKi9cbiAgICBwdWJsaWMgZ2V0Q291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldENvdW50KCk7XG4gICAgfVxufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVENEIENMSUVOVCBGQUNBREVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2xpZW50IGZhY2FkZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgRXRjZCBrZXktdmFsdWUgc3RvcmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGllbnQge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm5hdGl2ZSA9IEV0Y2RGYWNhZGUuZ2V0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBibG9ja2luZyBHRVQgcmVxdWVzdCBvbiB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gcmV0cmlldmUuXG4gICAgICogQHJldHVybnMgVGhlIHByb2Nlc3NlZCBHZXRSZXNwb25zZSBvYmplY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXQoa2V5OiBzdHJpbmcpOiBHZXRSZXNwb25zZSB7XG4gICAgICAgIC8vIEV0Y2QgY2xpZW50IHJldHVybnMgYSBDb21wbGV0YWJsZUZ1dHVyZSB3aGljaCBpcyBibG9ja2VkIGhlcmUgdXNpbmcgLmdldCgpXG4gICAgICAgIGNvbnN0IGV0Y2RDb21wbGV0YWJsZUZ1dHVyZSA9IHRoaXMubmF0aXZlLmdldChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpKTtcbiAgICAgICAgY29uc3QgbmF0aXZlUmVzcG9uc2UgPSBldGNkQ29tcGxldGFibGVGdXR1cmUuZ2V0KCk7XG4gICAgICAgIHJldHVybiBuZXcgR2V0UmVzcG9uc2UobmF0aXZlUmVzcG9uc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFB1dHMgKHdyaXRlcykgYSBzdHJpbmcgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHdyaXRlIHRvLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBwdXRTdHJpbmdWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5wdXQoU3RyaW5nVG9CeXRlU2VxdWVuY2Uoa2V5KSwgU3RyaW5nVG9CeXRlU2VxdWVuY2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQdXRzICh3cml0ZXMpIGEgYnl0ZSBhcnJheSB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gd3JpdGUgdG8uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBJbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBwdXRCeXRlQXJyYXlWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IEludDhBcnJheSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZS5wdXQoU3RyaW5nVG9CeXRlU2VxdWVuY2Uoa2V5KSwgQnl0ZUFycmF5VG9CeXRlU2VxdWVuY2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHJlc3BvbnNlIGhlYWRlciBtZXRhZGF0YSBmb3IgYSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSB7QGxpbmsgSGVhZGVyfSBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGdldEhlYWRlcihrZXk6IHN0cmluZyk6IEhlYWRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldEhlYWRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIGFzIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBzdHJpbmcgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSAob3Iga2V5IHByZWZpeCkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IG1hcHBpbmcga2V5cyB0byBzdHJpbmcgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRLdnNTdHJpbmdWYWx1ZShrZXk6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRLdnNTdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggSW50OEFycmF5IHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG9yIGtleSBwcmVmaXgpIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIEFuIG9iamVjdCBtYXBwaW5nIGtleXMgdG8gSW50OEFycmF5IHZhbHVlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0S3ZzQnl0ZUFycmF5VmFsdWUoa2V5OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0S3ZzQnl0ZUFycmF5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjb3VudCBvZiBLZXktVmFsdWUgcGFpcnMgbWF0Y2hpbmcgdGhlIGtleSAob3Iga2V5IHByZWZpeCkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IChvciBrZXkgcHJlZml4KSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgbWF0Y2hpbmcgZW50cmllcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q291bnQoa2V5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIGRlbGV0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLmRlbGV0ZShTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpKTtcbiAgICB9XG59XG5cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8v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
177
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUgZXRjZC9jbGllbnRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9ldGNkXG4gKiBAbmFtZSBDbGllbnRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGBDbGllbnRgIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZSB3aXRoaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGBDbGllbnRgIGNsYXNzIGFsbG93cyBkZXZlbG9wZXJzIHRvIHBlcmZvcm0gYmFzaWMgb3BlcmF0aW9ucyBzdWNoIGFzIHB1dHRpbmcgKHdyaXRpbmcpIHZhbHVlcywgZ2V0dGluZyB2YWx1ZXMsIGFuZCBkZWxldGluZyBrZXlzIGluIEV0Y2QuIEl0IGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBKYXZhU2NyaXB0IHR5cGVzIGFuZCB0aGUgbmF0aXZlIEphdmEvRXRjZCB0eXBlcyB1c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIEV0Y2QgY2xpZW50IGxpYnJhcnkuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXNcbiAqIC0gUHV0IHN0cmluZyBvciBieXRlIGFycmF5IHZhbHVlcyB0byBFdGNkIGtleXMuXG4gKiAtIEdldCB2YWx1ZXMgZnJvbSBFdGNkIGtleXMgd2l0aCBvcHRpb25zIGZvciBzdHJpbmcgb3IgYnl0ZSBhcnJheSBmb3JtYXRzLlxuICogLSBSZXRyaWV2ZSBtZXRhZGF0YSBhYm91dCB0aGUgRXRjZCBjbHVzdGVyIGFuZCBrZXktdmFsdWUgc3RvcmUgdGhyb3VnaCByZXNwb25zZSBoZWFkZXJzLlxuICogLSBEZWxldGUga2V5cyBmcm9tIEV0Y2QuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gU3RvcmluZyBjb25maWd1cmF0aW9uIGRhdGEgb3IgYXBwbGljYXRpb24gc3RhdGUgaW4gRXRjZCBmb3IgZGlzdHJpYnV0ZWQgYXBwbGljYXRpb25zLlxuICogLSBSZXRyaWV2aW5nIGFuZCBtYW5hZ2luZyBrZXktdmFsdWUgcGFpcnMgaW4gRXRjZCBmb3Igc2VydmljZSBkaXNjb3ZlcnksIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCwgb3IgY29vcmRpbmF0aW9uIHRhc2tzLlxuICogLSBJbnRlZ3JhdGluZyB3aXRoIG90aGVyIG1vZHVsZXMgdGhhdCByZXF1aXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggRXRjZCBhcyBhIGJhY2tlbmQgc3RvcmUuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSBcIkBhZXJva2l0L3Nkay9ldGNkXCI7XG4gKiBcbiAqIGNvbnN0IGV0Y2RDbGllbnQgPSBuZXcgQ2xpZW50KCk7XG4gKiBcbiAqIC8vIFB1dCBhIHN0cmluZyB2YWx1ZSB0byBhIGtleVxuICogZXRjZENsaWVudC5wdXRTdHJpbmdWYWx1ZShcImNvbmZpZy9hcHBOYW1lXCIsIFwiTXlBcHBcIik7XG4gKiBcbiAqIC8vIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEga2V5XG4gKiBjb25zdCBhcHBOYW1lID0gZXRjZENsaWVudC5nZXRLdnNTdHJpbmdWYWx1ZShcImNvbmZpZy9hcHBOYW1lXCIpO1xuICogY29uc29sZS5sb2coYXBwTmFtZSk7IC8vIE91dHB1dDogeyBcImNvbmZpZy9hcHBOYW1lXCI6IFwiTXlBcHBcIiB9XG4gKiBcbiAqIC8vIERlbGV0ZSBhIGtleVxuICogZXRjZENsaWVudC5kZWxldGUoXCJjb25maWcvYXBwTmFtZVwiKTtcbiAqIGBgYFxuICovXG5cbmNvbnN0IEV0Y2RGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZXRjZC5FdGNkRmFjYWRlXCIpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVRJTElUWSBGVU5DVElPTlNcbi8vIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIGNvbnZlcnNpb24gYmV0d2VlbiBKYXZhU2NyaXB0L1R5cGVTY3JpcHQgdHlwZXMgKHN0cmluZywgSW50OEFycmF5KVxuLy8gYW5kIHRoZSBuYXRpdmUgSmF2YS9FdGNkIHR5cGVzIChCeXRlU2VxdWVuY2UsIG5hdGl2ZSBieXRlIGFycmF5cykuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgbmF0aXZlIEV0Y2QgQnl0ZVNlcXVlbmNlIG9iamVjdC5cbiAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IChKYXZhIHR5cGUpLlxuICovXG5mdW5jdGlvbiBTdHJpbmdUb0J5dGVTZXF1ZW5jZShzdHI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIEV0Y2RGYWNhZGUuc3RyaW5nVG9CeXRlU2VxdWVuY2Uoc3RyKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIEphdmFTY3JpcHQgSW50OEFycmF5IChieXRlIGFycmF5KSB0byBhIG5hdGl2ZSBFdGNkIEJ5dGVTZXF1ZW5jZSBvYmplY3QuXG4gKiBAcGFyYW0gYXJyIFRoZSBJbnQ4QXJyYXkgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBuYXRpdmUgQnl0ZVNlcXVlbmNlIG9iamVjdCAoSmF2YSB0eXBlKS5cbiAqL1xuZnVuY3Rpb24gQnl0ZUFycmF5VG9CeXRlU2VxdWVuY2UoYXJyOiBJbnQ4QXJyYXkpOiBhbnkge1xuICAgIHJldHVybiBFdGNkRmFjYWRlLmJ5dGVBcnJheVRvQnl0ZVNlcXVlbmNlKGFycik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuYXRpdmUgRXRjZCBCeXRlU2VxdWVuY2Ugb2JqZWN0IGJhY2sgdG8gYSBzdHJpbmcuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0LlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBCeXRlU2VxdWVuY2VUb1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gRXRjZEZhY2FkZS5ieXRlU2VxdWVuY2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuYXRpdmUgSmF2YSBhcnJheSBvZiBieXRlcyBpbnRvIGEgSmF2YVNjcmlwdCBJbnQ4QXJyYXkuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG5hdGl2ZSBCeXRlU2VxdWVuY2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGJ5dGVzLlxuICogQHJldHVybnMgQSBKYXZhU2NyaXB0IEludDhBcnJheS5cbiAqL1xuZnVuY3Rpb24gQnl0ZXNUb0FycmF5KHZhbHVlOiBhbnkpOiBJbnQ4QXJyYXkge1xuICAgIGNvbnN0IGFycmF5ID0gdmFsdWUuZ2V0Qnl0ZXMoKTsgLy8gR2V0IHRoZSBuYXRpdmUgYnl0ZSBhcnJheVxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBJbnQ4QXJyYXkoYXJyYXkubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIENvbnZlcnNpb24gZnJvbSBKYXZhIGJ5dGUgdG8gSmF2YVNjcmlwdCBJbnQ4IHZhbHVlXG4gICAgICAgIHJlc3VsdFtpXSA9IHBhcnNlSW50KGFycmF5W2ldLCAxMCk7IFxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBwcm9jZXNzIGEgbGlzdCBvZiBLZXktVmFsdWUgKEtWKSBvYmplY3RzIGludG8gYSBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEBwYXJhbSBrdnNMaXN0IFRoZSBuYXRpdmUgbGlzdCBvZiBLViBvYmplY3RzLlxuICogQHBhcmFtIGZ1bmMgVGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIHRoZSB2YWx1ZSAoZS5nLiwgQnl0ZVNlcXVlbmNlVG9TdHJpbmcgb3IgQnl0ZXNUb0FycmF5KS5cbiAqIEByZXR1cm5zIEEgc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgbWFwcGluZyBzdHJpbmcga2V5cyB0byBzcGVjaWZpZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdDxUPihrdnNMaXN0OiBhbnlbXSwgZnVuYzogKHZhbHVlOiBhbnkpID0+IFQpOiB7IFtrZXk6IHN0cmluZ106IFQgfSB7XG4gICAgY29uc3Qga3ZPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogVCB9ID0ge307XG4gICAga3ZzTGlzdC5mb3JFYWNoKChrdnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBrZXk6IHN0cmluZyA9IEJ5dGVTZXF1ZW5jZVRvU3RyaW5nKGt2cy5nZXRLZXkoKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBUID0gZnVuYyhrdnMuZ2V0VmFsdWUoKSk7XG4gICAgICAgIGt2T2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBrdk9iamVjdDtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgbmF0aXZlIEtWUyBsaXN0IHRvIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBzdHJpbmcgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBLZXlWYWx1ZU9iamVjdFN0cmluZyhrdnNMaXN0OiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBLZXlWYWx1ZU9iamVjdChrdnNMaXN0LCBCeXRlU2VxdWVuY2VUb1N0cmluZyk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIG5hdGl2ZSBLVlMgbGlzdCB0byBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggSW50OEFycmF5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gS2V5VmFsdWVPYmplY3RCeXRlQXJyYXkoa3ZzTGlzdDogYW55W10pOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICByZXR1cm4gS2V5VmFsdWVPYmplY3Qoa3ZzTGlzdCwgQnl0ZXNUb0FycmF5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVUQ0QgUkVTUE9OU0UgQ0xBU1NFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBoZWFkZXIgbWV0YWRhdGEgb2YgYW4gRXRjZCByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYWRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmF0aXZlO1xuICAgIH1cblxuICAgIC8qKiBUaGUgcmV2aXNpb24gb2YgdGhlIGtleS12YWx1ZSBzdG9yZSB3aGVuIHRoZSByZXF1ZXN0IHdhcyBwcm9jZXNzZWQuICovXG4gICAgcHVibGljIGdldFJldmlzaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXRSZXZpc2lvbigpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgSUQgb2YgdGhlIGNsdXN0ZXIgd2hpY2ggdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uICovXG4gICAgcHVibGljIGdldENsdXN0ZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q2x1c3RlcklkKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgbWVtYmVyIHdoaWNoIHRoZSByZXF1ZXN0IHdhcyBoYW5kbGVkIGJ5LiAqL1xuICAgIHB1YmxpYyBnZXRNZW1iZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWVtYmVySWQoKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIFJhZnQgdGVybS4gKi9cbiAgICBwdWJsaWMgZ2V0UmFmdFRlcm0oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldFJhZnRUZXJtKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHJlc3BvbnNlIG9iamVjdCBmb3IgYSBHZXQgb3BlcmF0aW9uIGZyb20gRXRjZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdldFJlc3BvbnNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5uYXRpdmUgPSBuYXRpdmU7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgcmVzcG9uc2UgaGVhZGVyIGNvbnRhaW5pbmcgY2x1c3RlciBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgZ2V0SGVhZGVyKCk6IEhlYWRlciB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUhlYWRlciA9IHRoaXMubmF0aXZlLmdldEhlYWRlcigpO1xuICAgICAgICByZXR1cm4gbmV3IEhlYWRlcihuYXRpdmVIZWFkZXIpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4gKi9cbiAgICBwdWJsaWMgZ2V0S3ZzU3RyaW5nKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gS2V5VmFsdWVPYmplY3RTdHJpbmcodGhpcy5uYXRpdmUuZ2V0S3ZzKCkpO1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIEtleS1WYWx1ZSBwYWlycyB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgdG8gSW50OEFycmF5IChieXRlIGFycmF5cykuICovXG4gICAgcHVibGljIGdldEt2c0J5dGVBcnJheSgpOiB7IFtrZXk6IHN0cmluZ106IEludDhBcnJheSB9IHtcbiAgICAgICAgcmV0dXJuIEtleVZhbHVlT2JqZWN0Qnl0ZUFycmF5KHRoaXMubmF0aXZlLmdldEt2cygpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSBudW1iZXIgb2YgS2V5LVZhbHVlIHBhaXJzIHJldHVybmVkLiAqL1xuICAgIHB1YmxpYyBnZXRDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZ2V0Q291bnQoKTtcbiAgICB9XG59XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVUQ0QgQ0xJRU5UIEZBQ0FERVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDbGllbnQgZmFjYWRlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBFdGNkIGtleS12YWx1ZSBzdG9yZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaWVudCB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gRXRjZEZhY2FkZS5nZXRDbGllbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIGJsb2NraW5nIEdFVCByZXF1ZXN0IG9uIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byByZXRyaWV2ZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcHJvY2Vzc2VkIEdldFJlc3BvbnNlIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldChrZXk6IHN0cmluZyk6IEdldFJlc3BvbnNlIHtcbiAgICAgICAgLy8gRXRjZCBjbGllbnQgcmV0dXJucyBhIENvbXBsZXRhYmxlRnV0dXJlIHdoaWNoIGlzIGJsb2NrZWQgaGVyZSB1c2luZyAuZ2V0KClcbiAgICAgICAgY29uc3QgZXRjZENvbXBsZXRhYmxlRnV0dXJlID0gdGhpcy5uYXRpdmUuZ2V0KFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSkpO1xuICAgICAgICBjb25zdCBuYXRpdmVSZXNwb25zZSA9IGV0Y2RDb21wbGV0YWJsZUZ1dHVyZS5nZXQoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBHZXRSZXNwb25zZShuYXRpdmVSZXNwb25zZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHV0cyAod3JpdGVzKSBhIHN0cmluZyB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gd3JpdGUgdG8uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHB1dFN0cmluZ1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnB1dChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpLCBTdHJpbmdUb0J5dGVTZXF1ZW5jZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFB1dHMgKHdyaXRlcykgYSBieXRlIGFycmF5IHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB3cml0ZSB0by5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIEludDhBcnJheSAoYnl0ZSBhcnJheSkgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHB1dEJ5dGVBcnJheVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogSW50OEFycmF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlLnB1dChTdHJpbmdUb0J5dGVTZXF1ZW5jZShrZXkpLCBCeXRlQXJyYXlUb0J5dGVTZXF1ZW5jZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcmVzcG9uc2UgaGVhZGVyIG1ldGFkYXRhIGZvciBhIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgVGhlIHtAbGluayBIZWFkZXJ9IG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SGVhZGVyKGtleTogc3RyaW5nKTogSGVhZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkuZ2V0SGVhZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBLZXktVmFsdWUgcGFpcnMgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHN0cmluZyB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IChvciBrZXkgcHJlZml4KSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyBBbiBvYmplY3QgbWFwcGluZyBrZXlzIHRvIHN0cmluZyB2YWx1ZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldEt2c1N0cmluZ1ZhbHVlKGtleTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldEt2c1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgS2V5LVZhbHVlIHBhaXJzIGFzIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBJbnQ4QXJyYXkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSAob3Iga2V5IHByZWZpeCkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IG1hcHBpbmcga2V5cyB0byBJbnQ4QXJyYXkgdmFsdWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRLdnNCeXRlQXJyYXlWYWx1ZShrZXk6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogSW50OEFycmF5IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoa2V5KS5nZXRLdnNCeXRlQXJyYXkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGNvdW50IG9mIEtleS1WYWx1ZSBwYWlycyBtYXRjaGluZyB0aGUga2V5IChvciBrZXkgcHJlZml4KS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgKG9yIGtleSBwcmVmaXgpIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiBtYXRjaGluZyBlbnRyaWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb3VudChrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpLmdldENvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gZGVsZXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmUuZGVsZXRlKFN0cmluZ1RvQnl0ZVNlcXVlbmNlKGtleSkpO1xuICAgIH1cbn1cblxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IENsaWVudDtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUNBLE1BQU0sYUFBYSxLQUFLLEtBQUssc0RBQXNEO0FBYW5GLFNB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
@@ -23,4 +23,4 @@ __export(etcd_exports, {
23
23
  module.exports = __toCommonJS(etcd_exports);
24
24
  __reExport(etcd_exports, require("./client"), module.exports);
25
25
  var import_client = require("./client");
26
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gXCIuL2NsaWVudFwiO1xuZXhwb3J0IHsgQ2xpZW50IGFzIGNsaWVudCB9IGZyb20gXCIuL2NsaWVudFwiO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHlCQUFjLHFCQUFkO0FBQ0Esb0JBQWlDOyIsCiAgIm5hbWVzIjogW10KfQo=
26
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V0Y2QvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBldGNkL2luZGV4XG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvZXRjZFxuICogQG92ZXJ2aWV3XG4gKiBcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhbiBldGNkIGtleS12YWx1ZSBzdG9yZSB3aXRoaW4gdGhlIEFlcm9raXQgU0RLLiBJdCBpbmNsdWRlcyBjbGFzc2VzIGFuZCBtZXRob2RzIGZvciBjb25uZWN0aW5nIHRvIGFuIGV0Y2Qgc2VydmVyLCBwZXJmb3JtaW5nIENSVUQgb3BlcmF0aW9ucyBvbiBrZXlzLCBhbmQgbWFuYWdpbmcgZXRjZCBjbHVzdGVycy5cbiAqIFxuICogVGhlIG1haW4gY29tcG9uZW50cyBvZiB0aGlzIG1vZHVsZSBhcmU6XG4gKiAtIENsaWVudDogUmVwcmVzZW50cyBhIGNsaWVudCBmb3IgY29ubmVjdGluZyB0byBhbiBldGNkIHNlcnZlciBhbmQgcHJvdmlkZXMgbWV0aG9kcyB0byBwZXJmb3JtIG9wZXJhdGlvbnMgb24gdGhlIGtleS12YWx1ZSBzdG9yZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jbGllbnRcIjtcbmV4cG9ydCB7IENsaWVudCBhcyBjbGllbnQgfSBmcm9tIFwiLi9jbGllbnRcIjtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSx5QkFBYyxxQkFYZDtBQVlBLG9CQUFpQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -37,4 +37,4 @@ function Extension(options) {
37
37
  });
38
38
  };
39
39
  }
40
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMvZGVjb3JhdG9ycy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgRVhURU5TSU9OX01FVEFEQVRBX0tFWSA9IFN5bWJvbChcImV4dGVuc2lvbjptZXRhZGF0YVwiKTtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25PcHRpb25zIHtcbiAgICBuYW1lOiBzdHJpbmc7IC8vIGUuZy4sIFwiTXlFeHRlbnNpb25cIlxuICAgIHRvOiBzdHJpbmc7ICAgICAgLy8gZS5nLiwgXCJteS1leHRlbnNpb24tcG9pbnRcIlxufVxuXG4vKipcbiAqIEBFeHRlbnNpb24gZGVjb3JhdG9yXG4gKiBNYXJrcyBhbiBlbnRpcmUgY2xhc3MgYXMgYSBleHRlbnNpb25cbiAqXG4gKiBpbnRyb2R1Y2VkIGluIFR5cGVTY3JpcHQgNS4wLCB3aGljaCBleHBlY3RzIGEgQ2xhc3NEZWNvcmF0b3JDb250ZXh0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV4dGVuc2lvbihvcHRpb25zOiBFeHRlbnNpb25PcHRpb25zKSB7XG4gICAgXG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgYWJzdHJhY3QgbmV3ICguLi5hcmdzOiBhbnkpID0+IGFueT4odGFyZ2V0OiBULCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQ8VD4pIHtcbiAgICAgICAgXG4gICAgICAgIGlmIChjb250ZXh0LmtpbmQgIT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQEV4dGVuc2lvbiBjYW4gb25seSBiZSB1c2VkIG9uIGNsYXNzZXMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBFWFRFTlNJT05fTUVUQURBVEFfS0VZLCB7XG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgICAgICB0bzogb3B0aW9ucy50b1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUFNLHlCQUF5Qix1QkFBTyxvQkFBb0I7QUFhbkQsU0FBUyxVQUFVLFNBQTJCO0FBRWpELFNBQU8sU0FBd0QsUUFBVyxTQUFtQztBQUV6RyxRQUFJLFFBQVEsU0FBUyxTQUFTO0FBQzFCLFlBQU0sSUFBSSxNQUFNLHlDQUF5QztBQUFBLElBQzdEO0FBRUEsV0FBTyxlQUFlLFFBQVEsd0JBQXdCO0FBQUEsTUFDbEQsT0FBTztBQUFBLFFBQ0gsTUFBTSxRQUFRO0FBQUEsUUFDZCxJQUFJLFFBQVE7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsY0FBYztBQUFBLE1BQ2QsWUFBWTtBQUFBLElBQ2hCLENBQUM7QUFBQSxFQUNMO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
40
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMvZGVjb3JhdG9ycy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGV4dGVuc2lvbnMvZGVjb3JhdG9yc1xuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2V4dGVuc2lvbnNcbiAqIEBuYW1lIERlY29yYXRvcnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiBkZWNvcmF0b3JzIGZvciBkZWZpbmluZyBhbmQgbWFuYWdpbmcgZXh0ZW5zaW9ucyB3aXRoaW4gdGhlIERpcmlnaWJsZSBlbnZpcm9ubWVudC4gVGhlIGRlY29yYXRvcnMgYXJlIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIGxlZ2FjeSBKYXZhU2NyaXB0IGVudmlyb25tZW50cyAobGlrZSBNb3ppbGxhIFJoaW5vIG9yIG9sZGVyIEdyYWFsSlMpIGFuZCBtb2Rlcm4gSmF2YVNjcmlwdCBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IHRoZSBsYXRlc3QgZGVjb3JhdG9yIHNwZWNpZmljYXRpb25zLlxuICogXG4gKiAjIyMgS2V5IEZlYXR1cmVzXG4gKiAtICoqRXh0ZW5zaW9uIERlY29yYXRvcioqOiBNYXJrcyBhIGNsYXNzIGFzIGFuIGV4dGVuc2lvbiwgYWxsb3dpbmcgaXQgdG8gYmUgcmVnaXN0ZXJlZCBhbmQgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgZXh0ZW5zaW9uIHBvaW50IGluIHRoZSBEaXJpZ2libGUgYXBwbGljYXRpb24uXG4gKiAtICoqTWV0YWRhdGEgU3RvcmFnZSoqOiBVc2VzIHN5bWJvbHMgdG8gc3RvcmUgZXh0ZW5zaW9uIG1ldGFkYXRhIG9uIHRoZSBjbGFzcywgZW5zdXJpbmcgdGhhdCB0aGUgbWV0YWRhdGEgaXMgZW5jYXBzdWxhdGVkIGFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBvdGhlciBwcm9wZXJ0aWVzIG9yIG1ldGhvZHMuXG4gKiAtICoqSHlicmlkIERlY29yYXRvciBTdXBwb3J0Kio6IFRoZSBkZWNvcmF0b3JzIGFyZSBpbXBsZW1lbnRlZCB0byB3b3JrIHNlYW1sZXNzbHkgaW4gYm90aCBsZWdhY3kgYW5kIG1vZGVybiBKYXZhU2NyaXB0IGVudmlyb25tZW50cywgZW5zdXJpbmcgYnJvYWQgY29tcGF0aWJpbGl0eSBhY3Jvc3MgZGlmZmVyZW50IHJ1bnRpbWUgY29udGV4dHMuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gRGVmaW5pbmcgZXh0ZW5zaW9ucyB0aGF0IGNhbiBiZSBkeW5hbWljYWxseSBsb2FkZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYXBwbGljYXRpb24gYXQgcnVudGltZS5cbiAqIC0gQXNzb2NpYXRpbmcgZXh0ZW5zaW9ucyB3aXRoIHNwZWNpZmljIGV4dGVuc2lvbiBwb2ludHMgdG8gZW5hYmxlIG1vZHVsYXIgYW5kIGV4dGVuc2libGUgYXBwbGljYXRpb24gZGVzaWduLlxuICogLSBMZXZlcmFnaW5nIHRoZSBleHRlbnNpb24gbWVjaGFuaXNtIHRvIGFsbG93IGZvciB0aGlyZC1wYXJ0eSBjb250cmlidXRpb25zIG9yIGN1c3RvbWl6YXRpb25zIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBjb3JlIGFwcGxpY2F0aW9uIGNvZGUuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgRXh0ZW5zaW9uIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9leHRlbnNpb25zXCI7XG4gKiBcbiAqIEBFeHRlbnNpb24oeyBuYW1lOiBcIk15RXh0ZW5zaW9uXCIsIHRvOiBcIm15LWV4dGVuc2lvbi1wb2ludFwiIH0pXG4gKiBjbGFzcyBNeUV4dGVuc2lvbiB7XG4gKiAgIC8vIEV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvblxuICogfVxuICogYGBgXG4gKi9cblxuY29uc3QgRVhURU5TSU9OX01FVEFEQVRBX0tFWSA9IFN5bWJvbChcImV4dGVuc2lvbjptZXRhZGF0YVwiKTtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25PcHRpb25zIHtcbiAgICBuYW1lOiBzdHJpbmc7IC8vIGUuZy4sIFwiTXlFeHRlbnNpb25cIlxuICAgIHRvOiBzdHJpbmc7ICAgICAgLy8gZS5nLiwgXCJteS1leHRlbnNpb24tcG9pbnRcIlxufVxuXG4vKipcbiAqIEBFeHRlbnNpb24gZGVjb3JhdG9yXG4gKiBNYXJrcyBhbiBlbnRpcmUgY2xhc3MgYXMgYSBleHRlbnNpb25cbiAqXG4gKiBpbnRyb2R1Y2VkIGluIFR5cGVTY3JpcHQgNS4wLCB3aGljaCBleHBlY3RzIGEgQ2xhc3NEZWNvcmF0b3JDb250ZXh0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV4dGVuc2lvbihvcHRpb25zOiBFeHRlbnNpb25PcHRpb25zKSB7XG4gICAgXG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgYWJzdHJhY3QgbmV3ICguLi5hcmdzOiBhbnkpID0+IGFueT4odGFyZ2V0OiBULCBjb250ZXh0OiBDbGFzc0RlY29yYXRvckNvbnRleHQ8VD4pIHtcbiAgICAgICAgXG4gICAgICAgIGlmIChjb250ZXh0LmtpbmQgIT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQEV4dGVuc2lvbiBjYW4gb25seSBiZSB1c2VkIG9uIGNsYXNzZXMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBFWFRFTlNJT05fTUVUQURBVEFfS0VZLCB7XG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgICAgICB0bzogb3B0aW9ucy50b1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2QkEsTUFBTSx5QkFBeUIsdUJBQU8sb0JBQW9CO0FBYW5ELFNBQVMsVUFBVSxTQUEyQjtBQUVqRCxTQUFPLFNBQXdELFFBQVcsU0FBbUM7QUFFekcsUUFBSSxRQUFRLFNBQVMsU0FBUztBQUMxQixZQUFNLElBQUksTUFBTSx5Q0FBeUM7QUFBQSxJQUM3RDtBQUVBLFdBQU8sZUFBZSxRQUFRLHdCQUF3QjtBQUFBLE1BQ2xELE9BQU87QUFBQSxRQUNILE1BQU0sUUFBUTtBQUFBLFFBQ2QsSUFBSSxRQUFRO0FBQUEsTUFDaEI7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLGNBQWM7QUFBQSxNQUNkLFlBQVk7QUFBQSxJQUNoQixDQUFDO0FBQUEsRUFDTDtBQUNKOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -105,4 +105,4 @@ class Extensions {
105
105
  if (typeof module !== "undefined") {
106
106
  module.exports = Extensions;
107
107
  }
108
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBBUEkgRXh0ZW5zaW9uc1xuICpcbiAqL1xuXG5jb25zdCBFeHRlbnNpb25zRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmV4dGVuc2lvbnMuRXh0ZW5zaW9uc0ZhY2FkZVwiKTtcblxuLyoqXG4gKiBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBkaXNjb3ZlcmluZyBhbmQgbG9hZGluZyBleHRlbnNpb25zIGRlZmluZWRcbiAqIGFnYWluc3QgdGhlIERpcmlnaWJsZSBleHRlbnNpb24gbW9kZWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHRlbnNpb25zIHtcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIGV4dGVuc2lvbiBtb2R1bGUgcGF0aHMgcmVnaXN0ZXJlZCBmb3IgYSBzcGVjaWZpYyBleHRlbnNpb24gcG9pbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBleHRlbnNpb25Qb2ludCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBwb2ludCAoZS5nLiwgXCJteS5leHRlbnNpb24ucG9pbnRcIikuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZyBwYXRocyAobW9kdWxlcykgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGV4dGVuc2lvbiBwb2ludC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0RXh0ZW5zaW9ucyhleHRlbnNpb25Qb2ludDogc3RyaW5nKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGV4dGVuc2lvbnMgPSBFeHRlbnNpb25zRmFjYWRlLmdldEV4dGVuc2lvbnMoZXh0ZW5zaW9uUG9pbnQpO1xuXHRcdC8vIFRoZSBuYXRpdmUgZmFjYWRlIHJldHVybnMgYSBKYXZhIExpc3QsIHdoaWNoIGlzIGNvbnZlcnRlZCB0byBKU09OIHN0cmluZyBcblx0XHQvLyBhbmQgdGhlbiBwYXJzZWQgdG8gYSBKYXZhU2NyaXB0IGFycmF5LlxuXHRcdHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV4dGVuc2lvbnMpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYWxsIGF2YWlsYWJsZSBleHRlbnNpb24gcG9pbnQgaWRlbnRpZmllcnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIGFsbCByZWdpc3RlcmVkIGV4dGVuc2lvbiBwb2ludCBJRHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEV4dGVuc2lvblBvaW50cygpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgZXh0ZW5zaW9uUG9pbnRzID0gRXh0ZW5zaW9uc0ZhY2FkZS5nZXRFeHRlbnNpb25Qb2ludHMoKTtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleHRlbnNpb25Qb2ludHMpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBleHRlbnNpb24gbW9kdWxlcyByZWdpc3RlcmVkIGZvciBhIHNwZWNpZmljIGV4dGVuc2lvbiBwb2ludC5cblx0ICogSXQgaGFuZGxlcyBib3RoIHN5bmNocm9ub3VzIChyZXF1aXJlKSBhbmQgYXN5bmNocm9ub3VzIChpbXBvcnQpIGxvYWRpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSBleHRlbnNpb25Qb2ludCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBwb2ludC5cblx0ICogQHBhcmFtIHJlcXVpcmVkRnVuY3Rpb25zIEFuIG9wdGlvbmFsIGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgdGhhdCB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBtdXN0IGV4cG9ydCB0byBiZSBpbmNsdWRlZC5cblx0ICogQHBhcmFtIHRocm93RXJyb3IgSWYgdHJ1ZSwgdGhyb3dzIGFuIGVycm9yIG9uIGZhaWx1cmU7IG90aGVyd2lzZSwgbG9ncyB0aGUgZXJyb3IgYW5kIGNvbnRpbnVlcy5cblx0ICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2Ygc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgdmFsaWRhdGVkIGV4dGVuc2lvbiBtb2R1bGVzIChleHBvcnRzKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgYXN5bmMgbG9hZEV4dGVuc2lvbk1vZHVsZXMoZXh0ZW5zaW9uUG9pbnQ6IHN0cmluZywgcmVxdWlyZWRGdW5jdGlvbnM6IHN0cmluZ1tdID0gW10sIHRocm93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8YW55W10+IHtcblx0XHRjb25zdCBleHRlbnNpb25Nb2R1bGVzID0gW107XG5cdFx0Y29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSB0aGlzLmdldEV4dGVuc2lvbnMoZXh0ZW5zaW9uUG9pbnQpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBleHRlbnNpb25zPy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgbW9kdWxlOiBzdHJpbmcgPSBleHRlbnNpb25zW2ldO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IGV4dGVuc2lvbk1vZHVsZTogYW55O1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIG5hdGl2ZSByZXF1aXJlKCkgKERpcmlnaWJsZS1zcGVjaWZpYylcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0ZXh0ZW5zaW9uTW9kdWxlID0gZGlyaWdpYmxlUmVxdWlyZShtb2R1bGUpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gZHluYW1pYyBpbXBvcnQgKGZvciBlbnZpcm9ubWVudHMgc3VwcG9ydGluZyBFU00vQXN5bmMpXG5cdFx0XHRcdFx0ZXh0ZW5zaW9uTW9kdWxlID0gYXdhaXQgaW1wb3J0KGAuLi8uLi8uLi8uLi8ke21vZHVsZX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghZXh0ZW5zaW9uTW9kdWxlIHx8IE9iamVjdC5rZXlzKGV4dGVuc2lvbk1vZHVsZSkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gYEV4dGVuc2lvbiAnJHttb2R1bGV9JyBmb3IgZXh0ZW5zaW9uIHBvaW50ICcke2V4dGVuc2lvblBvaW50fScgZG9lc24ndCBwcm92aWRlIGFueSBmdW5jdGlvbihzKSBvciB3YXMgbm90IHByb3Blcmx5IGxvYWRlZCwgY29uc2lkZXIgcHVibGlzaGluZyBpdC5gO1xuXHRcdFx0XHRcdHRoaXMubG9nRXJyb3IodGhyb3dFcnJvciwgZXJyb3JNZXNzYWdlKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCByZXF1aXJlZEZ1bmN0aW9uc0ZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0cmVxdWlyZWRGdW5jdGlvbnMuZm9yRWFjaChmID0+IHtcblx0XHRcdFx0XHRyZXF1aXJlZEZ1bmN0aW9uc0ZvdW5kICYmPSB0eXBlb2YgZXh0ZW5zaW9uTW9kdWxlW2ZdID09PSBcImZ1bmN0aW9uXCI7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmICghcmVxdWlyZWRGdW5jdGlvbnNGb3VuZCkge1xuXHRcdFx0XHRcdGNvbnN0IGVycm9yTWVzc2FnZSA9IGBFeHRlbnNpb24gJyR7bW9kdWxlfScgZm9yIGV4dGVuc2lvbiBwb2ludCAnJHtleHRlbnNpb25Qb2ludH0nLCBkb2Vzbid0IHByb3ZpZGUgdGhlIGZvbGxvd2luZyByZXF1aXJlZCBmdW5jdGlvbihzKTogW1xcblxcdCR7cmVxdWlyZWRGdW5jdGlvbnMuam9pbihcIigpLFxcblxcdFwiKX0oKVxcbl1gO1xuXHRcdFx0XHRcdHRoaXMubG9nRXJyb3IodGhyb3dFcnJvciwgZXJyb3JNZXNzYWdlKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGV4dGVuc2lvbk1vZHVsZXMucHVzaChleHRlbnNpb25Nb2R1bGUpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjb25zdCBlcnJvck1lc3NhZ2UgPSBgRXJyb3Igb2NjdXJyZWQgd2hpbGUgaW1wb3J0aW5nIGV4dGVuc2lvbiAnJHttb2R1bGV9JyBmb3IgZXh0ZW5zaW9uIHBvaW50ICcke2V4dGVuc2lvblBvaW50fScuYDtcblx0XHRcdFx0dGhpcy5sb2dFcnJvcih0aHJvd0Vycm9yLCBlcnJvck1lc3NhZ2UsIGUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBleHRlbnNpb25Nb2R1bGVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvZ3MgYW4gZXJyb3IgdG8gdGhlIGNvbnNvbGUgYW5kIG9wdGlvbmFsbHkgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblx0ICogQHBhcmFtIHRocm93RXJyb3IgSWYgdHJ1ZSwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cblx0ICogQHBhcmFtIGVycm9yRGF0YSBUaGUgZGF0YS9tZXNzYWdlIHRvIGxvZyBhbmQvb3IgdXNlIGZvciB0aGUgZXJyb3IgbWVzc2FnZS5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGxvZ0Vycm9yKHRocm93RXJyb3I6IGJvb2xlYW4sIC4uLmVycm9yRGF0YTogYW55W10pOiB2b2lkIHtcblx0XHRjb25zb2xlLmVycm9yKGVycm9yRGF0YSk7XG5cdFx0aWYgKHRocm93RXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvckRhdGFbMF0pO1xuXHRcdH1cblx0fVxuXHRcblx0LyoqIEFsaWFzIGZvciBsb2FkRXh0ZW5zaW9uTW9kdWxlcyAqL1xuXHRwdWJsaWMgc3RhdGljIGFzeW5jIGxvYWQoZXh0ZW5zaW9uUG9pbnQ6IHN0cmluZywgcmVxdWlyZWRGdW5jdGlvbnM6IHN0cmluZ1tdID0gW10sIHRocm93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8YW55W10+IHtcblx0XHRyZXR1cm4gRXh0ZW5zaW9ucy5sb2FkRXh0ZW5zaW9uTW9kdWxlcyhleHRlbnNpb25Qb2ludCwgcmVxdWlyZWRGdW5jdGlvbnMsIHRocm93RXJyb3IpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gRXh0ZW5zaW9ucztcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQSxNQUFNLG1CQUFtQixLQUFLLEtBQUssa0VBQWtFO0FBTTlGLE1BQU0sV0FBVztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUXZCLE9BQWMsY0FBYyxnQkFBa0M7QUFDN0QsVUFBTSxhQUFhLGlCQUFpQixjQUFjLGNBQWM7QUFHaEUsV0FBTyxLQUFLLE1BQU0sS0FBSyxVQUFVLFVBQVUsQ0FBQztBQUFBLEVBQzdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxxQkFBK0I7QUFDNUMsVUFBTSxrQkFBa0IsaUJBQWlCLG1CQUFtQjtBQUM1RCxXQUFPLEtBQUssTUFBTSxLQUFLLFVBQVUsZUFBZSxDQUFDO0FBQUEsRUFDbEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdBLGFBQW9CLHFCQUFxQixnQkFBd0Isb0JBQThCLENBQUMsR0FBRyxhQUFzQixPQUF1QjtBQUMvSSxVQUFNLG1CQUFtQixDQUFDO0FBQzFCLFVBQU0sYUFBdUIsS0FBSyxjQUFjLGNBQWM7QUFFOUQsYUFBUyxJQUFJLEdBQUcsSUFBSSxZQUFZLFFBQVEsS0FBSztBQUM1QyxZQUFNQSxVQUFpQixXQUFXLENBQUM7QUFDbkMsVUFBSTtBQUNILFlBQUk7QUFDSixZQUFJO0FBR0gsNEJBQWtCLGlCQUFpQkEsT0FBTTtBQUFBLFFBQzFDLFNBQVMsR0FBRztBQUVYLDRCQUFrQixNQUFNLE9BQU8sZUFBZUEsT0FBTTtBQUFBLFFBQ3JEO0FBRUEsWUFBSSxDQUFDLG1CQUFtQixPQUFPLEtBQUssZUFBZSxFQUFFLFdBQVcsR0FBRztBQUNsRSxnQkFBTSxlQUFlLGNBQWNBLE9BQU0sMEJBQTBCLGNBQWM7QUFDakYsZUFBSyxTQUFTLFlBQVksWUFBWTtBQUN0QztBQUFBLFFBQ0Q7QUFFQSxZQUFJLHlCQUF5QjtBQUM3QiwwQkFBa0IsUUFBUSxPQUFLO0FBQzlCLHFDQUEyQixPQUFPLGdCQUFnQixDQUFDLE1BQU07QUFBQSxRQUMxRCxDQUFDO0FBRUQsWUFBSSxDQUFDLHdCQUF3QjtBQUM1QixnQkFBTSxlQUFlLGNBQWNBLE9BQU0sMEJBQTBCLGNBQWM7QUFBQSxHQUErRCxrQkFBa0IsS0FBSyxRQUFTLENBQUM7QUFBQTtBQUNqTCxlQUFLLFNBQVMsWUFBWSxZQUFZO0FBQ3RDO0FBQUEsUUFDRDtBQUVBLHlCQUFpQixLQUFLLGVBQWU7QUFBQSxNQUN0QyxTQUFTLEdBQUc7QUFDWCxjQUFNLGVBQWUsNkNBQTZDQSxPQUFNLDBCQUEwQixjQUFjO0FBQ2hILGFBQUssU0FBUyxZQUFZLGNBQWMsQ0FBQztBQUFBLE1BQzFDO0FBQUEsSUFDRDtBQUVBLFdBQU87QUFBQSxFQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBZSxTQUFTLGVBQXdCLFdBQXdCO0FBQ3ZFLFlBQVEsTUFBTSxTQUFTO0FBQ3ZCLFFBQUksWUFBWTtBQUNmLFlBQU0sSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDO0FBQUEsSUFDN0I7QUFBQSxFQUNEO0FBQUE7QUFBQSxFQUdBLGFBQW9CLEtBQUssZ0JBQXdCLG9CQUE4QixDQUFDLEdBQUcsYUFBc0IsT0FBdUI7QUFDL0gsV0FBTyxXQUFXLHFCQUFxQixnQkFBZ0IsbUJBQW1CLFVBQVU7QUFBQSxFQUNyRjtBQUNEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbIm1vZHVsZSJdCn0K
108
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbW9kdWxlIGV4dGVuc2lvbnMvZXh0ZW5zaW9uc1xuICogQHBhY2thZ2UgQGFlcm9raXQvc2RrL2V4dGVuc2lvbnNcbiAqIEBuYW1lIEV4dGVuc2lvbnNcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgYEV4dGVuc2lvbnNgIGNsYXNzLCB3aGljaCBvZmZlcnMgZnVuY3Rpb25hbGl0eSBmb3IgZGlzY292ZXJpbmcgYW5kIGxvYWRpbmcgZXh0ZW5zaW9ucyBkZWZpbmVkIGFnYWluc3QgdGhlIERpcmlnaWJsZSBleHRlbnNpb24gbW9kZWwuIFRoZSBgRXh0ZW5zaW9uc2AgY2xhc3MgYWxsb3dzIGRldmVsb3BlcnMgdG8gcmV0cmlldmUgcmVnaXN0ZXJlZCBleHRlbnNpb25zIGZvciBzcGVjaWZpYyBleHRlbnNpb24gcG9pbnRzIGFuZCB0byBsb2FkIHRob3NlIGV4dGVuc2lvbnMgYXMgbW9kdWxlcywgZW5zdXJpbmcgdGhhdCB0aGV5IG1lZXQgc3BlY2lmaWVkIHJlcXVpcmVtZW50cyAoZS5nLiwgZXhwb3J0aW5nIGNlcnRhaW4gZnVuY3Rpb25zKS5cbiAqIFxuICogIyMjIEtleSBGZWF0dXJlc1xuICogLSBSZXRyaWV2ZSByZWdpc3RlcmVkIGV4dGVuc2lvbiBtb2R1bGUgcGF0aHMgZm9yIHNwZWNpZmljIGV4dGVuc2lvbiBwb2ludHMuXG4gKiAtIExvYWQgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBzdXBwb3J0IGZvciBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgbG9hZGluZyBtZWNoYW5pc21zLlxuICogLSBWYWxpZGF0ZSBsb2FkZWQgZXh0ZW5zaW9ucyBhZ2FpbnN0IHJlcXVpcmVkIGZ1bmN0aW9uIGV4cG9ydHMgdG8gZW5zdXJlIHRoZXkgbWVldCBleHBlY3RlZCBpbnRlcmZhY2VzLlxuICogLSBDb25maWd1cmFibGUgZXJyb3IgaGFuZGxpbmcgdG8gZWl0aGVyIGxvZyBpc3N1ZXMgb3IgdGhyb3cgZXhjZXB0aW9ucyBiYXNlZCBvbiB0aGUgdXNlIGNhc2UuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXNcbiAqIC0gRHluYW1pY2FsbHkgbG9hZGluZyBhbmQgaW50ZWdyYXRpbmcgZXh0ZW5zaW9ucyBhdCBydW50aW1lIGJhc2VkIG9uIHRoZSBhcHBsaWNhdGlvbidzIG5lZWRzLlxuICogLSBFbnN1cmluZyB0aGF0IGxvYWRlZCBleHRlbnNpb25zIGNvbmZvcm0gdG8gZXhwZWN0ZWQgaW50ZXJmYWNlcyBieSBjaGVja2luZyBmb3IgcmVxdWlyZWQgZnVuY3Rpb25zLlxuICogLSBNYW5hZ2luZyBleHRlbnNpb25zIGluIGEgbW9kdWxhciBhcHBsaWNhdGlvbiBkZXNpZ24sIGFsbG93aW5nIGZvciB0aGlyZC1wYXJ0eSBjb250cmlidXRpb25zIHdpdGhvdXQgbW9kaWZ5aW5nIGNvcmUgY29kZS5cbiAqIFxuICogIyMjIEV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBFeHRlbnNpb25zIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9leHRlbnNpb25zXCI7XG4gKiBcbiAqIC8vIExvYWQgZXh0ZW5zaW9ucyBmb3IgYSBzcGVjaWZpYyBleHRlbnNpb24gcG9pbnQsIHJlcXVpcmluZyBjZXJ0YWluIGZ1bmN0aW9ucyB0byBiZSBleHBvcnRlZFxuICogY29uc3QgbG9hZGVkRXh0ZW5zaW9ucyA9IGF3YWl0IEV4dGVuc2lvbnMubG9hZChcIm15LmV4dGVuc2lvbi5wb2ludFwiLCBbXCJpbml0aWFsaXplXCIsIFwiZXhlY3V0ZVwiXSwgdHJ1ZSk7XG4gKiBcbiAqIC8vIFVzZSB0aGUgbG9hZGVkIGV4dGVuc2lvbnNcbiAqIGxvYWRlZEV4dGVuc2lvbnMuZm9yRWFjaChleHRlbnNpb24gPT4ge1xuICogICBleHRlbnNpb24uaW5pdGlhbGl6ZSgpO1xuICogICBleHRlbnNpb24uZXhlY3V0ZSgpO1xuICogfSk7XG4gKiBgYGBcbiAqL1xuXG5jb25zdCBFeHRlbnNpb25zRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmV4dGVuc2lvbnMuRXh0ZW5zaW9uc0ZhY2FkZVwiKTtcblxuLyoqXG4gKiBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBkaXNjb3ZlcmluZyBhbmQgbG9hZGluZyBleHRlbnNpb25zIGRlZmluZWRcbiAqIGFnYWluc3QgdGhlIERpcmlnaWJsZSBleHRlbnNpb24gbW9kZWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHRlbnNpb25zIHtcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIGV4dGVuc2lvbiBtb2R1bGUgcGF0aHMgcmVnaXN0ZXJlZCBmb3IgYSBzcGVjaWZpYyBleHRlbnNpb24gcG9pbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBleHRlbnNpb25Qb2ludCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBwb2ludCAoZS5nLiwgXCJteS5leHRlbnNpb24ucG9pbnRcIikuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZyBwYXRocyAobW9kdWxlcykgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGV4dGVuc2lvbiBwb2ludC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0RXh0ZW5zaW9ucyhleHRlbnNpb25Qb2ludDogc3RyaW5nKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGV4dGVuc2lvbnMgPSBFeHRlbnNpb25zRmFjYWRlLmdldEV4dGVuc2lvbnMoZXh0ZW5zaW9uUG9pbnQpO1xuXHRcdC8vIFRoZSBuYXRpdmUgZmFjYWRlIHJldHVybnMgYSBKYXZhIExpc3QsIHdoaWNoIGlzIGNvbnZlcnRlZCB0byBKU09OIHN0cmluZyBcblx0XHQvLyBhbmQgdGhlbiBwYXJzZWQgdG8gYSBKYXZhU2NyaXB0IGFycmF5LlxuXHRcdHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV4dGVuc2lvbnMpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYWxsIGF2YWlsYWJsZSBleHRlbnNpb24gcG9pbnQgaWRlbnRpZmllcnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIGFsbCByZWdpc3RlcmVkIGV4dGVuc2lvbiBwb2ludCBJRHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEV4dGVuc2lvblBvaW50cygpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgZXh0ZW5zaW9uUG9pbnRzID0gRXh0ZW5zaW9uc0ZhY2FkZS5nZXRFeHRlbnNpb25Qb2ludHMoKTtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleHRlbnNpb25Qb2ludHMpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBleHRlbnNpb24gbW9kdWxlcyByZWdpc3RlcmVkIGZvciBhIHNwZWNpZmljIGV4dGVuc2lvbiBwb2ludC5cblx0ICogSXQgaGFuZGxlcyBib3RoIHN5bmNocm9ub3VzIChyZXF1aXJlKSBhbmQgYXN5bmNocm9ub3VzIChpbXBvcnQpIGxvYWRpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSBleHRlbnNpb25Qb2ludCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGV4dGVuc2lvbiBwb2ludC5cblx0ICogQHBhcmFtIHJlcXVpcmVkRnVuY3Rpb25zIEFuIG9wdGlvbmFsIGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgdGhhdCB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBtdXN0IGV4cG9ydCB0byBiZSBpbmNsdWRlZC5cblx0ICogQHBhcmFtIHRocm93RXJyb3IgSWYgdHJ1ZSwgdGhyb3dzIGFuIGVycm9yIG9uIGZhaWx1cmU7IG90aGVyd2lzZSwgbG9ncyB0aGUgZXJyb3IgYW5kIGNvbnRpbnVlcy5cblx0ICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2Ygc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgdmFsaWRhdGVkIGV4dGVuc2lvbiBtb2R1bGVzIChleHBvcnRzKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgYXN5bmMgbG9hZEV4dGVuc2lvbk1vZHVsZXMoZXh0ZW5zaW9uUG9pbnQ6IHN0cmluZywgcmVxdWlyZWRGdW5jdGlvbnM6IHN0cmluZ1tdID0gW10sIHRocm93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8YW55W10+IHtcblx0XHRjb25zdCBleHRlbnNpb25Nb2R1bGVzID0gW107XG5cdFx0Y29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSB0aGlzLmdldEV4dGVuc2lvbnMoZXh0ZW5zaW9uUG9pbnQpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBleHRlbnNpb25zPy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgbW9kdWxlOiBzdHJpbmcgPSBleHRlbnNpb25zW2ldO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IGV4dGVuc2lvbk1vZHVsZTogYW55O1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIG5hdGl2ZSByZXF1aXJlKCkgKERpcmlnaWJsZS1zcGVjaWZpYylcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0ZXh0ZW5zaW9uTW9kdWxlID0gZGlyaWdpYmxlUmVxdWlyZShtb2R1bGUpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gZHluYW1pYyBpbXBvcnQgKGZvciBlbnZpcm9ubWVudHMgc3VwcG9ydGluZyBFU00vQXN5bmMpXG5cdFx0XHRcdFx0ZXh0ZW5zaW9uTW9kdWxlID0gYXdhaXQgaW1wb3J0KGAuLi8uLi8uLi8uLi8ke21vZHVsZX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghZXh0ZW5zaW9uTW9kdWxlIHx8IE9iamVjdC5rZXlzKGV4dGVuc2lvbk1vZHVsZSkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gYEV4dGVuc2lvbiAnJHttb2R1bGV9JyBmb3IgZXh0ZW5zaW9uIHBvaW50ICcke2V4dGVuc2lvblBvaW50fScgZG9lc24ndCBwcm92aWRlIGFueSBmdW5jdGlvbihzKSBvciB3YXMgbm90IHByb3Blcmx5IGxvYWRlZCwgY29uc2lkZXIgcHVibGlzaGluZyBpdC5gO1xuXHRcdFx0XHRcdHRoaXMubG9nRXJyb3IodGhyb3dFcnJvciwgZXJyb3JNZXNzYWdlKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCByZXF1aXJlZEZ1bmN0aW9uc0ZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0cmVxdWlyZWRGdW5jdGlvbnMuZm9yRWFjaChmID0+IHtcblx0XHRcdFx0XHRyZXF1aXJlZEZ1bmN0aW9uc0ZvdW5kICYmPSB0eXBlb2YgZXh0ZW5zaW9uTW9kdWxlW2ZdID09PSBcImZ1bmN0aW9uXCI7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmICghcmVxdWlyZWRGdW5jdGlvbnNGb3VuZCkge1xuXHRcdFx0XHRcdGNvbnN0IGVycm9yTWVzc2FnZSA9IGBFeHRlbnNpb24gJyR7bW9kdWxlfScgZm9yIGV4dGVuc2lvbiBwb2ludCAnJHtleHRlbnNpb25Qb2ludH0nLCBkb2Vzbid0IHByb3ZpZGUgdGhlIGZvbGxvd2luZyByZXF1aXJlZCBmdW5jdGlvbihzKTogW1xcblxcdCR7cmVxdWlyZWRGdW5jdGlvbnMuam9pbihcIigpLFxcblxcdFwiKX0oKVxcbl1gO1xuXHRcdFx0XHRcdHRoaXMubG9nRXJyb3IodGhyb3dFcnJvciwgZXJyb3JNZXNzYWdlKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGV4dGVuc2lvbk1vZHVsZXMucHVzaChleHRlbnNpb25Nb2R1bGUpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRjb25zdCBlcnJvck1lc3NhZ2UgPSBgRXJyb3Igb2NjdXJyZWQgd2hpbGUgaW1wb3J0aW5nIGV4dGVuc2lvbiAnJHttb2R1bGV9JyBmb3IgZXh0ZW5zaW9uIHBvaW50ICcke2V4dGVuc2lvblBvaW50fScuYDtcblx0XHRcdFx0dGhpcy5sb2dFcnJvcih0aHJvd0Vycm9yLCBlcnJvck1lc3NhZ2UsIGUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBleHRlbnNpb25Nb2R1bGVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvZ3MgYW4gZXJyb3IgdG8gdGhlIGNvbnNvbGUgYW5kIG9wdGlvbmFsbHkgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblx0ICogQHBhcmFtIHRocm93RXJyb3IgSWYgdHJ1ZSwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cblx0ICogQHBhcmFtIGVycm9yRGF0YSBUaGUgZGF0YS9tZXNzYWdlIHRvIGxvZyBhbmQvb3IgdXNlIGZvciB0aGUgZXJyb3IgbWVzc2FnZS5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGxvZ0Vycm9yKHRocm93RXJyb3I6IGJvb2xlYW4sIC4uLmVycm9yRGF0YTogYW55W10pOiB2b2lkIHtcblx0XHRjb25zb2xlLmVycm9yKGVycm9yRGF0YSk7XG5cdFx0aWYgKHRocm93RXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvckRhdGFbMF0pO1xuXHRcdH1cblx0fVxuXHRcblx0LyoqIEFsaWFzIGZvciBsb2FkRXh0ZW5zaW9uTW9kdWxlcyAqL1xuXHRwdWJsaWMgc3RhdGljIGFzeW5jIGxvYWQoZXh0ZW5zaW9uUG9pbnQ6IHN0cmluZywgcmVxdWlyZWRGdW5jdGlvbnM6IHN0cmluZ1tdID0gW10sIHRocm93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8YW55W10+IHtcblx0XHRyZXR1cm4gRXh0ZW5zaW9ucy5sb2FkRXh0ZW5zaW9uTW9kdWxlcyhleHRlbnNpb25Qb2ludCwgcmVxdWlyZWRGdW5jdGlvbnMsIHRocm93RXJyb3IpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gRXh0ZW5zaW9ucztcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQ0EsTUFBTSxtQkFBbUIsS0FBSyxLQUFLLGtFQUFrRTtBQU05RixNQUFNLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVF2QixPQUFjLGNBQWMsZ0JBQWtDO0FBQzdELFVBQU0sYUFBYSxpQkFBaUIsY0FBYyxjQUFjO0FBR2hFLFdBQU8sS0FBSyxNQUFNLEtBQUssVUFBVSxVQUFVLENBQUM7QUFBQSxFQUM3QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMscUJBQStCO0FBQzVDLFVBQU0sa0JBQWtCLGlCQUFpQixtQkFBbUI7QUFDNUQsV0FBTyxLQUFLLE1BQU0sS0FBSyxVQUFVLGVBQWUsQ0FBQztBQUFBLEVBQ2xEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXQSxhQUFvQixxQkFBcUIsZ0JBQXdCLG9CQUE4QixDQUFDLEdBQUcsYUFBc0IsT0FBdUI7QUFDL0ksVUFBTSxtQkFBbUIsQ0FBQztBQUMxQixVQUFNLGFBQXVCLEtBQUssY0FBYyxjQUFjO0FBRTlELGFBQVMsSUFBSSxHQUFHLElBQUksWUFBWSxRQUFRLEtBQUs7QUFDNUMsWUFBTUEsVUFBaUIsV0FBVyxDQUFDO0FBQ25DLFVBQUk7QUFDSCxZQUFJO0FBQ0osWUFBSTtBQUdILDRCQUFrQixpQkFBaUJBLE9BQU07QUFBQSxRQUMxQyxTQUFTLEdBQUc7QUFFWCw0QkFBa0IsTUFBTSxPQUFPLGVBQWVBLE9BQU07QUFBQSxRQUNyRDtBQUVBLFlBQUksQ0FBQyxtQkFBbUIsT0FBTyxLQUFLLGVBQWUsRUFBRSxXQUFXLEdBQUc7QUFDbEUsZ0JBQU0sZUFBZSxjQUFjQSxPQUFNLDBCQUEwQixjQUFjO0FBQ2pGLGVBQUssU0FBUyxZQUFZLFlBQVk7QUFDdEM7QUFBQSxRQUNEO0FBRUEsWUFBSSx5QkFBeUI7QUFDN0IsMEJBQWtCLFFBQVEsT0FBSztBQUM5QixxQ0FBMkIsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNO0FBQUEsUUFDMUQsQ0FBQztBQUVELFlBQUksQ0FBQyx3QkFBd0I7QUFDNUIsZ0JBQU0sZUFBZSxjQUFjQSxPQUFNLDBCQUEwQixjQUFjO0FBQUEsR0FBK0Qsa0JBQWtCLEtBQUssUUFBUyxDQUFDO0FBQUE7QUFDakwsZUFBSyxTQUFTLFlBQVksWUFBWTtBQUN0QztBQUFBLFFBQ0Q7QUFFQSx5QkFBaUIsS0FBSyxlQUFlO0FBQUEsTUFDdEMsU0FBUyxHQUFHO0FBQ1gsY0FBTSxlQUFlLDZDQUE2Q0EsT0FBTSwwQkFBMEIsY0FBYztBQUNoSCxhQUFLLFNBQVMsWUFBWSxjQUFjLENBQUM7QUFBQSxNQUMxQztBQUFBLElBQ0Q7QUFFQSxXQUFPO0FBQUEsRUFDUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWUsU0FBUyxlQUF3QixXQUF3QjtBQUN2RSxZQUFRLE1BQU0sU0FBUztBQUN2QixRQUFJLFlBQVk7QUFDZixZQUFNLElBQUksTUFBTSxVQUFVLENBQUMsQ0FBQztBQUFBLElBQzdCO0FBQUEsRUFDRDtBQUFBO0FBQUEsRUFHQSxhQUFvQixLQUFLLGdCQUF3QixvQkFBOEIsQ0FBQyxHQUFHLGFBQXNCLE9BQXVCO0FBQy9ILFdBQU8sV0FBVyxxQkFBcUIsZ0JBQWdCLG1CQUFtQixVQUFVO0FBQUEsRUFDckY7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogWyJtb2R1bGUiXQp9Cg==
@@ -36,4 +36,4 @@ __reExport(extensions_exports, require("./extensions"), module.exports);
36
36
  var import_extensions = require("./extensions");
37
37
  var decorators = __toESM(require("./decorators"));
38
38
  __reExport(extensions_exports, require("./decorators"), module.exports);
39
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gXCIuL2V4dGVuc2lvbnNcIjtcbmV4cG9ydCB7IEV4dGVuc2lvbnMgYXMgZXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbnNcIjtcbmV4cG9ydCAqIGFzIGRlY29yYXRvcnMgZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiOyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwrQkFBYyx5QkFBZDtBQUNBLHdCQUF5QztBQUN6QyxpQkFBNEI7QUFDNUIsK0JBQWMseUJBSGQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
39
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4dGVuc2lvbnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBleHRlbnNpb25zL2luZGV4XG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvZXh0ZW5zaW9uc1xuICogQG92ZXJ2aWV3XG4gKiBcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyBmb3IgbWFuYWdpbmcgZXh0ZW5zaW9ucyB3aXRoaW4gdGhlIEFlcm9raXQgU0RLLiBJdCBpbmNsdWRlcyBjbGFzc2VzIGFuZCBtZXRob2RzIGZvciBkZWZpbmluZywgcmVnaXN0ZXJpbmcsIGFuZCBtYW5hZ2luZyBleHRlbnNpb25zIHRoYXQgY2FuIGVuaGFuY2UgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgU0RLLlxuICogXG4gKiBUaGUgbWFpbiBjb21wb25lbnRzIG9mIHRoaXMgbW9kdWxlIGFyZTpcbiAqIC0gRXh0ZW5zaW9uczogUmVwcmVzZW50cyBhIHJlZ2lzdHJ5IGZvciBtYW5hZ2luZyBleHRlbnNpb25zIGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIHJlZ2lzdGVyIGFuZCByZXRyaWV2ZSBleHRlbnNpb25zLlxuICogLSBEZWNvcmF0b3JzOiBQcm92aWRlcyBkZWNvcmF0b3JzIGZvciBkZWZpbmluZyBleHRlbnNpb25zIGFuZCB0aGVpciBwcm9wZXJ0aWVzIGluIGEgZGVjbGFyYXRpdmUgbWFubmVyLlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2V4dGVuc2lvbnNcIjtcbmV4cG9ydCB7IEV4dGVuc2lvbnMgYXMgZXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbnNcIjtcbmV4cG9ydCAqIGFzIGRlY29yYXRvcnMgZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiOyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSwrQkFBYyx5QkFaZDtBQWFBLHdCQUF5QztBQUN6QyxpQkFBNEI7QUFDNUIsK0JBQWMseUJBZmQ7IiwKICAibmFtZXMiOiBbXQp9Cg==