@decaf-ts/for-fabric 0.1.24 → 0.1.26

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 (291) hide show
  1. package/dist/for-fabric.cjs +1726 -2
  2. package/dist/for-fabric.js +1831 -2
  3. package/lib/bin/build-contract.cjs +2 -1
  4. package/lib/bin/build-contracts.cjs +2 -1
  5. package/lib/bin/build-contracts2.cjs +2 -1
  6. package/lib/bin/compile-indexes.cjs +2 -1
  7. package/lib/cli-module.cjs +1 -1
  8. package/lib/client/FabricClientAdapter.cjs +1 -1
  9. package/lib/client/FabricClientDispatch.cjs +1 -1
  10. package/lib/client/FabricClientPaginator.cjs +1 -1
  11. package/lib/client/FabricClientRepository.cjs +1 -1
  12. package/lib/client/FabricClientStatement.cjs +1 -1
  13. package/lib/client/erc20/FabricERC20ClientRepository.cjs +1 -1
  14. package/lib/client/erc20/index.cjs +1 -1
  15. package/lib/client/fabric-fs.cjs +1 -1
  16. package/lib/client/fabric-hsm.cjs +1 -1
  17. package/lib/client/index.cjs +1 -1
  18. package/lib/client/indexes/generation.cjs +1 -1
  19. package/lib/client/indexes/index.cjs +1 -1
  20. package/lib/client/logging.cjs +1 -1
  21. package/lib/client/services/FabricEnrollmentService.cjs +1 -2
  22. package/lib/client/services/constants.cjs +1 -1
  23. package/lib/client/services/index.cjs +1 -1
  24. package/lib/contract/Address.cjs +1 -1
  25. package/lib/contract/AddressContract.cjs +1 -1
  26. package/lib/contract/Product.cjs +1 -1
  27. package/lib/contract/ProductContract.cjs +1 -1
  28. package/lib/contract/User.cjs +1 -1
  29. package/lib/contract/UserContract.cjs +1 -1
  30. package/lib/contract/index.cjs +1 -1
  31. package/lib/contracts/ContractAdapter.cjs +1 -1
  32. package/lib/contracts/ContractContext.cjs +1 -1
  33. package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
  34. package/lib/contracts/FabricConstruction.cjs +1 -1
  35. package/lib/contracts/FabricContractRepository.cjs +1 -1
  36. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  37. package/lib/contracts/FabricContractStatement.cjs +1 -1
  38. package/lib/contracts/PrivateSequence.cjs +1 -1
  39. package/lib/contracts/crud/crud-contract.cjs +1 -1
  40. package/lib/contracts/crud/index.cjs +1 -1
  41. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  42. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  43. package/lib/contracts/erc20/index.cjs +1 -1
  44. package/lib/contracts/erc20/models.cjs +1 -1
  45. package/lib/contracts/index.cjs +1 -1
  46. package/lib/contracts/logging.cjs +1 -1
  47. package/lib/contracts/private-data.cjs +1 -1
  48. package/lib/contracts/types.cjs +1 -1
  49. package/lib/esm/bin/build-contract.js +1 -1
  50. package/lib/esm/bin/build-contracts.js +1 -1
  51. package/lib/esm/bin/build-contracts2.js +1 -1
  52. package/lib/esm/bin/compile-indexes.js +1 -1
  53. package/lib/esm/cli-module.js +1 -1
  54. package/lib/esm/client/FabricClientAdapter.js +1 -1
  55. package/lib/esm/client/FabricClientDispatch.js +1 -1
  56. package/lib/esm/client/FabricClientPaginator.js +1 -1
  57. package/lib/esm/client/FabricClientRepository.js +1 -1
  58. package/lib/esm/client/FabricClientStatement.js +1 -1
  59. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  60. package/lib/esm/client/erc20/index.js +1 -1
  61. package/lib/esm/client/fabric-fs.js +1 -1
  62. package/lib/esm/client/fabric-hsm.js +1 -1
  63. package/lib/esm/client/index.js +1 -1
  64. package/lib/esm/client/indexes/generation.js +1 -1
  65. package/lib/esm/client/indexes/index.js +1 -1
  66. package/lib/esm/client/logging.js +1 -1
  67. package/lib/esm/client/services/FabricEnrollmentService.js +1 -2
  68. package/lib/esm/client/services/constants.js +1 -1
  69. package/lib/esm/client/services/index.js +1 -1
  70. package/lib/esm/contract/Address.js +1 -1
  71. package/lib/esm/contract/AddressContract.js +1 -1
  72. package/lib/esm/contract/Product.js +1 -1
  73. package/lib/esm/contract/ProductContract.js +1 -1
  74. package/lib/esm/contract/User.js +1 -1
  75. package/lib/esm/contract/UserContract.js +1 -1
  76. package/lib/esm/contract/index.js +1 -1
  77. package/lib/esm/contracts/ContractAdapter.js +1 -1
  78. package/lib/esm/contracts/ContractContext.js +1 -1
  79. package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
  80. package/lib/esm/contracts/FabricConstruction.js +1 -1
  81. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  82. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  83. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  84. package/lib/esm/contracts/PrivateSequence.js +1 -1
  85. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  86. package/lib/esm/contracts/crud/index.js +1 -1
  87. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  88. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  89. package/lib/esm/contracts/erc20/index.js +1 -1
  90. package/lib/esm/contracts/erc20/models.js +1 -1
  91. package/lib/esm/contracts/index.js +1 -1
  92. package/lib/esm/contracts/logging.js +1 -1
  93. package/lib/esm/contracts/private-data.js +1 -1
  94. package/lib/esm/contracts/types.js +1 -1
  95. package/lib/esm/index.js +1 -1
  96. package/lib/esm/shared/ClientSerializer.js +1 -1
  97. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  98. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  99. package/lib/esm/shared/constants.js +1 -1
  100. package/lib/esm/shared/crypto.js +1 -1
  101. package/lib/esm/shared/decorators.js +1 -1
  102. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  103. package/lib/esm/shared/errors.js +1 -1
  104. package/lib/esm/shared/events.js +1 -1
  105. package/lib/esm/shared/fabric-types.js +1 -1
  106. package/lib/esm/shared/index.js +1 -1
  107. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  108. package/lib/esm/shared/math.js +1 -1
  109. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  110. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  111. package/lib/esm/shared/model/Identity.js +1 -1
  112. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  113. package/lib/esm/shared/model/index.js +1 -1
  114. package/lib/esm/shared/overrides/Model.js +1 -1
  115. package/lib/esm/shared/overrides/index.js +1 -1
  116. package/lib/esm/shared/overrides/overrides.js +1 -1
  117. package/lib/esm/shared/types.js +1 -1
  118. package/lib/esm/shared/utils.js +1 -1
  119. package/lib/esm/version.d.ts +1 -1
  120. package/lib/esm/version.js +2 -2
  121. package/lib/index.cjs +1 -1
  122. package/lib/shared/ClientSerializer.cjs +1 -1
  123. package/lib/shared/DeterministicSerializer.cjs +1 -1
  124. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  125. package/lib/shared/constants.cjs +1 -1
  126. package/lib/shared/crypto.cjs +1 -1
  127. package/lib/shared/decorators.cjs +1 -1
  128. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  129. package/lib/shared/errors.cjs +1 -1
  130. package/lib/shared/events.cjs +1 -1
  131. package/lib/shared/fabric-types.cjs +1 -1
  132. package/lib/shared/index.cjs +1 -1
  133. package/lib/shared/interfaces/Checkable.cjs +1 -1
  134. package/lib/shared/math.cjs +1 -1
  135. package/lib/shared/model/FabricBaseModel.cjs +1 -1
  136. package/lib/shared/model/FabricIdentifiedBaseModel.cjs +1 -1
  137. package/lib/shared/model/Identity.cjs +1 -1
  138. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  139. package/lib/shared/model/index.cjs +1 -1
  140. package/lib/shared/overrides/Model.cjs +1 -1
  141. package/lib/shared/overrides/index.cjs +1 -1
  142. package/lib/shared/overrides/overrides.cjs +1 -1
  143. package/lib/shared/types.cjs +1 -1
  144. package/lib/shared/utils.cjs +1 -1
  145. package/lib/version.cjs +2 -2
  146. package/lib/version.d.ts +1 -1
  147. package/package.json +1 -1
  148. package/dist/for-fabric.cjs.map +0 -1
  149. package/dist/for-fabric.js.map +0 -1
  150. package/lib/bin/build-contract.js.map +0 -1
  151. package/lib/bin/build-contracts.js.map +0 -1
  152. package/lib/bin/build-contracts2.js.map +0 -1
  153. package/lib/bin/compile-indexes.js.map +0 -1
  154. package/lib/cli-module.js.map +0 -1
  155. package/lib/client/FabricClientAdapter.js.map +0 -1
  156. package/lib/client/FabricClientDispatch.js.map +0 -1
  157. package/lib/client/FabricClientPaginator.js.map +0 -1
  158. package/lib/client/FabricClientRepository.js.map +0 -1
  159. package/lib/client/FabricClientStatement.js.map +0 -1
  160. package/lib/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  161. package/lib/client/erc20/index.js.map +0 -1
  162. package/lib/client/fabric-fs.js.map +0 -1
  163. package/lib/client/fabric-hsm.js.map +0 -1
  164. package/lib/client/index.js.map +0 -1
  165. package/lib/client/indexes/generation.js.map +0 -1
  166. package/lib/client/indexes/index.js.map +0 -1
  167. package/lib/client/logging.js.map +0 -1
  168. package/lib/client/services/FabricEnrollmentService.js.map +0 -1
  169. package/lib/client/services/constants.js.map +0 -1
  170. package/lib/client/services/index.js.map +0 -1
  171. package/lib/contract/Address.js.map +0 -1
  172. package/lib/contract/AddressContract.js.map +0 -1
  173. package/lib/contract/Product.js.map +0 -1
  174. package/lib/contract/ProductContract.js.map +0 -1
  175. package/lib/contract/User.js.map +0 -1
  176. package/lib/contract/UserContract.js.map +0 -1
  177. package/lib/contract/index.js.map +0 -1
  178. package/lib/contracts/ContractAdapter.js.map +0 -1
  179. package/lib/contracts/ContractContext.js.map +0 -1
  180. package/lib/contracts/ContractPrivateDataAdapter.js.map +0 -1
  181. package/lib/contracts/FabricConstruction.js.map +0 -1
  182. package/lib/contracts/FabricContractRepository.js.map +0 -1
  183. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  184. package/lib/contracts/FabricContractStatement.js.map +0 -1
  185. package/lib/contracts/PrivateSequence.js.map +0 -1
  186. package/lib/contracts/crud/crud-contract.js.map +0 -1
  187. package/lib/contracts/crud/index.js.map +0 -1
  188. package/lib/contracts/crud/serialized-crud-contract.js.map +0 -1
  189. package/lib/contracts/erc20/erc20contract.js.map +0 -1
  190. package/lib/contracts/erc20/index.js.map +0 -1
  191. package/lib/contracts/erc20/models.js.map +0 -1
  192. package/lib/contracts/index.js.map +0 -1
  193. package/lib/contracts/logging.js.map +0 -1
  194. package/lib/contracts/private-data.js.map +0 -1
  195. package/lib/contracts/types.js.map +0 -1
  196. package/lib/esm/bin/build-contract.js.map +0 -1
  197. package/lib/esm/bin/build-contracts.js.map +0 -1
  198. package/lib/esm/bin/build-contracts2.js.map +0 -1
  199. package/lib/esm/bin/compile-indexes.js.map +0 -1
  200. package/lib/esm/cli-module.js.map +0 -1
  201. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  202. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  203. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  204. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  205. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  206. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  207. package/lib/esm/client/erc20/index.js.map +0 -1
  208. package/lib/esm/client/fabric-fs.js.map +0 -1
  209. package/lib/esm/client/fabric-hsm.js.map +0 -1
  210. package/lib/esm/client/index.js.map +0 -1
  211. package/lib/esm/client/indexes/generation.js.map +0 -1
  212. package/lib/esm/client/indexes/index.js.map +0 -1
  213. package/lib/esm/client/logging.js.map +0 -1
  214. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  215. package/lib/esm/client/services/constants.js.map +0 -1
  216. package/lib/esm/client/services/index.js.map +0 -1
  217. package/lib/esm/contract/Address.js.map +0 -1
  218. package/lib/esm/contract/AddressContract.js.map +0 -1
  219. package/lib/esm/contract/Product.js.map +0 -1
  220. package/lib/esm/contract/ProductContract.js.map +0 -1
  221. package/lib/esm/contract/User.js.map +0 -1
  222. package/lib/esm/contract/UserContract.js.map +0 -1
  223. package/lib/esm/contract/index.js.map +0 -1
  224. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  225. package/lib/esm/contracts/ContractContext.js.map +0 -1
  226. package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +0 -1
  227. package/lib/esm/contracts/FabricConstruction.js.map +0 -1
  228. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  229. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  230. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  231. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  232. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  233. package/lib/esm/contracts/crud/index.js.map +0 -1
  234. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  235. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  236. package/lib/esm/contracts/erc20/index.js.map +0 -1
  237. package/lib/esm/contracts/erc20/models.js.map +0 -1
  238. package/lib/esm/contracts/index.js.map +0 -1
  239. package/lib/esm/contracts/logging.js.map +0 -1
  240. package/lib/esm/contracts/private-data.js.map +0 -1
  241. package/lib/esm/contracts/types.js.map +0 -1
  242. package/lib/esm/index.js.map +0 -1
  243. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  244. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  245. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  246. package/lib/esm/shared/constants.js.map +0 -1
  247. package/lib/esm/shared/crypto.js.map +0 -1
  248. package/lib/esm/shared/decorators.js.map +0 -1
  249. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  250. package/lib/esm/shared/errors.js.map +0 -1
  251. package/lib/esm/shared/events.js.map +0 -1
  252. package/lib/esm/shared/fabric-types.js.map +0 -1
  253. package/lib/esm/shared/index.js.map +0 -1
  254. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  255. package/lib/esm/shared/math.js.map +0 -1
  256. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  257. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  258. package/lib/esm/shared/model/Identity.js.map +0 -1
  259. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  260. package/lib/esm/shared/model/index.js.map +0 -1
  261. package/lib/esm/shared/overrides/Model.js.map +0 -1
  262. package/lib/esm/shared/overrides/index.js.map +0 -1
  263. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  264. package/lib/esm/shared/types.js.map +0 -1
  265. package/lib/esm/shared/utils.js.map +0 -1
  266. package/lib/esm/version.js.map +0 -1
  267. package/lib/index.js.map +0 -1
  268. package/lib/shared/ClientSerializer.js.map +0 -1
  269. package/lib/shared/DeterministicSerializer.js.map +0 -1
  270. package/lib/shared/SimpleDeterministicSerializer.js.map +0 -1
  271. package/lib/shared/constants.js.map +0 -1
  272. package/lib/shared/crypto.js.map +0 -1
  273. package/lib/shared/decorators.js.map +0 -1
  274. package/lib/shared/erc20/erc20-constants.js.map +0 -1
  275. package/lib/shared/errors.js.map +0 -1
  276. package/lib/shared/events.js.map +0 -1
  277. package/lib/shared/fabric-types.js.map +0 -1
  278. package/lib/shared/index.js.map +0 -1
  279. package/lib/shared/interfaces/Checkable.js.map +0 -1
  280. package/lib/shared/math.js.map +0 -1
  281. package/lib/shared/model/FabricBaseModel.js.map +0 -1
  282. package/lib/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  283. package/lib/shared/model/Identity.js.map +0 -1
  284. package/lib/shared/model/IdentityCredentials.js.map +0 -1
  285. package/lib/shared/model/index.js.map +0 -1
  286. package/lib/shared/overrides/Model.js.map +0 -1
  287. package/lib/shared/overrides/index.js.map +0 -1
  288. package/lib/shared/overrides/overrides.js.map +0 -1
  289. package/lib/shared/types.js.map +0 -1
  290. package/lib/shared/utils.js.map +0 -1
  291. package/lib/version.js.map +0 -1
@@ -162,4 +162,4 @@ class HSMSignerFactoryCustom {
162
162
  }
163
163
  }
164
164
  exports.HSMSignerFactoryCustom = HSMSignerFactoryCustom;
165
- //# sourceMappingURL=fabric-hsm.js.map
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLWhzbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvZmFicmljLWhzbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3REFBOEI7QUFDOUIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixtREFBcUQ7QUFDckQsb0RBQTRCO0FBQzVCLDZDQUEwQztBQUUxQyxNQUFhLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsT0FBTyxHQUF5QixJQUFJLENBQUM7SUFDNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFNUIsWUFBWSxPQUFlO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxzQkFBc0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JELHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUM7Z0JBQ0gsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hELENBQUM7WUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO2dCQUNwQixrRUFBa0U7Z0JBQ2xFLElBQUssQ0FBUyxDQUFDLElBQUksS0FBSyxrQkFBTSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7b0JBQ2hFLE1BQU0sQ0FBQyxDQUFDO2dCQUNWLENBQUM7WUFDSCxDQUFDO1lBQ0Qsc0JBQXNCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVk7UUFDbkMsTUFBTSxzQkFBc0IsR0FBRztZQUM3QixpQ0FBaUM7WUFDakMsa0RBQWtEO1lBQ2xELHVDQUF1QztZ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O1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQ3hELFdBQVcsQ0FBQyxTQUFTLENBQ3RCLENBQUM7UUFFRixPQUFPLGdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hFLENBQUM7O0FBbk5ILHdEQW9OQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwa2NzMTEgZnJvbSBcInBrY3MxMWpzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgTWlzc2luZ1BLQ1NTMTFMaWIgfSBmcm9tIFwiLi4vc2hhcmVkL2Vycm9yc1wiO1xuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgeyBwMjU2IH0gZnJvbSBcIkBub2JsZS9jdXJ2ZXMvbmlzdFwiO1xuXG5leHBvcnQgY2xhc3MgSFNNU2lnbmVyRmFjdG9yeUN1c3RvbSB7XG4gIHN0YXRpYyAjcGtjczExOiBwa2NzMTEuUEtDUzExIHwgbnVsbCA9IG51bGw7XG4gIHN0YXRpYyAjaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihsaWJyYXJ5OiBzdHJpbmcpIHtcbiAgICBpZiAoIUhTTVNpZ25lckZhY3RvcnlDdXN0b20uI3BrY3MxMSkge1xuICAgICAgSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExID0gbmV3IHBrY3MxMS5QS0NTMTEoKTtcbiAgICAgIEhTTVNpZ25lckZhY3RvcnlDdXN0b20uI3BrY3MxMS5sb2FkKHRoaXMuZmluZEhTTVBLQ1MxMUxpYihsaWJyYXJ5KSk7XG4gICAgfVxuXG4gICAgaWYgKCFIU01TaWduZXJGYWN0b3J5Q3VzdG9tLiNpbml0aWFsaXplZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExLkNfSW5pdGlhbGl6ZSgpO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAvLyBpZ25vcmUgXCJhbHJlYWR5IGluaXRpYWxpemVkXCIgaWYgdGVzdHMgLyBob3QgcmVsb2FkcyBjYXVzZSByZXVzZVxuICAgICAgICBpZiAoKGUgYXMgYW55KS5jb2RlICE9PSBwa2NzMTEuQ0tSX0NSWVBUT0tJX0FMUkVBRFlfSU5JVElBTElaRUQpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBIU01TaWduZXJGYWN0b3J5Q3VzdG9tLiNpbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSFNNUEtDUzExTGliKGxpYj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tbW9uU29mdEhTTVBhdGhOYW1lcyA9IFtcbiAgICAgIFwiL3Vzci9saWIvc29mdGhzbS9saWJzb2Z0aHNtMi5zb1wiLFxuICAgICAgXCIvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NvZnRoc20vbGlic29mdGhzbTIuc29cIixcbiAgICAgIFwiL3Vzci9sb2NhbC9saWIvc29mdGhzbS9saWJzb2Z0aHNtMi5zb1wiLFxuICAgICAgXCIvdXNyL2xpYi9saWJhY3NwLXBrY3MxMS5zb1wiLFxuICAgICAgXCIvb3B0L2hvbWVicmV3L2xpYi9zb2Z0aHNtL2xpYnNvZnRoc20yLnNvXCIsXG4gICAgXTtcblxuICAgIGlmIChsaWIpIGNvbW1vblNvZnRIU01QYXRoTmFtZXMucHVzaChsaWIpO1xuXG4gICAgZm9yIChjb25zdCBwYXRobmFtZVRvVHJ5IG9mIGNvbW1vblNvZnRIU01QYXRoTmFtZXMpIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGhuYW1lVG9UcnkpKSB7XG4gICAgICAgIHJldHVybiBwYXRobmFtZVRvVHJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBNaXNzaW5nUEtDU1MxMUxpYihcIlVuYWJsZSB0byBmaW5kIFBLQ1MxMSBsaWJyYXJ5XCIpO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBIU01TaWduZXJGYWN0b3J5Q3VzdG9tLiNwa2NzMTEhLkNfRmluYWxpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpemVPcHRpb25zKGhzbVNpZ25lck9wdGlvbnM6IEhTTUNvbmZpZykge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICB1c2VyVHlwZTogcGtjczExLkNLVV9VU0VSLFxuICAgICAgfSxcbiAgICAgIGhzbVNpZ25lck9wdGlvbnNcbiAgICApO1xuICAgIHRoaXMuYXNzZXJ0Tm90RW1wdHkob3B0aW9ucy5sYWJlbCwgXCJsYWJlbFwiKTtcbiAgICB0aGlzLmFzc2VydE5vdEVtcHR5KG9wdGlvbnMucGluLCBcInBpblwiKTtcbiAgICB0aGlzLmFzc2VydE5vdEVtcHR5KG9wdGlvbnMuaWRlbnRpZmllciBhcyB1bmtub3duIGFzIHN0cmluZywgXCJpZGVudGlmaWVyXCIpO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnROb3RFbXB0eShwcm9wZXJ0eTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIXByb3BlcnR5IHx8IHByb3BlcnR5LnRvU3RyaW5nKCkudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IHByb3BlcnR5IG11c3QgYmUgcHJvdmlkZWRgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRTbG90Rm9yTGFiZWwocGtjczExTGFiZWw6IHN0cmluZykge1xuICAgIGNvbnN0IHNsb3RzID0gKFxuICAgICAgSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExIGFzIHBrY3MxMS5QS0NTMTFcbiAgICApLkNfR2V0U2xvdExpc3QodHJ1ZSk7XG4gICAgaWYgKHNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGtjczExIHNsb3RzIGNhbiBiZSBmb3VuZFwiKTtcbiAgICB9XG4gICAgY29uc3Qgc2xvdCA9IHNsb3RzLmZpbmQoKHNsb3RUb0NoZWNrKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbkluZm8gPSAoXG4gICAgICAgIEhTTVNpZ25lckZhY3RvcnlDdXN0b20uI3BrY3MxMSBhcyBwa2NzMTEuUEtDUzExXG4gICAgICApLkNfR2V0VG9rZW5JbmZvKHNsb3RUb0NoZWNrKTtcbiAgICAgIHJldHVybiB0b2tlbkluZm8ubGFiZWwudHJpbSgpID09PSBwa2NzMTFMYWJlbDtcbiAgICB9KTtcbiAgICBpZiAoIXNsb3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGxhYmVsICR7cGtjczExTGFiZWx9IGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgcGtjczExIHNsb3QgbGlzdGBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzbG90O1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dpbihzZXNzaW9uOiBwa2NzMTEuSGFuZGxlLCB1c2VyVHlwZTogbnVtYmVyLCBwaW46IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICAoSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExIGFzIHBrY3MxMS5QS0NTMTEpLkNfTG9naW4oXG4gICAgICAgIHNlc3Npb24sXG4gICAgICAgIHVzZXJUeXBlLFxuICAgICAgICBwaW5cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBjb25zdCBwa2NzMTFlcnIgPSBlcnIgYXMgeyBjb2RlOiBudW1iZXIgfTtcbiAgICAgIGlmIChwa2NzMTFlcnIuY29kZSAhPT0gcGtjczExLkNLUl9VU0VSX0FMUkVBRFlfTE9HR0VEX0lOKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRPYmplY3RJbkhTTShcbiAgICBzZXNzaW9uOiBwa2NzMTEuSGFuZGxlLFxuICAgIGtleXR5cGU6IG51bWJlcixcbiAgICBpZGVudGlmaWVyOiBhbnlcbiAgKSB7XG4gICAgY29uc3QgcGtjczExVGVtcGxhdGUgPSBbXG4gICAgICB7IHR5cGU6IHBrY3MxMS5DS0FfSUQsIHZhbHVlOiBpZGVudGlmaWVyIH0sXG4gICAgICB7IHR5cGU6IHBrY3MxMS5DS0FfQ0xBU1MsIHZhbHVlOiBrZXl0eXBlIH0sXG4gICAgICB7IHR5cGU6IHBrY3MxMS5DS0FfS0VZX1RZUEUsIHZhbHVlOiBwa2NzMTEuQ0tLX0VDIH0sXG4gICAgXTtcblxuICAgIChIU01TaWduZXJGYWN0b3J5Q3VzdG9tLiNwa2NzMTEgYXMgcGtjczExLlBLQ1MxMSkuQ19GaW5kT2JqZWN0c0luaXQoXG4gICAgICBzZXNzaW9uLFxuICAgICAgcGtjczExVGVtcGxhdGVcbiAgICApO1xuICAgIGNvbnN0IGhzbU9iamVjdCA9IChcbiAgICAgIEhTTVNpZ25lckZhY3RvcnlDdXN0b20uI3BrY3MxMSBhcyBwa2NzMTEuUEtDUzExXG4gICAgKS5DX0ZpbmRPYmplY3RzKHNlc3Npb24sIDEpWzBdO1xuICAgIGlmICghaHNtT2JqZWN0KSB7XG4gICAgICAoSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExIGFzIHBrY3MxMS5QS0NTMTEpLkNfRmluZE9iamVjdHNGaW5hbChcbiAgICAgICAgc2Vzc2lvblxuICAgICAgKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBmaW5kIG9iamVjdCBpbiBIU00gd2l0aCBJRCAke2lkZW50aWZpZXIudG9TdHJpbmcoKX1gXG4gICAgICApO1xuICAgIH1cbiAgICAoSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExIGFzIHBrY3MxMS5QS0NTMTEpLkNfRmluZE9iamVjdHNGaW5hbChcbiAgICAgIHNlc3Npb25cbiAgICApO1xuICAgIHJldHVybiBoc21PYmplY3Q7XG4gIH1cblxuICBuZXdTaWduZXIoaHNtU2lnbmVyT3B0aW9uczogSFNNQ29uZmlnKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuc2FuaXRpemVPcHRpb25zKGhzbVNpZ25lck9wdGlvbnMpO1xuICAgIGNvbnN0IHBrY3MgPSBIU01TaWduZXJGYWN0b3J5Q3VzdG9tLiNwa2NzMTEgYXMgcGtjczExLlBLQ1MxMTtcbiAgICBjb25zdCBzbG90ID0gdGhpcy5maW5kU2xvdEZvckxhYmVsKG9wdGlvbnMubGFiZWwpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBwa2NzLkNfT3BlblNlc3Npb24oc2xvdCwgcGtjczExLkNLRl9TRVJJQUxfU0VTU0lPTik7XG4gICAgbGV0IHByaXZhdGVLZXlIYW5kbGU7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9naW4oc2Vzc2lvbiwgb3B0aW9ucy51c2VyVHlwZSwgb3B0aW9ucy5waW4pO1xuICAgICAgcHJpdmF0ZUtleUhhbmRsZSA9IHRoaXMuZmluZE9iamVjdEluSFNNKFxuICAgICAgICBzZXNzaW9uLFxuICAgICAgICBwa2NzMTEuQ0tPX1BSSVZBVEVfS0VZLFxuICAgICAgICBvcHRpb25zLmlkZW50aWZpZXJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAoSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExIGFzIHBrY3MxMS5QS0NTMTEpLkNfQ2xvc2VTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2lnbmVyOiBhc3luYyAoZGlnZXN0OiBhbnkpID0+IHtcbiAgICAgICAgKEhTTVNpZ25lckZhY3RvcnlDdXN0b20uI3BrY3MxMSBhcyBwa2NzMTEuUEtDUzExKS5DX1NpZ25Jbml0KFxuICAgICAgICAgIHNlc3Npb24sXG4gICAgICAgICAgeyBtZWNoYW5pc206IHBrY3MxMS5DS01fRUNEU0EgfSxcbiAgICAgICAgICBwcml2YXRlS2V5SGFuZGxlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbXBhY3RTaWduYXR1cmUgPSBhd2FpdCAoXG4gICAgICAgICAgSFNNU2lnbmVyRmFjdG9yeUN1c3RvbS4jcGtjczExIGFzIHBrY3MxMS5QS0NTMTFcbiAgICAgICAgKS5DX1NpZ25Bc3luYyhcbiAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgIEJ1ZmZlci5mcm9tKGRpZ2VzdCksXG4gICAgICAgICAgLy8gRUMgc2lnbmF0dXJlcyBoYXZlIGxlbmd0aCBvZiAybiBhY2NvcmRpbmcgdG8gdGhlIFBLQ1MxMSBzcGVjOlxuICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9wa2NzMTEvcGtjczExLXNwZWMvdjMuMS9wa2NzMTEtc3BlYy12My4xLmh0bWxcbiAgICAgICAgICBCdWZmZXIuYWxsb2MocDI1Ni5Qb2ludC5Gbi5CWVRFUyAqIDIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBwMjU2LlNpZ25hdHVyZS5mcm9tQnl0ZXMoY29tcGFjdFNpZ25hdHVyZSwgXCJjb21wYWN0XCIpXG4gICAgICAgICAgLm5vcm1hbGl6ZVMoKVxuICAgICAgICAgIC50b0J5dGVzKFwiZGVyXCIpO1xuICAgICAgfSxcbiAgICAgIGNsb3NlOiAoKSA9PiB7XG4gICAgICAgIChIU01TaWduZXJGYWN0b3J5Q3VzdG9tLiNwa2NzMTEgYXMgcGtjczExLlBLQ1MxMSkuQ19DbG9zZVNlc3Npb24oXG4gICAgICAgICAgc2Vzc2lvblxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnREZWZpbmVkPFQ+KHZhbHVlOiBUIHwgdW5kZWZpbmVkKTogVCB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInJlcXVpcmVkIHZhbHVlIHdhcyB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVbmNvbXByZXNzZWRQb2ludE9uQ3VydmUoa2V5OiBjcnlwdG8uS2V5T2JqZWN0KTogQnVmZmVyIHtcbiAgICBjb25zdCBqd2sgPSBrZXkuZXhwb3J0KHsgZm9ybWF0OiBcImp3a1wiIH0pO1xuICAgIGNvbnN0IHggPSBCdWZmZXIuZnJvbSh0aGlzLmFzc2VydERlZmluZWQoandrLngpLCBcImJhc2U2NHVybFwiKTtcbiAgICBjb25zdCB5ID0gQnVmZmVyLmZyb20odGhpcy5hc3NlcnREZWZpbmVkKGp3ay55KSwgXCJiYXNlNjR1cmxcIik7XG4gICAgY29uc3QgcHJlZml4ID0gQnVmZmVyLmZyb20oXCIwNFwiLCBcImhleFwiKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbcHJlZml4LCB4LCB5XSk7XG4gIH1cblxuICBnZXRTS0lGcm9tQ2VydGlmaWNhdGVQYXRoKGNlcnRQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwID0gY2VydFBhdGguZW5kc1dpdGgoXCIucGVtXCIpXG4gICAgICA/IGNlcnRQYXRoXG4gICAgICA6IHBhdGguam9pbihjZXJ0UGF0aCwgXCJjZXJ0LnBlbVwiKTtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGZzLnJlYWRGaWxlU3luYyhwKTtcblxuICAgIHJldHVybiB0aGlzLmdldFNLSUZyb21DZXJ0aWZpY2F0ZShjcmVkZW50aWFscyk7XG4gIH1cblxuICBnZXRTS0lGcm9tQ2VydGlmaWNhdGUoY2VydDogc3RyaW5nIHwgTm9uU2hhcmVkQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBjcnlwdG8uWDUwOUNlcnRpZmljYXRlKGNlcnQpO1xuICAgIGNvbnN0IHVuY29tcHJlc3NlZFBvaW50ID0gdGhpcy5nZXRVbmNvbXByZXNzZWRQb2ludE9uQ3VydmUoXG4gICAgICBjZXJ0aWZpY2F0ZS5wdWJsaWNLZXlcbiAgICApO1xuXG4gICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZSh1bmNvbXByZXNzZWRQb2ludCkuZGlnZXN0KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIU01Db25maWcge1xuICBsYWJlbDogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBCdWZmZXI8QXJyYXlCdWZmZXJMaWtlPjtcbiAgcGluOiBzdHJpbmc7XG59XG4iXX0=
@@ -30,4 +30,4 @@ __exportStar(require("./FabricClientRepository.cjs"), exports);
30
30
  __exportStar(require("./../shared/types.cjs"), exports);
31
31
  __exportStar(require("./services/index.cjs"), exports);
32
32
  __exportStar(require("./erc20/index.cjs"), exports);
33
- //# sourceMappingURL=index.js.map
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDZEQUF1QztBQUN2QyxrREFBNEI7QUFDNUIsNERBQXNDO0FBQ3RDLCtEQUF5QztBQUN6Qyx3REFBZ0M7QUFDaEMsdURBQTJCO0FBQzNCLG9EQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEh5cGVybGVkZ2VyIEZhYnJpYyBDbGllbnQgTW9kdWxlIGZvciBEZWNhZi10c1xuICogQHN1bW1hcnkgVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xpZW50LXNpZGUgdXRpbGl0aWVzIGFuZCBhZGFwdGVycyB0byBpbnRlcmFjdCB3aXRoIEh5cGVybGVkZ2VyIEZhYnJpYyBuZXR3b3JrcyB1c2luZyBEZWNhZi10cy4gSXQgZXhwb3NlcyB0aGUgRmFicmljIGNsaWVudCBhZGFwdGVyLCBldmVudCBkaXNwYXRjaCB1dGlsaXRpZXMsIGFuZCBmaWxlc3lzdGVtIGhlbHBlcnMgZm9yIGxvYWRpbmcgaWRlbnRpdGllcyBhbmQga2V5cy5cbiAqIEBtb2R1bGUgY2xpZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWNcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYSBjbGllbnQgYWRhcHRlciBhbmQgc3VibWl0IGEgdHJhbnNhY3Rpb25cbiAqIC8vIFNlZSBhbHNvOiB7QGxpbmsgbW9kdWxlOmZvci1mYWJyaWN+RmFicmljQ2xpZW50QWRhcHRlcn0gYW5kIHtAbGluayBtb2R1bGU6Zm9yLWZhYnJpY35GYWJyaWNDbGllbnREaXNwYXRjaH1cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9GYWJyaWNDbGllbnREaXNwYXRjaFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZmFicmljLWZzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9GYWJyaWNDbGllbnRBZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9GYWJyaWNDbGllbnRSZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vc2hhcmVkL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zZXJ2aWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJjMjBcIjtcbiJdfQ==
@@ -153,4 +153,4 @@ function writeIndexes(indexes, p = process.cwd()) {
153
153
  fs.writeFileSync(file, JSON.stringify(index, undefined, 2));
154
154
  });
155
155
  }
156
- //# sourceMappingURL=generation.js.map
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvaW5kZXhlcy9nZW5lcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkRBLG9EQXVDQztBQUVELDRDQWdDQztBQUVELG9DQXNCQztBQTdKRCxxREFBNkQ7QUFDN0QsdURBQW9EO0FBQ3BELHlFQUF5RTtBQUN6RSxvREFBcUQ7QUFXckQsU0FBUyxpQkFBaUIsQ0FDeEIsSUFBYyxFQUNkLFNBQTBCLEVBQzFCLFlBQXVCO0lBRXZCLE9BQU87UUFDTCxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLHlCQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPO0tBQ1IsQ0FBQyxJQUFJLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2YsS0FBMEIsRUFDMUIsTUFBZ0IsRUFDaEIsU0FBMEIsRUFDMUIsWUFBdUI7SUFFdkIsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVoRSxJQUFJLENBQUMsR0FBaUQ7UUFDcEQsR0FBRyxNQUFNO1FBQ1QsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7S0FDeEIsQ0FBQztJQUVGLElBQUksU0FBUztRQUNYLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENB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O1FBQ3pELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxzQ0FBc0MsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLENBQ3RFLENBQUM7UUFDRix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRleE1ldGFkYXRhLCBPcmRlckRpcmVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgbm9ybWFsaXplSW1wb3J0IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9pbmRleFwiO1xuXG5leHBvcnQgdHlwZSBJbmRleCA9IHtcbiAgaW5kZXg6IHtcbiAgICBmaWVsZHM6IHN0cmluZ1tdIHwgeyBbazogc3RyaW5nXTogT3JkZXJEaXJlY3Rpb24gfTtcbiAgfTtcbiAgZGRvYz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBcImpzb25cIjtcbn07XG5cbmZ1bmN0aW9uIGdldEluZGV4UmVmZXJlbmNlKFxuICBuYW1lOiBzdHJpbmdbXSxcbiAgZGlyZWN0aW9uPzogT3JkZXJEaXJlY3Rpb24sXG4gIGNvbXBvc2l0aW9ucz86IHN0cmluZ1tdXG4pIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5uYW1lLm1hcCgobikgPT4gKG4gPT09IENvdWNoREJLZXlzLlRBQkxFID8gXCJ0YWJsZVwiIDogbikpLFxuICAgIC4uLihjb21wb3NpdGlvbnMgfHwgW10pLFxuICAgIC4uLihkaXJlY3Rpb24gPyBbZGlyZWN0aW9uXSA6IFtdKSxcbiAgICBcImluZGV4XCIsXG4gIF0uam9pbihNZXRhZGF0YS5zcGxpdHRlcik7XG59XG5cbmZ1bmN0aW9uIGFkZEluZGV4KFxuICBhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZmllbGRzOiBzdHJpbmdbXSxcbiAgZGlyZWN0aW9uPzogT3JkZXJEaXJlY3Rpb24sXG4gIGNvbXBvc2l0aW9ucz86IHN0cmluZ1tdXG4pIHtcbiAgY29uc3QgbmFtZSA9IGdldEluZGV4UmVmZXJlbmNlKGZpZWxkcywgZGlyZWN0aW9uLCBjb21wb3NpdGlvbnMpO1xuXG4gIGxldCBmOiBzdHJpbmdbXSB8IHsgW2s6IHN0cmluZ106IE9yZGVyRGlyZWN0aW9uIH1bXSA9IFtcbiAgICAuLi5maWVsZHMsXG4gICAgLi4uKGNvbXBvc2l0aW9ucyB8fCBbXSksXG4gIF07XG5cbiAgaWYgKGRpcmVjdGlvbilcbiAgICBmID0gZi5yZWR1Y2UoKGFjY3VtOiB7IFtrOiBzdHJpbmddOiBPcmRlckRpcmVjdGlvbiB9W10sIGVsOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICBlbnRyeVtlbF0gPSBkaXJlY3Rpb247XG4gICAgICBhY2N1bS5wdXNoKGVudHJ5KTtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCBbXSk7XG5cbiAgY29uc3QgaW5kZXg6IEluZGV4ID0ge1xuICAgIGluZGV4OiB7XG4gICAgICBmaWVsZHM6IGYsXG4gICAgfSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIGRkb2M6IG5hbWUsXG4gICAgdHlwZTogXCJqc29uXCIsXG4gIH0gYXMgSW5kZXg7XG5cbiAgYWNjdW1bbmFtZV0gPSBpbmRleDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTW9kZWxJbmRleGVzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG06IENvbnN0cnVjdG9yPE0+LFxuICBhY2N1bT86IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEluZGV4W10ge1xuICBjb25zdCB0YWJsZU5hbWUgPSBnZXRJbmRleFJlZmVyZW5jZShbQ291Y2hEQktleXMuVEFCTEVdKTtcbiAgY29uc3QgaW5kZXhlczogUmVjb3JkPHN0cmluZywgSW5kZXg+ID0gYWNjdW0gfHwge307XG4gIGluZGV4ZXNbdGFibGVOYW1lXSA9IHtcbiAgICBpbmRleDoge1xuICAgICAgZmllbGRzOiBbQ291Y2hEQktleXMuVEFCTEVdLFxuICAgIH0sXG4gICAgbmFtZTogdGFibGVOYW1lLFxuICAgIGRkb2M6IHRhYmxlTmFtZSxcbiAgICB0eXBlOiBcImpzb25cIixcbiAgfTtcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBjb25zdCBtb2RlbEluZGV4ZXMgPSBNb2RlbC5pbmRleGVzKG0pO1xuICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMobW9kZWxJbmRleGVzKSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgZGVjXSBvZiBPYmplY3QuZW50cmllcyhtb2RlbEluZGV4ZXNbcHJvcF0pKSB7XG4gICAgICBjb25zdCBkaXJlY3Rpb25zID0gKGRlYyBhcyBJbmRleE1ldGFkYXRhKVxuICAgICAgICAuZGlyZWN0aW9ucyBhcyB1bmtub3duIGFzIE9yZGVyRGlyZWN0aW9uW107XG4gICAgICBjb25zdCBjb21wb3NpdGlvbnMgPSAoZGVjIGFzIEluZGV4TWV0YWRhdGEpLmNvbXBvc2l0aW9ucztcbiAgICAgIGNvbnN0IGZpZWxkcyA9IFtrZXksIENvdWNoREJLZXlzLlRBQkxFXTtcblxuICAgICAgYWRkSW5kZXgocmVzdWx0LCBmaWVsZHMpO1xuICAgICAgaWYgKGNvbXBvc2l0aW9ucyAmJiBjb21wb3NpdGlvbnMubGVuZ3RoKVxuICAgICAgICBhZGRJbmRleChyZXN1bHQsIGZpZWxkcywgdW5kZWZpbmVkLCBjb21wb3NpdGlvbnMpO1xuICAgICAgaWYgKGRpcmVjdGlvbnMgJiYgZGlyZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgZGlyZWN0aW9ucy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgICAgYWRkSW5kZXgocmVzdWx0LCBmaWVsZHMsIGQpO1xuICAgICAgICAgIGlmIChjb21wb3NpdGlvbnMgJiYgY29tcG9zaXRpb25zLmxlbmd0aClcbiAgICAgICAgICAgIGFkZEluZGV4KHJlc3VsdCwgZmllbGRzLCBkLCBjb21wb3NpdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZE1vZGVsRm9sZGVycyhcbiAgLi4uZm9sZGVyczogc3RyaW5nW11cbik6IFByb21pc2U8TW9kZWxDb25zdHJ1Y3Rvcjxhbnk+W10+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIC8vIGNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcblxuICBjb25zdCByZXN1bHQ6IE1vZGVsQ29uc3RydWN0b3I8YW55PltdID0gW107XG5cbiAgZm9yIChjb25zdCBmb2xkZXIgb2YgZm9sZGVycykge1xuICAgIGNvbnN0IGZpbGVzID0gZnNcbiAgICAgIC5yZWFkZGlyU3luYyhmb2xkZXIsIHtcbiAgICAgICAgd2l0aEZpbGVUeXBlczogdHJ1ZSxcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGY6IGFueSkgPT4gZi5pc0ZpbGUoKSk7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBleHBvcnRzID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChmaWxlKSk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGV4cG9ydHMpLmZpbHRlcigoZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG0gPSBuZXcgKGUgYXMgQ29uc3RydWN0b3IpKCk7XG4gICAgICAgICAgcmV0dXJuIG0gaW5zdGFuY2VvZiBNb2RlbDtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pIGFzIE1vZGVsQ29uc3RydWN0b3I8YW55PltdO1xuICAgICAgcmVzdWx0LnB1c2goLi4udmFsdWVzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSW5kZXhlcyhpbmRleGVzOiBJbmRleFtdLCBwOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG5cbiAgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5RXhpc3RlbmNlKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkaXJuYW1lOiBzdHJpbmcgPSBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpIGFzIHN0cmluZztcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhkaXJuYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVuc3VyZURpcmVjdG9yeUV4aXN0ZW5jZShkaXJuYW1lKTtcbiAgICBmcy5ta2RpclN5bmMoZGlybmFtZSk7XG4gIH1cblxuICBpbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZShcbiAgICAgIHBhdGguam9pbihwLCBgLi9NRVRBLUlORi9zdGF0ZWRiL2NvdWNoZGIvaW5kZXhlcy8ke2luZGV4Lm5hbWV9Lmpzb25gKVxuICAgICk7XG4gICAgZW5zdXJlRGlyZWN0b3J5RXhpc3RlbmNlKGZpbGUpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZSwgSlNPTi5zdHJpbmdpZnkoaW5kZXgsIHVuZGVmaW5lZCwgMikpO1xuICB9KTtcbn1cbiJdfQ==
@@ -15,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./generation.cjs"), exports);
18
- //# sourceMappingURL=index.js.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L2luZGV4ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dlbmVyYXRpb25cIjtcbiJdfQ==
@@ -99,4 +99,4 @@ const factory = (object, config) => {
99
99
  };
100
100
  // Set the factory as the default logger factory
101
101
  logging_1.Logging.setFactory(factory);
102
- //# sourceMappingURL=logging.js.map
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FRMkI7QUFHM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsb0JBQVU7SUFNMUMsWUFBWSxPQUFlLEVBQUUsSUFBd0M7UUFDbkUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksb0JBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JHO0lBQ2dCLEdBQUcsQ0FDcEIsS0FBZSxFQUNmLEdBQXVCLEVBQ3ZCLEtBQWE7UUFFYixJQUNFLDBCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUM7WUFDbEQsMEJBQWdCLENBQUMsS0FBSyxDQUFDO1lBRXZCLE9BQU87UUFFVCxJQUFJLE1BQU0sQ0FBQztRQUNYLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLGtCQUFRLENBQUMsSUFBSTtnQkFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxrQkFBUSxDQUFDLE9BQU87Z0JBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsTUFBTTtZQUNSLEtBQUssa0JBQVEsQ0FBQyxLQUFLO2dCQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsS0FBSztnQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxrQkFBUSxDQUFDLEtBQUs7Z0JBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDM0IsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQW5FRCxvQ0FtRUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxHQUFrQixDQUM3QixNQUFlLEVBQ2YsTUFBMkMsRUFDM0MsRUFBRTtJQUNGLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDO0FBRUYsZ0RBQWdEO0FBQ2hELGlCQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTG9nZ2VyRmFjdG9yeSxcbiAgTG9nZ2luZyxcbiAgTG9nZ2VyLFxuICBMb2dMZXZlbCxcbiAgTWluaUxvZ2dlcixcbiAgTnVtZXJpY0xvZ0xldmVscyxcbiAgU3RyaW5nTGlrZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBMb2dnaW5nQ29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExvZ2dlciBpbXBsZW1lbnRhdGlvbiB0YWlsb3JlZCBmb3IgSHlwZXJsZWRnZXIgRmFicmljIGNsaWVudHMuXG4gKiBAc3VtbWFyeSBBZGFwdHMgdGhlIGRlY2FmLXRzIE1pbmlMb2dnZXIgdG8gcm91dGUgbWVzc2FnZXMgdGhyb3VnaCBhIHBlci1jb250ZXh0IEZhYnJpYyBsb2dnZXIsIGhvbm9yaW5nIGNvbmZpZ3VyZWQgbG9nIGxldmVscyBhbmQgZm9ybWF0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGxvZ2dpbmcgY29udGV4dCBuYW1lIHVzZWQgdG8gc2NvcGUgdGhlIGxvZ2dlciBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7UGFydGlhbDxMb2dnaW5nQ29uZmlnPiB8IHVuZGVmaW5lZH0gY29uZiAtIE9wdGlvbmFsIGxvZ2dpbmcgY29uZmlndXJhdGlvbiB0byBvdmVycmlkZSBkZWZhdWx0cyBmb3IgdGhpcyBjb250ZXh0LlxuICogQGNsYXNzIEZhYnJpY0xvZ2dlclxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEluIGEgRmFicmljIGNsaWVudC9zZXJ2aWNlXG4gKiBjb25zdCBsb2dnZXIgPSBuZXcgRmFicmljTG9nZ2VyKCdNeUZhYnJpY1NlcnZpY2UnLCB7IGxldmVsOiAnaW5mbycgfSk7XG4gKiBsb2dnZXIuaW5mbygnUHJvY2Vzc2luZyB0cmFuc2FjdGlvbicpO1xuICogbG9nZ2VyLmRlYnVnKCdUcmFuc2FjdGlvbiBkZXRhaWxzJywgeyB0eElkOiAnMTIzJyB9KTtcbiAqIGxvZ2dlci5lcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBhdXRvbnVtYmVyXG4gKiAgIHBhcnRpY2lwYW50IEMgYXMgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IEZMIGFzIEZhYnJpY0xvZ2dlclxuICogICBwYXJ0aWNpcGFudCBNTCBhcyBNaW5pTG9nZ2VyIChkZWxlZ2F0ZSlcbiAqICAgQy0+PkZMOiBpbmZvKCdQcm9jZXNzaW5nIHRyYW5zYWN0aW9uJylcbiAqICAgRkwtPj5GTDogY3JlYXRlTG9nKGxldmVsLG1zZyxzdGFjaylcbiAqICAgRkwtPj5NTDogaW5mbyhsb2cpXG4gKiAgIEMtPj5GTDogZXJyb3IobmV3IEVycm9yKCd4JykpXG4gKiAgIEZMLT4+Rkw6IGNyZWF0ZUxvZyhsZXZlbCxtc2csc3RhY2spXG4gKiAgIEZMLT4+TUw6IGVycm9yKGxvZylcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0xvZ2dlciBleHRlbmRzIE1pbmlMb2dnZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmRlcmx5aW5nIEZhYnJpYyBsb2dnZXIgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBsb2dnZXI6IExvZ2dlcjtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBzdHJpbmcsIGNvbmY6IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4gfCB1bmRlZmluZWQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBjb25mKTtcbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBNaW5pTG9nZ2VyKGNvbnRleHQsIGNvbmYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGEgbWVzc2FnZSBhdCB0aGUgc3BlY2lmaWVkIGxldmVsLlxuICAgKiBAc3VtbWFyeSBPdmVycmlkZXMgdGhlIGJhc2UgTWluaUxvZ2dlci5sb2cgdG8gZm9yd2FyZCB0byB0aGUgaW50ZXJuYWwgRmFicmljLWF3YXJlIGxvZ2dlciwgZW5mb3JjaW5nIGNvbmZpZ3VyZWQgdGhyZXNob2xkcy5cbiAgICogQHBhcmFtIHtMb2dMZXZlbH0gbGV2ZWwgLSBUaGUgbG9nIGxldmVsIHRvIHVzZSBmb3IgdGhpcyBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge1N0cmluZ0xpa2UgfCBFcnJvcn0gbXNnIC0gVGhlIG1lc3NhZ2Ugb3IgZXJyb3IgdG8gbG9nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0YWNrXSAtIE9wdGlvbmFsIHN0YWNrIHRyYWNlIHN0cmluZyBmb3IgZXJyb3JzLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBhdXRvbnVtYmVyXG4gICAqICAgcGFydGljaXBhbnQgQyBhcyBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBGTCBhcyBGYWJyaWNMb2dnZXJcbiAgICogICBwYXJ0aWNpcGFudCBNTCBhcyBNaW5pTG9nZ2VyIChkZWxlZ2F0ZSlcbiAgICogICBDLT4+Rkw6IGxvZyhsZXZlbCwgbXNnLCBzdGFjaz8pXG4gICAqICAgRkwtPj5GTDogY2hlY2sgY29uZmlndXJlZCBsZXZlbFxuICAgKiAgIGFsdCBiZWxvdyB0aHJlc2hvbGRcbiAgICogICAgIEZMLS0+PkM6IHJldHVyblxuICAgKiAgIGVsc2UgYWJvdmUgdGhyZXNob2xkXG4gICAqICAgICBGTC0+PkZMOiBjcmVhdGVMb2cobGV2ZWwsIG1zZywgc3RhY2spXG4gICAqICAgICBGTC0+Pk1MOiBtZXRob2QuY2FsbChsb2dnZXIsIGxvZylcbiAgICogICAgIE1MLS0+PkZMOiB2b2lkXG4gICAqICAgZW5kXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nKFxuICAgIGxldmVsOiBMb2dMZXZlbCxcbiAgICBtc2c6IFN0cmluZ0xpa2UgfCBFcnJvcixcbiAgICBzdGFjaz86IEVycm9yXG4gICkge1xuICAgIGlmIChcbiAgICAgIE51bWVyaWNMb2dMZXZlbHNbdGhpcy5jb25maWcoXCJsZXZlbFwiKSBhcyBMb2dMZXZlbF0gPFxuICAgICAgTnVtZXJpY0xvZ0xldmVsc1tsZXZlbF1cbiAgICApXG4gICAgICByZXR1cm47XG5cbiAgICBsZXQgbWV0aG9kO1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nTGV2ZWwuaW5mbzpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIuaW5mbztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLnZlcmJvc2U6XG4gICAgICAgIG1ldGhvZCA9IHRoaXMubG9nZ2VyLnZlcmJvc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5kZWJ1ZzpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIuZGVidWc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5lcnJvcjpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIuZXJyb3I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5zaWxseTpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIuc2lsbHk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBsb2cgbGV2ZWxcIik7XG4gICAgfVxuICAgIG1ldGhvZC5jYWxsKHRoaXMubG9nZ2VyLCB0aGlzLmNyZWF0ZUxvZyhsZXZlbCwgbXNnLCBzdGFjaykpO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIEZhYnJpY0xvZ2dlciBpbnN0YW5jZXMuXG4gKiBAc3VtbWFyeSBQcm9kdWNlcyBhIG5ldyBGYWJyaWNMb2dnZXIgYm91bmQgdG8gdGhlIHByb3ZpZGVkIGNvbnRleHQgbmFtZSBhbmQgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3QgLSBUaGUgbG9nZ2luZyBjb250ZXh0IG5hbWUuXG4gKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz4gfCB1bmRlZmluZWR9IGNvbmZpZyAtIE9wdGlvbmFsIGxvZ2dpbmcgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm4ge0ZhYnJpY0xvZ2dlcn0gQSBuZXcgRmFicmljTG9nZ2VyIGluc3RhbmNlLlxuICogQGZ1bmN0aW9uIGZhY3RvcnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuY29uc3QgZmFjdG9yeTogTG9nZ2VyRmFjdG9yeSA9IChcbiAgb2JqZWN0Pzogc3RyaW5nLFxuICBjb25maWc/OiBQYXJ0aWFsPExvZ2dpbmdDb25maWc+IHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgcmV0dXJuIG5ldyBGYWJyaWNMb2dnZXIob2JqZWN0IHx8IFwiTUlTU0lOR1wiLCBjb25maWcgfHwge30pO1xufTtcblxuLy8gU2V0IHRoZSBmYWN0b3J5IGFzIHRoZSBkZWZhdWx0IGxvZ2dlciBmYWN0b3J5XG5Mb2dnaW5nLnNldEZhY3RvcnkoZmFjdG9yeSk7XG4iXX0=
@@ -122,7 +122,6 @@ class FabricEnrollmentService extends logging_1.LoggedClass {
122
122
  // FOR Some Reason the verification fails need to investigate this works for now
123
123
  // eslint-disable-next-line prefer-const
124
124
  let { trustedRoots, verify } = tls;
125
- verify = false;
126
125
  const root = trustedRoots[0];
127
126
  log.debug(`Retrieving CA certificate from ${root}. cwd: ${process.cwd()}`);
128
127
  const certificate = await utils_1.CoreUtils.getFileContent(root);
@@ -361,4 +360,4 @@ class FabricEnrollmentService extends logging_1.LoggedClass {
361
360
  }
362
361
  }
363
362
  exports.FabricEnrollmentService = FabricEnrollmentService;
364
- //# sourceMappingURL=FabricEnrollmentService.js.map
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRW5yb2xsbWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdFQUFnRDtBQVdoRCxnRUFBdUQ7QUFDdkQseUNBQW9EO0FBQ3BELDJEQUlpQztBQUNqQyxvREFBK0M7QUFFL0Msc0RBQWtEO0FBT2xELHNEQUF3RDtBQUN4RCwrQ0FBeUQ7QUFFekQ7Ozs7OztHQU1HO0FBQ0gsSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYix1Q0FBbUIsQ0FBQTtJQUNuQixxQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBYSxDQUFBO0lBQ2IsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTlcsZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFNM0I7QUFpQkQ7Ozs7OztHQU1HO0FBQ0gsSUFBWSxzQkFRWDtBQVJELFdBQVksc0JBQXNCO0lBQ2hDLGlFQUF1QyxDQUFBO0lBQ3ZDLGlGQUF1RCxDQUFBO0lBQ3ZELDJFQUFpRCxDQUFBO0lBQ2pELGdFQUFzQyxDQUFBO0lBQ3RDLGtEQUF3QixDQUFBO0lBQ3hCLGdFQUFzQyxDQUFBO0lBQ3RDLGdEQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFSVyxzQkFBc0Isc0NBQXRCLHNCQUFzQixRQVFqQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHFCQUFXO0lBYXRELFlBQW9CLFFBQWtCO1FBQ3BDLGlCQUFTLENBQUMsY0FBYyxDQUN0QixRQUFRLENBQUMsR0FBRztZQUNWLENBQUMsQ0FBQztnQkFDRSxRQUFRLEVBQUUsS0FBSztnQkFDZixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPO2dCQUN6QixJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcs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LENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFvQjtRQUMvQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVE7WUFDWCxNQUFNLElBQUksNkJBQWEsQ0FDckIscUNBQXFDLFlBQVksRUFBRSxDQUNwRCxDQUFDO1FBQ0osSUFBSSxNQUF3QixDQUFDO1FBQzdCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQ3RCLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEVBQ3hELElBQUksQ0FDTCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLHVDQUF1QyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQzVELENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2pCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQix1Q0FBdUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25GLENBQUM7UUFDSixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUEzWEQsMERBMlhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZhYnJpY0NBU2VydmljZXMgZnJvbSBcImZhYnJpYy1jYS1jbGllbnRcIjtcbmltcG9ydCB7XG4gIEFmZmlsaWF0aW9uU2VydmljZSxcbiAgSWRlbnRpdHlTZXJ2aWNlLFxuICBJRW5yb2xsUmVzcG9uc2UsXG4gIElSZWdpc3RlclJlcXVlc3QsXG4gIElTZXJ2aWNlUmVzcG9uc2UsXG4gIFRMU09wdGlvbnMsXG59IGZyb20gXCJmYWJyaWMtY2EtY2xpZW50XCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcImZhYnJpYy1jb21tb25cIjtcbmltcG9ydCB7IENBQ29uZmlnLCBDcmVkZW50aWFscyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdHlwZXNcIjtcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9tb2RlbC9JZGVudGl0eVwiO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQge1xuICBDb25mbGljdEVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvcmVVdGlscyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdXRpbHNcIjtcbmltcG9ydCB7IENBX1JPTEUgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IENyeXB0b1V0aWxzIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9jcnlwdG9cIjtcbmltcG9ydCB7XG4gIENlcnRpZmljYXRlUmVzcG9uc2UsXG4gIEZhYnJpY0lkZW50aXR5LFxuICBHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0LFxuICBJZGVudGl0eVJlc3BvbnNlLFxufSBmcm9tIFwiLi4vLi4vc2hhcmVkL2ZhYnJpYy10eXBlc1wiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2Vycm9yc1wiO1xuaW1wb3J0IHsgTG9nZ2VkQ2xhc3MsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSHlwZXJsZWRnZXIgRmFicmljIENBIGlkZW50aXR5IHR5cGVzLlxuICogQHN1bW1hcnkgRW51bWVyYXRlcyB0aGUgc3VwcG9ydGVkIGlkZW50aXR5IHR5cGVzIHJlY29nbml6ZWQgYnkgRmFicmljIENBIGZvciByZWdpc3RyYXRpb24gYW5kIGlkZW50aXR5IG1hbmFnZW1lbnQuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBlbnVtIEhGQ0FJZGVudGl0eVR5cGUge1xuICBQRUVSID0gXCJwZWVyXCIsXG4gIE9SREVSRVIgPSBcIm9yZGVyZXJcIixcbiAgQ0xJRU5UID0gXCJjbGllbnRcIixcbiAgVVNFUiA9IFwidXNlclwiLFxuICBBRE1JTiA9IFwiYWRtaW5cIixcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIEtleS92YWx1ZSBhdHRyaWJ1dGUgdXNlZCBkdXJpbmcgQ0EgcmVnaXN0cmF0aW9uLlxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhbiBhdHRyaWJ1dGUgZW50cnkgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gYSBGYWJyaWMgQ0EgaWRlbnRpdHkgZHVyaW5nIHJlZ2lzdHJhdGlvbiwgb3B0aW9uYWxseSBtYXJraW5nIGl0IGZvciBpbmNsdXNpb24gaW4gZWNlcnQuXG4gKiBAaW50ZXJmYWNlIElLZXlWYWx1ZUF0dHJpYnV0ZVxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBBdHRyaWJ1dGUgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtlY2VydF0gLSBXaGV0aGVyIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBlbnJvbGxtZW50IGNlcnRpZmljYXRlIChFQ2VydCkuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUtleVZhbHVlQXR0cmlidXRlIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBlY2VydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIEZhYnJpYyBDQSBpZGVudGl0eSBhdHRyaWJ1dGUga2V5cy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgd2VsbC1rbm93biBGYWJyaWMgQ0EgYXR0cmlidXRlIGtleXMgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gaWRlbnRpdGllcyBmb3IgZGVsZWdhdGlvbnMgYW5kIHBlcm1pc3Npb25zLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgZW51bSBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzIHtcbiAgSEZSRUdJU1RSQVJST0xFUyA9IFwiaGYuUmVnaXN0cmFyLlJvbGVzXCIsXG4gIEhGUkVHSVNUUkFSREVMRUdBVEVST0xFUyA9IFwiaGYuUmVnaXN0cmFyLkRlbGVnYXRlUm9sZXNcIixcbiAgSEZSRUdJU1RSQVJBVFRSSUJVVEVTID0gXCJoZi5SZWdpc3RyYXIuQXR0cmlidXRlc1wiLFxuICBIRklOVEVSTUVESUFURUNBID0gXCJoZi5JbnRlcm1lZGlhdGVDQVwiLFxuICBIRlJFVk9LRVIgPSBcImhmLlJldm9rZXJcIixcbiAgSEZBRkZJTElBVElPTk1HUiA9IFwiaGYuQWZmaWxpYXRpb25NZ3JcIixcbiAgSEZHRU5DUkwgPSBcImhmLkdlbkNSTFwiLFxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXJ2aWNlIHdyYXBwZXIgZm9yIGludGVyYWN0aW5nIHdpdGggYSBGYWJyaWMgQ0EuXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBoaWdoLWxldmVsIG9wZXJhdGlvbnMgZm9yIG1hbmFnaW5nIGlkZW50aXRpZXMgYWdhaW5zdCBhIEh5cGVybGVkZ2VyIEZhYnJpYyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHksIGluY2x1ZGluZyByZWdpc3RyYXRpb24sIGVucm9sbG1lbnQsIHJldm9jYXRpb24sIGFuZCBhZG1pbmlzdHJhdGl2ZSBxdWVyaWVzLiBFbmNhcHN1bGF0ZXMgbG93ZXItbGV2ZWwgRmFicmljIENBIGNsaWVudCBjYWxscyB3aXRoIGNvbnNpc3RlbnQgbG9nZ2luZyBhbmQgZXJyb3IgbWFwcGluZy5cbiAqIEBwYXJhbSB7Q0FDb25maWd9IGNhQ29uZmlnIC0gQ29ubmVjdGlvbiBhbmQgVExTIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YXJnZXQgQ0EuXG4gKiBAY2xhc3MgRmFicmljRW5yb2xsbWVudFNlcnZpY2VcbiAqIEBleGFtcGxlXG4gKiAvLyBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IHVzZXJcbiAqIGNvbnN0IHN2YyA9IG5ldyBGYWJyaWNFbnJvbGxtZW50U2VydmljZSh7XG4gKiAgIHVybDogJ2h0dHBzOi8vbG9jYWxob3N0OjcwNTQnLFxuICogICBjYU5hbWU6ICdPcmcxQ0EnLFxuICogICB0bHM6IHsgdHJ1c3RlZFJvb3RzOiBbJy9wYXRoL3RvL2NhLnBlbSddLCB2ZXJpZnk6IGZhbHNlIH0sXG4gKiAgIGNhQ2VydDogJy9wYXRoL3RvL2FkbWluL2NlcnREaXInLFxuICogICBjYUtleTogJy9wYXRoL3RvL2FkbWluL2tleURpcidcbiAqIH0pO1xuICogYXdhaXQgc3ZjLnJlZ2lzdGVyKHsgdXNlck5hbWU6ICdhbGljZScsIHBhc3N3b3JkOiAnczNjcjN0JyB9LCBmYWxzZSwgJ29yZzEuZGVwYXJ0bWVudDEnLCBDQV9ST0xFLlVTRVIpO1xuICogY29uc3QgaWQgPSBhd2FpdCBzdmMuZW5yb2xsKCdhbGljZScsICdzM2NyM3QnKTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgYXV0b251bWJlclxuICogICBwYXJ0aWNpcGFudCBBcHBcbiAqICAgcGFydGljaXBhbnQgU3ZjIGFzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlXG4gKiAgIHBhcnRpY2lwYW50IENBIGFzIEZhYnJpYyBDQVxuICogICBBcHAtPj5TdmM6IHJlZ2lzdGVyKGNyZWRlbnRpYWxzLCAuLi4pXG4gKiAgIFN2Yy0+PkNBOiByZWdpc3RlcihyZXF1ZXN0LCBhZG1pblVzZXIpXG4gKiAgIENBLS0+PlN2YzogZW5yb2xsbWVudFNlY3JldFxuICogICBTdmMtLT4+QXBwOiBzZWNyZXRcbiAqICAgQXBwLT4+U3ZjOiBlbnJvbGwoZW5yb2xsbWVudElkLCBzZWNyZXQpXG4gKiAgIFN2Yy0+PkNBOiBlbnJvbGwoe2Vucm9sbG1lbnRJRCwgc2VjcmV0fSlcbiAqICAgQ0EtLT4+U3ZjOiBjZXJ0aWZpY2F0ZXNcbiAqICAgU3ZjLS0+PkFwcDogSWRlbnRpdHlcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlIGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICBwcml2YXRlIGNhPzogRmFicmljQ0FTZXJ2aWNlcztcblxuICBwcml2YXRlIGNlcnRpZmljYXRlU2VydmljZT86IGFueTtcblxuICBwcml2YXRlIGFmZmlsaWF0aW9uU2VydmljZT86IEFmZmlsaWF0aW9uU2VydmljZTtcblxuICBwcml2YXRlIGlkZW50aXR5U2VydmljZT86IElkZW50aXR5U2VydmljZTtcblxuICBwcml2YXRlIGNsaWVudD86IGFueTtcblxuICBwcml2YXRlIHVzZXI/OiBVc2VyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FDb25maWc6IENBQ29uZmlnKSB7XG4gICAgQ29yZVV0aWxzLmdldENyeXB0b1N1aXRlKFxuICAgICAgY2FDb25maWcuaHNtXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc29mdHdhcmU6IGZhbHNlLFxuICAgICAgICAgICAgbGliOiBjYUNvbmZpZy5oc20ubGlicmFyeSxcbiAgICAgICAgICAgIHNsb3Q6IGNhQ29uZmlnLmhzbS5zbG90LFxuICAgICAgICAgICAgbGFiZWw6IGNhQ29uZmlnLmhzbS50b2tlbkxhYmVsLFxuICAgICAgICAgICAgcGluOiBTdHJpbmcoY2FDb25maWcuaHNtLnBpbiksXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBVc2VyKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIGlmICh0aGlzLnVzZXIpIHJldHVybiB0aGlzLnVzZXI7XG4gICAgY29uc3QgeyBjYU5hbWUsIGNhQ2VydCwgY2FLZXksIHVybCwgaHNtIH0gPSB0aGlzLmNhQ29uZmlnO1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLlVzZXIpO1xuICAgIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgQ0EgdXNlciBmb3IgJHtjYU5hbWV9IGF0ICR7dXJsfWApO1xuICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7Y2FDZXJ0fWApO1xuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgQ29yZVV0aWxzLmdldEZpcnN0RGlyRmlsZU5hbWVDb250ZW50KGNhQ2VydCk7XG4gICAgbGV0IGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghaHNtKSB7XG4gICAgICBpZiAoIWNhS2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIGNhS2V5IGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfS4gUHJvdmlkZSBhIGtleSBkaXJlY3Rvcnkgb3IgY29uZmlndXJlIEhTTSBzdXBwb3J0LmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBrZXkgZnJvbSAke2NhS2V5fWApO1xuICAgICAga2V5ID0gYXdhaXQgQ29yZVV0aWxzLmdldEZpcnN0RGlyRmlsZU5hbWVDb250ZW50KGNhS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKFxuICAgICAgICBgVXNpbmcgSFNNIGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfSB3aXRoIGxpYnJhcnkgJHtoc20ubGlicmFyeX1gXG4gICAgICApO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYExvYWRpbmcgQWRtaW4gdXNlciBmb3IgY2EgJHtjYU5hbWV9YCk7XG4gICAgdGhpcy51c2VyID0gYXdhaXQgQ29yZVV0aWxzLmdldENBVXNlcihcImFkbWluXCIsIGtleSwgY2VydGlmaWNhdGUsIGNhTmFtZSwge1xuICAgICAgaHNtLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgQ0EoKTogUHJvbWlzZTxGYWJyaWNDQVNlcnZpY2VzPiB7XG4gICAgaWYgKHRoaXMuY2EpIHJldHVybiB0aGlzLmNhO1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLkNBKTtcbiAgICBjb25zdCB7IHVybCwgdGxzLCBjYU5hbWUgfSA9IHRoaXMuY2FDb25maWc7XG5cbiAgICAvLyBGT1IgU29tZSBSZWFzb24gdGhlIHZlcmlmaWNhdGlvbiBmYWlscyBuZWVkIHRvIGludmVzdGlnYXRlIHRoaXMgd29ya3MgZm9yIG5vd1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyB0cnVzdGVkUm9vdHMsIHZlcmlmeSB9ID0gdGxzIGFzIFRMU09wdGlvbnM7XG5cbiAgICBjb25zdCByb290ID0gKHRydXN0ZWRSb290cyBhcyBzdHJpbmdbXSlbMF0gYXMgc3RyaW5nO1xuICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7cm9vdH0uIGN3ZDogJHtwcm9jZXNzLmN3ZCgpfWApO1xuXG4gICAgY29uc3QgY2VydGlmaWNhdGUgPSBhd2FpdCBDb3JlVXRpbHMuZ2V0RmlsZUNvbnRlbnQocm9vdCk7XG4gICAgbG9nLmRlYnVnKGBDcmVhdGluZyBDQSBDbGllbnQgZm9yIENBICR7Y2FOYW1lfSB1bmRlciAke3VybH1gKTtcbiAgICB0aGlzLmNhID0gbmV3IEZhYnJpY0NBU2VydmljZXMoXG4gICAgICB1cmwsXG4gICAgICB7XG4gICAgICAgIHRydXN0ZWRSb290czogQnVmZmVyLmZyb20oY2VydGlmaWNhdGUpLFxuICAgICAgICB2ZXJpZnksXG4gICAgICB9IGFzIFRMU09wdGlvbnMsXG4gICAgICBjYU5hbWVcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmNhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIENsaWVudCgpOiBQcm9taXNlPHsgbmV3Q2VydGlmaWNhdGVTZXJ2aWNlOiBhbnkgfT4ge1xuICAgIGlmICh0aGlzLmNsaWVudCkgcmV0dXJuIHRoaXMuY2xpZW50O1xuICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgIHRoaXMuY2xpZW50ID0gKGNhIGFzIGFueSlbXCJfRmFicmljQ0FTZXJ2aWNlc1wiXTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgQ2VydGlmaWNhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmNlcnRpZmljYXRlU2VydmljZSlcbiAgICAgIHRoaXMuY2VydGlmaWNhdGVTZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ2xpZW50KCkpLm5ld0NlcnRpZmljYXRlU2VydmljZSgpO1xuICAgIHJldHVybiB0aGlzLmNlcnRpZmljYXRlU2VydmljZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBBZmZpbGlhdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLmFmZmlsaWF0aW9uU2VydmljZSlcbiAgICAgIHRoaXMuYWZmaWxpYXRpb25TZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ0EoKSkubmV3QWZmaWxpYXRpb25TZXJ2aWNlKCk7XG4gICAgcmV0dXJuIHRoaXMuYWZmaWxpYXRpb25TZXJ2aWNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIElkZW50aXRpZXMoKSB7XG4gICAgaWYgKCF0aGlzLmlkZW50aXR5U2VydmljZSlcbiAgICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ0EoKSkubmV3SWRlbnRpdHlTZXJ2aWNlKCk7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgQ0EuXG4gICAqIEBzdW1tYXJ5IENhbGxzIHRoZSBDQSBjZXJ0aWZpY2F0ZSBzZXJ2aWNlIHRvIGxpc3QgY2VydGlmaWNhdGVzLCBvcHRpb25hbGx5IG1hcHBpbmcgdG8gUEVNIHN0cmluZ3Mgb25seS5cbiAgICogQHBhcmFtIHtHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0fSBbcmVxdWVzdF0gLSBPcHRpb25hbCBmaWx0ZXIgcmVxdWVzdCBmb3IgY2VydGlmaWNhdGUgbG9va3VwLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtkb01hcD10cnVlXSAtIFdoZW4gdHJ1ZSwgcmV0dXJucyBhcnJheSBvZiBQRU0gc3RyaW5nczsgb3RoZXJ3aXNlIHJldHVybnMgZnVsbCByZXNwb25zZSBvYmplY3QuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nW10gfCBDZXJ0aWZpY2F0ZVJlc3BvbnNlPn0gQXJyYXkgb2YgUEVNIHN0cmluZ3Mgb3IgdGhlIGZ1bGwgY2VydGlmaWNhdGUgcmVzcG9uc2UuXG4gICAqL1xuICBhc3luYyBnZXRDZXJ0aWZpY2F0ZXMoXG4gICAgcmVxdWVzdD86IEdldENlcnRpZmljYXRlc1JlcXVlc3QsXG4gICAgZG9NYXAgPSB0cnVlXG4gICk6IFByb21pc2U8c3RyaW5nW10gfCBDZXJ0aWZpY2F0ZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2VydGlmaWNhdGVTZXJ2aWNlID0gYXdhaXQgdGhpcy5DZXJ0aWZpY2F0ZSgpO1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLlVzZXIoKTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5nZXRDZXJ0aWZpY2F0ZXMpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBSZXRyaWV2aW5nIGNlcnRpZmljYXRlcyR7cmVxdWVzdCA/IGAgZm9yICR7cmVxdWVzdC5pZH1gIDogXCJcIn0gZm9yIENBICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9YFxuICAgICk7XG4gICAgY29uc3QgcmVzcG9uc2U6IENlcnRpZmljYXRlUmVzcG9uc2UgPSAoXG4gICAgICBhd2FpdCBjZXJ0aWZpY2F0ZVNlcnZpY2UuZ2V0Q2VydGlmaWNhdGVzKHJlcXVlc3QgfHwge30sIHVzZXIpXG4gICAgKS5yZXN1bHQ7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYEZvdW5kICR7cmVzcG9uc2UuY2VydHMubGVuZ3RofSBjZXJ0aWZpY2F0ZXM6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWBcbiAgICApO1xuICAgIHJldHVybiBkb01hcCA/IHJlc3BvbnNlLmNlcnRzLm1hcCgoYykgPT4gYy5QRU0pIDogcmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgaWRlbnRpdGllcyByZWdpc3RlcmVkIGluIHRoZSBDQS5cbiAgICogQHN1bW1hcnkgUXVlcmllcyB0aGUgQ0EgaWRlbnRpdHkgc2VydmljZSB0byBmZXRjaCBhbGwgaWRlbnRpdGllcyBhbmQgcmV0dXJucyB0aGUgbGlzdCBhcyBGYWJyaWNJZGVudGl0eSBvYmplY3RzLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEZhYnJpY0lkZW50aXR5W10+fSBUaGUgbGlzdCBvZiBpZGVudGl0aWVzIHJlZ2lzdGVyZWQgaW4gdGhlIENBLlxuICAgKi9cbiAgYXN5bmMgZ2V0SWRlbnRpdGllcygpOiBQcm9taXNlPEZhYnJpY0lkZW50aXR5W10+IHtcbiAgICBjb25zdCBpZGVudGl0aWVzU2VydmljZSA9IGF3YWl0IHRoaXMuSWRlbnRpdGllcygpO1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmdldElkZW50aXRpZXMpO1xuICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBJZGVudGl0aWVzIHVuZGVyIENBICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9YCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IElkZW50aXR5UmVzcG9uc2UgPSAoXG4gICAgICBhd2FpdCBpZGVudGl0aWVzU2VydmljZS5nZXRBbGwoYXdhaXQgdGhpcy5Vc2VyKCkpXG4gICAgKS5yZXN1bHQ7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYEZvdW5kICR7cmVzcG9uc2UuaWRlbnRpdGllcy5sZW5ndGh9IElkZW50aXRpZXM6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWBcbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZS5pZGVudGl0aWVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRXJyb3IoZTogRXJyb3IpIHtcbiAgICBjb25zdCByZWdleHAgPSAvLipjb2RlOlxccyhcXGQrKS4qP21lc3NhZ2U6XFxzW1wiJ10oLispW1wiJ10vZ3M7XG4gICAgY29uc3QgbWF0Y2ggPSByZWdleHAuZXhlYyhlLm1lc3NhZ2UpO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiBuZXcgUmVnaXN0cmF0aW9uRXJyb3IoZSk7XG4gICAgY29uc3QgWywgY29kZSwgbWVzc2FnZV0gPSBtYXRjaDtcbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgXCI3NFwiOlxuICAgICAgY2FzZSBcIjcxXCI6XG4gICAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihtZXNzYWdlKTtcbiAgICAgIGNhc2UgXCIyMFwiOlxuICAgICAgICByZXR1cm4gbmV3IEF1dGhvcml6YXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgUmVnaXN0cmF0aW9uRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZSBhZmZpbGlhdGlvbnMgZnJvbSB0aGUgQ0EuXG4gICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGZvciB0aGUgbGlzdCBvZiBhZmZpbGlhdGlvbnMgYXZhaWxhYmxlIHVuZGVyIHRoZSBjb25maWd1cmVkIENBLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBhZmZpbGlhdGlvbnMgcmVzdWx0IHBheWxvYWQuXG4gICAqL1xuICBhc3luYyBnZXRBZmZpbGlhdGlvbnMoKSB7XG4gICAgY29uc3QgYWZmaWxpYXRpb25TZXJ2aWNlID0gYXdhaXQgdGhpcy5BZmZpbGlhdGlvbnMoKTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5nZXRBZmZpbGlhdGlvbnMpO1xuICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBBZmZpbGlhdGlvbnMgdW5kZXIgQ0EgJHt0aGlzLmNhQ29uZmlnLmNhTmFtZX1gKTtcbiAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBhZmZpbGlhdGlvblNlcnZpY2UuZ2V0QWxsKGF3YWl0IHRoaXMuVXNlcigpKSlcbiAgICAgIC5yZXN1bHQ7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYEZvdW5kICR7cmVzcG9uc2UuYS5sZW5ndGh9IEFmZmlsaWF0aW9uczogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWFkIGlkZW50aXR5IGRldGFpbHMgZnJvbSB0aGUgQ0EgYnkgZW5yb2xsbWVudCBJRC5cbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGFuZCB2YWxpZGF0ZXMgYSBzaW5nbGUgaWRlbnRpdHksIHRocm93aW5nIE5vdEZvdW5kRXJyb3Igd2hlbiBtaXNzaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5yb2xsbWVudElkIC0gRW5yb2xsbWVudCBJRCB0byBsb29rdXAuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RmFicmljSWRlbnRpdHk+fSBUaGUgaWRlbnRpdHkgZGV0YWlscyBzdG9yZWQgaW4gdGhlIENBLlxuICAgKi9cbiAgYXN5bmMgcmVhZChlbnJvbGxtZW50SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLlVzZXIoKTtcbiAgICBsZXQgcmVzdWx0OiBJU2VydmljZVJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjYS5uZXdJZGVudGl0eVNlcnZpY2UoKS5nZXRPbmUoZW5yb2xsbWVudElkLCB1c2VyKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgQ291bGRuJ3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBDb3VsZG4ndCBmaW5kIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWBcbiAgICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnJlc3VsdCBhcyBGYWJyaWNJZGVudGl0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXIgYSBuZXcgaWRlbnRpdHkgd2l0aCB0aGUgQ0EuXG4gICAqIEBzdW1tYXJ5IFN1Ym1pdHMgYSByZWdpc3RyYXRpb24gcmVxdWVzdCBmb3IgYSBuZXcgZW5yb2xsbWVudCBJRCwgcmV0dXJuaW5nIHRoZSBlbnJvbGxtZW50IHNlY3JldCB1cG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IG1vZGVsIC0gQ3JlZGVudGlhbHMgY29udGFpbmluZyB1c2VyTmFtZSBhbmQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3VwZXJVc2VyPWZhbHNlXSAtIFdoZXRoZXIgdG8gcmVnaXN0ZXIgdGhlIGlkZW50aXR5IGFzIGEgc3VwZXIgdXNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthZmZpbGlhdGlvbj1cIlwiXSAtIEFmZmlsaWF0aW9uIHN0cmluZyAoZS5nLiwgb3JnMS5kZXBhcnRtZW50MSkuXG4gICAqIEBwYXJhbSB7Q0FfUk9MRSB8IHN0cmluZ30gW3VzZXJSb2xlXSAtIFJvbGUgdG8gYXNzaWduIHRvIHRoZSBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtJS2V5VmFsdWVBdHRyaWJ1dGV9IFthdHRyc10gLSBPcHRpb25hbCBhdHRyaWJ1dGVzIHRvIGF0dGFjaCB0byB0aGUgaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4RW5yb2xsbWVudHNdIC0gTWF4aW11bSBudW1iZXIgb2YgZW5yb2xsbWVudHMgYWxsb3dlZCBmb3IgdGhlIGlkZW50aXR5LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFRoZSBlbnJvbGxtZW50IHNlY3JldCBmb3IgdGhlIHJlZ2lzdGVyZWQgaWRlbnRpdHkuXG4gICAqL1xuICBhc3luYyByZWdpc3RlcihcbiAgICBtb2RlbDogQ3JlZGVudGlhbHMsXG4gICAgaXNTdXBlclVzZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhZmZpbGlhdGlvbjogc3RyaW5nID0gXCJcIixcbiAgICB1c2VyUm9sZT86IENBX1JPTEUgfCBzdHJpbmcsXG4gICAgYXR0cnM/OiBJS2V5VmFsdWVBdHRyaWJ1dGUsXG4gICAgbWF4RW5yb2xsbWVudHM/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgcmVnaXN0cmF0aW9uOiBzdHJpbmc7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMucmVnaXN0ZXIpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHVzZXJOYW1lLCBwYXNzd29yZCB9ID0gbW9kZWw7XG4gICAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLlVzZXIoKTtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICBlbnJvbGxtZW50SUQ6IHVzZXJOYW1lIGFzIHN0cmluZyxcbiAgICAgICAgZW5yb2xsbWVudFNlY3JldDogcGFzc3dvcmQsXG4gICAgICAgIGFmZmlsaWF0aW9uOiBhZmZpbGlhdGlvbixcbiAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgIG1heEVucm9sbG1lbnRzOiBtYXhFbnJvbGxtZW50cyxcbiAgICAgIH0gYXMgSVJlZ2lzdGVyUmVxdWVzdDtcbiAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IGNhLnJlZ2lzdGVyKHByb3BzLCB1c2VyKTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgUmVnaXN0cmF0aW9uIGZvciAke3VzZXJOYW1lfSBjcmVhdGVkIHdpdGggdXNlciB0eXBlICR7dXNlclJvbGUgPz8gXCJVbmRlZmluZWQgUm9sZVwifSAke2lzU3VwZXJVc2VyID8gXCJhcyBzdXBlciB1c2VyXCIgOiBcIlwifWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIGlkZW50aXR5RnJvbUVucm9sbG1lbnQoXG4gICAgZW5yb2xsbWVudDogSUVucm9sbFJlc3BvbnNlLFxuICAgIG1zcElkOiBzdHJpbmdcbiAgKTogSWRlbnRpdHkge1xuICAgIGNvbnN0IHsgY2VydGlmaWNhdGUsIGtleSwgcm9vdENlcnRpZmljYXRlIH0gPSBlbnJvbGxtZW50O1xuICAgIGNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlLCB7fSkuZm9yKFxuICAgICAgdGhpcy5pZGVudGl0eUZyb21FbnJvbGxtZW50XG4gICAgKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgR2VuZXJhdGluZyBJZGVudGl0eSBmcm9tIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGV9IGluIG1zcCAke21zcElkfWBcbiAgICApO1xuICAgIGNvbnN0IGNsaWVudElkID0gQ3J5cHRvVXRpbHMuZmFicmljSWRGcm9tQ2VydGlmaWNhdGUoY2VydGlmaWNhdGUpO1xuICAgIGNvbnN0IGlkID0gQ3J5cHRvVXRpbHMuZW5jb2RlKGNsaWVudElkKTtcbiAgICBsb2cuZGVidWcoYElkZW50aXR5ICR7Y2xpZW50SWR9IGFuZCBlbmNvZGVkSWQgJHtpZH1gKTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIHJldHVybiBuZXcgSWRlbnRpdHkoe1xuICAgICAgaWQ6IGlkLFxuICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBjZXJ0aWZpY2F0ZTogY2VydGlmaWNhdGUsXG4gICAgICAgIHByaXZhdGVLZXk6IGtleS50b0J5dGVzKCksXG4gICAgICAgIHJvb3RDZXJ0aWZpY2F0ZTogcm9vdENlcnRpZmljYXRlLFxuICAgICAgICBjcmVhdGVkT246IG5vdyxcbiAgICAgICAgdXBkYXRlZE9uOiBub3csXG4gICAgICB9LFxuICAgICAgbXNwSWQ6IG1zcElkLFxuICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICB1cGRhdGVkT246IG5vdyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRW5yb2xsIGFuIGlkZW50aXR5IHdpdGggdGhlIENBIHVzaW5nIGEgcmVnaXN0cmF0aW9uIHNlY3JldC5cbiAgICogQHN1bW1hcnkgRXhjaGFuZ2VzIHRoZSBlbnJvbGxtZW50IElEIGFuZCBzZWNyZXQgZm9yIGNlcnRpZmljYXRlcywgcmV0dXJuaW5nIGEgY29uc3RydWN0ZWQgSWRlbnRpdHkgbW9kZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnJvbGxtZW50SWQgLSBFbnJvbGxtZW50IElEIHRvIGVucm9sbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbiAtIEVucm9sbG1lbnQgc2VjcmV0IHJldHVybmVkIGF0IHJlZ2lzdHJhdGlvbiB0aW1lLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gVGhlIGVucm9sbGVkIGlkZW50aXR5IG9iamVjdCB3aXRoIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgYXN5bmMgZW5yb2xsKGVucm9sbG1lbnRJZDogc3RyaW5nLCByZWdpc3RyYXRpb246IHN0cmluZykge1xuICAgIGxldCBpZGVudGl0eTogSWRlbnRpdHk7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZW5yb2xsKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICBsb2cuZGVidWcoYEVucm9sbGluZyAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgIGNvbnN0IGVucm9sbG1lbnQ6IElFbnJvbGxSZXNwb25zZSA9IGF3YWl0IGNhLmVucm9sbCh7XG4gICAgICAgIGVucm9sbG1lbnRJRDogZW5yb2xsbWVudElkLFxuICAgICAgICBlbnJvbGxtZW50U2VjcmV0OiByZWdpc3RyYXRpb24sXG4gICAgICB9KTtcbiAgICAgIGlkZW50aXR5ID0gRmFicmljRW5yb2xsbWVudFNlcnZpY2UuaWRlbnRpdHlGcm9tRW5yb2xsbWVudChcbiAgICAgICAgZW5yb2xsbWVudCxcbiAgICAgICAgdGhpcy5jYUNvbmZpZy5jYU5hbWVcbiAgICAgICk7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYFN1Y2Nlc3NmdWxseSBlbnJvbGxlZCAke2Vucm9sbG1lbnRJZH0gdW5kZXIgJHt0aGlzLmNhQ29uZmlnLmNhTmFtZX0gYXMgJHtpZGVudGl0eS5pZH1gXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gaWRlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGFuZCBlbnJvbGwgYSBuZXcgaWRlbnRpdHkgaW4gb25lIHN0ZXAuXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhIG5ldyBlbnJvbGxtZW50IElEIHdpdGggdGhlIENBIGFuZCBpbW1lZGlhdGVseSBleGNoYW5nZXMgdGhlIHNlY3JldCB0byBlbnJvbGwsIHJldHVybmluZyB0aGUgY3JlYXRlZCBJZGVudGl0eS5cbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gbW9kZWwgLSBDcmVkZW50aWFscyBmb3IgdGhlIG5ldyBpZGVudGl0eSBjb250YWluaW5nIHVzZXJOYW1lIGFuZCBwYXNzd29yZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdXBlclVzZXI9ZmFsc2VdIC0gV2hldGhlciB0byByZWdpc3RlciB0aGUgaWRlbnRpdHkgYXMgYSBzdXBlciB1c2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FmZmlsaWF0aW9uPVwiXCJdIC0gQWZmaWxpYXRpb24gc3RyaW5nIChlLmcuLCBvcmcxLmRlcGFydG1lbnQxKS5cbiAgICogQHBhcmFtIHtDQV9ST0xFIHwgc3RyaW5nfSBbdXNlclJvbGVdIC0gUm9sZSB0byBhc3NpZ24gdG8gdGhlIGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge0lLZXlWYWx1ZUF0dHJpYnV0ZX0gW2F0dHJzXSAtIE9wdGlvbmFsIGF0dHJpYnV0ZXMgdG8gYXR0YWNoIHRvIHRoZSBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFttYXhFbnJvbGxtZW50c10gLSBNYXhpbXVtIG51bWJlciBvZiBlbnJvbGxtZW50cyBhbGxvd2VkIGZvciB0aGUgaWRlbnRpdHkuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8SWRlbnRpdHk+fSBUaGUgZW5yb2xsZWQgaWRlbnRpdHkuXG4gICAqL1xuICBhc3luYyByZWdpc3RlckFuZEVucm9sbChcbiAgICBtb2RlbDogQ3JlZGVudGlhbHMsXG4gICAgaXNTdXBlclVzZXI6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhZmZpbGlhdGlvbjogc3RyaW5nID0gXCJcIixcbiAgICB1c2VyUm9sZT86IENBX1JPTEUgfCBzdHJpbmcsXG4gICAgYXR0cnM/OiBJS2V5VmFsdWVBdHRyaWJ1dGUsXG4gICAgbWF4RW5yb2xsbWVudHM/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxJZGVudGl0eT4ge1xuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHRoaXMucmVnaXN0ZXIoXG4gICAgICBtb2RlbCxcbiAgICAgIGlzU3VwZXJVc2VyLFxuICAgICAgYWZmaWxpYXRpb24sXG4gICAgICB1c2VyUm9sZSxcbiAgICAgIGF0dHJzLFxuICAgICAgbWF4RW5yb2xsbWVudHNcbiAgICApO1xuICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IG1vZGVsO1xuICAgIHJldHVybiB0aGlzLmVucm9sbCh1c2VyTmFtZSBhcyBzdHJpbmcsIHJlZ2lzdHJhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogUmV2b2tlcyB0aGUgZW5yb2xsbWVudCBvZiBhbiBpZGVudGl0eSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5yb2xsbWVudCBJRC5cbiAgICpcbiAgICogQHBhcmFtIGVucm9sbG1lbnRJZCAtIFRoZSBlbnJvbGxtZW50IElEIG9mIHRoZSBpZGVudGl0eSB0byBiZSByZXZva2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzdWx0IG9mIHRoZSByZXZvY2F0aW9uIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHRocm93cyB7Tm90Rm91bmRFcnJvcn0gSWYgdGhlIGVucm9sbG1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIElEIGRvZXMgbm90IGV4aXN0LlxuICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiB0aGVyZSBpcyBhbiBlcnJvciBkdXJpbmcgdGhlIHJldm9jYXRpb24gcHJvY2Vzcy5cbiAgICovXG4gIGFzeW5jIHJldm9rZShlbnJvbGxtZW50SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLlVzZXIoKTtcbiAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHRoaXMucmVhZChlbnJvbGxtZW50SWQpO1xuICAgIGlmICghaWRlbnRpdHkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBmaW5kIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH1gXG4gICAgICApO1xuICAgIGxldCByZXN1bHQ6IElTZXJ2aWNlUmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNhLnJldm9rZShcbiAgICAgICAgeyBlbnJvbGxtZW50SUQ6IGlkZW50aXR5LmlkLCByZWFzb246IFwiVXNlciBEZWxldGF0aW9uXCIgfSxcbiAgICAgICAgdXNlclxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCByZXZva2UgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtlfWBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCByZXZva2UgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtyZXN1bHQuZXJyb3JzLmpvaW4oXCJcXG5cIil9YFxuICAgICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=constants.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIENlcnRpZmljYXRlIEF1dGhvcml0eSByb2xlIHR5cGVzIHVzZWQgZHVyaW5nIGVucm9sbG1lbnQgYW5kIHJlZ2lzdHJhdGlvbi5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgdGhlIHN0YW5kYXJkIEh5cGVybGVkZ2VyIEZhYnJpYyBDQSByb2xlcyB0aGF0IGNhbiBiZSBhc3NpZ25lZCB0byBpZGVudGl0aWVzIHdoZW4gcmVnaXN0ZXJpbmcgd2l0aCB0aGUgQ0Egc2VydmljZS5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGRlY2xhcmUgZW51bSBDQV9ST0xFIHtcbiAgLyoqIEFkbWluaXN0cmF0b3Igcm9sZSB3aXRoIGVsZXZhdGVkIHByaXZpbGVnZXMgZm9yIG1hbmFnaW5nIGlkZW50aXRpZXMgYW5kIGFmZmlsaWF0aW9ucyAqL1xuICBBRE1JTiA9IFwiYWRtaW5cIixcbiAgLyoqIFN0YW5kYXJkIHVzZXIgcm9sZSBmb3IgYXBwbGljYXRpb24gY2xpZW50cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrICovXG4gIFVTRVIgPSBcInVzZXJcIixcbiAgLyoqIENsaWVudCByb2xlIHR5cGljYWxseSB1c2VkIGZvciBTREstYmFzZWQgaW50ZXJhY3Rpb25zIGFuZCBzZXJ2aWNlIGFjY291bnRzICovXG4gIENMSUVOVCA9IFwiY2xpZW50XCIsXG59XG4iXX0=
@@ -16,4 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./FabricEnrollmentService.cjs"), exports);
18
18
  __exportStar(require("./constants.cjs"), exports);
19
- //# sourceMappingURL=index.js.map
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBMEM7QUFDMUMsa0RBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vRmFicmljRW5yb2xsbWVudFNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuIl19
@@ -70,4 +70,4 @@ exports.Address = Address = __decorate([
70
70
  (0, decorator_validation_1.model)(),
71
71
  __metadata("design:paramtypes", [Object])
72
72
  ], Address);
73
- //# sourceMappingURL=Address.js.map
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9BZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlFQUt3QztBQUN4Qyx5Q0FRd0I7QUFDeEIscURBQTRDO0FBQzVDLGlEQUF5RDtBQUtsRCxJQUFNLE9BQU8sR0FBYixNQUFNLE9BQVEsU0FBUSw0QkFBSztJQW9DaEMsWUFBWSxHQUF1QjtRQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQTtBQXZDWSwwQkFBTztBQUVsQjtJQURDLElBQUEsU0FBRSxHQUFFOzttQ0FDTztBQUlaO0lBRkMsSUFBQSxhQUFNLEdBQUU7SUFDUixJQUFBLCtCQUFRLEdBQUU7O3FDQUNHO0FBSWQ7SUFGQyxJQUFBLGFBQU0sR0FBRTtJQUNSLElBQUEsK0JBQVEsR0FBRTs7dUNBQ0s7QUFJaEI7SUFGQyxJQUFBLGFBQU0sR0FBRTtJQUNSLElBQUEsK0JBQVEsR0FBRTs7dUNBQ0s7QUFJaEI7SUFGQyxJQUFBLGFBQU0sR0FBRTtJQUNSLElBQUEsZ0JBQVMsR0FBRTs4QkFDQSxJQUFJOzBDQUFDO0FBSWpCO0lBRkMsSUFBQSxhQUFNLEdBQUU7SUFDUixJQUFBLGdCQUFTLEdBQUU7OEJBQ0EsSUFBSTswQ0FBQztBQUlqQjtJQUZDLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSxnQkFBUyxHQUFFOzswQ0FDTztBQUluQjtJQUZDLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSxnQkFBUyxHQUFFOzswQ0FDTztBQUluQjtJQUZDLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSxlQUFPLEdBQUU7O29DQUNHO2tCQWxDRixPQUFPO0lBSG5CLElBQUEsaUJBQUksRUFBQyxxQkFBYSxDQUFDO0lBQ25CLElBQUEsWUFBSyxHQUFFO0lBQ1AsSUFBQSw0QkFBSyxHQUFFOztHQUNLLE9BQU8sQ0F1Q25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgbW9kZWwsXG4gIE1vZGVsLFxuICB0eXBlIE1vZGVsQXJnLFxuICByZXF1aXJlZCxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgY29sdW1uLFxuICBjcmVhdGVkQXQsXG4gIHBrLFxuICB0YWJsZSxcbiAgY3JlYXRlZEJ5LFxuICB1cGRhdGVkQXQsXG4gIHVwZGF0ZWRCeSxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyB1c2VzIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBGYWJyaWNGbGF2b3VyLCBvd25lZEJ5IH0gZnJvbSBcIi4uL3NoYXJlZC9pbmRleFwiO1xuXG5AdXNlcyhGYWJyaWNGbGF2b3VyKVxuQHRhYmxlKClcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgQWRkcmVzcyBleHRlbmRzIE1vZGVsIHtcbiAgQHBrKClcbiAgaWQhOiBudW1iZXI7XG5cbiAgQGNvbHVtbigpXG4gIEByZXF1aXJlZCgpXG4gIGNpdHkhOiBzdHJpbmc7XG5cbiAgQGNvbHVtbigpXG4gIEByZXF1aXJlZCgpXG4gIHN0cmVldCE6IHN0cmluZztcblxuICBAY29sdW1uKClcbiAgQHJlcXVpcmVkKClcbiAgbnVtYmVyITogbnVtYmVyO1xuXG4gIEBjb2x1bW4oKVxuICBAY3JlYXRlZEF0KClcbiAgY3JlYXRlZEF0ITogRGF0ZTtcblxuICBAY29sdW1uKClcbiAgQHVwZGF0ZWRBdCgpXG4gIHVwZGF0ZWRBdCE6IERhdGU7XG5cbiAgQGNvbHVtbigpXG4gIEBjcmVhdGVkQnkoKVxuICBjcmVhdGVkQnkhOiBzdHJpbmc7XG5cbiAgQGNvbHVtbigpXG4gIEB1cGRhdGVkQnkoKVxuICB1cGRhdGVkQnkhOiBzdHJpbmc7XG5cbiAgQGNvbHVtbigpXG4gIEBvd25lZEJ5KClcbiAgbXNwITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPEFkZHJlc3M+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
@@ -31,4 +31,4 @@ exports.AddressContract = AddressContract = AddressContract_1 = __decorate([
31
31
  }),
32
32
  __metadata("design:paramtypes", [])
33
33
  ], AddressContract);
34
- //# sourceMappingURL=AddressContract.js.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkcmVzc0NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L0FkZHJlc3NDb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDZEQUFtRTtBQUNuRSx5Q0FBMkM7QUFDM0MsK0ZBQW9GO0FBQ3BGLDJDQUFvQztBQUVwQyxJQUFBLDRCQUFZLEdBQUUsQ0FBQyw0QkFBSyxDQUFDLENBQUM7QUFDdEIsSUFBQSw0QkFBWSxHQUFFLENBQUMsZ0JBQVMsQ0FBQyxDQUFDO0FBTW5CLElBQU0sZUFBZSx1QkFBckIsTUFBTSxlQUFnQixTQUFRLGlEQUErQjtJQUNsRTtRQUNFLEtBQUssQ0FBQyxpQkFBZSxDQUFDLElBQUksRUFBRSxpQkFBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQUE7QUFKWSwwQ0FBZTswQkFBZixlQUFlO0lBSjNCLElBQUEsMEJBQUksRUFBQztRQUNKLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsV0FBVyxFQUFFLGlDQUFpQztLQUMvQyxDQUFDOztHQUNXLGVBQWUsQ0FJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEluZm8sIE9iamVjdCBhcyBGYWJyaWNPYmplY3QgfSBmcm9tIFwiZmFicmljLWNvbnRyYWN0LWFwaVwiO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBTZXJpYWxpemVkQ3J1ZENvbnRyYWN0IH0gZnJvbSBcIi4uL2NvbnRyYWN0cy9jcnVkL3NlcmlhbGl6ZWQtY3J1ZC1jb250cmFjdFwiO1xuaW1wb3J0IHsgQWRkcmVzcyB9IGZyb20gXCIuL0FkZHJlc3NcIjtcblxuRmFicmljT2JqZWN0KCkoTW9kZWwpO1xuRmFicmljT2JqZWN0KCkoQmFzZU1vZGVsKTtcblxuQEluZm8oe1xuICB0aXRsZTogXCJBZGRyZXNzQ29udHJhY3RcIixcbiAgZGVzY3JpcHRpb246IFwiQ29udHJhY3QgbWFuYWdpbmcgdGhlIEFkZHJlc3Nlc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzQ29udHJhY3QgZXh0ZW5kcyBTZXJpYWxpemVkQ3J1ZENvbnRyYWN0PEFkZHJlc3M+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoQWRkcmVzc0NvbnRyYWN0Lm5hbWUsIEFkZHJlc3MpO1xuICB9XG59XG4iXX0=
@@ -34,4 +34,4 @@ exports.Product = Product = __decorate([
34
34
  (0, decorator_validation_1.model)(),
35
35
  __metadata("design:paramtypes", [Object])
36
36
  ], Product);
37
- //# sourceMappingURL=Product.js.map
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9Qcm9kdWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLHlFQUE4RDtBQUM5RCx5Q0FBbUQ7QUFDbkQseURBQW9EO0FBQ3BELHFEQUE0QztBQUtyQyxJQUFNLE9BQU8sR0FBYixNQUFNLE9BQVEsU0FBUSw0QkFBSztJQU9oQyxZQUFZLElBQXdCO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFBO0FBVlksMEJBQU87QUFFbEI7SUFEQyxJQUFBLFNBQUUsRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDOzs0Q0FDbkI7QUFHckI7SUFEQyxJQUFBLGFBQU0sR0FBRTs7NkNBQ2E7a0JBTFgsT0FBTztJQUhuQixJQUFBLGlCQUFJLEVBQUMseUJBQWEsQ0FBQztJQUNuQixJQUFBLFlBQUssR0FBRTtJQUNQLElBQUEsNEJBQUssR0FBRTs7R0FDSyxPQUFPLENBVW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1vZGVsLCBtb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGNvbHVtbiwgcGssIHRhYmxlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBGYWJyaWNGbGF2b3VyIH0gZnJvbSBcIi4uL3NoYXJlZC9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuQHVzZXMoRmFicmljRmxhdm91cilcbkB0YWJsZSgpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFByb2R1Y3QgZXh0ZW5kcyBNb2RlbCB7XG4gIEBwayh7IHR5cGU6IFwiTnVtYmVyXCIsIGdlbmVyYXRlZDogdHJ1ZSB9KVxuICBwcm9kdWN0Q29kZSE6IG51bWJlcjtcblxuICBAY29sdW1uKClcbiAgaW52ZW50ZWROYW1lITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGFyZ3M/OiBNb2RlbEFyZzxQcm9kdWN0Pikge1xuICAgIHN1cGVyKGFyZ3MpO1xuICB9XG59XG4iXX0=
@@ -31,4 +31,4 @@ exports.ProductContract = ProductContract = ProductContract_1 = __decorate([
31
31
  }),
32
32
  __metadata("design:paramtypes", [])
33
33
  ], ProductContract);
34
- //# sourceMappingURL=ProductContract.js.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZHVjdENvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L1Byb2R1Y3RDb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDZEQUFtRTtBQUNuRSx5Q0FBMkM7QUFDM0MsK0ZBQW9GO0FBQ3BGLDJDQUFvQztBQUVwQyxJQUFBLDRCQUFZLEdBQUUsQ0FBQyw0QkFBSyxDQUFDLENBQUM7QUFDdEIsSUFBQSw0QkFBWSxHQUFFLENBQUMsZ0JBQVMsQ0FBQyxDQUFDO0FBTW5CLElBQU0sZUFBZSx1QkFBckIsTUFBTSxlQUFnQixTQUFRLGlEQUErQjtJQUNsRTtRQUNFLEtBQUssQ0FBQyxpQkFBZSxDQUFDLElBQUksRUFBRSxpQkFBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQUE7QUFKWSwwQ0FBZTswQkFBZixlQUFlO0lBSjNCLElBQUEsMEJBQUksRUFBQztRQUNKLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsV0FBVyxFQUFFLGdDQUFnQztLQUM5QyxDQUFDOztHQUNXLGVBQWUsQ0FJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEluZm8sIE9iamVjdCBhcyBGYWJyaWNPYmplY3QgfSBmcm9tIFwiZmFicmljLWNvbnRyYWN0LWFwaVwiO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBTZXJpYWxpemVkQ3J1ZENvbnRyYWN0IH0gZnJvbSBcIi4uL2NvbnRyYWN0cy9jcnVkL3NlcmlhbGl6ZWQtY3J1ZC1jb250cmFjdFwiO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gXCIuL1Byb2R1Y3RcIjtcblxuRmFicmljT2JqZWN0KCkoTW9kZWwpO1xuRmFicmljT2JqZWN0KCkoQmFzZU1vZGVsKTtcblxuQEluZm8oe1xuICB0aXRsZTogXCJQcm9kdWN0Q29udHJhY3RcIixcbiAgZGVzY3JpcHRpb246IFwiQ29udHJhY3QgbWFuYWdpbmcgdGhlIFByb2R1Y3RzXCIsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RDb250cmFjdCBleHRlbmRzIFNlcmlhbGl6ZWRDcnVkQ29udHJhY3Q8UHJvZHVjdD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihQcm9kdWN0Q29udHJhY3QubmFtZSwgUHJvZHVjdCk7XG4gIH1cbn1cbiJdfQ==
@@ -34,4 +34,4 @@ exports.User = User = __decorate([
34
34
  (0, decorator_validation_1.model)(),
35
35
  __metadata("design:paramtypes", [Object])
36
36
  ], User);
37
- //# sourceMappingURL=User.js.map
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9Vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLHlFQUE4RDtBQUM5RCx5Q0FBbUQ7QUFDbkQseURBQW9EO0FBQ3BELHFEQUE0QztBQUtyQyxJQUFNLElBQUksR0FBVixNQUFNLElBQUssU0FBUSw0QkFBSztJQU83QixZQUFZLElBQXFCO1FBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFBO0FBVlksb0JBQUk7QUFFZjtJQURDLElBQUEsU0FBRSxFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7O2dDQUM1QjtBQUdaO0lBREMsSUFBQSxhQUFNLEdBQUU7O2tDQUNLO2VBTEgsSUFBSTtJQUhoQixJQUFBLGlCQUFJLEVBQUMseUJBQWEsQ0FBQztJQUNuQixJQUFBLFlBQUssR0FBRTtJQUNQLElBQUEsNEJBQUssR0FBRTs7R0FDSyxJQUFJLENBVWhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1vZGVsLCBtb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGNvbHVtbiwgcGssIHRhYmxlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBGYWJyaWNGbGF2b3VyIH0gZnJvbSBcIi4uL3NoYXJlZC9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuQHVzZXMoRmFicmljRmxhdm91cilcbkB0YWJsZSgpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gIEBwayh7IHR5cGU6IFwiTnVtYmVyXCIsIGdlbmVyYXRlZDogdHJ1ZSB9KVxuICBpZCE6IG51bWJlcjtcblxuICBAY29sdW1uKClcbiAgbmFtZSE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihhcmdzPzogTW9kZWxBcmc8VXNlcj4pIHtcbiAgICBzdXBlcihhcmdzKTtcbiAgfVxufVxuIl19
@@ -31,4 +31,4 @@ exports.UserContract = UserContract = UserContract_1 = __decorate([
31
31
  }),
32
32
  __metadata("design:paramtypes", [])
33
33
  ], UserContract);
34
- //# sourceMappingURL=UserContract.js.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L1VzZXJDb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDZEQUFtRTtBQUNuRSx5Q0FBMkM7QUFDM0MsK0ZBQW9GO0FBQ3BGLHFDQUE4QjtBQUU5QixJQUFBLDRCQUFZLEdBQUUsQ0FBQyw0QkFBSyxDQUFDLENBQUM7QUFDdEIsSUFBQSw0QkFBWSxHQUFFLENBQUMsZ0JBQVMsQ0FBQyxDQUFDO0FBTW5CLElBQU0sWUFBWSxvQkFBbEIsTUFBTSxZQUFhLFNBQVEsaURBQTRCO0lBQzVEO1FBQ0UsS0FBSyxDQUFDLGNBQVksQ0FBQyxJQUFJLEVBQUUsV0FBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGLENBQUE7QUFKWSxvQ0FBWTt1QkFBWixZQUFZO0lBSnhCLElBQUEsMEJBQUksRUFBQztRQUNKLEtBQUssRUFBRSxjQUFjO1FBQ3JCLFdBQVcsRUFBRSw2QkFBNkI7S0FDM0MsQ0FBQzs7R0FDVyxZQUFZLENBSXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbmZvLCBPYmplY3QgYXMgRmFicmljT2JqZWN0IH0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgU2VyaWFsaXplZENydWRDb250cmFjdCB9IGZyb20gXCIuLi9jb250cmFjdHMvY3J1ZC9zZXJpYWxpemVkLWNydWQtY29udHJhY3RcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi9Vc2VyXCI7XG5cbkZhYnJpY09iamVjdCgpKE1vZGVsKTtcbkZhYnJpY09iamVjdCgpKEJhc2VNb2RlbCk7XG5cbkBJbmZvKHtcbiAgdGl0bGU6IFwiVXNlckNvbnRyYWN0XCIsXG4gIGRlc2NyaXB0aW9uOiBcIkNvbnRyYWN0IG1hbmFnaW5nIHRoZSB1c2Vyc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyQ29udHJhY3QgZXh0ZW5kcyBTZXJpYWxpemVkQ3J1ZENvbnRyYWN0PFVzZXI+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoVXNlckNvbnRyYWN0Lm5hbWUsIFVzZXIpO1xuICB9XG59XG4iXX0=
@@ -11,4 +11,4 @@ exports.contracts = [
11
11
  UserContract_1.UserContract,
12
12
  AddressContract_1.AddressContract,
13
13
  ];
14
- //# sourceMappingURL=index.js.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFckMsMkRBQW9EO0FBQ3BELHFEQUE4QztBQUM5QywyREFBb0Q7QUFFdkMsUUFBQSxTQUFTLEdBQXdCO0lBQzVDLGlDQUFlO0lBQ2YsMkJBQVk7SUFDWixpQ0FBZTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFicmljQ3J1ZENvbnRyYWN0IH0gZnJvbSBcIi4uL2NvbnRyYWN0cy9jcnVkL2NydWQtY29udHJhY3RcIjtcbmNvbnNvbGUubG9nKEZhYnJpY0NydWRDb250cmFjdC5uYW1lKTtcbmltcG9ydCB7IHR5cGUgQ29udHJhY3QgfSBmcm9tIFwiZmFicmljLWNvbnRyYWN0LWFwaVwiO1xuaW1wb3J0IHsgUHJvZHVjdENvbnRyYWN0IH0gZnJvbSBcIi4vUHJvZHVjdENvbnRyYWN0XCI7XG5pbXBvcnQgeyBVc2VyQ29udHJhY3QgfSBmcm9tIFwiLi9Vc2VyQ29udHJhY3RcIjtcbmltcG9ydCB7IEFkZHJlc3NDb250cmFjdCB9IGZyb20gXCIuL0FkZHJlc3NDb250cmFjdFwiO1xuXG5leHBvcnQgY29uc3QgY29udHJhY3RzOiAodHlwZW9mIENvbnRyYWN0KVtdID0gW1xuICBQcm9kdWN0Q29udHJhY3QsXG4gIFVzZXJDb250cmFjdCxcbiAgQWRkcmVzc0NvbnRyYWN0LFxuXTtcbiJdfQ==
@@ -857,4 +857,4 @@ class FabricContractAdapter extends for_couchdb_1.CouchDBAdapter {
857
857
  exports.FabricContractAdapter = FabricContractAdapter;
858
858
  FabricContractAdapter.decoration();
859
859
  core_1.Adapter.setCurrent(constants_1.FabricFlavour);
860
- //# sourceMappingURL=ContractAdapter.js.map
860
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9Db250cmFjdEFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEdBLHNFQW9CQztBQThCRCw0Q0FzQ0M7QUF0TUQsdURBQWdGO0FBQ2hGLHlFQUE2RTtBQUU3RSwyREFBMEQ7QUFDMUQsMkRBaUJpQztBQUNqQyw2REFJNkI7QUFFN0IseUNBMEJ3QjtBQUV4Qiw2RUFBc0U7QUFPdEUsMkVBQTREO0FBQzVELHlEQUFvRDtBQUNwRCxpR0FBd0Y7QUFDeEYsaUVBTzhCO0FBQzlCLHFEQU84QjtBQUM5QiwyQ0FBMkM7QUFFM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSSxLQUFLLFVBQVUsNkJBQTZCLENBTWpELE9BQXFDLEVBQ3JDLElBQU8sRUFDUCxHQUFZLEVBQ1osS0FBUTtJQUVSLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFtQixDQUFDO1FBQ3ZELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFtQixDQUFDO1FBQzNDLDZEQUE2RDtJQUMvRCxDQUFDO0lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksdUJBQWdCLENBQ3hCLGdFQUFnRSxDQUNqRSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0ksS0FBSyxVQUFVLGdCQUFnQixDQUtwQyxPQUE4QixFQUM5QixJQUFxQixFQUNyQixHQUFZLEVBQ1osS0FBUTtJQUVSLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFT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ZSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FDcEQsQ0FBQztRQUNKLENBQUM7UUFFRCx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxzQkFBZSxDQUFDLFdBQVcsQ0FBQzthQUN4QyxNQUFNLENBQUM7WUFDTixTQUFTLEVBQUUsWUFBWTtTQUNqQixDQUFDO2FBQ1IsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDOztBQXovQkgsc0RBMC9CQztBQUVELHFCQUFxQixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ25DLGNBQU8sQ0FBQyxVQUFVLENBQUMseUJBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ291Y2hEQkFkYXB0ZXIsIENvdWNoREJLZXlzLCBNYW5nb1F1ZXJ5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgbGlzdCwgTW9kZWwsIHJlcXVpcmVkLCB0eXBlIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RGbGFncyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBGYWJyaWNDb250cmFjdENvbnRleHQgfSBmcm9tIFwiLi9Db250cmFjdENvbnRleHRcIjtcbmltcG9ydCB7XG4gIGFmdGVyQW55LFxuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgREJLZXlzLFxuICBHcm91cFNvcnQsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIG9uQ3JlYXRlLFxuICBvbkNyZWF0ZVVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIG9uVXBkYXRlLFxuICBPcGVyYXRpb25LZXlzLFxuICBQcmltYXJ5S2V5VHlwZSxcbiAgcmVhZG9ubHksXG4gIFNlcmlhbGl6YXRpb25FcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBDb250ZXh0IGFzIEN0eCxcbiAgT2JqZWN0IGFzIEZhYnJpY09iamVjdCxcbiAgUHJvcGVydHkgYXMgRmFicmljUHJvcGVydHksXG59IGZyb20gXCJmYWJyaWMtY29udHJhY3QtYXBpXCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7XG4gIFBlcnNpc3RlbmNlS2V5cyxcbiAgUmVsYXRpb25zTWV0YWRhdGEsXG4gIFNlcXVlbmNlLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG4gIFVuc3VwcG9ydGVkRXJyb3IsXG4gIEFkYXB0ZXIsXG4gIENhc2NhZGVNZXRhZGF0YSxcbiAgSm9pbkNvbHVtbk9wdGlvbnMsXG4gIG9uZVRvTWFueU9uVXBkYXRlLFxuICBKb2luVGFibGVPcHRpb25zLFxuICBKb2luVGFibGVNdWx0aXBsZUNvbHVtbnNPcHRpb25zLFxuICByZWxhdGlvbixcbiAgUHJlcGFyZWRNb2RlbCxcbiAgUmVwb3NpdG9yeSxcbiAgUXVlcnlFcnJvcixcbiAgUGFnaW5nRXJyb3IsXG4gIE1pZ3JhdGlvbkVycm9yLFxuICBPYnNlcnZlckVycm9yLFxuICBBdXRob3JpemF0aW9uRXJyb3IsXG4gIEZvcmJpZGRlbkVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIENvbnRleHR1YWxpemVkQXJncyxcbiAgTG9nZ2VyT2YsXG4gIENvbnRleHQsXG4gIFJhd1Jlc3VsdCxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHR1YWxBcmdzLCBNYXliZUNvbnRleHR1YWxBcmcgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeSB9IGZyb20gXCIuL0ZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeVwiO1xuaW1wb3J0IHtcbiAgQ2hhaW5jb2RlU3R1YixcbiAgQ2xpZW50SWRlbnRpdHksXG4gIEl0ZXJhdG9ycyxcbiAgU3RhdGVRdWVyeVJlc3BvbnNlLFxufSBmcm9tIFwiZmFicmljLXNoaW0tYXBpXCI7XG5pbXBvcnQgeyBGYWJyaWNTdGF0ZW1lbnQgfSBmcm9tIFwiLi9GYWJyaWNDb250cmFjdFN0YXRlbWVudFwiO1xuaW1wb3J0IHsgRmFicmljRmxhdm91ciB9IGZyb20gXCIuLi9zaGFyZWQvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBTaW1wbGVEZXRlcm1pbmlzdGljU2VyaWFsaXplciB9IGZyb20gXCIuLi9zaGFyZWQvU2ltcGxlRGV0ZXJtaW5pc3RpY1NlcmlhbGl6ZXJcIjtcbmltcG9ydCB7XG4gIG9uZVRvTWFueU9uQ3JlYXRlLFxuICBvbmVUb01hbnlPbkRlbGV0ZSxcbiAgb25lVG9PbmVPbkNyZWF0ZSxcbiAgb25lVG9PbmVPbkRlbGV0ZSxcbiAgb25lVG9PbmVPblVwZGF0ZSxcbiAgcG9wdWxhdGUgYXMgcG9wLFxufSBmcm9tIFwiLi9GYWJyaWNDb25zdHJ1Y3Rpb25cIjtcbmltcG9ydCB7XG4gIGFwcGx5LFxuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgcHJvcCxcbiAgcHJvcE1ldGFkYXRhLFxuICBNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBDb250cmFjdExvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2V0cyB0aGUgY3JlYXRvciBvciB1cGRhdGVyIGZpZWxkIGluIGEgbW9kZWwgYmFzZWQgb24gdGhlIHVzZXIgaW4gdGhlIGNvbnRleHRcbiAqIEBzdW1tYXJ5IENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgaW4gZGVjb3JhdG9ycyB0byBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY3JlYXRlZF9ieSBvciB1cGRhdGVkX2J5IGZpZWxkc1xuICogd2l0aCB0aGUgdXNlcm5hbWUgZnJvbSB0aGUgY29udGV4dCB3aGVuIGEgZG9jdW1lbnQgaXMgY3JlYXRlZCBvciB1cGRhdGVkXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgZXh0ZW5kaW5nIE5hbm9SZXBvc2l0b3J5PE0+XG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgZXh0ZW5kaW5nIFJlbGF0aW9uc01ldGFkYXRhXG4gKiBAcGFyYW0ge1J9IHRoaXMgLSBUaGUgcmVwb3NpdG9yeSBpbnN0YW5jZVxuICogQHBhcmFtIHtGYWJyaWNDb250cmFjdENvbnRleHR9IGNvbnRleHQgLSBUaGUgb3BlcmF0aW9uIGNvbnRleHQgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uXG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBUaGUgcmVsYXRpb24gbWV0YWRhdGFcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHNldCB3aXRoIHRoZSB1c2VybmFtZVxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSBiZWluZyBjcmVhdGVkIG9yIHVwZGF0ZWRcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZVxuICogQGZ1bmN0aW9uIGNyZWF0ZWRCeU9uRmFicmljQ3JlYXRlVXBkYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZhYnJpYy5jb250cmFjdHNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgRiBhcyBjcmVhdGVkQnlPbk5hbm9DcmVhdGVVcGRhdGVcbiAqICAgcGFydGljaXBhbnQgQyBhcyBDb250ZXh0XG4gKiAgIHBhcnRpY2lwYW50IE0gYXMgTW9kZWxcbiAqICAgRi0+PkM6IGdldChcInVzZXJcIilcbiAqICAgQy0tPj5GOiB1c2VyIG9iamVjdFxuICogICBGLT4+TTogc2V0IGtleSB0byB1c2VyLm5hbWVcbiAqICAgTm90ZSBvdmVyIEY6IElmIG5vIHVzZXIgaW4gY29udGV4dFxuICogICBGLS0+PkY6IHRocm93IFVuc3VwcG9ydGVkRXJyb3JcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZWRCeU9uRmFicmljQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnk8TT4sXG4gIFYgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHQ8RmFicmljQ29udHJhY3RGbGFncz4sXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHVzZXIgPSBjb250ZXh0LmdldChcImlkZW50aXR5XCIpIGFzIENsaWVudElkZW50aXR5O1xuICAgIG1vZGVsW2tleV0gPSB1c2VyLmdldElEKCkgYXMgTVt0eXBlb2Yga2V5XTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiTm8gVXNlciBmb3VuZCBpbiBjb250ZXh0LiBQbGVhc2UgcHJvdmlkZSBhIHVzZXIgaW4gdGhlIGNvbnRleHRcIlxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJpbWFyeSBrZXkgYXV0by1hc3NpZ25tZW50IGNhbGxiYWNrIGZvciBGYWJyaWMgbW9kZWxzXG4gKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYW5kIGFzc2lnbnMgYSBwcmltYXJ5IGtleSB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIG1vZGVsIHByb3BlcnR5IHVzaW5nIGEgRmFicmljLWJhY2tlZCBzZXF1ZW5jZSB3aGVuIHRoZSBtb2RlbCBpcyBjcmVhdGVkLiBJZiB0aGUgc2VxdWVuY2UgbmFtZSBpcyBub3QgcHJvdmlkZWQgaW4gb3B0aW9ucywgaXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBtb2RlbCB2aWEgc2VxdWVuY2VOYW1lRm9yTW9kZWwuIFRoZSBhc3NpZ25lZCBrZXkgaXMgZGVmaW5lZCBhcyBub24td3JpdGFibGUgYW5kIGVudW1lcmFibGUuXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsIGZvciB0aGUgdGFyZ2V0IGluc3RhbmNlXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgZXh0ZW5kaW5nIEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeSBmb3IgcmVwb3NpdG9yeSBjb250ZXh0XG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgZXh0ZW5kaW5nIFNlcXVlbmNlT3B0aW9ucyB0byBjb25maWd1cmUgc2VxdWVuY2UgYmVoYXZpb3JcbiAqIEB0ZW1wbGF0ZSBGIC0gVHlwZSBleHRlbmRpbmcgRmFicmljQ29udHJhY3RGbGFncyBmb3IgY29udGV4dHVhbCBmbGFnc1xuICogQHBhcmFtIHtSfSB0aGlzIC0gVGhlIHJlcG9zaXRvcnkgaW5zdGFuY2UgaW52b2tpbmcgdGhlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge0ZhYnJpY0NvbnRyYWN0Q29udGV4dH0gY29udGV4dCAtIEZhYnJpYyBjb250cmFjdCBjb250ZXh0IGNvbnRhaW5pbmcgaW52b2NhdGlvbiBtZXRhZGF0YVxuICogQHBhcmFtIHtWfSBkYXRhIC0gU2VxdWVuY2Ugb3B0aW9ucyB1c2VkIHRvIGNvbmZpZ3VyZSBvciBsb2NhdGUgdGhlIHNlcXVlbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHByaW1hcnkga2V5IHByb3BlcnR5IG5hbWUgdG8gYXNzaWduIG9uIHRoZSBtb2RlbFxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byByZWNlaXZlIHRoZSBnZW5lcmF0ZWQgcHJpbWFyeSBrZXlcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFJlc29sdmVzIHdoZW4gdGhlIGtleSBpcyBhc3NpZ25lZCBvciB3aGVuIG5vIGFjdGlvbiBpcyByZXF1aXJlZFxuICogQGZ1bmN0aW9uIHBrRmFicmljT25DcmVhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jb250cmFjdHNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgUiBhcyBSZXBvc2l0b3J5XG4gKiAgIHBhcnRpY2lwYW50IEMgYXMgQ29udGV4dDxGPlxuICogICBwYXJ0aWNpcGFudCBTIGFzIEZhYnJpY0NvbnRyYWN0REJTZXF1ZW5jZVxuICogICBwYXJ0aWNpcGFudCBNIGFzIE1vZGVsXG4gKiAgIFItPj5SOiBkZXJpdmUgc2VxdWVuY2UgbmFtZSBpZiBtaXNzaW5nXG4gKiAgIFItPj5TOiBhZGFwdGVyLlNlcXVlbmNlKG9wdGlvbnMpXG4gKiAgIFMtLT4+Ujogc2VxdWVuY2UgaW5zdGFuY2VcbiAqICAgUi0+PlM6IG5leHQoY29udGV4dClcbiAqICAgUy0tPj5SOiBuZXh0IHZhbHVlXG4gKiAgIFItPj5NOiBkZWZpbmUgbm9uLXdyaXRhYmxlIHByaW1hcnkga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwa0ZhYnJpY09uQ3JlYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnk8TT4sXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gIGRhdGE6IFNlcXVlbmNlT3B0aW9ucyxcbiAga2V5OiBrZXlvZiBNLFxuICBtb2RlbDogTVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghZGF0YS50eXBlIHx8IG1vZGVsW2tleV0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXRQcmltYXJ5S2V5VmFsdWUgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YXJnZXQ6IE0sXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9O1xuICBpZiAoIWRhdGEubmFtZSkgZGF0YS5uYW1lID0gTW9kZWwuc2VxdWVuY2VOYW1lKG1vZGVsLCBcInBrXCIpO1xuICBsZXQgc2VxdWVuY2U6IFNlcXVlbmNlO1xuICB0cnkge1xuICAgIHNlcXVlbmNlID0gKGF3YWl0IHRoaXMuYWRhcHRlci5TZXF1ZW5jZShkYXRhKSkgYXMgU2VxdWVuY2U7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYEZhaWxlZCB0byBpbnN0YW50aWF0ZSBTZXF1ZW5jZSAke2RhdGEubmFtZX06ICR7ZX1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG5leHQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KGNvbnRleHQgYXMgRmFicmljQ29udHJhY3RDb250ZXh0KTtcbiAgc2V0UHJpbWFyeUtleVZhbHVlKG1vZGVsLCBrZXkgYXMgc3RyaW5nLCBuZXh0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQWRhcHRlciBmb3IgSHlwZXJsZWRnZXIgRmFicmljIGNoYWluY29kZSBzdGF0ZSBkYXRhYmFzZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIENvdWNoREItbGlrZSBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIEZhYnJpYyBzdGF0ZSBkYXRhYmFzZSBmcm9tIHdpdGhpbiBhIGNoYWluY29kZSBjb250cmFjdFxuICogQHRlbXBsYXRlIHZvaWQgLSBObyBjb25maWd1cmF0aW9uIG5lZWRlZCBmb3IgY29udHJhY3QgYWRhcHRlclxuICogQHRlbXBsYXRlIEZhYnJpY0NvbnRyYWN0RmxhZ3MgLSBGbGFncyBzcGVjaWZpYyB0byBGYWJyaWMgY29udHJhY3Qgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIEZhYnJpY0NvbnRyYWN0Q29udGV4dCAtIENvbnRleHQgdHlwZSBmb3IgRmFicmljIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEBjbGFzcyBGYWJyaWNDb250cmFjdEFkYXB0ZXJcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiBhIEZhYnJpYyBjaGFpbmNvZGUgY29udHJhY3QgY2xhc3NcbiAqIGltcG9ydCB7IEZhYnJpY0NvbnRyYWN0QWRhcHRlciB9IGZyb20gJ0BkZWNhZi10cy9mb3ItZmFicmljJztcbiAqXG4gKiBleHBvcnQgY2xhc3MgTXlDb250cmFjdCBleHRlbmRzIENvbnRyYWN0IHtcbiAqICAgcHJpdmF0ZSBhZGFwdGVyID0gbmV3IEZhYnJpY0NvbnRyYWN0QWRhcHRlcigpO1xuICpcbiAqICAgQFRyYW5zYWN0aW9uKClcbiAqICAgYXN5bmMgY3JlYXRlQXNzZXQoY3R4OiBDb250ZXh0LCBpZDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAqICAgICBjb25zdCBtb2RlbCA9IHsgaWQsIGRhdGEsIHRpbWVzdGFtcDogRGF0ZS5ub3coKSB9O1xuICogICAgIGF3YWl0IHRoaXMuYWRhcHRlci5jcmVhdGUoJ2Fzc2V0cycsIGlkLCBtb2RlbCwge30sIHsgc3R1YjogY3R4LnN0dWIgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDb250cmFjdFxuICogICBwYXJ0aWNpcGFudCBGYWJyaWNDb250cmFjdEFkYXB0ZXJcbiAqICAgcGFydGljaXBhbnQgU3R1YlxuICogICBwYXJ0aWNpcGFudCBTdGF0ZURCXG4gKlxuICogICBDb250cmFjdC0+PkZhYnJpY0NvbnRyYWN0QWRhcHRlcjogY3JlYXRlKHRhYmxlTmFtZSwgaWQsIG1vZGVsLCB0cmFuc2llbnQsIGN0eClcbiAqICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+RmFicmljQ29udHJhY3RBZGFwdGVyOiBTZXJpYWxpemUgbW9kZWwgdG8gSlNPTlxuICogICBGYWJyaWNDb250cmFjdEFkYXB0ZXItPj5TdHViOiBwdXRTdGF0ZShpZCwgc2VyaWFsaXplZERhdGEpXG4gKiAgIFN0dWItPj5TdGF0ZURCOiBXcml0ZSBkYXRhXG4gKiAgIFN0YXRlREItLT4+U3R1YjogU3VjY2Vzc1xuICogICBTdHViLS0+PkZhYnJpY0NvbnRyYWN0QWRhcHRlcjogU3VjY2Vzc1xuICogICBGYWJyaWNDb250cmFjdEFkYXB0ZXItLT4+Q29udHJhY3Q6IG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgZXh0ZW5kcyBDb3VjaERCQWRhcHRlcjxcbiAgYW55LFxuICB2b2lkLFxuICBGYWJyaWNDb250cmFjdENvbnRleHRcbj4ge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0Q2xpZW50KCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFwiQ2xpZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gRmFicmljIGNvbnRyYWN0c1wiKTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRleHQgZGVjb2RlciBmb3IgY29udmVydGluZyBiaW5hcnkgZGF0YSB0byBzdHJpbmdzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB0ZXh0RGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcihcInV0ZjhcIik7XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBzZXJpYWxpemVyID0gbmV3IFNpbXBsZURldGVybWluaXN0aWNTZXJpYWxpemVyKCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250ZXh0IGNvbnN0cnVjdG9yIGZvciB0aGlzIGFkYXB0ZXJcbiAgICogQHN1bW1hcnkgT3ZlcnJpZGVzIHRoZSBiYXNlIENvbnRleHQgY29uc3RydWN0b3Igd2l0aCBGYWJyaWNDb250cmFjdENvbnRleHRcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBDb250ZXh0OiBDb25zdHJ1Y3RvcjxGYWJyaWNDb250cmFjdENvbnRleHQ+ID1cbiAgICBGYWJyaWNDb250cmFjdENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSByZXBvc2l0b3J5IGNvbnN0cnVjdG9yIGZvciB0aGlzIGFkYXB0ZXJcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5IGNvbnN0cnVjdG9yIGZvciBjcmVhdGluZyByZXBvc2l0b3JpZXNcbiAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgKiBAcmV0dXJuIHtDb25zdHJ1Y3RvcjxSZXBvc2l0b3J5PE0sIE1hbmdvUXVlcnksIEZhYnJpY0NvbnRyYWN0QWRhcHRlciwgRmFicmljQ29udHJhY3RGbGFncywgRmFicmljQ29udHJhY3RDb250ZXh0Pj59IFRoZSByZXBvc2l0b3J5IGNvbnN0cnVjdG9yXG4gICAqL1xuICBvdmVycmlkZSByZXBvc2l0b3J5PFxuICAgIFIgZXh0ZW5kcyBSZXBvc2l0b3J5PFxuICAgICAgYW55LFxuICAgICAgQWRhcHRlcjxhbnksIHZvaWQsIE1hbmdvUXVlcnksIENvbnRleHQ8RmFicmljQ29udHJhY3RGbGFncz4+XG4gICAgPixcbiAgPigpOiBDb25zdHJ1Y3RvcjxSPiB7XG4gICAgcmV0dXJuIEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeSBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFI+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IEZhYnJpY0NvbnRyYWN0QWRhcHRlciBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhbiBhZGFwdGVyIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHt2b2lkfSBzY29wZSAtIE5vdCB1c2VkIGluIHRoaXMgYWRhcHRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FsaWFzXSAtIE9wdGlvbmFsIGFsaWFzIGZvciB0aGUgYWRhcHRlciBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IHZvaWQsIGFsaWFzPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIEZhYnJpY0ZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGZvcihjb25maWc6IFBhcnRpYWw8YW55PiwgLi4uYXJnczogYW55KTogdHlwZW9mIHRoaXMge1xuICAgIHJldHVybiBzdXBlci5mb3IoY29uZmlnLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHJlY29yZCBpbiB0aGUgc3RhdGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgU2VyaWFsaXplcyBhIG1vZGVsIGFuZCBzdG9yZXMgaXQgaW4gdGhlIEZhYnJpYyBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IGlkIC0gVGhlIHJlY29yZCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgcmVjb3JkIGRhdGFcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0cmFuc2llbnQgLSBUcmFuc2llbnQgZGF0YSAobm90IHVzZWQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbilcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLCBpbmNsdWRpbmcgdGhlIGNoYWluY29kZSBzdHViIGFuZCBsb2dnZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNyZWF0ZWQgcmVjb3JkXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBjcmVhdGU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHQ8RmFicmljQ29udHJhY3RGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2csIHN0dWIgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuY3JlYXRlKTtcbiAgICBsb2cuaW5mbyhgaW4gQURBUFRFUiBjcmVhdGUgd2l0aCBhcmdzICR7YXJnc31gKTtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIHRyeSB7XG4gICAgICBsb2cuaW5mbyhgYWRkaW5nIGVudHJ5IHRvICR7dGFibGVOYW1lfSB0YWJsZSB3aXRoIHBrICR7aWR9YCk7XG4gICAgICBjb25zdCBjb21wb3NlZEtleSA9IHN0dWIuY3JlYXRlQ29tcG9zaXRlS2V5KHRhYmxlTmFtZSwgW1N0cmluZyhpZCldKTtcbiAgICAgIG1vZGVsID0gYXdhaXQgdGhpcy5wdXRTdGF0ZShjb21wb3NlZEtleSwgbW9kZWwsIGN0eCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVhZHMgYSByZWNvcmQgZnJvbSB0aGUgc3RhdGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGFuZCBkZXNlcmlhbGl6ZXMgYSByZWNvcmQgZnJvbSB0aGUgRmFicmljIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLCBpbmNsdWRpbmcgdGhlIGNoYWluY29kZSBzdHViIGFuZCBsb2dnZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJldHJpZXZlZCByZWNvcmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHJlYWQ8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHQ8RmFicmljQ29udHJhY3RGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2csIHN0dWIgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZCk7XG4gICAgbG9nLmluZm8oYGluIEFEQVBURVIgcmVhZCB3aXRoIGFyZ3MgJHthcmdzfWApO1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG5cbiAgICBsZXQgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbXBvc2VkS2V5ID0gc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkodGFibGVOYW1lLCBbU3RyaW5nKGlkKV0pO1xuICAgICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlYWRTdGF0ZShjb21wb3NlZEtleSwgY3R4KTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIGEgcmVjb3JkIGluIHRoZSBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBTZXJpYWxpemVzIGEgbW9kZWwgYW5kIHVwZGF0ZXMgaXQgaW4gdGhlIEZhYnJpYyBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IGlkIC0gVGhlIHJlY29yZCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgdXBkYXRlZCByZWNvcmQgZGF0YVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHRyYW5zaWVudCAtIFRyYW5zaWVudCBkYXRhIChub3QgdXNlZCBpbiB0aGlzIGltcGxlbWVudGF0aW9uKVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMsIGluY2x1ZGluZyB0aGUgY2hhaW5jb2RlIHN0dWIgYW5kIGxvZ2dlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgdXBkYXRlZCByZWNvcmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNDb250cmFjdEZsYWdzPj5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgeyBjdHgsIGxvZywgc3R1YiB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGUpO1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG5cbiAgICB0cnkge1xuICAgICAgbG9nLnZlcmJvc2UoYHVwZGF0aW5nIGVudHJ5IHRvICR7dGFibGVOYW1lfSB0YWJsZSB3aXRoIHBrICR7aWR9YCk7XG4gICAgICBjb25zdCBjb21wb3NlZEtleSA9IHN0dWIuY3JlYXRlQ29tcG9zaXRlS2V5KHRhYmxlTmFtZSwgW1N0cmluZyhpZCldKTtcbiAgICAgIG1vZGVsID0gYXdhaXQgdGhpcy5wdXRTdGF0ZShjb21wb3NlZEtleSwgbW9kZWwsIGN0eCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIHJlY29yZCBmcm9tIHRoZSBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSByZWNvcmQgYW5kIHRoZW4gcmVtb3ZlcyBpdCBmcm9tIHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSByZWNvcmQgaWRlbnRpZmllciB0byBkZWxldGVcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLCBpbmNsdWRpbmcgdGhlIGNoYWluY29kZSBzdHViIGFuZCBsb2dnZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGRlbGV0ZWQgcmVjb3JkXG4gICAqL1xuICBhc3luYyBkZWxldGU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPENvbnRleHQ8RmFicmljQ29udHJhY3RGbGFncz4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2csIGN0eEFyZ3MsIHN0dWIgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuZGVsZXRlKTtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIGxldCBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29tcG9zZWRLZXkgPSBzdHViLmNyZWF0ZUNvbXBvc2l0ZUtleSh0YWJsZU5hbWUsIFtTdHJpbmcoaWQpXSk7XG4gICAgICBtb2RlbCA9IGF3YWl0IHRoaXMucmVhZChjbGF6eiwgaWQsIC4uLmN0eEFyZ3MpO1xuICAgICAgbG9nLnZlcmJvc2UoYGRlbGV0aW5nIGVudHJ5IHdpdGggcGsgJHtpZH0gZnJvbSAke3RhYmxlTmFtZX0gdGFibGVgKTtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU3RhdGUoY29tcG9zZWRLZXksIGN0eCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWxldGVTdGF0ZShpZDogc3RyaW5nLCBjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCkge1xuICAgIGNvbnN0IHsgc3R1YiB9ID0gdGhpcy5sb2dDdHgoW2N0eF0sIHRoaXMuZGVsZXRlU3RhdGUpO1xuICAgIGF3YWl0IHN0dWIuZGVsZXRlU3RhdGUoaWQpO1xuICB9XG5cbiAgZm9yUHJpdmF0ZShjb2xsZWN0aW9uOiBzdHJpbmcpOiBGYWJyaWNDb250cmFjdEFkYXB0ZXIge1xuICAgIGNvbnN0IHRvT3ZlcnJpZGUgPSBbXG4gICAgICB0aGlzLnB1dFN0YXRlLFxuICAgICAgdGhpcy5yZWFkU3RhdGUsXG4gICAgICB0aGlzLmRlbGV0ZVN0YXRlLFxuICAgICAgdGhpcy5xdWVyeVJlc3VsdCxcbiAgICAgIHRoaXMucXVlcnlSZXN1bHRQYWdpbmF0ZWQsXG4gICAgXS5tYXAoKGZuKSA9PiBmbi5uYW1lKTtcbiAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHtcbiAgICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgIGlmICghdG9PdmVycmlkZS5pbmNsdWRlcyhwcm9wIGFzIHN0cmluZykpXG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KCh0YXJnZXQgYXMgYW55KVtwcm9wXSwge1xuICAgICAgICAgIGFzeW5jIGFwcGx5KGZuLCB0aGlzQXJnLCBhcmdzTGlzdCkge1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJwdXRTdGF0ZVwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3N0dWIsIGlkLCBtb2RlbF0gPSBhcmdzTGlzdDtcbiAgICAgICAgICAgICAgICBhd2FpdCBzdHViLnB1dFByaXZhdGVEYXRhKGNvbGxlY3Rpb24sIGlkLnRvU3RyaW5nKCksIG1vZGVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVN0YXRlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc3R1YiwgaWRdID0gYXJnc0xpc3Q7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChzdHViIGFzIENoYWluY29kZVN0dWIpLmRlbGV0ZVByaXZhdGVEYXRhKFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwicmVhZFN0YXRlXCI6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc3R1YiwgaWRdID0gYXJnc0xpc3Q7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0dWIuZ2V0UHJpdmF0ZURhdGEoY29sbGVjdGlvbiwgaWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgXCJxdWVyeVJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3N0dWIsIHJhd0lucHV0XSA9IGFyZ3NMaXN0O1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHViLmdldFByaXZhdGVEYXRhUXVlcnlSZXN1bHQoY29sbGVjdGlvbiwgcmF3SW5wdXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgXCJxdWVyeVJlc3VsdFBhZ2luYXRlZFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3N0dWIsIHJhd0lucHV0LCBsaW1pdCwgc2tpcF0gPSBhcmdzTGlzdDtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvciA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICAgIHN0dWIgYXMgQ2hhaW5jb2RlU3R1YlxuICAgICAgICAgICAgICAgICkuZ2V0UHJpdmF0ZURhdGFRdWVyeVJlc3VsdChjb2xsZWN0aW9uLCByYXdJbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0czogYW55W10gPSBbXTtcbiAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgIGxldCByZWFjaGVkQm9va21hcmsgPSBza2lwID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBsYXN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZXMudmFsdWUgJiYgcmVzLnZhbHVlLnZhbHVlLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gcmVzLnZhbHVlLmtleTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkVmFsdWUgPSAocmVzLnZhbHVlLnZhbHVlIGFzIGFueSkudG9TdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ1dGY4XCJcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc2tpcCwgc2tpcCB1bnRpbCB3ZSByZWFjaCBpdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlYWNoZWRCb29rbWFyaykge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRLZXkgPT09IHNraXA/LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRCb29rbWFyayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICBLZXk6IHJlY29yZEtleSxcbiAgICAgICAgICAgICAgICAgICAgICBSZWNvcmQ6IEpTT04ucGFyc2UocmVjb3JkVmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbGFzdEtleSA9IHJlY29yZEtleTtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPj0gbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBpdGVyYXRvci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyBhcyB1bmtub3duIGFzIEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGVkUmVjb3Jkc0NvdW50OiByZXN1bHRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9va21hcms6IGxhc3RLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGl0ZXJhdG9yLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzIGFzIHVua25vd24gYXMgSXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZFJlY29yZHNDb3VudDogcmVzdWx0cy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBib29rbWFyazogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgYFVuc3VwcG9ydGVkIG1ldGhvZCBvdmVycmlkZSAke1N0cmluZyhwcm9wKX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHV0U3RhdGUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dFxuICApIHtcbiAgICBsZXQgZGF0YTogQnVmZmVyO1xuXG4gICAgY29uc3QgeyBzdHViLCBsb2cgfSA9IHRoaXMubG9nQ3R4KFtjdHhdLCB0aGlzLnB1dFN0YXRlKTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICBGYWJyaWNDb250cmFjdEFkYXB0ZXIuc2VyaWFsaXplci5zZXJpYWxpemUobW9kZWwgYXMgTW9kZWwpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gc2VyaWFsaXplIHJlY29yZCB3aXRoIGlkICR7aWR9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gY3R4LmdldChcInNlZ3JlZ2F0ZWRcIik7XG4gICAgaWYgKGNvbGxlY3Rpb24pIGF3YWl0IHN0dWIucHV0UHJpdmF0ZURhdGEoY29sbGVjdGlvbiwgaWQudG9TdHJpbmcoKSwgZGF0YSk7XG4gICAgZWxzZSBhd2FpdCBzdHViLnB1dFN0YXRlKGlkLnRvU3RyaW5nKCksIGRhdGEpO1xuXG4gICAgbG9nLnNpbGx5KFxuICAgICAgYHN0YXRlIHN0b3JlZCR7Y29sbGVjdGlvbiA/IGAgaW4gJHtjb2xsZWN0aW9ufSBjb2xsZWN0aW9uYCA6IFwiXCJ9IHVuZGVyIGlkICR7aWR9YFxuICAgICk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlYWRTdGF0ZShpZDogc3RyaW5nLCBjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCkge1xuICAgIGxldCByZXN1bHQ6IGFueTtcblxuICAgIGNvbnN0IHsgc3R1YiwgbG9nIH0gPSB0aGlzLmxvZ0N0eChbY3R4XSwgdGhpcy5yZWFkU3RhdGUpO1xuICAgIGxldCByZXM6IHN0cmluZztcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gY3R4LmdldChcInNlZ3JlZ2F0ZWRcIik7XG4gICAgaWYgKGNvbGxlY3Rpb24pXG4gICAgICByZXMgPSAoYXdhaXQgc3R1Yi5nZXRQcml2YXRlRGF0YShjb2xsZWN0aW9uLCBpZC50b1N0cmluZygpKSkudG9TdHJpbmcoKTtcbiAgICBlbHNlIHJlcyA9IChhd2FpdCBzdHViLmdldFN0YXRlKGlkLnRvU3RyaW5nKCkpKS50b1N0cmluZygpO1xuXG4gICAgaWYgKCFyZXMpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYFJlY29yZCB3aXRoIGlkICR7aWR9JHtjb2xsZWN0aW9uID8gYCBpbiAke2NvbGxlY3Rpb259IGNvbGxlY3Rpb25gIDogXCJcIn0gbm90IGZvdW5kYFxuICAgICAgKTtcbiAgICBsb2cuc2lsbHkoXG4gICAgICBgc3RhdGUgcmV0cmlldmVkIGZyb20ke2NvbGxlY3Rpb24gPyBgICR7Y29sbGVjdGlvbn0gY29sbGVjdGlvbmAgOiBcIlwifSB1bmRlciBpZCAke2lkfWBcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBGYWJyaWNDb250cmFjdEFkYXB0ZXIuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShyZXMudG9TdHJpbmcoKSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJlY29yZDogJHtlfWApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcXVlcnlSZXN1bHQoXG4gICAgc3R1YjogQ2hhaW5jb2RlU3R1YixcbiAgICByYXdJbnB1dDogYW55LFxuXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZFN0YXRlKTtcbiAgICBsZXQgcmVzOiBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yO1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjdHguZ2V0KFwic2VncmVnYXRlZFwiKTtcbiAgICBpZiAoY29sbGVjdGlvbilcbiAgICAgIHJlcyA9IGF3YWl0IHN0dWIuZ2V0UHJpdmF0ZURhdGFRdWVyeVJlc3VsdChcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmF3SW5wdXQpXG4gICAgICApO1xuICAgIGVsc2UgcmVzID0gYXdhaXQgc3R1Yi5nZXRRdWVyeVJlc3VsdChKU09OLnN0cmluZ2lmeShyYXdJbnB1dCkpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBxdWVyeVJlc3VsdFBhZ2luYXRlZChcbiAgICBzdHViOiBDaGFpbmNvZGVTdHViLFxuICAgIHJhd0lucHV0OiBhbnksXG4gICAgbGltaXQ6IG51bWJlciA9IDI1MCxcbiAgICBza2lwPzogbnVtYmVyLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8U3RhdGVRdWVyeVJlc3BvbnNlPEl0ZXJhdG9ycy5TdGF0ZVF1ZXJ5SXRlcmF0b3I+PiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZFN0YXRlKTtcbiAgICBsZXQgcmVzOiBTdGF0ZVF1ZXJ5UmVzcG9uc2U8SXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcj47XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IGN0eC5nZXQoXCJzZWdyZWdhdGVkXCIpO1xuICAgIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICByYXdJbnB1dC5zZWxlY3RvciA9IHtcbiAgICAgICAgLi4ucmF3SW5wdXQuc2VsZWN0b3IsXG4gICAgICAgIF9pZDogc2tpcCA/IHsgJGd0OiBza2lwLnRvU3RyaW5nKCkgfSA6IHsgJGd0ZTogXCJcIiB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGl0ID0gYXdhaXQgc3R1Yi5nZXRQcml2YXRlRGF0YVF1ZXJ5UmVzdWx0KFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyYXdJbnB1dClcbiAgICAgICk7XG4gICAgICByZXMgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiBpdCxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBmZXRjaGVkUmVjb3Jkc0NvdW50OiBsaW1pdCxcbiAgICAgICAgICBib29rbWFyazogXCJcIixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlXG4gICAgICByZXMgPSBhd2FpdCBzdHViLmdldFF1ZXJ5UmVzdWx0V2l0aFBhZ2luYXRpb24oXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJhd0lucHV0KSxcbiAgICAgICAgbGltaXQsXG4gICAgICAgIHNraXA/LnRvU3RyaW5nKClcbiAgICAgICk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1lcmdlTW9kZWxzKHJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IGV4dHJhY3QgPSAobW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+XG4gICAgICBPYmplY3QuZW50cmllcyhtb2RlbCkucmVkdWNlKChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbCAhPT0gXCJ1bmRlZmluZWRcIikgYWNjdW1ba2V5XSA9IHZhbDtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSwge30pO1xuXG4gICAgbGV0IGZpbmFsTW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSByZXN1bHRzLnBvcCgpIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgICBmb3IgKGNvbnN0IHJlcyBvZiByZXN1bHRzKSB7XG4gICAgICBmaW5hbE1vZGVsID0gT2JqZWN0LmFzc2lnbih7fSwgZXh0cmFjdChmaW5hbE1vZGVsKSwgZXh0cmFjdChyZXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxNb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVjb2RlcyBiaW5hcnkgZGF0YSB0byBzdHJpbmdcbiAgICogQHN1bW1hcnkgQ29udmVydHMgYSBVaW50OEFycmF5IHRvIGEgc3RyaW5nIHVzaW5nIFVURi04IGVuY29kaW5nXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmZmVyIC0gVGhlIGJpbmFyeSBkYXRhIHRvIGRlY29kZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBkZWNvZGVkIHN0cmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIGRlY29kZShidWZmZXI6IFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gRmFicmljQ29udHJhY3RBZGFwdGVyLnRleHREZWNvZGVyLmRlY29kZShidWZmZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG9wZXJhdGlvbiBmbGFncyBmb3IgRmFicmljIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAgICogQHN1bW1hcnkgTWVyZ2VzIGRlZmF1bHQgZmxhZ3Mgd2l0aCBGYWJyaWMtc3BlY2lmaWMgY29udGV4dCBpbmZvcm1hdGlvblxuICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c30gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWRcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gbW9kZWwgLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtQYXJ0aWFsPEZhYnJpY0NvbnRyYWN0RmxhZ3M+fSBmbGFncyAtIFBhcnRpYWwgZmxhZ3MgdG8gbWVyZ2Ugd2l0aCBkZWZhdWx0c1xuICAgKiBAcGFyYW0ge0N0eH0gY3R4IC0gVGhlIEZhYnJpYyBjaGFpbmNvZGUgY29udGV4dFxuICAgKiBAcmV0dXJuIHtGYWJyaWNDb250cmFjdEZsYWdzfSBUaGUgbWVyZ2VkIGZsYWdzXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmxhZ3M8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvcGVyYXRpb246IE9wZXJhdGlvbktleXMsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+LFxuICAgIGZsYWdzOiBQYXJ0aWFsPEZhYnJpY0NvbnRyYWN0RmxhZ3M+LFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RmFicmljQ29udHJhY3RGbGFncz4ge1xuICAgIGNvbnN0IGJhc2VGbGFncyA9IHtcbiAgICAgIHN0dWI6IGN0eC5zdHViLFxuICAgICAgc2VncmVnYXRlZDogZmFsc2UsXG4gICAgfTtcbiAgICBpZiAoY3R4IGluc3RhbmNlb2YgRmFicmljQ29udHJhY3RDb250ZXh0KSB7XG4gICAgICBPYmplY3QuYXNzaWduKGJhc2VGbGFncywge1xuICAgICAgICBsb2dnZXI6IGN0eC5sb2dnZXIsXG4gICAgICAgIGlkZW50aXR5OiBjdHguaWRlbnRpdHksXG4gICAgICAgIGNvcnJlbGF0aW9uSWQ6IGN0eC5zdHViLmdldFR4SUQoKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuYXNzaWduKGJhc2VGbGFncywge1xuICAgICAgICBpZGVudGl0eTogY3R4LmNsaWVudElkZW50aXR5LFxuICAgICAgICBsb2dnZXI6IG5ldyBDb250cmFjdExvZ2dlcih0aGlzIGFzIGFueSwgdW5kZWZpbmVkLCBjdHgpLFxuICAgICAgICBjb3JyZWxhdGlvbklkOiBjdHguc3R1Yi5nZXRUeElEKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmbGFncyA9IChhd2FpdCBzdXBlci5mbGFncyhcbiAgICAgIG9wZXJhdGlvbixcbiAgICAgIG1vZGVsLFxuICAgICAgYmFzZUZsYWdzIGFzIGFueSxcbiAgICAgIC4uLmFyZ3NcbiAgICApKSBhcyBGYWJyaWNDb250cmFjdEZsYWdzO1xuXG4gICAgcmV0dXJuIGZsYWdzIGFzIEZhYnJpY0NvbnRyYWN0RmxhZ3M7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gaW5kZXggZm9yIGEgbW9kZWxcbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIGZvciBGYWJyaWMgY29udHJhY3RzIGFuZCByZXR1cm5zIGEgcmVzb2x2ZWQgcHJvbWlzZVxuICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IG1vZGVscyAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJvdGVjdGVkIGluZGV4PE0+KG1vZGVsczogQ29uc3RydWN0b3I8TT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByb2Nlc3NlcyByZXN1bHRzIGZyb20gYSBzdGF0ZSBxdWVyeSBpdGVyYXRvclxuICAgKiBAc3VtbWFyeSBJdGVyYXRlcyB0aHJvdWdoIHF1ZXJ5IHJlc3VsdHMgYW5kIGNvbnZlcnRzIHRoZW0gdG8gYSBzdHJ1Y3R1cmVkIGZvcm1hdFxuICAgKiBAcGFyYW0ge0xvZ2dlcn0gbG9nIC0gTG9nZ2VyIGluc3RhbmNlIGZvciBkZWJ1Z2dpbmdcbiAgICogQHBhcmFtIHtJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yfSBpdGVyYXRvciAtIFRoZSBzdGF0ZSBxdWVyeSBpdGVyYXRvclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0hpc3Rvcnk9ZmFsc2VdIC0gV2hldGhlciB0aGlzIGlzIGEgaGlzdG9yeSBxdWVyeVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPGFueVtdPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gYW4gYXJyYXkgb2YgcHJvY2Vzc2VkIHJlc3VsdHNcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUmVzdWx0SXRlcmF0b3JcbiAgICogICBwYXJ0aWNpcGFudCBJdGVyYXRvclxuICAgKlxuICAgKiAgIENhbGxlci0+PlJlc3VsdEl0ZXJhdG9yOiByZXN1bHRJdGVyYXRvcihsb2csIGl0ZXJhdG9yLCBpc0hpc3RvcnkpXG4gICAqICAgbG9vcCBVbnRpbCBkb25lXG4gICAqICAgICBSZXN1bHRJdGVyYXRvci0+Pkl0ZXJhdG9yOiBuZXh0KClcbiAgICogICAgIEl0ZXJhdG9yLS0+PlJlc3VsdEl0ZXJhdG9yOiB7IHZhbHVlLCBkb25lIH1cbiAgICogICAgIGFsdCBIYXMgdmFsdWVcbiAgICogICAgICAgUmVzdWx0SXRlcmF0b3ItPj5SZXN1bHRJdGVyYXRvcjogUHJvY2VzcyB2YWx1ZSBiYXNlZCBvbiBpc0hpc3RvcnlcbiAgICogICAgICAgUmVzdWx0SXRlcmF0b3ItPj5SZXN1bHRJdGVyYXRvcjogQWRkIHRvIHJlc3VsdHMgYXJyYXlcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKiAgIFJlc3VsdEl0ZXJhdG9yLT4+SXRlcmF0b3I6IGNsb3NlKClcbiAgICogICBSZXN1bHRJdGVyYXRvci0tPj5DYWxsZXI6IGFsbFJlc3VsdHNcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZXN1bHRJdGVyYXRvcihcbiAgICBsb2c6IExvZ2dlcixcbiAgICBpdGVyYXRvcjogSXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcixcbiAgICBpc0hpc3RvcnkgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBhbGxSZXN1bHRzID0gW107XG4gICAgbGV0IHJlczogeyB2YWx1ZTogYW55OyBkb25lOiBib29sZWFuIH0gPSBhd2FpdCBpdGVyYXRvci5uZXh0KCk7XG4gICAgd2hpbGUgKCFyZXMuZG9uZSkge1xuICAgICAgaWYgKHJlcy52YWx1ZSAmJiByZXMudmFsdWUudmFsdWUudG9TdHJpbmcoKSkge1xuICAgICAgICBsZXQganNvblJlczogYW55ID0ge307XG4gICAgICAgIGxvZy5kZWJ1ZyhyZXMudmFsdWUudmFsdWUudG9TdHJpbmcoXCJ1dGY4XCIpKTtcbiAgICAgICAgaWYgKGlzSGlzdG9yeSAvKiAmJiBpc0hpc3RvcnkgPT09IHRydWUqLykge1xuICAgICAgICAgIGpzb25SZXMuVHhJZCA9IHJlcy52YWx1ZS50eElkO1xuICAgICAgICAgIGpzb25SZXMuVGltZXN0YW1wID0gcmVzLnZhbHVlLnRpbWVzdGFtcDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAganNvblJlcy5WYWx1ZSA9IEpTT04ucGFyc2UocmVzLnZhbHVlLnZhbHVlLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihlcnIpO1xuICAgICAgICAgICAganNvblJlcy5WYWx1ZSA9IHJlcy52YWx1ZS52YWx1ZS50b1N0cmluZyhcInV0ZjhcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBqc29uUmVzID0gSlNPTi5wYXJzZShyZXMudmFsdWUudmFsdWUudG9TdHJpbmcoXCJ1dGY4XCIpKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgbG9nLmVycm9yKGVycik7XG4gICAgICAgICAgICBqc29uUmVzID0gcmVzLnZhbHVlLnZhbHVlLnRvU3RyaW5nKFwidXRmOFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWxsUmVzdWx0cy5wdXNoKGpzb25SZXMpO1xuICAgICAgfVxuICAgICAgcmVzID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYENsb3NpbmcgaXRlcmF0b3IgYWZ0ZXIgJHthbGxSZXN1bHRzLmxlbmd0aH0gcmVzdWx0c2ApO1xuICAgIGl0ZXJhdG9yLmNsb3NlKCk7IC8vIHB1cnBvc2VseSBub3QgYXdhaXQuIGxldCBpdGVyYXRvciBjbG9zZSBvbiBpdHMgb3duXG4gICAgcmV0dXJuIGFsbFJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgcmF3IHF1ZXJ5IGFnYWluc3QgdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IFBlcmZvcm1zIGEgcmljaCBxdWVyeSB1c2luZyBDb3VjaERCIHN5bnRheCBhZ2FpbnN0IHRoZSBGYWJyaWMgc3RhdGUgZGF0YWJhc2VcbiAgICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGVcbiAgICogQHBhcmFtIHtNYW5nb1F1ZXJ5fSByYXdJbnB1dCAtIFRoZSBNYW5nbyBRdWVyeSB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9jc09ubHkgLSBXaGV0aGVyIHRvIHJldHVybiBvbmx5IGRvY3VtZW50cyAobm90IHVzZWQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbilcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzLCBpbmNsdWRpbmcgdGhlIGNoYWluY29kZSBzdHViIGFuZCBsb2dnZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHF1ZXJ5IHJlc3VsdHNcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgRmFicmljQ29udHJhY3RBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgU3R1YlxuICAgKiAgIHBhcnRpY2lwYW50IFN0YXRlREJcbiAgICpcbiAgICogICBDYWxsZXItPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IHJhdyhyYXdJbnB1dCwgZG9jc09ubHksIGN0eClcbiAgICogICBGYWJyaWNDb250cmFjdEFkYXB0ZXItPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IEV4dHJhY3QgbGltaXQgYW5kIHNraXBcbiAgICogICBhbHQgV2l0aCBwYWdpbmF0aW9uXG4gICAqICAgICBGYWJyaWNDb250cmFjdEFkYXB0ZXItPj5TdHViOiBnZXRRdWVyeVJlc3VsdFdpdGhQYWdpbmF0aW9uKHF1ZXJ5LCBsaW1pdCwgc2tpcClcbiAgICogICBlbHNlIFdpdGhvdXQgcGFnaW5hdGlvblxuICAgKiAgICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+U3R1YjogZ2V0UXVlcnlSZXN1bHQocXVlcnkpXG4gICAqICAgZW5kXG4gICAqICAgU3R1Yi0+PlN0YXRlREI6IEV4ZWN1dGUgcXVlcnlcbiAgICogICBTdGF0ZURCLS0+PlN0dWI6IEl0ZXJhdG9yXG4gICAqICAgU3R1Yi0tPj5GYWJyaWNDb250cmFjdEFkYXB0ZXI6IEl0ZXJhdG9yXG4gICAqICAgRmFicmljQ29udHJhY3RBZGFwdGVyLT4+RmFicmljQ29udHJhY3RBZGFwdGVyOiByZXN1bHRJdGVyYXRvcihsb2csIGl0ZXJhdG9yKVxuICAgKiAgIEZhYnJpY0NvbnRyYWN0QWRhcHRlci0tPj5DYWxsZXI6IHJlc3VsdHNcbiAgICovXG4gIGFzeW5jIHJhdzxSLCBEIGV4dGVuZHMgYm9vbGVhbj4oXG4gICAgcmF3SW5wdXQ6IE1hbmdvUXVlcnksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGRvY3NPbmx5OiBEID0gdHJ1ZSBhcyBELFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPEZhYnJpY0NvbnRyYWN0Q29udGV4dD5cbiAgKTogUHJvbWlzZTxSYXdSZXN1bHQ8UiwgRD4+IHtcbiAgICBjb25zdCB7IGxvZywgc3R1YiB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yYXcpO1xuXG4gICAgY29uc3QgeyBza2lwLCBsaW1pdCB9ID0gcmF3SW5wdXQ7XG4gICAgbGV0IGl0ZXJhdG9yOiBJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yO1xuICAgIGlmIChsaW1pdCB8fCBza2lwKSB7XG4gICAgICBkZWxldGUgcmF3SW5wdXRbXCJsaW1pdFwiXTtcbiAgICAgIGRlbGV0ZSByYXdJbnB1dFtcInNraXBcIl07XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBSZXRyaWV2aW5nIHBhZ2luYXRlZCBpdGVyYXRvcjogbGltaXQ6ICR7bGltaXR9LyBza2lwOiAke3NraXB9YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBTdGF0ZVF1ZXJ5UmVzcG9uc2U8SXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcj4gPVxuICAgICAgICAoYXdhaXQgdGhpcy5xdWVyeVJlc3VsdFBhZ2luYXRlZChcbiAgICAgICAgICBzdHViLFxuICAgICAgICAgIHJhd0lucHV0LFxuICAgICAgICAgIGxpbWl0IHx8IDI1MCxcbiAgICAgICAgICAoc2tpcCBhcyBhbnkpPy50b1N0cmluZygpXG4gICAgICAgICkpIGFzIFN0YXRlUXVlcnlSZXNwb25zZTxJdGVyYXRvcnMuU3RhdGVRdWVyeUl0ZXJhdG9yPjtcbiAgICAgIGl0ZXJhdG9yID0gcmVzcG9uc2UuaXRlcmF0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIlJldHJpZXZpbmcgaXRlcmF0b3JcIik7XG4gICAgICBpdGVyYXRvciA9IChhd2FpdCB0aGlzLnF1ZXJ5UmVzdWx0KFxuICAgICAgICBzdHViLFxuICAgICAgICByYXdJbnB1dFxuICAgICAgKSkgYXMgSXRlcmF0b3JzLlN0YXRlUXVlcnlJdGVyYXRvcjtcbiAgICB9XG4gICAgbG9nLmRlYnVnKFwiSXRlcmF0b3IgYWNxdWlyZWRcIik7XG5cbiAgICBjb25zdCByZXN1bHRzID0gKGF3YWl0IHRoaXMucmVzdWx0SXRlcmF0b3IobG9nLCBpdGVyYXRvcikpIGFzIFI7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJldHVybmluZyAke0FycmF5LmlzQXJyYXkocmVzdWx0cykgPyByZXN1bHRzLmxlbmd0aCA6IDF9IHJlc3VsdHNgXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cyBhcyBhbnk7XG4gIH1cblxuICBvdmVycmlkZSBTdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsPigpOiBGYWJyaWNTdGF0ZW1lbnQ8TSwgYW55PiB7XG4gICAgcmV0dXJuIG5ldyBGYWJyaWNTdGF0ZW1lbnQodGhpcyBhcyBhbnkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlQWxsPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFibGVOYW1lOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGVbXSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPEZhYnJpY0NvbnRyYWN0Q29udGV4dD5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBpZiAoaWQubGVuZ3RoICE9PSBtb2RlbC5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuY3JlYXRlQWxsKTtcbiAgICBjb25zdCB0YWJsZUxhYmVsID0gTW9kZWwudGFibGVOYW1lKHRhYmxlTmFtZSk7XG4gICAgbG9nLmRlYnVnKGBDcmVhdGluZyAke2lkLmxlbmd0aH0gZW50cmllcyAke3RhYmxlTGFiZWx9IHRhYmxlYCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaWQubWFwKChpLCBjb3VudCkgPT4gdGhpcy5jcmVhdGUodGFibGVOYW1lLCBpLCBtb2RlbFtjb3VudF0sIC4uLmN0eEFyZ3MpKVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cGRhdGVBbGw8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YWJsZU5hbWU6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZVtdLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZC5sZW5ndGggIT09IG1vZGVsLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGVBbGwpO1xuICAgIGNvbnN0IHRhYmxlTGFiZWwgPSBNb2RlbC50YWJsZU5hbWUodGFibGVOYW1lKTtcbiAgICBsb2cuZGVidWcoYFVwZGF0aW5nICR7aWQubGVuZ3RofSBlbnRyaWVzICR7dGFibGVMYWJlbH0gdGFibGVgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpZC5tYXAoKGksIGNvdW50KSA9PiB0aGlzLnVwZGF0ZSh0YWJsZU5hbWUsIGksIG1vZGVsW2NvdW50XSwgLi4uY3R4QXJncykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBrXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqL1xuICBvdmVycmlkZSBwcmVwYXJlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBQcmVwYXJlZE1vZGVsIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5wcmVwYXJlKTtcblxuICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShtb2RlbC5jb25zdHJ1Y3RvciBhcyBhbnkpO1xuICAgIGNvbnN0IHBrID0gTW9kZWwucGsobW9kZWwuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgICBjb25zdCBzcGxpdCA9IE1vZGVsLnNlZ3JlZ2F0ZShtb2RlbCk7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoc3BsaXQubW9kZWwpLnJlZHVjZShcbiAgICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGFjY3VtO1xuICAgICAgICBjb25zdCBtYXBwZWRQcm9wID0gTW9kZWwuY29sdW1uTmFtZShtb2RlbCwga2V5IGFzIGFueSk7XG4gICAgICAgIGlmICh0aGlzLmlzUmVzZXJ2ZWQobWFwcGVkUHJvcCkpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFByb3BlcnR5IG5hbWUgJHttYXBwZWRQcm9wfSBpcyByZXNlcnZlZGApO1xuICAgICAgICBhY2N1bVttYXBwZWRQcm9wXSA9IHZhbDtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGxvZy5zaWxseShcbiAgICAgIGBQcmVwYXJpbmcgcmVjb3JkIGZvciAke3RhYmxlTmFtZX0gdGFibGUgd2l0aCBwayAkeyhtb2RlbCBhcyBhbnkpW3BrXX1gXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWNvcmQ6IHJlc3VsdCxcbiAgICAgIGlkOiAobW9kZWwgYXMgYW55KVtwa10gYXMgc3RyaW5nLFxuICAgICAgdHJhbnNpZW50OiBzcGxpdC50cmFuc2llbnQsXG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJldmVydDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIHRyYW5zaWVudD86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBNIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZXZlcnQpO1xuICAgIGNvbnN0IG9iOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgY29uc3QgcGsgPSBNb2RlbC5wayhjbGF6eik7XG4gICAgb2JbcGsgYXMgc3RyaW5nXSA9IGlkO1xuICAgIGNvbnN0IG0gPSAoXG4gICAgICB0eXBlb2YgY2xhenogPT09IFwic3RyaW5nXCIgPyBNb2RlbC5idWlsZChvYiwgY2xhenopIDogbmV3IGNsYXp6KG9iKVxuICAgICkgYXMgTTtcbiAgICBsb2cuc2lsbHkoYFJlYnVpbGRpbmcgbW9kZWwgJHttLmNvbnN0cnVjdG9yLm5hbWV9IGlkICR7aWR9YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmtleXMobSkucmVkdWNlKChhY2N1bTogTSwga2V5KSA9PiB7XG4gICAgICAoYWNjdW0gYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XSA9XG4gICAgICAgIG9ialtNb2RlbC5jb2x1bW5OYW1lKGFjY3VtLCBrZXkgYXMgYW55KV07XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwgbSk7XG5cbiAgICBpZiAodHJhbnNpZW50KSB7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGByZS1hZGRpbmcgdHJhbnNpZW50IHByb3BlcnRpZXM6ICR7T2JqZWN0LmtleXModHJhbnNpZW50KS5qb2luKFwiLCBcIil9YFxuICAgICAgKTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRyYW5zaWVudCkuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHJlc3VsdCAmJiAocmVzdWx0IGFzIGFueSlba2V5XSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYFRyYW5zaWVudCBwcm9wZXJ0eSAke2tleX0gYWxyZWFkeSBleGlzdHMgb24gbW9kZWwgJHttLmNvbnN0cnVjdG9yLm5hbWV9LiBzaG91bGQgYmUgaW1wb3NzaWJsZWBcbiAgICAgICAgICApO1xuICAgICAgICByZXN1bHRba2V5IGFzIGtleW9mIE1dID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG92ZXJyaWRlIGNyZWF0ZVByZWZpeDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICkge1xuICAgIGNvbnN0IHsgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGVQcmVmaXgpO1xuICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSBNb2RlbC50YWJsZU5hbWUodGFibGVOYW1lKTtcbiAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWwpO1xuXG4gICAgcmV0dXJuIFt0YWJsZU5hbWUsIGlkLCByZWNvcmQsIC4uLmN0eEFyZ3NdIGFzIFtcbiAgICAgIENvbnN0cnVjdG9yPE0+LFxuICAgICAgUHJpbWFyeUtleVR5cGUsXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgLi4uYW55W10sXG4gICAgICBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gICAgXTtcbiAgfVxuXG4gIG92ZXJyaWRlIHVwZGF0ZVByZWZpeDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICk6IGFueVtdIHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMudXBkYXRlUHJlZml4KTtcbiAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICByZWNvcmRbQ291Y2hEQktleXMuVEFCTEVdID0gTW9kZWwudGFibGVOYW1lKHRhYmxlTmFtZSk7XG4gICAgT2JqZWN0LmFzc2lnbihyZWNvcmQsIG1vZGVsKTtcblxuICAgIHJldHVybiBbdGFibGVOYW1lLCBpZCwgcmVjb3JkLCAuLi5jdHhBcmdzXSBhcyBbXG4gICAgICBDb25zdHJ1Y3RvcjxNPixcbiAgICAgIFByaW1hcnlLZXlUeXBlLFxuICAgICAgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIC4uLmFueVtdLFxuICAgICAgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIF07XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlQWxsUHJlZml4PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFibGVOYW1lOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZHM6IFByaW1hcnlLZXlUeXBlW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogWy4uLmFueSwgRmFicmljQ29udHJhY3RDb250ZXh0XVxuICApOiAoc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IFJlY29yZDxzdHJpbmcsIGFueT5bXSlbXSB7XG4gICAgaWYgKGlkcy5sZW5ndGggIT09IG1vZGVscy5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG5cbiAgICBjb25zdCBjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCA9IGFyZ3MucG9wKCk7XG5cbiAgICBjb25zdCByZWNvcmRzID0gaWRzLm1hcCgoaWQsIGNvdW50KSA9PiB7XG4gICAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSB0YWJsZU5hbWU7XG4gICAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWxzW2NvdW50XSk7XG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH0pO1xuICAgIHJldHVybiBbdGFibGVOYW1lLCBpZHMsIHJlY29yZHMsIGN0eCBhcyBhbnldO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUFsbFByZWZpeDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4sXG4gICAgaWRzOiBQcmltYXJ5S2V5VHlwZVtdLFxuICAgIG1vZGVsczogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IFsuLi5hbnksIEZhYnJpY0NvbnRyYWN0Q29udGV4dF1cbiAgKSB7XG4gICAgaWYgKGlkcy5sZW5ndGggIT09IG1vZGVscy5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG5cbiAgICBjb25zdCBjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCA9IGFyZ3MucG9wKCk7XG5cbiAgICBjb25zdCByZWNvcmRzID0gaWRzLm1hcCgoaWQsIGNvdW50KSA9PiB7XG4gICAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIHJlY29yZFtDb3VjaERCS2V5cy5UQUJMRV0gPSB0YWJsZU5hbWU7XG4gICAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgbW9kZWxzW2NvdW50XSk7XG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH0pO1xuICAgIHJldHVybiBbdGFibGVOYW1lLCBpZHMsIHJlY29yZHMsIGN0eCBhcyBhbnldO1xuICB9XG5cbiAgb3ZlcnJpZGUgcGFyc2VFcnJvcjxFIGV4dGVuZHMgQmFzZUVycm9yPihcbiAgICBlcnI6IEVycm9yIHwgc3RyaW5nLFxuICAgIHJlYXNvbj86IHN0cmluZ1xuICApOiBFIHtcbiAgICByZXR1cm4gRmFicmljQ29udHJhY3RBZGFwdGVyLnBhcnNlRXJyb3IocmVhc29uIHx8IGVycik7XG4gIH1cblxuICBvdmVycmlkZSBsb2dDdHg8QVJHUyBleHRlbmRzIGFueVtdPihcbiAgICBhcmdzOiBBUkdTLFxuICAgIG1ldGhvZDogKCguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB8IHN0cmluZ1xuICApOiBDb250ZXh0dWFsaXplZEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0LCBBUkdTPiAmIHtcbiAgICBzdHViOiBDaGFpbmNvZGVTdHViO1xuICAgIGlkZW50aXR5OiBDbGllbnRJZGVudGl0eTtcbiAgfSB7XG4gICAgcmV0dXJuIEZhYnJpY0NvbnRyYWN0QWRhcHRlci5sb2dDdHguY2FsbCh0aGlzLCBhcmdzLCBtZXRob2QgYXMgYW55KSBhcyBhbnk7XG4gIH1cblxuICBzdGF0aWMgb3ZlcnJpZGUgbG9nQ3R4PEFSR1MgZXh0ZW5kcyBhbnlbXT4oXG4gICAgdGhpczogYW55LFxuICAgIGFyZ3M6IEFSR1MsXG4gICAgbWV0aG9kOiBzdHJpbmdcbiAgKTogQ29udGV4dHVhbGl6ZWRBcmdzPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4gJiB7XG4gICAgc3R1YjogQ2hhaW5jb2RlU3R1YjtcbiAgICBpZGVudGl0eTogQ2xpZW50SWRlbnRpdHk7XG4gIH07XG4gIHN0YXRpYyBvdmVycmlkZSBsb2dDdHg8QVJHUyBleHRlbmRzIGFueVtdPihcbiAgICB0aGlzOiBhbnksXG4gICAgYXJnczogQVJHUyxcbiAgICBtZXRob2Q6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG4gICk6IENvbnRleHR1YWxpemVkQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+ICYge1xuICAgIHN0dWI6IENoYWluY29kZVN0dWI7XG4gICAgaWRlbnRpdHk6IENsaWVudElkZW50aXR5O1xuICB9O1xuICBzdGF0aWMgb3ZlcnJpZGUgbG9nQ3R4PEFSR1MgZXh0ZW5kcyBhbnlbXT4oXG4gICAgdGhpczogYW55LFxuICAgIGFyZ3M6IEFSR1MsXG4gICAgbWV0aG9kOiAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHwgc3RyaW5nXG4gICk6IENvbnRleHR1YWxpemVkQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+ICYge1xuICAgIHN0dWI6IENoYWluY29kZVN0dWI7XG4gICAgaWRlbnRpdHk6IENsaWVudElkZW50aXR5O1xuICB9IHtcbiAgICBpZiAoYXJncy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5vIGNvbnRleHQgcHJvdmlkZWRcIik7XG4gICAgY29uc3QgY3R4ID0gYXJncy5wb3AoKSBhcyBGYWJyaWNDb250cmFjdENvbnRleHQ7XG5cbiAgICBpZiAoIShjdHggaW5zdGFuY2VvZiBDb250ZXh0KSlcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm8gY29udGV4dCBwcm92aWRlZFwiKTtcbiAgICBpZiAoYXJncy5maWx0ZXIoKGEpID0+IGEgaW5zdGFuY2VvZiBDb250ZXh0KS5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaGVyZVwiKTtcbiAgICBjb25zdCBsb2cgPSAoXG4gICAgICB0aGlzXG4gICAgICAgID8gY3R4LmxvZ2dlci5mb3IodGhpcykuZm9yKG1ldGhvZClcbiAgICAgICAgOiBjdHgubG9nZ2VyLmNsZWFyKCkuZm9yKHRoaXMpLmZvcihtZXRob2QpXG4gICAgKSBhcyBMb2dnZXJPZjxGYWJyaWNDb250cmFjdENvbnRleHQ+O1xuICAgIHJldHVybiB7XG4gICAgICBjdHg6IGN0eCxcbiAgICAgIGxvZzogbWV0aG9kID8gKGxvZy5mb3IobWV0aG9kKSBhcyBMb2dnZXJPZjxGYWJyaWNDb250cmFjdENvbnRleHQ+KSA6IGxvZyxcbiAgICAgIHN0dWI6IGN0eC5zdHViLFxuICAgICAgaWRlbnRpdHk6IGN0eC5pZGVudGl0eSxcbiAgICAgIGN0eEFyZ3M6IFsuLi5hcmdzLCBjdHhdLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgb3ZlcnJpZGUgcGFyc2VFcnJvcjxFIGV4dGVuZHMgQmFzZUVycm9yPihlcnI6IEVycm9yIHwgc3RyaW5nKTogRSB7XG4gICAgLy8gaWYgKFxuICAgIC8vICAgTUlTU0lOR19QUklWQVRFX0RBVEFfUkVHRVgudGVzdChcbiAgICAvLyAgICAgdHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIiA/IGVyciA6IGVyci5tZXNzYWdlXG4gICAgLy8gICApXG4gICAgLy8gKVxuICAgIC8vICAgcmV0dXJuIG5ldyBVbmF1dGhvcml6ZWRQcml2YXRlRGF0YUFjY2VzcyhlcnIpIGFzIEU7XG4gICAgY29uc3QgbXNnID0gdHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIiA/IGVyciA6IGVyci5tZXNzYWdlO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoTm90Rm91bmRFcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBOb3RGb3VuZEVycm9yKGVycikgYXMgRTtcbiAgICBpZiAobXNnLmluY2x1ZGVzKENvbmZsaWN0RXJyb3IubmFtZSkpIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhCYWRSZXF1ZXN0RXJyb3IubmFtZSkpXG4gICAgICByZXR1cm4gbmV3IEJhZFJlcXVlc3RFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhRdWVyeUVycm9yLm5hbWUpKSByZXR1cm4gbmV3IFF1ZXJ5RXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoUGFnaW5nRXJyb3IubmFtZSkpIHJldHVybiBuZXcgUGFnaW5nRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoVW5zdXBwb3J0ZWRFcnJvci5uYW1lKSlcbiAgICAgIHJldHVybiBuZXcgVW5zdXBwb3J0ZWRFcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhNaWdyYXRpb25FcnJvci5uYW1lKSkgcmV0dXJuIG5ldyBNaWdyYXRpb25FcnJvcihlcnIpIGFzIEU7XG4gICAgaWYgKG1zZy5pbmNsdWRlcyhPYnNlcnZlckVycm9yLm5hbWUpKSByZXR1cm4gbmV3IE9ic2VydmVyRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoQXV0aG9yaXphdGlvbkVycm9yLm5hbWUpKVxuICAgICAgcmV0dXJuIG5ldyBBdXRob3JpemF0aW9uRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoRm9yYmlkZGVuRXJyb3IubmFtZSkpIHJldHVybiBuZXcgRm9yYmlkZGVuRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoQ29ubmVjdGlvbkVycm9yLm5hbWUpKVxuICAgICAgcmV0dXJuIG5ldyBDb25uZWN0aW9uRXJyb3IoZXJyKSBhcyBFO1xuICAgIGlmIChtc2cuaW5jbHVkZXMoU2VyaWFsaXphdGlvbkVycm9yLm5hbWUpKVxuICAgICAgcmV0dXJuIG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoZXJyKSBhcyBFO1xuICAgIHJldHVybiBuZXcgSW50ZXJuYWxFcnJvcihlcnIpIGFzIEU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0YXRpYyBtZXRob2QgZm9yIGRlY29yYXRpb24gb3ZlcnJpZGVzXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcy9leHRlbmRzIGRlY2FmIGRlY29yYXRpb24gd2l0aCBGYWJyaWMtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eVxuICAgKiBAc3RhdGljXG4gICAqIEBvdmVycmlkZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGRlY29yYXRpb24oKTogdm9pZCB7XG4gICAgc3VwZXIuZGVjb3JhdGlvbigpO1xuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoRmFicmljRmxhdm91cilcbiAgICAgIC5mb3IoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPbkZhYnJpY0NyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YShQZXJzaXN0ZW5jZUtleXMuQ1JFQVRFRF9CWSwge30pXG4gICAgICApXG4gICAgICAuYXBwbHkoKTtcblxuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoRmFicmljRmxhdm91cilcbiAgICAgIC5mb3IoUGVyc2lzdGVuY2VLZXlzLlVQREFURURfQlkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZVVwZGF0ZShjcmVhdGVkQnlPbkZhYnJpY0NyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YShQZXJzaXN0ZW5jZUtleXMuVVBEQVRFRF9CWSwge30pXG4gICAgICApXG4gICAgICAuYXBwbHkoKTtcblxuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoRmFicmljRmxhdm91cilcbiAgICAgIC5mb3IoREJLZXlzLklEKVxuICAgICAgLmRlZmluZSh7XG4gICAgICAgIGRlY29yYXRvcjogZnVuY3Rpb24gcGtEZWMoXG4gICAgICAgICAgb3B0aW9uczogU2VxdWVuY2VPcHRpb25zLFxuICAgICAgICAgIGdyb3Vwc29ydD86IEdyb3VwU29ydFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gcGtEZWMob2JqOiBhbnksIGF0dHI6IGFueSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KFxuICAgICAgICAgICAgICByZXF1aXJlZCgpLFxuICAgICAgICAgICAgICByZWFkb25seSgpLFxuICAgICAgICAgICAgICBwcm9wTWV0YWRhdGEoTWV0YWRhdGEua2V5KERCS2V5cy5JRCwgYXR0ciksIG9wdGlvbnMpLFxuICAgICAgICAgICAgICBvbkNyZWF0ZShwa0ZhYnJpY09uQ3JlYXRlIGFzIGFueSwgb3B0aW9ucywgZ3JvdXBzb3J0KVxuICAgICAgICAgICAgKShvYmosIGF0dHIpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueSlcbiAgICAgIC5hcHBseSgpO1xuXG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhGYWJyaWNGbGF2b3VyKVxuICAgICAgLmZvcihQZXJzaXN0ZW5jZUtleXMuQ09MVU1OKVxuICAgICAgLmV4dGVuZChGYWJyaWNQcm9wZXJ0eSgpKVxuICAgICAgLmFwcGx5KCk7XG5cbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKEZhYnJpY0ZsYXZvdXIpXG4gICAgICAuZm9yKFBlcnNpc3RlbmNlS2V5cy5UQUJMRSlcbiAgICAgIC5leHRlbmQoZnVuY3Rpb24gdGFibGUob2JqOiBhbnkpIHtcbiAgICAgICAgLy8gY29uc3QgY2hhaW46IGFueVtdID0gW107XG5cbiAgICAgICAgLy8gbGV0IGN1cnJlbnQgPSBvYmo7XG5cbiAgICAgICAgLy8gZG8ge1xuICAgICAgICAvLyAgIGNoYWluLnB1c2goY3VycmVudCk7XG4gICAgICAgIC8vICAgY29uc29sZS5sb2coYEZvdW5kIGNsYXNzOiAke2N1cnJlbnR9YCk7XG4gICAgICAgIC8vIH0gd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudCAhPT0gT2JqZWN0LnByb3RvdHlwZSk7XG5cbiAgICAgICAgLy8gZG8ge1xuICAgICAgICAvLyAgIGN1cnJlbnQgPSBjaGFpbi5wb3AoKTtcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZyhgQXBwbHlpbmcgQE9iamVjdCgpIHRvIGNsYXNzOiAke2N1cnJlbnR9YCk7XG4gICAgICAgIC8vICAgLy9UT0RPOiBUSElTIElTIE5PVCBXT1JLSU5HIEFORCBUSFJPV1MgRVJST1JcbiAgICAgICAgLy8gICAvLyBGYWJyaWNPYmplY3QoKShjdXJyZW50KTtcbiAgICAgICAgLy8gfSB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gMSk7XG5cbiAgICAgICAgcmV0dXJuIEZhYnJpY09iamVjdCgpKG9iaik7XG4gICAgICB9KVxuICAgICAgLmFwcGx5KCk7XG5cbiAgICBmdW5jdGlvbiBvbmVUb09uZURlYzxNIGV4dGVuZHMgTW9kZWw+KFxuICAgICAgY2xheno6IENvbnN0cnVjdG9yPE0+IHwgKCgpID0+IENvbnN0cnVjdG9yPE0+KSxcbiAgICAgIGNhc2NhZGU6IENhc2NhZGVNZXRhZGF0YSxcbiAgICAgIHBvcHVsYXRlOiBib29sZWFuLFxuICAgICAgam9pbkNvbHVtbk9wdHM/OiBKb2luQ29sdW1uT3B0aW9ucyxcbiAgICAgIGZrPzogc3RyaW5nXG4gICAgKSB7XG4gICAgICBjb25zdCBtZXRhOiBSZWxhdGlvbnNNZXRhZGF0YSA9IHtcbiAgICAgICAgY2xhc3M6IGNsYXp6LFxuICAgICAgICBjYXNjYWRlOiBjYXNjYWRlLFxuICAgICAgICBwb3B1bGF0ZTogcG9wdWxhdGUsXG4gICAgICB9O1xuICAgICAgaWYgKGpvaW5Db2x1bW5PcHRzKSBtZXRhLmpvaW5UYWJsZSA9IGpvaW5Db2x1bW5PcHRzO1xuICAgICAgaWYgKGZrKSBtZXRhLm5hbWUgPSBmaztcbiAgICAgIHJldHVybiBhcHBseShcbiAgICAgICAgcHJvcCgpLFxuICAgICAgICByZWxhdGlvbihQZXJzaXN0ZW5jZUtleXMuT05FX1RPX09ORSwgbWV0YSksXG4gICAgICAgIHR5cGUoW2NsYXp6LCBTdHJpbmcsIE51bWJlciwgQmlnSW50XSksXG4gICAgICAgIG9uQ3JlYXRlKG9uZVRvT25lT25DcmVhdGUgYXMgYW55LCBtZXRhKSxcbiAgICAgICAgb25VcGRhdGUob25lVG9PbmVPblVwZGF0ZSBhcyBhbnksIG1ldGEpLFxuICAgICAgICBvbkRlbGV0ZShvbmVUb09uZU9uRGVsZXRlIGFzIGFueSwgbWV0YSksXG4gICAgICAgIGFmdGVyQW55KHBvcCwgbWV0YSksXG4gICAgICAgIHByb3BNZXRhZGF0YShQZXJzaXN0ZW5jZUtleXMuT05FX1RPX09ORSwgbWV0YSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhGYWJyaWNGbGF2b3VyKVxuICAgICAgLmZvcihQZXJzaXN0ZW5jZUtleXMuT05FX1RPX09ORSlcbiAgICAgIC5kZWZpbmUoe1xuICAgICAgICBkZWNvcmF0b3I6IG9uZVRvT25lRGVjLFxuICAgICAgfSBhcyBhbnkpXG4gICAgICAuYXBwbHkoKTtcblxuICAgIGZ1bmN0aW9uIG9uZVRvTWFueURlYzxNIGV4dGVuZHMgTW9kZWw+KFxuICAgICAgY2xheno6IENvbnN0cnVjdG9yPE0+IHwgKCgpID0+IENvbnN0cnVjdG9yPE0+KSxcbiAgICAgIGNhc2NhZGU6IENhc2NhZGVNZXRhZGF0YSxcbiAgICAgIHBvcHVsYXRlOiBib29sZWFuLFxuICAgICAgam9pblRhYmxlT3B0cz86IEpvaW5UYWJsZU9wdGlvbnMgfCBKb2luVGFibGVNdWx0aXBsZUNvbHVtbnNPcHRpb25zLFxuICAgICAgZms/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhOiBSZWxhdGlvbnNNZXRhZGF0YSA9IHtcbiAgICAgICAgY2xhc3M6IGNsYXp6LFxuICAgICAgICBjYXNjYWRlOiBjYXNjYWRlLFxuICAgICAgICBwb3B1bGF0ZTogcG9wdWxhdGUsXG4gICAgICB9O1xuICAgICAgaWYgKGpvaW5UYWJsZU9wdHMpIG1ldGFkYXRhLmpvaW5UYWJsZSA9IGpvaW5UYWJsZU9wdHM7XG4gICAgICBpZiAoZmspIG1ldGFkYXRhLm5hbWUgPSBmaztcbiAgICAgIHJldHVybiBhcHBseShcbiAgICAgICAgcHJvcCgpLFxuICAgICAgICByZWxhdGlvbihQZXJzaXN0ZW5jZUtleXMuT05FX1RPX01BTlksIG1ldGFkYXRhKSxcbiAgICAgICAgbGlzdChbY2xhenogYXMgQ29uc3RydWN0b3I8TT4sIFN0cmluZywgTnVtYmVyXSksXG4gICAgICAgIG9uQ3JlYXRlKG9uZVRvTWFueU9uQ3JlYXRlIGFzIGFueSwgbWV0YWRhdGEpLFxuICAgICAgICBvblVwZGF0ZShvbmVUb01hbnlPblVwZGF0ZSwgbWV0YWRhdGEpLFxuICAgICAgICBvbkRlbGV0ZShvbmVUb01hbnlPbkRlbGV0ZSBhcyBhbnksIG1ldGFkYXRhKSxcbiAgICAgICAgYWZ0ZXJBbnkocG9wLCBtZXRhZGF0YSksXG4gICAgICAgIHByb3BNZXRhZGF0YShQZXJzaXN0ZW5jZUtleXMuT05FX1RPX01BTlksIG1ldGFkYXRhKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBEZWNvcmF0aW9uLmZvcihQZXJzaXN0ZW5jZUtleXMuT05FX1RPX01BTlkpXG4gICAgICAuZGVmaW5lKHtcbiAgICAgICAgZGVjb3JhdG9yOiBvbmVUb01hbnlEZWMsXG4gICAgICB9IGFzIGFueSlcbiAgICAgIC5hcHBseSgpO1xuICB9XG59XG5cbkZhYnJpY0NvbnRyYWN0QWRhcHRlci5kZWNvcmF0aW9uKCk7XG5BZGFwdGVyLnNldEN1cnJlbnQoRmFicmljRmxhdm91cik7XG4iXX0=
@@ -69,4 +69,4 @@ class FabricContractContext extends core_1.Context {
69
69
  }
70
70
  }
71
71
  exports.FabricContractContext = FabricContractContext;
72
- //# sourceMappingURL=ContractContext.js.map
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9Db250cmFjdENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBSXpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQWEscUJBQXNCLFNBQVEsY0FBNEI7SUFDckU7OztPQUdHO0lBQ0g7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBYSxTQUFTO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUSxRQUFRO1FBQ2YsT0FBTyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBdkNELHNEQXVDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0RmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ2hhaW5jb2RlU3R1YiwgQ2xpZW50SWRlbnRpdHkgfSBmcm9tIFwiZmFicmljLXNoaW0tYXBpXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRleHQgY2xhc3MgZm9yIEZhYnJpYyBjaGFpbmNvZGUgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgYWNjZXNzIHRvIEZhYnJpYy1zcGVjaWZpYyBjb250ZXh0IGVsZW1lbnRzIGxpa2Ugc3R1YiwgaWRlbnRpdHksIGFuZCBsb2dnZXIgdG8gYmUgdXNlZCBieSByZXBvc2l0b3JpZXMgYW5kIGFkYXB0ZXJzIGR1cmluZyBjb250cmFjdCBleGVjdXRpb24uXG4gKiBAdGVtcGxhdGUgRiAtIEZsYWdzIHNwZWNpZmljIHRvIEZhYnJpYyBjb250cmFjdCBvcGVyYXRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdIC0gT3B0aW9uYWwgaW5pdGlhbGl6YXRpb24gYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgYmFzZSBDb250ZXh0XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZhYnJpY0NvbnRyYWN0Q29udGV4dFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEluIGEgRmFicmljIGNoYWluY29kZSBjb250cmFjdCBtZXRob2RcbiAqIGNvbnN0IGNvbnRleHQgPSBuZXcgRmFicmljQ29udHJhY3RDb250ZXh0KCk7XG4gKiAvLyBPcHRpb25hbGx5IHNldCB2YWx1ZXMgdmlhIHRoZSBiYXNlIENvbnRleHQgQVBJXG4gKiBjb250ZXh0LnNldCgnc3R1YicsIGN0eC5zdHViKTtcbiAqIGNvbnRleHQuc2V0KCdjbGllbnRJZGVudGl0eScsIGN0eC5jbGllbnRJZGVudGl0eSk7XG4gKiBjb250ZXh0LnNldCgnbG9nZ2VyJywgY29udHJhY3RMb2dnZXIpO1xuICpcbiAqIC8vIEFjY2VzcyBjb250ZXh0IHByb3BlcnRpZXNcbiAqIGNvbnN0IHRpbWVzdGFtcCA9IGNvbnRleHQudGltZXN0YW1wO1xuICogY29uc3QgY3JlYXRvciA9IGNvbnRleHQuaWRlbnRpdHkuZ2V0SUQoKTtcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDb250cmFjdFxuICogICBwYXJ0aWNpcGFudCBDb250ZXh0XG4gKiAgIHBhcnRpY2lwYW50IExlZGdlclxuICogICBDb250cmFjdC0+PkNvbnRleHQ6IG5ldyBGYWJyaWNDb250cmFjdENvbnRleHQoKVxuICogICBDb250cmFjdC0+PkNvbnRleHQ6IHNldCgnc3R1Yid8J2NsaWVudElkZW50aXR5J3wnbG9nZ2VyJywgLi4uKVxuICogICBDb250ZXh0LS0+PkNvbnRyYWN0OiB0aW1lc3RhbXAsIGlkZW50aXR5LCBsb2dnZXJcbiAqICAgQ29udHJhY3QtPj5MZWRnZXI6IEludGVyYWN0IHZpYSBzdHViXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdENvbnRleHQgZXh0ZW5kcyBDb250ZXh0PEZhYnJpY0NvbnRyYWN0RmxhZ3M+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IEZhYnJpY0NvbnRyYWN0Q29udGV4dCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyB0aGUgY29udGV4dCB3aXRoIEZhYnJpYy1zcGVjaWZpYyBmbGFnc1xuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgY2hhaW5jb2RlIHN0dWJcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgQ2hhaW5jb2RlU3R1YiBpbnN0YW5jZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGVkZ2VyXG4gICAqIEByZXR1cm4ge0NoYWluY29kZVN0dWJ9IFRoZSBjaGFpbmNvZGUgc3R1YlxuICAgKi9cbiAgZ2V0IHN0dWIoKTogQ2hhaW5jb2RlU3R1YiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KFwic3R1YlwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgdHJhbnNhY3Rpb24gdGltZXN0YW1wXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcyB0aGUgYmFzZSB0aW1lc3RhbXAgZ2V0dGVyIHRvIHVzZSB0aGUgc3R1YidzIHRpbWVzdGFtcFxuICAgKiBAcmV0dXJuIHtEYXRlfSBUaGUgdHJhbnNhY3Rpb24gdGltZXN0YW1wXG4gICAqL1xuICBvdmVycmlkZSBnZXQgdGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLnN0dWIuZ2V0RGF0ZVRpbWVzdGFtcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBjbGllbnQgaWRlbnRpdHlcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgQ2xpZW50SWRlbnRpdHkgaW5zdGFuY2UgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdWJtaXR0ZXJcbiAgICogQHJldHVybiB7Q2xpZW50SWRlbnRpdHl9IFRoZSBjbGllbnQgaWRlbnRpdHlcbiAgICovXG4gIGdldCBpZGVudGl0eSgpOiBDbGllbnRJZGVudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KFwiaWRlbnRpdHlcIik7XG4gIH1cblxuICBvdmVycmlkZSB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYGZhYnJpYyBjdHgke3RoaXMuc3R1YiA/IFwiIHdpdGggc3R1YlwiIDogXCJ3aXRob3V0IHN0dWJcIn1gO1xuICB9XG59XG4iXX0=