@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.1

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/.jsii +54630 -26185
  2. package/API.md +72091 -23784
  3. package/lib/azure-actiongroup/index.d.ts +0 -10
  4. package/lib/azure-actiongroup/index.js +1 -11
  5. package/lib/azure-actiongroup/lib/action-group.d.ts +0 -10
  6. package/lib/azure-actiongroup/lib/action-group.js +6 -32
  7. package/lib/azure-actiongroup/lib/index.d.ts +1 -4
  8. package/lib/azure-actiongroup/lib/index.js +2 -5
  9. package/lib/azure-activitylogalert/index.d.ts +0 -10
  10. package/lib/azure-activitylogalert/index.js +1 -11
  11. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +0 -10
  12. package/lib/azure-activitylogalert/lib/activity-log-alert.js +6 -32
  13. package/lib/azure-activitylogalert/lib/index.d.ts +1 -4
  14. package/lib/azure-activitylogalert/lib/index.js +2 -5
  15. package/lib/azure-aks/index.d.ts +0 -8
  16. package/lib/azure-aks/index.js +1 -11
  17. package/lib/azure-aks/lib/aks-cluster.d.ts +4 -13
  18. package/lib/azure-aks/lib/aks-cluster.js +13 -36
  19. package/lib/azure-aks/lib/index.d.ts +1 -10
  20. package/lib/azure-aks/lib/index.js +2 -21
  21. package/lib/azure-diagnosticsettings/index.d.ts +0 -6
  22. package/lib/azure-diagnosticsettings/index.js +1 -7
  23. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +0 -10
  24. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +6 -32
  25. package/lib/azure-diagnosticsettings/lib/index.d.ts +1 -7
  26. package/lib/azure-diagnosticsettings/lib/index.js +2 -8
  27. package/lib/azure-dnsforwardingruleset/index.d.ts +1 -0
  28. package/lib/azure-dnsforwardingruleset/index.js +18 -0
  29. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.d.ts +24 -0
  30. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.js +206 -0
  31. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +174 -0
  32. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +214 -0
  33. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.d.ts +24 -0
  34. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.js +242 -0
  35. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +193 -0
  36. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +193 -0
  37. package/lib/azure-dnsforwardingruleset/lib/index.d.ts +6 -0
  38. package/lib/azure-dnsforwardingruleset/lib/index.js +23 -0
  39. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.d.ts +24 -0
  40. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.js +199 -0
  41. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +160 -0
  42. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +178 -0
  43. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +9 -0
  44. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +133 -0
  45. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.d.ts +9 -0
  46. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +350 -0
  47. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.d.ts +9 -0
  48. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +397 -0
  49. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.d.ts +9 -0
  50. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +285 -0
  51. package/lib/azure-dnsresolver/index.d.ts +1 -0
  52. package/lib/azure-dnsresolver/index.js +18 -0
  53. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.d.ts +24 -0
  54. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.js +218 -0
  55. package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +170 -0
  56. package/lib/azure-dnsresolver/lib/dns-resolver.js +236 -0
  57. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.d.ts +24 -0
  58. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.js +261 -0
  59. package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +189 -0
  60. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +243 -0
  61. package/lib/azure-dnsresolver/lib/index.d.ts +6 -0
  62. package/lib/azure-dnsresolver/lib/index.js +23 -0
  63. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.d.ts +24 -0
  64. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.js +231 -0
  65. package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +175 -0
  66. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +234 -0
  67. package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +14 -0
  68. package/lib/azure-dnsresolver/test/dns-resolver.integ.js +117 -0
  69. package/lib/azure-dnsresolver/test/dns-resolver.spec.d.ts +9 -0
  70. package/lib/azure-dnsresolver/test/dns-resolver.spec.js +353 -0
  71. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +9 -0
  72. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +151 -0
  73. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.d.ts +9 -0
  74. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +441 -0
  75. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +9 -0
  76. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +149 -0
  77. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.d.ts +9 -0
  78. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +301 -0
  79. package/lib/azure-dnszone/index.d.ts +1 -0
  80. package/lib/azure-dnszone/index.js +18 -0
  81. package/lib/azure-dnszone/lib/dns-zone-schemas.d.ts +24 -0
  82. package/lib/azure-dnszone/lib/dns-zone-schemas.js +191 -0
  83. package/lib/azure-dnszone/lib/dns-zone.d.ts +182 -0
  84. package/lib/azure-dnszone/lib/dns-zone.js +228 -0
  85. package/lib/azure-dnszone/lib/index.d.ts +2 -0
  86. package/lib/azure-dnszone/lib/index.js +19 -0
  87. package/lib/azure-dnszone/test/dns-zone.integ.d.ts +9 -0
  88. package/lib/azure-dnszone/test/dns-zone.integ.js +85 -0
  89. package/lib/azure-dnszone/test/dns-zone.spec.d.ts +9 -0
  90. package/lib/azure-dnszone/test/dns-zone.spec.js +285 -0
  91. package/lib/azure-metricalert/index.d.ts +0 -10
  92. package/lib/azure-metricalert/index.js +1 -11
  93. package/lib/azure-metricalert/lib/index.d.ts +1 -4
  94. package/lib/azure-metricalert/lib/index.js +2 -5
  95. package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -10
  96. package/lib/azure-metricalert/lib/metric-alert.js +6 -32
  97. package/lib/azure-networkinterface/index.d.ts +0 -3
  98. package/lib/azure-networkinterface/index.js +1 -4
  99. package/lib/azure-networkinterface/lib/index.d.ts +1 -5
  100. package/lib/azure-networkinterface/lib/index.js +2 -5
  101. package/lib/azure-networkinterface/lib/network-interface.d.ts +4 -9
  102. package/lib/azure-networkinterface/lib/network-interface.js +14 -29
  103. package/lib/azure-networkinterface/test/network-interface.integ.js +20 -6
  104. package/lib/azure-networksecuritygroup/index.d.ts +0 -5
  105. package/lib/azure-networksecuritygroup/index.js +1 -6
  106. package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -5
  107. package/lib/azure-networksecuritygroup/lib/index.js +17 -14
  108. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +4 -13
  109. package/lib/azure-networksecuritygroup/lib/network-security-group.js +14 -36
  110. package/lib/azure-policyassignment/index.d.ts +1 -0
  111. package/lib/azure-policyassignment/index.js +18 -0
  112. package/lib/azure-policyassignment/lib/index.d.ts +2 -0
  113. package/lib/azure-policyassignment/lib/index.js +19 -0
  114. package/lib/azure-policyassignment/lib/policy-assignment-schemas.d.ts +25 -0
  115. package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +260 -0
  116. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +349 -0
  117. package/lib/azure-policyassignment/lib/policy-assignment.js +237 -0
  118. package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +13 -0
  119. package/lib/azure-policyassignment/test/policy-assignment.integ.js +153 -0
  120. package/lib/azure-policyassignment/test/policy-assignment.spec.d.ts +9 -0
  121. package/lib/azure-policyassignment/test/policy-assignment.spec.js +651 -0
  122. package/lib/azure-policydefinition/index.d.ts +1 -0
  123. package/lib/azure-policydefinition/index.js +18 -0
  124. package/lib/azure-policydefinition/lib/index.d.ts +2 -0
  125. package/lib/azure-policydefinition/lib/index.js +19 -0
  126. package/lib/azure-policydefinition/lib/policy-definition-schemas.d.ts +25 -0
  127. package/lib/azure-policydefinition/lib/policy-definition-schemas.js +210 -0
  128. package/lib/azure-policydefinition/lib/policy-definition.d.ts +281 -0
  129. package/lib/azure-policydefinition/lib/policy-definition.js +236 -0
  130. package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +9 -0
  131. package/lib/azure-policydefinition/test/policy-definition.integ.js +137 -0
  132. package/lib/azure-policydefinition/test/policy-definition.spec.d.ts +9 -0
  133. package/lib/azure-policydefinition/test/policy-definition.spec.js +806 -0
  134. package/lib/azure-privatednszone/index.d.ts +1 -0
  135. package/lib/azure-privatednszone/index.js +18 -0
  136. package/lib/azure-privatednszone/lib/index.d.ts +2 -0
  137. package/lib/azure-privatednszone/lib/index.js +19 -0
  138. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.d.ts +24 -0
  139. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.js +254 -0
  140. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +178 -0
  141. package/lib/azure-privatednszone/lib/private-dns-zone.js +272 -0
  142. package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +9 -0
  143. package/lib/azure-privatednszone/test/private-dns-zone.integ.js +84 -0
  144. package/lib/azure-privatednszone/test/private-dns-zone.spec.d.ts +9 -0
  145. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +341 -0
  146. package/lib/azure-privatednszonelink/index.d.ts +1 -0
  147. package/lib/azure-privatednszonelink/index.js +18 -0
  148. package/lib/azure-privatednszonelink/lib/index.d.ts +2 -0
  149. package/lib/azure-privatednszonelink/lib/index.js +19 -0
  150. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.d.ts +24 -0
  151. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.js +262 -0
  152. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +202 -0
  153. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +250 -0
  154. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +9 -0
  155. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +110 -0
  156. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.d.ts +9 -0
  157. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +465 -0
  158. package/lib/azure-publicipaddress/index.d.ts +0 -5
  159. package/lib/azure-publicipaddress/index.js +1 -6
  160. package/lib/azure-publicipaddress/lib/index.d.ts +2 -9
  161. package/lib/azure-publicipaddress/lib/index.js +17 -17
  162. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +4 -13
  163. package/lib/azure-publicipaddress/lib/public-ip-address.js +14 -36
  164. package/lib/azure-resourcegroup/index.d.ts +0 -37
  165. package/lib/azure-resourcegroup/index.js +1 -39
  166. package/lib/azure-resourcegroup/lib/index.d.ts +1 -44
  167. package/lib/azure-resourcegroup/lib/index.js +2 -43
  168. package/lib/azure-resourcegroup/lib/resource-group.d.ts +9 -23
  169. package/lib/azure-resourcegroup/lib/resource-group.js +23 -56
  170. package/lib/azure-resourcegroup/test/resource-group.spec.js +13 -19
  171. package/lib/azure-roleassignment/index.d.ts +1 -0
  172. package/lib/azure-roleassignment/index.js +18 -0
  173. package/lib/azure-roleassignment/lib/index.d.ts +2 -0
  174. package/lib/azure-roleassignment/lib/index.js +19 -0
  175. package/lib/azure-roleassignment/lib/role-assignment-schemas.d.ts +25 -0
  176. package/lib/azure-roleassignment/lib/role-assignment-schemas.js +238 -0
  177. package/lib/azure-roleassignment/lib/role-assignment.d.ts +294 -0
  178. package/lib/azure-roleassignment/lib/role-assignment.js +257 -0
  179. package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +12 -0
  180. package/lib/azure-roleassignment/test/role-assignment.integ.js +101 -0
  181. package/lib/azure-roleassignment/test/role-assignment.spec.d.ts +9 -0
  182. package/lib/azure-roleassignment/test/role-assignment.spec.js +633 -0
  183. package/lib/azure-roledefinition/index.d.ts +1 -0
  184. package/lib/azure-roledefinition/index.js +18 -0
  185. package/lib/azure-roledefinition/lib/index.d.ts +2 -0
  186. package/lib/azure-roledefinition/lib/index.js +19 -0
  187. package/lib/azure-roledefinition/lib/role-definition-schemas.d.ts +25 -0
  188. package/lib/azure-roledefinition/lib/role-definition-schemas.js +195 -0
  189. package/lib/azure-roledefinition/lib/role-definition.d.ts +236 -0
  190. package/lib/azure-roledefinition/lib/role-definition.js +192 -0
  191. package/lib/azure-roledefinition/test/role-definition.integ.d.ts +12 -0
  192. package/lib/azure-roledefinition/test/role-definition.integ.js +142 -0
  193. package/lib/azure-roledefinition/test/role-definition.spec.d.ts +9 -0
  194. package/lib/azure-roledefinition/test/role-definition.spec.js +946 -0
  195. package/lib/azure-storageaccount/index.d.ts +0 -19
  196. package/lib/azure-storageaccount/index.js +1 -20
  197. package/lib/azure-storageaccount/lib/index.d.ts +1 -7
  198. package/lib/azure-storageaccount/lib/index.js +2 -8
  199. package/lib/azure-storageaccount/lib/storage-account.d.ts +4 -9
  200. package/lib/azure-storageaccount/lib/storage-account.js +15 -29
  201. package/lib/azure-subnet/index.d.ts +0 -3
  202. package/lib/azure-subnet/index.js +1 -4
  203. package/lib/azure-subnet/lib/index.d.ts +1 -4
  204. package/lib/azure-subnet/lib/index.js +2 -5
  205. package/lib/azure-subnet/lib/subnet.d.ts +3 -14
  206. package/lib/azure-subnet/lib/subnet.js +28 -47
  207. package/lib/azure-subnet/test/subnet.integ.js +19 -7
  208. package/lib/azure-subnet/test/subnet.spec.js +1 -2
  209. package/lib/azure-virtualmachine/index.d.ts +0 -6
  210. package/lib/azure-virtualmachine/index.js +1 -7
  211. package/lib/azure-virtualmachine/lib/index.d.ts +1 -10
  212. package/lib/azure-virtualmachine/lib/index.js +2 -21
  213. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +4 -13
  214. package/lib/azure-virtualmachine/lib/virtual-machine.js +15 -36
  215. package/lib/azure-virtualnetwork/index.d.ts +0 -9
  216. package/lib/azure-virtualnetwork/index.js +1 -11
  217. package/lib/azure-virtualnetwork/lib/index.d.ts +2 -9
  218. package/lib/azure-virtualnetwork/lib/index.js +17 -20
  219. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +4 -13
  220. package/lib/azure-virtualnetwork/lib/virtual-network.js +15 -36
  221. package/lib/azure-virtualnetworkmanager/index.d.ts +1 -0
  222. package/lib/azure-virtualnetworkmanager/index.js +18 -0
  223. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.d.ts +48 -0
  224. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.js +265 -0
  225. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +185 -0
  226. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +206 -0
  227. package/lib/azure-virtualnetworkmanager/lib/index.d.ts +14 -0
  228. package/lib/azure-virtualnetworkmanager/lib/index.js +31 -0
  229. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.d.ts +32 -0
  230. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.js +189 -0
  231. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.d.ts +32 -0
  232. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.js +201 -0
  233. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +135 -0
  234. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +163 -0
  235. package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +139 -0
  236. package/lib/azure-virtualnetworkmanager/lib/network-group.js +158 -0
  237. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.d.ts +32 -0
  238. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.js +182 -0
  239. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +144 -0
  240. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +164 -0
  241. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.d.ts +38 -0
  242. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.js +206 -0
  243. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +142 -0
  244. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +162 -0
  245. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.d.ts +39 -0
  246. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.js +359 -0
  247. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +221 -0
  248. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +204 -0
  249. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.d.ts +32 -0
  250. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.js +236 -0
  251. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +337 -0
  252. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +283 -0
  253. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +25 -0
  254. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +402 -0
  255. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.d.ts +9 -0
  256. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +1652 -0
  257. package/lib/azure-vmss/index.d.ts +0 -5
  258. package/lib/azure-vmss/index.js +1 -6
  259. package/lib/azure-vmss/lib/index.d.ts +0 -7
  260. package/lib/azure-vmss/lib/index.js +1 -21
  261. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +5 -13
  262. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +29 -53
  263. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.d.ts +10 -0
  264. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +218 -0
  265. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +206 -26
  266. package/lib/core-azure/lib/azapi/azapi-resource.js +379 -91
  267. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +2 -2
  268. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  269. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  270. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +5 -3
  271. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  272. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  273. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  274. package/lib/core-azure/lib/azapi/resource-schema-validator.d.ts +118 -0
  275. package/lib/core-azure/lib/azapi/resource-schema-validator.js +236 -0
  276. package/lib/core-azure/lib/azapi/resource-version-manager.d.ts +103 -0
  277. package/lib/core-azure/lib/azapi/resource-version-manager.js +168 -0
  278. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +11 -6
  279. package/lib/core-azure/lib/index.d.ts +2 -2
  280. package/lib/core-azure/lib/index.js +5 -5
  281. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  282. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  283. package/lib/index.d.ts +19 -0
  284. package/lib/index.js +21 -2
  285. package/lib/testing/index.js +2 -2
  286. package/lib/testing/lib/cleanup.d.ts +1 -0
  287. package/lib/testing/lib/cleanup.js +19 -12
  288. package/lib/testing/lib/metadata.js +19 -16
  289. package/package.json +1 -1
  290. package/scripts/cleanup-test-resources.ts +22 -4
  291. package/scripts/generate-index.js +25 -8
@@ -25,7 +25,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
25
25
  const cdktf = require("cdktf");
26
26
  const resource_group_schemas_1 = require("./resource-group-schemas");
27
27
  const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
28
- const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
28
+ const data_azapi_client_config_1 = require("../../core-azure/lib/azapi/providers-azapi/data-azapi-client-config");
29
29
  /**
30
30
  * Unified Azure Resource Group implementation
31
31
  *
@@ -61,28 +61,6 @@ const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-
61
61
  * @stability stable
62
62
  */
63
63
  class ResourceGroup extends azapi_resource_1.AzapiResource {
64
- /**
65
- * Ensures that Resource Group schemas are registered with the ApiVersionManager
66
- * This is called once during the first ResourceGroup instantiation
67
- */
68
- static ensureSchemasRegistered() {
69
- if (ResourceGroup.schemasRegistered) {
70
- return;
71
- }
72
- const apiVersionManager = api_version_manager_1.ApiVersionManager.instance();
73
- try {
74
- // Register all Resource Group versions
75
- apiVersionManager.registerResourceType(resource_group_schemas_1.RESOURCE_GROUP_TYPE, resource_group_schemas_1.ALL_RESOURCE_GROUP_VERSIONS);
76
- ResourceGroup.schemasRegistered = true;
77
- console.log(`Registered ${resource_group_schemas_1.ALL_RESOURCE_GROUP_VERSIONS.length} API versions for ${resource_group_schemas_1.RESOURCE_GROUP_TYPE}`);
78
- }
79
- catch (error) {
80
- console.warn(`Failed to register Resource Group schemas: ${error}. ` +
81
- `This may indicate the schemas are already registered or there's a configuration issue.`);
82
- // Don't throw here as the schemas might already be registered
83
- ResourceGroup.schemasRegistered = true;
84
- }
85
- }
86
64
  /**
87
65
  * Creates a new Azure Resource Group using the VersionedAzapiResource framework
88
66
  *
@@ -95,14 +73,8 @@ class ResourceGroup extends azapi_resource_1.AzapiResource {
95
73
  * @param props - Configuration properties for the Resource Group
96
74
  */
97
75
  constructor(scope, id, props) {
98
- // Ensure schemas are registered before calling super
99
- ResourceGroup.ensureSchemasRegistered();
100
- // Call the parent constructor with the props
101
76
  super(scope, id, props);
102
77
  this.props = props;
103
- // Extract properties from the AZAPI resource outputs using Terraform interpolation
104
- this.id = `\${${this.terraformResource.fqn}.id}`;
105
- this.tags = props.tags || {};
106
78
  // Create Terraform outputs for easy access and referencing from other resources
107
79
  this.idOutput = new cdktf.TerraformOutput(this, "id", {
108
80
  value: this.id,
@@ -151,6 +123,12 @@ class ResourceGroup extends azapi_resource_1.AzapiResource {
151
123
  apiSchema() {
152
124
  return this.resolveSchema();
153
125
  }
126
+ /**
127
+ * Indicates that location is required for Resource Groups
128
+ */
129
+ requiresLocation() {
130
+ return true;
131
+ }
154
132
  /**
155
133
  * Creates the resource body for the Azure API call
156
134
  * Transforms the input properties into the JSON format expected by Azure REST API
@@ -158,11 +136,19 @@ class ResourceGroup extends azapi_resource_1.AzapiResource {
158
136
  createResourceBody(props) {
159
137
  const typedProps = props;
160
138
  return {
161
- location: typedProps.location || "eastus",
162
- tags: typedProps.tags || {},
139
+ location: this.location,
140
+ tags: this.allTags(),
163
141
  managedBy: typedProps.managedBy,
164
142
  };
165
143
  }
144
+ /**
145
+ * Resolves the parent ID for Resource Groups
146
+ * Resource Groups are top-level resources with subscription as parent
147
+ */
148
+ resolveParentId(_props) {
149
+ const clientConfig = new data_azapi_client_config_1.DataAzapiClientConfig(this, "client_config", {});
150
+ return `/subscriptions/\${${clientConfig.fqn}.subscription_id}`;
151
+ }
166
152
  // =============================================================================
167
153
  // PUBLIC METHODS FOR RESOURCE GROUP OPERATIONS
168
154
  // =============================================================================
@@ -185,25 +171,6 @@ class ResourceGroup extends azapi_resource_1.AzapiResource {
185
171
  get resourceId() {
186
172
  return this.id;
187
173
  }
188
- /**
189
- * Add a tag to the Resource Group
190
- * Note: This modifies the construct props but requires a new deployment to take effect
191
- */
192
- addTag(key, value) {
193
- if (!this.props.tags) {
194
- this.props.tags = {};
195
- }
196
- this.props.tags[key] = value;
197
- }
198
- /**
199
- * Remove a tag from the Resource Group
200
- * Note: This modifies the construct props but requires a new deployment to take effect
201
- */
202
- removeTag(key) {
203
- if (this.props.tags && this.props.tags[key]) {
204
- delete this.props.tags[key];
205
- }
206
- }
207
174
  // =============================================================================
208
175
  // PRIVATE HELPER METHODS
209
176
  // =============================================================================
@@ -227,11 +194,11 @@ class ResourceGroup extends azapi_resource_1.AzapiResource {
227
194
  }
228
195
  exports.ResourceGroup = ResourceGroup;
229
196
  _a = JSII_RTTI_SYMBOL_1;
230
- ResourceGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ResourceGroup", version: "1.2.0" };
231
- /**
232
- * Static initialization flag to ensure schemas are registered only once
233
- */
234
- ResourceGroup.schemasRegistered = false;
197
+ ResourceGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ResourceGroup", version: "1.3.1" };
198
+ // Static initializer runs once when the class is first loaded
199
+ (() => {
200
+ azapi_resource_1.AzapiResource.registerSchemas(resource_group_schemas_1.RESOURCE_GROUP_TYPE, resource_group_schemas_1.ALL_RESOURCE_GROUP_VERSIONS);
201
+ })();
235
202
  // =============================================================================
236
203
  // BACKWARD COMPATIBILITY EXPORTS
237
204
  // =============================================================================
@@ -240,4 +207,4 @@ ResourceGroup.schemasRegistered = false;
240
207
  * @deprecated Use ResourceGroup instead
241
208
  */
242
209
  exports.Group = ResourceGroup;
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcmVzb3VyY2Vncm91cC9saWIvcmVzb3VyY2UtZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsK0JBQStCO0FBRS9CLHFFQUdrQztBQUNsQyw4RUFHbUQ7QUFDbkQsa0dBQTZGO0FBOEM3Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsOEJBQWE7SUFNOUM7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLHVCQUF1QjtRQUNwQyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUM7WUFDSCx1Q0FBdUM7WUFDdkMsaUJBQWlCLENBQUMsb0JBQW9CLENBQ3BDLDRDQUFtQixFQUNuQixvREFBMkIsQ0FDNUIsQ0FBQztZQUVGLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFFdkMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxjQUFjLG9EQUEyQixDQUFDLE1BQU0scUJBQXFCLDRDQUFtQixFQUFFLENBQzNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQ1YsOENBQThDLEtBQUssSUFBSTtnQkFDckQsd0ZBQXdGLENBQzNGLENBQUM7WUFDRiw4REFBOEQ7WUFDOUQsYUFBYSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQWlCRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxxREFBcUQ7UUFDckQs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Q0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDeEQsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQ25DLENBQUM7WUFFRixJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7b0JBQzlDO3dCQUNFLGNBQWMsRUFBRSxrQkFBa0I7cUJBQ25DO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs7QUExTkgsc0NBMk5DOzs7QUExTkM7O0dBRUc7QUFDWSwrQkFBaUIsR0FBRyxLQUFLLENBQUM7QUF5TjNDLGdGQUFnRjtBQUNoRixpQ0FBaUM7QUFDakMsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNVLFFBQUEsS0FBSyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pZmllZCBBenVyZSBSZXNvdXJjZSBHcm91cCBpbXBsZW1lbnRhdGlvbiB1c2luZyBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICpcbiAqIFRoaXMgY2xhc3MgcmVwbGFjZXMgYWxsIHZlcnNpb24tc3BlY2lmaWMgUmVzb3VyY2UgR3JvdXAgaW1wbGVtZW50YXRpb25zIHdpdGggYSBzaW5nbGVcbiAqIHVuaWZpZWQgY2xhc3MgdGhhdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiBtYW5hZ2VtZW50LCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kXG4gKiBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBhY3Jvc3MgYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnMuXG4gKlxuICogU3VwcG9ydGVkIEFQSSBWZXJzaW9uczpcbiAqIC0gMjAyNC0xMS0wMSAoQWN0aXZlKVxuICogLSAyMDI1LTAxLTAxIChBY3RpdmUpXG4gKiAtIDIwMjUtMDMtMDEgKEFjdGl2ZSwgTGF0ZXN0KVxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBBdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvbiB3aGVuIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gKiAtIEV4cGxpY2l0IHZlcnNpb24gcGlubmluZyBmb3Igc3RhYmlsaXR5IHJlcXVpcmVtZW50c1xuICogLSBTY2hlbWEtZHJpdmVuIHZhbGlkYXRpb24gYW5kIHRyYW5zZm9ybWF0aW9uXG4gKiAtIEZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIFJlc291cmNlIEdyb3VwIGludGVyZmFjZVxuICogLSBKU0lJIGNvbXBsaWFuY2UgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBTExfUkVTT1VSQ0VfR1JPVVBfVkVSU0lPTlMsXG4gIFJFU09VUkNFX0dST1VQX1RZUEUsXG59IGZyb20gXCIuL3Jlc291cmNlLWdyb3VwLXNjaGVtYXNcIjtcbmltcG9ydCB7XG4gIEF6YXBpUmVzb3VyY2UsXG4gIEF6YXBpUmVzb3VyY2VQcm9wcyxcbn0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL2F6YXBpLXJlc291cmNlXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSB1bmlmaWVkIEF6dXJlIFJlc291cmNlIEdyb3VwXG4gKlxuICogRXh0ZW5kcyBWZXJzaW9uZWRBemFwaVJlc291cmNlUHJvcHMgd2l0aCBSZXNvdXJjZSBHcm91cCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKiB3aGlsZSBtYWludGFpbmluZyBmdWxsIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb3JpZ2luYWwgR3JvdXBQcm9wcyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VHcm91cFByb3BzIGV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIE1hbmFnZWQgYnkgaW5mb3JtYXRpb24gZm9yIHRoZSByZXNvdXJjZSBncm91cC5cbiAgICogSW5kaWNhdGVzIHdoYXQgc2VydmljZSBvciB0b29sIGlzIG1hbmFnaW5nIHRoaXMgcmVzb3VyY2UgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSBtYW5hZ2VkQnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZlY3ljbGUgcnVsZXMgdG8gaWdub3JlIGNoYW5nZXMuXG4gICAqIFVzZWZ1bCBmb3IgcHJvcGVydGllcyB0aGF0IGFyZSBleHRlcm5hbGx5IG1hbmFnZWQgb3Igc2hvdWxkIG5vdCB0cmlnZ2VyIHVwZGF0ZXMuXG4gICAqXG4gICAqIEBleGFtcGxlIFtcInRhZ3NcIiwgXCJtYW5hZ2VkQnlcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgYm9keSBpbnRlcmZhY2UgZm9yIEF6dXJlIFJlc291cmNlIEdyb3VwIEFQSSBjYWxsc1xuICogVGhpcyBtYXRjaGVzIHRoZSBBenVyZSBSRVNUIEFQSSBzY2hlbWEgZm9yIHJlc291cmNlIGdyb3Vwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlR3JvdXBCb2R5IHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgcmVzb3VyY2UgZ3JvdXAuIENhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIGNyZWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhZ3MgYXR0YWNoZWQgdG8gdGhlIHJlc291cmNlIGdyb3VwLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcmVzb3VyY2UgdGhhdCBtYW5hZ2VzIHRoaXMgcmVzb3VyY2UgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSBtYW5hZ2VkQnk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVW5pZmllZCBBenVyZSBSZXNvdXJjZSBHcm91cCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCByZXBsYWNlcyBhbGxcbiAqIHZlcnNpb24tc3BlY2lmaWMgUmVzb3VyY2UgR3JvdXAgY2xhc3Nlcy4gSXQgYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb25cbiAqIHJlc29sdXRpb24sIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHkgdHJhbnNmb3JtYXRpb24gd2hpbGUgbWFpbnRhaW5pbmdcbiAqIGZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBUaGUgY2xhc3MgdXNlcyB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmsgdG8gcHJvdmlkZTpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gKDIwMjUtMDMtMDEgYXMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbilcbiAqIC0gU3VwcG9ydCBmb3IgZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIHdoZW4gc3RhYmlsaXR5IGlzIHJlcXVpcmVkXG4gKiAtIFNjaGVtYS1kcml2ZW4gcHJvcGVydHkgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gTWlncmF0aW9uIGFuYWx5c2lzIGFuZCBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICogLSBGdWxsIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGF1dG9tYXRpYyB2ZXJzaW9uIHJlc29sdXRpb246XG4gKiBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJyZ1wiLCB7XG4gKiAgIG5hbWU6IFwibXktcmVzb3VyY2UtZ3JvdXBcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiIH1cbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVc2FnZSB3aXRoIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZzpcbiAqIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInJnXCIsIHtcbiAqICAgbmFtZTogXCJteS1yZXNvdXJjZS1ncm91cFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgYXBpVmVyc2lvbjogXCIyMDI0LTExLTAxXCIsIC8vIFBpbiB0byBzcGVjaWZpYyB2ZXJzaW9uXG4gKiAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiIH1cbiAqIH0pO1xuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUdyb3VwIGV4dGVuZHMgQXphcGlSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBTdGF0aWMgaW5pdGlhbGl6YXRpb24gZmxhZyB0byBlbnN1cmUgc2NoZW1hcyBhcmUgcmVnaXN0ZXJlZCBvbmx5IG9uY2VcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNjaGVtYXNSZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhhdCBSZXNvdXJjZSBHcm91cCBzY2hlbWFzIGFyZSByZWdpc3RlcmVkIHdpdGggdGhlIEFwaVZlcnNpb25NYW5hZ2VyXG4gICAqIFRoaXMgaXMgY2FsbGVkIG9uY2UgZHVyaW5nIHRoZSBmaXJzdCBSZXNvdXJjZUdyb3VwIGluc3RhbnRpYXRpb25cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVuc3VyZVNjaGVtYXNSZWdpc3RlcmVkKCk6IHZvaWQge1xuICAgIGlmIChSZXNvdXJjZUdyb3VwLnNjaGVtYXNSZWdpc3RlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXBpVmVyc2lvbk1hbmFnZXIgPSBBcGlWZXJzaW9uTWFuYWdlci5pbnN0YW5jZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlZ2lzdGVyIGFsbCBSZXNvdXJjZSBHcm91cCB2ZXJzaW9uc1xuICAgICAgYXBpVmVyc2lvbk1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZVR5cGUoXG4gICAgICAgIFJFU09VUkNFX0dST1VQX1RZUEUsXG4gICAgICAgIEFMTF9SRVNPVVJDRV9HUk9VUF9WRVJTSU9OUyxcbiAgICAgICk7XG5cbiAgICAgIFJlc291cmNlR3JvdXAuc2NoZW1hc1JlZ2lzdGVyZWQgPSB0cnVlO1xuXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFJlZ2lzdGVyZWQgJHtBTExfUkVTT1VSQ0VfR1JPVVBfVkVSU0lPTlMubGVuZ3RofSBBUEkgdmVyc2lvbnMgZm9yICR7UkVTT1VSQ0VfR1JPVVBfVFlQRX1gLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRmFpbGVkIHRvIHJlZ2lzdGVyIFJlc291cmNlIEdyb3VwIHNjaGVtYXM6ICR7ZXJyb3J9LiBgICtcbiAgICAgICAgICBgVGhpcyBtYXkgaW5kaWNhdGUgdGhlIHNjaGVtYXMgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCBvciB0aGVyZSdzIGEgY29uZmlndXJhdGlvbiBpc3N1ZS5gLFxuICAgICAgKTtcbiAgICAgIC8vIERvbid0IHRocm93IGhlcmUgYXMgdGhlIHNjaGVtYXMgbWlnaHQgYWxyZWFkeSBiZSByZWdpc3RlcmVkXG4gICAgICBSZXNvdXJjZUdyb3VwLnNjaGVtYXNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgUmVzb3VyY2UgR3JvdXAgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogUmVzb3VyY2VHcm91cFByb3BzO1xuXG4gIC8vIE91dHB1dCBwcm9wZXJ0aWVzIGZvciBlYXN5IGFjY2VzcyBhbmQgcmVmZXJlbmNpbmdcbiAgcHVibGljIHJlYWRvbmx5IGlkT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhdGlvbk91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnc091dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8vIFB1YmxpYyBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggdGhlIG9yaWdpbmFsIFJlc291cmNlR3JvdXAgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBBenVyZSBSZXNvdXJjZSBHcm91cCB1c2luZyB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAgICpcbiAgICogVGhlIGNvbnN0cnVjdG9yIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIHJlc29sdXRpb24sIHNjaGVtYSByZWdpc3RyYXRpb24sXG4gICAqIHZhbGlkYXRpb24sIGFuZCByZXNvdXJjZSBjcmVhdGlvbi4gSXQgbWFpbnRhaW5zIGZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgKiB3aXRoIGV4aXN0aW5nIFJlc291cmNlIEdyb3VwIGltcGxlbWVudGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgUmVzb3VyY2UgR3JvdXBcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZUdyb3VwUHJvcHMpIHtcbiAgICAvLyBFbnN1cmUgc2NoZW1hcyBhcmUgcmVnaXN0ZXJlZCBiZWZvcmUgY2FsbGluZyBzdXBlclxuICAgIFJlc291cmNlR3JvdXAuZW5zdXJlU2NoZW1hc1JlZ2lzdGVyZWQoKTtcblxuICAgIC8vIENhbGwgdGhlIHBhcmVudCBjb25zdHJ1Y3RvciB3aXRoIHRoZSBwcm9wc1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgLy8gRXh0cmFjdCBwcm9wZXJ0aWVzIGZyb20gdGhlIEFaQVBJIHJlc291cmNlIG91dHB1dHMgdXNpbmcgVGVycmFmb3JtIGludGVycG9sYXRpb25cbiAgICB0aGlzLmlkID0gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5pZH1gO1xuICAgIHRoaXMudGFncyA9IHByb3BzLnRhZ3MgfHwge307XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFJlc291cmNlIEdyb3VwXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvY2F0aW9uXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmxvY2F0aW9ufWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbG9jYXRpb24gb2YgdGhlIFJlc291cmNlIEdyb3VwXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgUmVzb3VyY2UgR3JvdXBcIixcbiAgICB9KTtcblxuICAgIHRoaXMudGFnc091dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJ0YWdzXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LnRhZ3N9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0YWdzIGFzc2lnbmVkIHRvIHRoZSBSZXNvdXJjZSBHcm91cFwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggb3JpZ2luYWwgbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImxvY2F0aW9uXCIpO1xuICAgIHRoaXMubmFtZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIm5hbWVcIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcblxuICAgIC8vIEFwcGx5IGlnbm9yZSBjaGFuZ2VzIGlmIHNwZWNpZmllZFxuICAgIHRoaXMuX2FwcGx5SWdub3JlQ2hhbmdlcygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKiBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBzdGFibGUgdmVyc2lvbiBhcyB0aGUgZGVmYXVsdFxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNS0wMy0wMVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF6dXJlIHJlc291cmNlIHR5cGUgZm9yIFJlc291cmNlIEdyb3Vwc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBSRVNPVVJDRV9HUk9VUF9UWVBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEFQSSBzY2hlbWEgZm9yIHRoZSByZXNvbHZlZCB2ZXJzaW9uXG4gICAqIFVzZXMgdGhlIGZyYW1ld29yaydzIHNjaGVtYSByZXNvbHV0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXBpU2NoZW1hKCk6IEFwaVNjaGVtYSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNjaGVtYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBBenVyZSBBUEkgY2FsbFxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIGludG8gdGhlIEpTT04gZm9ybWF0IGV4cGVjdGVkIGJ5IEF6dXJlIFJFU1QgQVBJXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBSZXNvdXJjZUdyb3VwUHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2F0aW9uOiB0eXBlZFByb3BzLmxvY2F0aW9uIHx8IFwiZWFzdHVzXCIsXG4gICAgICB0YWdzOiB0eXBlZFByb3BzLnRhZ3MgfHwge30sXG4gICAgICBtYW5hZ2VkQnk6IHR5cGVkUHJvcHMubWFuYWdlZEJ5LFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgUkVTT1VSQ0UgR1JPVVAgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBSZXNvdXJjZSBHcm91cCBJRFxuICAgKiBFeHRyYWN0cyB0aGUgc3Vic2NyaXB0aW9uIElEIGZyb20gdGhlIEF6dXJlIHJlc291cmNlIElEIGZvcm1hdFxuICAgKi9cbiAgcHVibGljIGdldCBzdWJzY3JpcHRpb25JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlkUGFydHMgPSB0aGlzLmlkLnNwbGl0KFwiL1wiKTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25JbmRleCA9IGlkUGFydHMuaW5kZXhPZihcInN1YnNjcmlwdGlvbnNcIik7XG4gICAgaWYgKHN1YnNjcmlwdGlvbkluZGV4ICE9PSAtMSAmJiBzdWJzY3JpcHRpb25JbmRleCArIDEgPCBpZFBhcnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGlkUGFydHNbc3Vic2NyaXB0aW9uSW5kZXggKyAxXTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gUmVzb3VyY2UgR3JvdXAgSURcIik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdWxsIHJlc291cmNlIGlkZW50aWZpZXIgZm9yIHVzZSBpbiBvdGhlciBBenVyZSByZXNvdXJjZXNcbiAgICogQWxpYXMgZm9yIHRoZSBpZCBwcm9wZXJ0eSB0byBtYXRjaCBvcmlnaW5hbCBpbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhZyB0byB0aGUgUmVzb3VyY2UgR3JvdXBcbiAgICogTm90ZTogVGhpcyBtb2RpZmllcyB0aGUgY29uc3RydWN0IHByb3BzIGJ1dCByZXF1aXJlcyBhIG5ldyBkZXBsb3ltZW50IHRvIHRha2UgZWZmZWN0XG4gICAqL1xuICBwdWJsaWMgYWRkVGFnKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnRhZ3MpIHtcbiAgICAgICh0aGlzLnByb3BzIGFzIGFueSkudGFncyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3BzLnRhZ3MhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0YWcgZnJvbSB0aGUgUmVzb3VyY2UgR3JvdXBcbiAgICogTm90ZTogVGhpcyBtb2RpZmllcyB0aGUgY29uc3RydWN0IHByb3BzIGJ1dCByZXF1aXJlcyBhIG5ldyBkZXBsb3ltZW50IHRvIHRha2UgZWZmZWN0XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFnKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMudGFncyAmJiB0aGlzLnByb3BzLnRhZ3Nba2V5XSkge1xuICAgICAgZGVsZXRlIHRoaXMucHJvcHMudGFnc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBwbGllcyBpZ25vcmUgY2hhbmdlcyBsaWZlY3ljbGUgcnVsZXMgaWYgc3BlY2lmaWVkIGluIHByb3BzXG4gICAqL1xuICBwcml2YXRlIF9hcHBseUlnbm9yZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcyAmJiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gRmlsdGVyIG91dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBmb3IgQVpBUEkgcmVzb3VyY2UgaWdub3JlX2NoYW5nZXNcbiAgICAgIC8vIG1hbmFnZWRCeSBzaG91bGQgYmUgaW4gdGhlIHJlc291cmNlIGJvZHksIG5vdCBpbiBpZ25vcmVfY2hhbmdlc1xuICAgICAgY29uc3QgdmFsaWRJZ25vcmVDaGFuZ2VzID0gdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmZpbHRlcihcbiAgICAgICAgKGNoYW5nZSkgPT4gY2hhbmdlICE9PSBcIm1hbmFnZWRCeVwiLFxuICAgICAgKTtcblxuICAgICAgaWYgKHZhbGlkSWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB2YWxpZElnbm9yZUNoYW5nZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCQUNLV0FSRCBDT01QQVRJQklMSVRZIEVYUE9SVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQWxpYXMgZm9yIFJlc291cmNlR3JvdXAgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICogQGRlcHJlY2F0ZWQgVXNlIFJlc291cmNlR3JvdXAgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgR3JvdXAgPSBSZXNvdXJjZUdyb3VwO1xuXG4vKipcbiAqIFR5cGUgYWxpYXMgZm9yIFJlc291cmNlR3JvdXBQcm9wcyB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gKiBAZGVwcmVjYXRlZCBVc2UgUmVzb3VyY2VHcm91cFByb3BzIGluc3RlYWRcbiAqL1xuZXhwb3J0IHR5cGUgR3JvdXBQcm9wcyA9IFJlc291cmNlR3JvdXBQcm9wcztcblxuLyoqXG4gKiBUeXBlIGFsaWFzIGZvciBSZXNvdXJjZUdyb3VwQm9keSB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gKiBAZGVwcmVjYXRlZCBVc2UgUmVzb3VyY2VHcm91cEJvZHkgaW5zdGVhZFxuICovXG5leHBvcnQgdHlwZSBHcm91cEJvZHkgPSBSZXNvdXJjZUdyb3VwQm9keTtcbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcmVzb3VyY2Vncm91cC9saWIvcmVzb3VyY2UtZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsK0JBQStCO0FBRS9CLHFFQUdrQztBQUNsQyw4RUFHbUQ7QUFDbkQsa0hBQTRHO0FBOEM1Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsOEJBQWE7SUFvQjlDOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGdGQUFnRjtRQUNoRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3BELEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNkLFdBQVcsRUFBRSw4QkFBOEI7U0FDNUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxZQUFZO1lBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN4RCxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRO1lBQy9DLFdBQVcsRUFB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QUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FDbkMsQ0FBQztZQUVGLElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtvQkFDOUM7d0JBQ0UsY0FBYyxFQUFFLGtCQUFrQjtxQkFDbkM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQTVLSCxzQ0E2S0M7OztBQTVLQyw4REFBOEQ7QUFDOUQ7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0IsNENBQW1CLEVBQ25CLG9EQUEyQixDQUM1QixDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUE7QUF3S0gsZ0ZBQWdGO0FBQ2hGLGlDQUFpQztBQUNqQyxnRkFBZ0Y7QUFFaEY7OztHQUdHO0FBQ1UsUUFBQSxLQUFLLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbmlmaWVkIEF6dXJlIFJlc291cmNlIEdyb3VwIGltcGxlbWVudGF0aW9uIHVzaW5nIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyByZXBsYWNlcyBhbGwgdmVyc2lvbi1zcGVjaWZpYyBSZXNvdXJjZSBHcm91cCBpbXBsZW1lbnRhdGlvbnMgd2l0aCBhIHNpbmdsZVxuICogdW5pZmllZCBjbGFzcyB0aGF0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmRcbiAqIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDI0LTExLTAxIChBY3RpdmUpXG4gKiAtIDIwMjUtMDEtMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNS0wMy0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gRnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgUmVzb3VyY2UgR3JvdXAgaW50ZXJmYWNlXG4gKiAtIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICovXG5cbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEFMTF9SRVNPVVJDRV9HUk9VUF9WRVJTSU9OUyxcbiAgUkVTT1VSQ0VfR1JPVVBfVFlQRSxcbn0gZnJvbSBcIi4vcmVzb3VyY2UtZ3JvdXAtc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IERhdGFBemFwaUNsaWVudENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9wcm92aWRlcnMtYXphcGkvZGF0YS1hemFwaS1jbGllbnQtY29uZmlnXCI7XG5pbXBvcnQgeyBBcGlTY2hlbWEgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHVuaWZpZWQgQXp1cmUgUmVzb3VyY2UgR3JvdXBcbiAqXG4gKiBFeHRlbmRzIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VQcm9wcyB3aXRoIFJlc291cmNlIEdyb3VwIHNwZWNpZmljIHByb3BlcnRpZXNcbiAqIHdoaWxlIG1haW50YWluaW5nIGZ1bGwgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvcmlnaW5hbCBHcm91cFByb3BzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUdyb3VwUHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogTWFuYWdlZCBieSBpbmZvcm1hdGlvbiBmb3IgdGhlIHJlc291cmNlIGdyb3VwLlxuICAgKiBJbmRpY2F0ZXMgd2hhdCBzZXJ2aWNlIG9yIHRvb2wgaXMgbWFuYWdpbmcgdGhpcyByZXNvdXJjZSBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRCeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpZmVjeWNsZSBydWxlcyB0byBpZ25vcmUgY2hhbmdlcy5cbiAgICogVXNlZnVsIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlIGV4dGVybmFsbHkgbWFuYWdlZCBvciBzaG91bGQgbm90IHRyaWdnZXIgdXBkYXRlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgW1widGFnc1wiLCBcIm1hbmFnZWRCeVwiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSByZXNvdXJjZSBib2R5IGludGVyZmFjZSBmb3IgQXp1cmUgUmVzb3VyY2UgR3JvdXAgQVBJIGNhbGxzXG4gKiBUaGlzIG1hdGNoZXMgdGhlIEF6dXJlIFJFU1QgQVBJIHNjaGVtYSBmb3IgcmVzb3VyY2UgZ3JvdXBzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VHcm91cEJvZHkge1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSByZXNvdXJjZSBncm91cC4gQ2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgY3JlYXRpb24uXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyBhdHRhY2hlZCB0byB0aGUgcmVzb3VyY2UgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByZXNvdXJjZSB0aGF0IG1hbmFnZXMgdGhpcyByZXNvdXJjZSBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRCeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmlmaWVkIEF6dXJlIFJlc291cmNlIEdyb3VwIGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcGxhY2VzIGFsbFxuICogdmVyc2lvbi1zcGVjaWZpYyBSZXNvdXJjZSBHcm91cCBjbGFzc2VzLiBJdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvblxuICogcmVzb2x1dGlvbiwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiB3aGlsZSBtYWludGFpbmluZ1xuICogZnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICpcbiAqIFRoZSBjbGFzcyB1c2VzIHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29yayB0byBwcm92aWRlOlxuICogLSBBdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvbiAoMjAyNS0wMy0wMSBhcyBvZiB0aGlzIGltcGxlbWVudGF0aW9uKVxuICogLSBTdXBwb3J0IGZvciBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgd2hlbiBzdGFiaWxpdHkgaXMgcmVxdWlyZWRcbiAqIC0gU2NoZW1hLWRyaXZlbiBwcm9wZXJ0eSB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBNaWdyYXRpb24gYW5hbHlzaXMgYW5kIGRlcHJlY2F0aW9uIHdhcm5pbmdzXG4gKiAtIEZ1bGwgSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbjpcbiAqIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInJnXCIsIHtcbiAqICAgbmFtZTogXCJteS1yZXNvdXJjZS1ncm91cFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIgfVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzYWdlIHdpdGggZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nOlxuICogY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwicmdcIiwge1xuICogICBuYW1lOiBcIm15LXJlc291cmNlLWdyb3VwXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICBhcGlWZXJzaW9uOiBcIjIwMjQtMTEtMDFcIiwgLy8gUGluIHRvIHNwZWNpZmljIHZlcnNpb25cbiAqICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIgfVxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlR3JvdXAgZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgLy8gU3RhdGljIGluaXRpYWxpemVyIHJ1bnMgb25jZSB3aGVuIHRoZSBjbGFzcyBpcyBmaXJzdCBsb2FkZWRcbiAgc3RhdGljIHtcbiAgICBBemFwaVJlc291cmNlLnJlZ2lzdGVyU2NoZW1hcyhcbiAgICAgIFJFU09VUkNFX0dST1VQX1RZUEUsXG4gICAgICBBTExfUkVTT1VSQ0VfR1JPVVBfVkVSU0lPTlMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhpcyBSZXNvdXJjZSBHcm91cCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBSZXNvdXJjZUdyb3VwUHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSB0YWdzT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgUmVzb3VyY2UgR3JvdXAgdXNpbmcgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIFRoZSBjb25zdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgcmVnaXN0cmF0aW9uLFxuICAgKiB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgY3JlYXRpb24uIEl0IG1haW50YWlucyBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICogd2l0aCBleGlzdGluZyBSZXNvdXJjZSBHcm91cCBpbXBsZW1lbnRhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFJlc291cmNlIEdyb3VwXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzb3VyY2VHcm91cFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFJlc291cmNlIEdyb3VwXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvY2F0aW9uXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmxvY2F0aW9ufWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbG9jYXRpb24gb2YgdGhlIFJlc291cmNlIEdyb3VwXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgUmVzb3VyY2UgR3JvdXBcIixcbiAgICB9KTtcblxuICAgIHRoaXMudGFnc091dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJ0YWdzXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LnRhZ3N9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0YWdzIGFzc2lnbmVkIHRvIHRoZSBSZXNvdXJjZSBHcm91cFwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggb3JpZ2luYWwgbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImxvY2F0aW9uXCIpO1xuICAgIHRoaXMubmFtZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIm5hbWVcIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcblxuICAgIC8vIEFwcGx5IGlnbm9yZSBjaGFuZ2VzIGlmIHNwZWNpZmllZFxuICAgIHRoaXMuX2FwcGx5SWdub3JlQ2hhbmdlcygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKiBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBzdGFibGUgdmVyc2lvbiBhcyB0aGUgZGVmYXVsdFxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNS0wMy0wMVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF6dXJlIHJlc291cmNlIHR5cGUgZm9yIFJlc291cmNlIEdyb3Vwc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBSRVNPVVJDRV9HUk9VUF9UWVBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEFQSSBzY2hlbWEgZm9yIHRoZSByZXNvbHZlZCB2ZXJzaW9uXG4gICAqIFVzZXMgdGhlIGZyYW1ld29yaydzIHNjaGVtYSByZXNvbHV0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXBpU2NoZW1hKCk6IEFwaVNjaGVtYSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNjaGVtYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGxvY2F0aW9uIGlzIHJlcXVpcmVkIGZvciBSZXNvdXJjZSBHcm91cHNcbiAgICovXG4gIHByb3RlY3RlZCByZXF1aXJlc0xvY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBBenVyZSBBUEkgY2FsbFxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIGludG8gdGhlIEpTT04gZm9ybWF0IGV4cGVjdGVkIGJ5IEF6dXJlIFJFU1QgQVBJXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBSZXNvdXJjZUdyb3VwUHJvcHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb246IHRoaXMubG9jYXRpb24sXG4gICAgICB0YWdzOiB0aGlzLmFsbFRhZ3MoKSxcbiAgICAgIG1hbmFnZWRCeTogdHlwZWRQcm9wcy5tYW5hZ2VkQnksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgcGFyZW50IElEIGZvciBSZXNvdXJjZSBHcm91cHNcbiAgICogUmVzb3VyY2UgR3JvdXBzIGFyZSB0b3AtbGV2ZWwgcmVzb3VyY2VzIHdpdGggc3Vic2NyaXB0aW9uIGFzIHBhcmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc29sdmVQYXJlbnRJZChfcHJvcHM6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xpZW50Q29uZmlnID0gbmV3IERhdGFBemFwaUNsaWVudENvbmZpZyh0aGlzLCBcImNsaWVudF9jb25maWdcIiwge30pO1xuICAgIHJldHVybiBgL3N1YnNjcmlwdGlvbnMvXFwkeyR7Y2xpZW50Q29uZmlnLmZxbn0uc3Vic2NyaXB0aW9uX2lkfWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgUkVTT1VSQ0UgR1JPVVAgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBSZXNvdXJjZSBHcm91cCBJRFxuICAgKiBFeHRyYWN0cyB0aGUgc3Vic2NyaXB0aW9uIElEIGZyb20gdGhlIEF6dXJlIHJlc291cmNlIElEIGZvcm1hdFxuICAgKi9cbiAgcHVibGljIGdldCBzdWJzY3JpcHRpb25JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlkUGFydHMgPSB0aGlzLmlkLnNwbGl0KFwiL1wiKTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25JbmRleCA9IGlkUGFydHMuaW5kZXhPZihcInN1YnNjcmlwdGlvbnNcIik7XG4gICAgaWYgKHN1YnNjcmlwdGlvbkluZGV4ICE9PSAtMSAmJiBzdWJzY3JpcHRpb25JbmRleCArIDEgPCBpZFBhcnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGlkUGFydHNbc3Vic2NyaXB0aW9uSW5kZXggKyAxXTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gUmVzb3VyY2UgR3JvdXAgSURcIik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdWxsIHJlc291cmNlIGlkZW50aWZpZXIgZm9yIHVzZSBpbiBvdGhlciBBenVyZSByZXNvdXJjZXNcbiAgICogQWxpYXMgZm9yIHRoZSBpZCBwcm9wZXJ0eSB0byBtYXRjaCBvcmlnaW5hbCBpbnRlcmZhY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBGaWx0ZXIgb3V0IHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHZhbGlkIGZvciBBWkFQSSByZXNvdXJjZSBpZ25vcmVfY2hhbmdlc1xuICAgICAgLy8gbWFuYWdlZEJ5IHNob3VsZCBiZSBpbiB0aGUgcmVzb3VyY2UgYm9keSwgbm90IGluIGlnbm9yZV9jaGFuZ2VzXG4gICAgICBjb25zdCB2YWxpZElnbm9yZUNoYW5nZXMgPSB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMuZmlsdGVyKFxuICAgICAgICAoY2hhbmdlKSA9PiBjaGFuZ2UgIT09IFwibWFuYWdlZEJ5XCIsXG4gICAgICApO1xuXG4gICAgICBpZiAodmFsaWRJZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5hZGRPdmVycmlkZShcImxpZmVjeWNsZVwiLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlX2NoYW5nZXM6IHZhbGlkSWdub3JlQ2hhbmdlcyxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBQ0tXQVJEIENPTVBBVElCSUxJVFkgRVhQT1JUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBbGlhcyBmb3IgUmVzb3VyY2VHcm91cCB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gKiBAZGVwcmVjYXRlZCBVc2UgUmVzb3VyY2VHcm91cCBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBHcm91cCA9IFJlc291cmNlR3JvdXA7XG5cbi8qKlxuICogVHlwZSBhbGlhcyBmb3IgUmVzb3VyY2VHcm91cFByb3BzIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAqIEBkZXByZWNhdGVkIFVzZSBSZXNvdXJjZUdyb3VwUHJvcHMgaW5zdGVhZFxuICovXG5leHBvcnQgdHlwZSBHcm91cFByb3BzID0gUmVzb3VyY2VHcm91cFByb3BzO1xuXG4vKipcbiAqIFR5cGUgYWxpYXMgZm9yIFJlc291cmNlR3JvdXBCb2R5IHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAqIEBkZXByZWNhdGVkIFVzZSBSZXNvdXJjZUdyb3VwQm9keSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCB0eXBlIEdyb3VwQm9keSA9IFJlc291cmNlR3JvdXBCb2R5O1xuIl19
@@ -87,7 +87,7 @@ describe("ResourceGroup - Unified Implementation", () => {
87
87
  };
88
88
  expect(() => {
89
89
  new resource_group_1.ResourceGroup(stack, "TestResourceGroup", props);
90
- }).toThrow("Required property 'location' is missing");
90
+ }).toThrow("Location is required for Microsoft.Resources/resourceGroups");
91
91
  });
92
92
  });
93
93
  describe("Framework Integration", () => {
@@ -249,22 +249,22 @@ describe("ResourceGroup - Unified Implementation", () => {
249
249
  expect(resourceGroup.resourceId).toBe(resourceGroup.id);
250
250
  });
251
251
  it("should extract subscription ID from resource ID", () => {
252
- // We can't directly test this without mocking the terraform resource
253
- // but we can test the error case
252
+ // The id property is now a getter that derives from terraformResource
253
+ // We can verify the id format is correct
254
+ expect(resourceGroup.id).toMatch(/^\$\{.*\.id\}$/);
255
+ // The subscriptionId getter attempts to parse the id string
256
+ // In test context with Terraform interpolation, it will throw an error
257
+ // which is expected behavior. In real deployment, id would be a resolved Azure resource ID
254
258
  expect(() => {
255
- resourceGroup.id = "invalid-id-format";
256
259
  resourceGroup.subscriptionId;
257
260
  }).toThrow("Unable to extract subscription ID from Resource Group ID");
258
261
  });
259
262
  it("should support tag management", () => {
260
263
  // Test addTag
261
264
  resourceGroup.addTag("newTag", "newValue");
262
- expect(resourceGroup.props.tags.newTag).toBe("newValue");
263
- expect(resourceGroup.props.tags.environment).toBe("test");
264
- // Test removeTag
265
- resourceGroup.removeTag("environment");
266
- expect(resourceGroup.props.tags.environment).toBeUndefined();
267
- expect(resourceGroup.props.tags.newTag).toBe("newValue");
265
+ // Tags should now be accessible via the tags getter
266
+ expect(resourceGroup.tags.newTag).toBe("newValue");
267
+ expect(resourceGroup.tags.environment).toBe("test");
268
268
  });
269
269
  it("should add tags when no tags exist", () => {
270
270
  const rgNoTags = new resource_group_1.ResourceGroup(stack, "NoTagsRG", {
@@ -272,12 +272,7 @@ describe("ResourceGroup - Unified Implementation", () => {
272
272
  location: "eastus",
273
273
  });
274
274
  rgNoTags.addTag("firstTag", "firstValue");
275
- expect(rgNoTags.props.tags.firstTag).toBe("firstValue");
276
- });
277
- it("should handle removing non-existent tags gracefully", () => {
278
- expect(() => {
279
- resourceGroup.removeTag("nonExistentTag");
280
- }).not.toThrow();
275
+ expect(rgNoTags.tags.firstTag).toBe("firstValue");
281
276
  });
282
277
  });
283
278
  describe("Ignore Changes Configuration", () => {
@@ -382,7 +377,7 @@ describe("ResourceGroup - Unified Implementation", () => {
382
377
  location: "", // Invalid empty location
383
378
  enableValidation: true,
384
379
  });
385
- }).toThrow("Property validation failed");
380
+ }).toThrow("Location is required for Microsoft.Resources/resourceGroups");
386
381
  });
387
382
  it("should handle schema registration errors gracefully", () => {
388
383
  // The ResourceGroup constructor should handle already-registered schemas
@@ -420,7 +415,6 @@ describe("ResourceGroup - Unified Implementation", () => {
420
415
  location: "eastus",
421
416
  });
422
417
  expect(typeof resourceGroup.addTag).toBe("function");
423
- expect(typeof resourceGroup.removeTag).toBe("function");
424
418
  expect(typeof resourceGroup.latestVersion).toBe("function");
425
419
  expect(typeof resourceGroup.supportedVersions).toBe("function");
426
420
  expect(typeof resourceGroup.analyzeMigrationTo).toBe("function");
@@ -551,4 +545,4 @@ describe("ResourceGroup - Unified Implementation", () => {
551
545
  });
552
546
  });
553
547
  });
554
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZ3JvdXAuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1yZXNvdXJjZWdyb3VwL3Rlc3QvcmVzb3VyY2UtZ3JvdXAuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsMERBQTBFO0FBQzFFLDBFQUd1QztBQUV2QyxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLCtDQUErQztRQUMvQyxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLDRDQUFtQixFQUNuQixvREFBMkIsQ0FDNUIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLHVFQUF1RSxFQUFFLEdBQUcsRUFBRTtZQUMvRSxNQUFNLEtBQUssR0FBdUI7Z0JBQ2hDLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2FBQ25CLENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLDhCQUFhLENBQ3JDLEtBQUssRUFDTCxtQkFB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LENBQUMsT0FBTyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFN0Msa0RBQWtEO1lBQ2xELE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQ3BFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2pCLElBQUksOEJBQWEsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEtBQUssRUFBRSxFQUFFO2dCQUNoRCxJQUFJLEVBQUUsa0JBQWtCLEtBQUssRUFBRTtnQkFDL0IsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFVBQVUsRUFBRSxPQUFPO2FBQ3BCLENBQUMsQ0FDTCxDQUFDO1lBRUYsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsOEJBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21wcmVoZW5zaXZlIHRlc3RzIGZvciB0aGUgdW5pZmllZCBSZXNvdXJjZUdyb3VwIGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyB0aGUgdW5pZmllZCBSZXNvdXJjZUdyb3VwIGNsYXNzIHRoYXQgcmVwbGFjZXMgYWxsXG4gKiB2ZXJzaW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyB1c2luZyB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmsuXG4gKiBUZXN0cyBjb3ZlciBhdXRvbWF0aWMgdmVyc2lvbiByZXNvbHV0aW9uLCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcsIHNjaGVtYSB2YWxpZGF0aW9uLFxuICogcHJvcGVydHkgdHJhbnNmb3JtYXRpb24sIGFuZCBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAsIFJlc291cmNlR3JvdXBQcm9wcyB9IGZyb20gXCIuLi9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7XG4gIEFMTF9SRVNPVVJDRV9HUk9VUF9WRVJTSU9OUyxcbiAgUkVTT1VSQ0VfR1JPVVBfVFlQRSxcbn0gZnJvbSBcIi4uL2xpYi9yZXNvdXJjZS1ncm91cC1zY2hlbWFzXCI7XG5cbmRlc2NyaWJlKFwiUmVzb3VyY2VHcm91cCAtIFVuaWZpZWQgSW1wbGVtZW50YXRpb25cIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0Zi5BcHA7XG4gIGxldCBzdGFjazogY2RrdGYuVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBBcGlWZXJzaW9uTWFuYWdlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJUZXN0U3RhY2tcIik7XG4gICAgbWFuYWdlciA9IEFwaVZlcnNpb25NYW5hZ2VyLmluc3RhbmNlKCk7XG5cbiAgICAvLyBFbnN1cmUgUmVzb3VyY2UgR3JvdXAgc2NoZW1hcyBhcmUgcmVnaXN0ZXJlZFxuICAgIHRyeSB7XG4gICAgICBtYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2VUeXBlKFxuICAgICAgICBSRVNPVVJDRV9HUk9VUF9UWVBFLFxuICAgICAgICBBTExfUkVTT1VSQ0VfR1JPVVBfVkVSU0lPTlMsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBJZ25vcmUgaWYgYWxyZWFkeSByZWdpc3RlcmVkXG4gICAgfVxuICB9KTtcblxuICBkZXNjcmliZShcIkNvbnN0cnVjdG9yIGFuZCBCYXNpYyBQcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcmVzb3VyY2UgZ3JvdXAgd2l0aCBhdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUmVzb3VyY2VHcm91cFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlRlc3RSZXNvdXJjZUdyb3VwXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVJbnN0YW5jZU9mKFJlc291cmNlR3JvdXApO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNS0wMy0wMVwiKTsgLy8gTGF0ZXN0IHZlcnNpb25cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLm5hbWUpLnRvQmUoXCJ0ZXN0LXJnXCIpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAubG9jYXRpb24pLnRvQmUoXCJlYXN0dXNcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgcmVzb3VyY2UgZ3JvdXAgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJlc291cmNlR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnLXBpbm5lZFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTExLTAxXCIsIC8vIFBpbiB0byBzcGVjaWZpYyB2ZXJzaW9uXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlRlc3RSZXNvdXJjZUdyb3VwXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0xMS0wMVwiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnRhZ3MpLnRvRXF1YWwoeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgcmVzb3VyY2UgZ3JvdXAgd2l0aCBhbGwgb3B0aW9uYWwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUmVzb3VyY2VHcm91cFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmctZnVsbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJjZW50cmFsdXNcIixcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgICBwcm9qZWN0OiBcImNka3RmLWNvbnN0cnVjdHNcIixcbiAgICAgICAgICBvd25lcjogXCJ0ZWFtQGNvbXBhbnkuY29tXCIsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmFnZWRCeTogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy9tYW5hZ2VtZW50LXJnXCIsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIiwgXCJtYW5hZ2VkQnlcIl0sXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiB0cnVlLFxuICAgICAgICBlbmFibGVUcmFuc2Zvcm1hdGlvbjogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiVGVzdFJlc291cmNlR3JvdXBcIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5wcm9wcy50YWdzKS50b0VxdWFsKHByb3BzLnRhZ3MpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucHJvcHMubWFuYWdlZEJ5KS50b0JlKHByb3BzLm1hbmFnZWRCeSk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0VxdWFsKHByb3BzLmlnbm9yZUNoYW5nZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgbmFtZSB3aGVuIG5hbWUgaXMgbm90IHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSZXNvdXJjZUdyb3VwUHJvcHMgPSB7XG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJUZXN0UmVzb3VyY2VHcm91cFwiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLm5hbWUpLnRvQmUoXCJUZXN0UmVzb3VyY2VHcm91cFwiKTsgLy8gU2hvdWxkIHVzZSBjb25zdHJ1Y3QgaWRcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJlcXVpcmUgbG9jYXRpb24gdG8gYmUgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJlc291cmNlR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCBwcm9wcyk7XG4gICAgICB9KS50b1Rocm93KFwiUmVxdWlyZWQgcHJvcGVydHkgJ2xvY2F0aW9uJyBpcyBtaXNzaW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkZyYW1ld29yayBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBsYXRlc3QgQVBJIHZlcnNpb24gYXV0b21hdGljYWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNS0wMy0wMVwiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmxhdGVzdFZlcnNpb24oKSkudG9CZShcIjIwMjUtMDMtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGFsbCByZWdpc3RlcmVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3VwcG9ydGVkVmVyc2lvbnMgPSByZXNvdXJjZUdyb3VwLnN1cHBvcnRlZFZlcnNpb25zKCk7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjUtMDEtMDFcIik7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjUtMDMtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSB2ZXJzaW9uIHN1cHBvcnRcIiwgKCkgPT4ge1xuICAgICAgLy8gVmFsaWQgdmVyc2lvblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVmFsaWRWZXJzaW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjUtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuXG4gICAgICAvLyBJbnZhbGlkIHZlcnNpb25cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkludmFsaWRWZXJzaW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjYtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjYtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0xMS0wMVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYS5yZXNvdXJjZVR5cGUpLnRvQmUoUkVTT1VSQ0VfR1JPVVBfVFlQRSk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEudmVyc2lvbikudG9CZShcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEucHJvcGVydGllcykudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGxvYWQgdmVyc2lvbiBjb25maWd1cmF0aW9uIGNvcnJlY3RseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAudmVyc2lvbkNvbmZpZykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnZlcnNpb25Db25maWcudmVyc2lvbikudG9CZShcIjIwMjUtMDMtMDFcIik7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC52ZXJzaW9uQ29uZmlnLnN1cHBvcnRMZXZlbCkudG9CZShcbiAgICAgICAgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHByb3BlcnRpZXMgd2hlbiB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJlc291cmNlR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwgcHJvcHMpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgdmFsaWRhdGlvbiByZXN1bHRzIGZvciB2YWxpZCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidmFsaWQtbmFtZVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC52YWxpZGF0aW9uUmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAudmFsaWRhdGlvblJlc3VsdCEudmFsaWQpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC52YWxpZGF0aW9uUmVzdWx0IS5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHNraXAgdmFsaWRhdGlvbiB3aGVuIGRpc2FibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiTWlncmF0aW9uIEFuYWx5c2lzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBwZXJmb3JtIG1pZ3JhdGlvbiBhbmFseXNpcyBiZXR3ZWVuIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTExLTAxXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYW5hbHlzaXMgPSByZXNvdXJjZUdyb3VwLmFuYWx5emVNaWdyYXRpb25UbyhcIjIwMjUtMDMtMDFcIik7XG5cbiAgICAgIGV4cGVjdChhbmFseXNpcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhbmFseXNpcy5mcm9tVmVyc2lvbikudG9CZShcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3QoYW5hbHlzaXMudG9WZXJzaW9uKS50b0JlKFwiMjAyNS0wMy0wMVwiKTtcbiAgICAgIGV4cGVjdChhbmFseXNpcy5jb21wYXRpYmxlKS50b0JlKHRydWUpOyAvLyBSZXNvdXJjZSBHcm91cCB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZVxuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2tpcCBtaWdyYXRpb24gYW5hbHlzaXMgd2hlbiBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5taWdyYXRpb25BbmFseXNpcykudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIENyZWF0aW9uIGFuZCBCb2R5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgY29ycmVjdCByZXNvdXJjZSBib2R5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSxcbiAgICAgICAgbWFuYWdlZEJ5OiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvcmVzb3VyY2VHcm91cHMvbWdtdFwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRlc3QgdGhlIGNyZWF0ZVJlc291cmNlQm9keSBtZXRob2QgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBmcmFtZXdvcmtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucHJvcHMudGFncykudG9FcXVhbCh7IGVudmlyb25tZW50OiBcInRlc3RcIiB9KTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzLm1hbmFnZWRCeSkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3Jlc291cmNlR3JvdXBzL21nbXRcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgbWluaW1hbCByZXNvdXJjZSBjcmVhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiTWluaW1hbFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcIm1pbmltYWwtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5uYW1lKS50b0JlKFwibWluaW1hbC1yZ1wiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmxvY2F0aW9uKS50b0JlKFwiZWFzdHVzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZy1vdXRwdXRzXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAubG9jYXRpb25PdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnRhZ3NPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHVibGljIE1ldGhvZHMgYW5kIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGxldCByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSByZXNvdXJjZUlkIHByb3BlcnR5IG1hdGNoaW5nIGlkXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnJlc291cmNlSWQpLnRvQmUocmVzb3VyY2VHcm91cC5pZCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBleHRyYWN0IHN1YnNjcmlwdGlvbiBJRCBmcm9tIHJlc291cmNlIElEXCIsICgpID0+IHtcbiAgICAgIC8vIFdlIGNhbid0IGRpcmVjdGx5IHRlc3QgdGhpcyB3aXRob3V0IG1vY2tpbmcgdGhlIHRlcnJhZm9ybSByZXNvdXJjZVxuICAgICAgLy8gYnV0IHdlIGNhbiB0ZXN0IHRoZSBlcnJvciBjYXNlXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICAocmVzb3VyY2VHcm91cCBhcyBhbnkpLmlkID0gXCJpbnZhbGlkLWlkLWZvcm1hdFwiO1xuICAgICAgICByZXNvdXJjZUdyb3VwLnN1YnNjcmlwdGlvbklkO1xuICAgICAgfSkudG9UaHJvdyhcIlVuYWJsZSB0byBleHRyYWN0IHN1YnNjcmlwdGlvbiBJRCBmcm9tIFJlc291cmNlIEdyb3VwIElEXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCB0YWcgbWFuYWdlbWVudFwiLCAoKSA9PiB7XG4gICAgICAvLyBUZXN0IGFkZFRhZ1xuICAgICAgcmVzb3VyY2VHcm91cC5hZGRUYWcoXCJuZXdUYWdcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzLnRhZ3MhLm5ld1RhZykudG9CZShcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuXG4gICAgICAvLyBUZXN0IHJlbW92ZVRhZ1xuICAgICAgcmVzb3VyY2VHcm91cC5yZW1vdmVUYWcoXCJlbnZpcm9ubWVudFwiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzLnRhZ3MhLmVudmlyb25tZW50KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5wcm9wcy50YWdzIS5uZXdUYWcpLnRvQmUoXCJuZXdWYWx1ZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGFkZCB0YWdzIHdoZW4gbm8gdGFncyBleGlzdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZ05vVGFncyA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIk5vVGFnc1JHXCIsIHtcbiAgICAgICAgbmFtZTogXCJuby10YWdzLXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgfSk7XG5cbiAgICAgIHJnTm9UYWdzLmFkZFRhZyhcImZpcnN0VGFnXCIsIFwiZmlyc3RWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdChyZ05vVGFncy5wcm9wcy50YWdzIS5maXJzdFRhZykudG9CZShcImZpcnN0VmFsdWVcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgcmVtb3Zpbmcgbm9uLWV4aXN0ZW50IHRhZ3MgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICByZXNvdXJjZUdyb3VwLnJlbW92ZVRhZyhcIm5vbkV4aXN0ZW50VGFnXCIpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJJZ25vcmUgQ2hhbmdlcyBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBhcHBseSBpZ25vcmUgY2hhbmdlcyBsaWZlY3ljbGUgcnVsZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIklnbm9yZUNoYW5nZXNSR1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiLCBcImxvY2F0aW9uXCJdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwKS50b0JlSW5zdGFuY2VPZihSZXNvdXJjZUdyb3VwKTtcbiAgICAgIC8vIFRoZSBpZ25vcmVfY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgdW5kZXJseWluZyB0ZXJyYWZvcm0gcmVzb3VyY2VcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGZpbHRlciBvdXQgaW52YWxpZCBpZ25vcmUgY2hhbmdlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiRmlsdGVyZWRJZ25vcmVSR1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiLCBcIm1hbmFnZWRCeVwiLCBcImxvY2F0aW9uXCJdLCAvLyBtYW5hZ2VkQnkgc2hvdWxkIGJlIGZpbHRlcmVkXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVJbnN0YW5jZU9mKFJlc291cmNlR3JvdXApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGVtcHR5IGlnbm9yZSBjaGFuZ2VzIGFycmF5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJFbXB0eUlnbm9yZVJHXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cCkudG9CZUluc3RhbmNlT2YoUmVzb3VyY2VHcm91cCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVmVyc2lvbiBDb21wYXRpYmlsaXR5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB3b3JrIHdpdGggYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDI0LTExLTAxXCIsIFwiMjAyNS0wMS0wMVwiLCBcIjIwMjUtMDMtMDFcIl07XG5cbiAgICAgIHZlcnNpb25zLmZvckVhY2goKHZlcnNpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGBSRy0ke3ZlcnNpb24ucmVwbGFjZSgvLS9nLCBcIlwiKX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGB0ZXN0LXJnLSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEudmVyc2lvbikudG9CZSh2ZXJzaW9uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIHNjaGVtYSBkaWZmZXJlbmNlcyBhY3Jvc3MgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgLy8gQWxsIFJlc291cmNlIEdyb3VwIHZlcnNpb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIGNvcmUgc2NoZW1hXG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IFtcIjIwMjQtMTEtMDFcIiwgXCIyMDI1LTAxLTAxXCIsIFwiMjAyNS0wMy0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgYFNjaGVtYS0ke3ZlcnNpb24ucmVwbGFjZSgvLS9nLCBcIlwiKX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGBzY2hlbWEtdGVzdC0ke3ZlcnNpb259YCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYS5wcm9wZXJ0aWVzLmxvY2F0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEucHJvcGVydGllcy50YWdzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEucHJvcGVydGllcy5tYW5hZ2VkQnkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYWNrd2FyZCBDb21wYXRpYmlsaXR5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggb3JpZ2luYWwgR3JvdXBQcm9wcyBpbnRlcmZhY2VcIiwgKCkgPT4ge1xuICAgICAgLy8gVGVzdCB1c2luZyB0aGUgZGVwcmVjYXRlZCBHcm91cCBleHBvcnRcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCB7IEdyb3VwIH0gPSByZXF1aXJlKFwiLi4vbGliL3Jlc291cmNlLWdyb3VwXCIpO1xuXG4gICAgICBjb25zdCBncm91cCA9IG5ldyBHcm91cChzdGFjaywgXCJCYWNrd2FyZENvbXBhdEdyb3VwXCIsIHtcbiAgICAgICAgbmFtZTogXCJjb21wYXQtdGVzdFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgdGFnczogeyBjb21wYXRpYmlsaXR5OiBcInRlc3RcIiB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChncm91cCkudG9CZUluc3RhbmNlT2YoUmVzb3VyY2VHcm91cCk7XG4gICAgICBleHBlY3QoZ3JvdXAubmFtZSkudG9CZShcImNvbXBhdC10ZXN0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgd29yayB3aXRoIGV4aXN0aW5nIFJlc291cmNlR3JvdXAgcGF0dGVybnNcIiwgKCkgPT4ge1xuICAgICAgLy8gVGVzdCBwYXR0ZXJucyB0aGF0IHdvdWxkIGhhdmUgd29ya2VkIHdpdGggdmVyc2lvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJFeGlzdGluZ1BhdHRlcm5cIiwge1xuICAgICAgICBuYW1lOiBcImV4aXN0aW5nLXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcIndlc3R1czJcIixcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgICBjb3N0OiBcImNlbnRlcjFcIixcbiAgICAgICAgfSxcbiAgICAgICAgbWFuYWdlZEJ5OiBcIi9zdWJzY3JpcHRpb25zL3Rlc3Qtc3ViL3Jlc291cmNlR3JvdXBzL21hbmFnZW1lbnRcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5wcm9wcy50YWdzKS50b0VxdWFsKHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICBjb3N0OiBcImNlbnRlcjFcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkVycm9yIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYW5kbGUgaW52YWxpZCBBUEkgdmVyc2lvbnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJJbnZhbGlkQVBJXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcImludmFsaWQtdmVyc2lvblwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLnRvVGhyb3coXCJVbnN1cHBvcnRlZCBBUEkgdmVyc2lvbiAnaW52YWxpZC12ZXJzaW9uJ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSB2YWxpZGF0aW9uIGVycm9ycyB3aGVuIHZhbGlkYXRpb24gaXMgZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJWYWxpZGF0aW9uRXJyb3JcIiwge1xuICAgICAgICAgIG5hbWU6IFwiXCIsIC8vIEludmFsaWQgZW1wdHkgbmFtZVxuICAgICAgICAgIGxvY2F0aW9uOiBcIlwiLCAvLyBJbnZhbGlkIGVtcHR5IGxvY2F0aW9uXG4gICAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiUHJvcGVydHkgdmFsaWRhdGlvbiBmYWlsZWRcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgc2NoZW1hIHJlZ2lzdHJhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICAvLyBUaGUgUmVzb3VyY2VHcm91cCBjb25zdHJ1Y3RvciBzaG91bGQgaGFuZGxlIGFscmVhZHktcmVnaXN0ZXJlZCBzY2hlbWFzXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJTY2hlbWFUZXN0XCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkpTSUkgQ29tcGxpYW5jZVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBKU0lJLWNvbXBsaWFudCBjb25zdHJ1Y3RvclwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJKc2lpVGVzdFwiLCB7XG4gICAgICAgICAgbmFtZTogXCJqc2lpLXRlc3RcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBKU0lJLWNvbXBsaWFudCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJKc2lpUHJvcHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktcHJvcHNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLmlkKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLm5hbWUpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAubG9jYXRpb24pLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAudGFncykudG9CZShcIm9iamVjdFwiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgcmVzb3VyY2VHcm91cC5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IG1ldGhvZHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkpzaWlNZXRob2RzXCIsIHtcbiAgICAgICAgbmFtZTogXCJqc2lpLW1ldGhvZHNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLmFkZFRhZykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLnJlbW92ZVRhZykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLmxhdGVzdFZlcnNpb24pLnRvQmUoXCJmdW5jdGlvblwiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgcmVzb3VyY2VHcm91cC5zdXBwb3J0ZWRWZXJzaW9ucykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLmFuYWx5emVNaWdyYXRpb25UbykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2VyaWFsaXplIGNvbXBsZXggb2JqZWN0cyBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkpzaWlTZXJpYWxpemF0aW9uXCIsIHtcbiAgICAgICAgbmFtZTogXCJqc2lpLXNlcmlhbGl6YXRpb25cIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBjb21wbGV4OiBcInZhbHVlXCIsXG4gICAgICAgICAgbmVzdGVkOiBcImRhdGFcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaG91bGQgYmUgYWJsZSB0byBzZXJpYWxpemUgdmFsaWRhdGlvbiByZXN1bHRzXG4gICAgICBleHBlY3QoKCkgPT5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVzb3VyY2VHcm91cC52YWxpZGF0aW9uUmVzdWx0KSxcbiAgICAgICkubm90LnRvVGhyb3coKTtcblxuICAgICAgLy8gU2hvdWxkIGJlIGFibGUgdG8gc2VyaWFsaXplIHNjaGVtYVxuICAgICAgZXhwZWN0KCgpID0+IEpTT04uc3RyaW5naWZ5KHJlc291cmNlR3JvdXAuc2NoZW1hKSkubm90LnRvVGhyb3coKTtcblxuICAgICAgLy8gU2hvdWxkIGJlIGFibGUgdG8gc2VyaWFsaXplIHZlcnNpb24gY29uZmlnXG4gICAgICBleHBlY3QoKCkgPT4gSlNPTi5zdHJpbmdpZnkocmVzb3VyY2VHcm91cC52ZXJzaW9uQ29uZmlnKSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgVGVycmFmb3JtIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHRvIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIlN5bnRoVGVzdFwiLCB7XG4gICAgICAgIG5hbWU6IFwic3ludGgtdGVzdFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgdGFnczogeyB0ZXN0OiBcInN5bnRoZXNpc1wiIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHdvcmsgaW4gY29tcGxleCBDREsgY29uc3RydWN0c1wiLCAoKSA9PiB7XG4gICAgICBjbGFzcyBDb21wbGV4Q29uc3RydWN0IGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtU3RhY2sge1xuICAgICAgICBjb25zdHJ1Y3RvcihzY29wZTogY2RrdGYuQXBwLCBpZDogc3RyaW5nKSB7XG4gICAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICAgIC8vIENyZWF0ZSBtdWx0aXBsZSByZXNvdXJjZSBncm91cHNcbiAgICAgICAgICBjb25zdCByZzEgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcIlByaW1hcnlSR1wiLCB7XG4gICAgICAgICAgICBuYW1lOiBcInByaW1hcnktcmdcIixcbiAgICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgICAgdGFnczogeyB0aWVyOiBcInByaW1hcnlcIiB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgcmcyID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJTZWNvbmRhcnlSR1wiLCB7XG4gICAgICAgICAgICBuYW1lOiBcInNlY29uZGFyeS1yZ1wiLFxuICAgICAgICAgICAgbG9jYXRpb246IFwid2VzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMTEtMDFcIixcbiAgICAgICAgICAgIHRhZ3M6IHsgdGllcjogXCJzZWNvbmRhcnlcIiB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIG91dHB1dHMgdGhhdCByZWZlcmVuY2UgdGhlIHJlc291cmNlIGdyb3Vwc1xuICAgICAgICAgIG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJQcmltYXJ5UkdJZFwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogcmcxLmlkLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIlNlY29uZGFyeVJHSWRcIiwge1xuICAgICAgICAgICAgdmFsdWU6IHJnMi5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgQ29tcGxleENvbnN0cnVjdChhcHAsIFwiQ29tcGxleFN0YWNrXCIpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSByZXNvdXJjZSBncm91cHMgaW4gdGhlIHNhbWUgc3RhY2tcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmcxID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiUmVzb3VyY2VHcm91cDFcIiwge1xuICAgICAgICBuYW1lOiBcInJnLTFcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmcyID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiUmVzb3VyY2VHcm91cDJcIiwge1xuICAgICAgICBuYW1lOiBcInJnLTJcIixcbiAgICAgICAgbG9jYXRpb246IFwid2VzdHVzXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyNS0wMS0wMVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZzEucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNS0wMy0wMVwiKTtcbiAgICAgIGV4cGVjdChyZzIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNS0wMS0wMVwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQZXJmb3JtYW5jZSBhbmQgQ29kZSBSZWR1Y3Rpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHJlZHVjZSBjb2RlIGNvbXBsZXhpdHkgY29tcGFyZWQgdG8gdmVyc2lvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgLy8gVGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGF0IHRoZSB1bmlmaWVkIGltcGxlbWVudGF0aW9uIGlzIHNpbXBsZXJcbiAgICAgIC8vIHRoYW4gbWFpbnRhaW5pbmcgc2VwYXJhdGUgdmVyc2lvbi1zcGVjaWZpYyBjbGFzc2VzXG5cbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIC8vIENyZWF0ZSBtdWx0aXBsZSByZXNvdXJjZSBncm91cHMgd2l0aCBkaWZmZXJlbnQgdmVyc2lvbnNcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXBzOiBSZXNvdXJjZUdyb3VwW10gPSBbXTtcbiAgICAgIGNvbnN0IHZlcnNpb25zID0gW1wiMjAyNC0xMS0wMVwiLCBcIjIwMjUtMDEtMDFcIiwgXCIyMDI1LTAzLTAxXCJdO1xuXG4gICAgICB2ZXJzaW9ucy5mb3JFYWNoKCh2ZXJzaW9uLCBpbmRleCkgPT4ge1xuICAgICAgICByZXNvdXJjZUdyb3Vwcy5wdXNoKFxuICAgICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBgUGVyZm9ybWFuY2VUZXN0JHtpbmRleH1gLCB7XG4gICAgICAgICAgICBuYW1lOiBgcGVyZi10ZXN0LSR7aW5kZXh9YCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBlbmRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXBzKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgICBleHBlY3QoZW5kVGltZSAtIHN0YXJ0VGltZSkudG9CZUxlc3NUaGFuKDEwMDApOyAvLyBTaG91bGQgYmUgZmFzdFxuXG4gICAgICAvLyBWZXJpZnkgYWxsIGluc3RhbmNlcyBhcmUgY3JlYXRlZCBjb3JyZWN0bHlcbiAgICAgIHJlc291cmNlR3JvdXBzLmZvckVhY2goKHJnLCBpbmRleCkgPT4ge1xuICAgICAgICBleHBlY3QocmcpLnRvQmVJbnN0YW5jZU9mKFJlc291cmNlR3JvdXApO1xuICAgICAgICBleHBlY3QocmcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKHZlcnNpb25zW2luZGV4XSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIGNvZGUgcmVkdWN0aW9uIGNsYWltc1wiLCAoKSA9PiB7XG4gICAgICAvLyBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIHRoYXQgYSBzaW5nbGUgY2xhc3MgcmVwbGFjZXMgbXVsdGlwbGUgdmVyc2lvbi1zcGVjaWZpYyBjbGFzc2VzXG4gICAgICAvLyBQcmV2aW91cyBpbXBsZW1lbnRhdGlvbiB3b3VsZCBoYXZlIHJlcXVpcmVkOlxuICAgICAgLy8gLSBSZXNvdXJjZUdyb3VwMjAyNF8xMV8wMSBjbGFzc1xuICAgICAgLy8gLSBSZXNvdXJjZUdyb3VwMjAyNV8wMV8wMSBjbGFzc1xuICAgICAgLy8gLSBSZXNvdXJjZUdyb3VwMjAyNV8wM18wMSBjbGFzc1xuICAgICAgLy8gLSBTZXBhcmF0ZSB0ZXN0IGZpbGVzIGZvciBlYWNoXG4gICAgICAvLyAtIFNlcGFyYXRlIHNjaGVtYSBkZWZpbml0aW9uc1xuXG4gICAgICAvLyBOb3cgd2UgaGF2ZTpcbiAgICAgIC8vIC0gU2luZ2xlIFJlc291cmNlR3JvdXAgY2xhc3NcbiAgICAgIC8vIC0gU2luZ2xlIHRlc3QgZmlsZVxuICAgICAgLy8gLSBVbmlmaWVkIHNjaGVtYSBtYW5hZ2VtZW50XG5cbiAgICAgIGNvbnN0IHVuaWZpZWRDbGFzcyA9IFJlc291cmNlR3JvdXA7XG4gICAgICBleHBlY3QodW5pZmllZENsYXNzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHR5cGVvZiB1bmlmaWVkQ2xhc3MpLnRvQmUoXCJmdW5jdGlvblwiKTtcblxuICAgICAgLy8gQ2FuIGhhbmRsZSBhbGwgdmVyc2lvbnMgd2l0aCB0aGUgc2FtZSBpbnRlcmZhY2VcbiAgICAgIGNvbnN0IGFsbFZlcnNpb25UZXN0cyA9IFtcIjIwMjQtMTEtMDFcIiwgXCIyMDI1LTAxLTAxXCIsIFwiMjAyNS0wMy0wMVwiXS5tYXAoXG4gICAgICAgICh2ZXJzaW9uLCBpbmRleCkgPT5cbiAgICAgICAgICBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgYENvZGVSZWR1Y3Rpb24ke2luZGV4fWAsIHtcbiAgICAgICAgICAgIG5hbWU6IGBjb2RlLXJlZHVjdGlvbi0ke2luZGV4fWAsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICAgIGFwaVZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoYWxsVmVyc2lvblRlc3RzKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgICBhbGxWZXJzaW9uVGVzdHMuZm9yRWFjaCgocmcpID0+IHtcbiAgICAgICAgZXhwZWN0KHJnKS50b0JlSW5zdGFuY2VPZihSZXNvdXJjZUdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZ3JvdXAuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1yZXNvdXJjZWdyb3VwL3Rlc3QvcmVzb3VyY2UtZ3JvdXAuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsMERBQTBFO0FBQzFFLDBFQUd1QztBQUV2QyxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLCtDQUErQztRQUMvQyxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLDRDQUFtQixFQUNuQixvREFBMkIsQ0FDNUIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLHVFQUF1RSxFQUFFLEdBQUcsRUFBRTtZQUMvRSxNQUFNLEtBQUssR0FBdUI7Z0JBQ2hDLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2FBQ25CLENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLDhCQUFhLENBQ3JDLEtBQUssRUFDTCxtQkFB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RUFBRSxFQUFFO2dCQUM3QixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLDhCQUFhLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcHJlaGVuc2l2ZSB0ZXN0cyBmb3IgdGhlIHVuaWZpZWQgUmVzb3VyY2VHcm91cCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIHVuaWZpZWQgUmVzb3VyY2VHcm91cCBjbGFzcyB0aGF0IHJlcGxhY2VzIGFsbFxuICogdmVyc2lvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrLlxuICogVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbiwgZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nLCBzY2hlbWEgdmFsaWRhdGlvbixcbiAqIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLCBhbmQgZnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQXBpVmVyc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2FwaS12ZXJzaW9uLW1hbmFnZXJcIjtcbmltcG9ydCB7IFZlcnNpb25TdXBwb3J0TGV2ZWwgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwLCBSZXNvdXJjZUdyb3VwUHJvcHMgfSBmcm9tIFwiLi4vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQge1xuICBBTExfUkVTT1VSQ0VfR1JPVVBfVkVSU0lPTlMsXG4gIFJFU09VUkNFX0dST1VQX1RZUEUsXG59IGZyb20gXCIuLi9saWIvcmVzb3VyY2UtZ3JvdXAtc2NoZW1hc1wiO1xuXG5kZXNjcmliZShcIlJlc291cmNlR3JvdXAgLSBVbmlmaWVkIEltcGxlbWVudGF0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogQXBpVmVyc2lvbk1hbmFnZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1TdGFjayhhcHAsIFwiVGVzdFN0YWNrXCIpO1xuICAgIG1hbmFnZXIgPSBBcGlWZXJzaW9uTWFuYWdlci5pbnN0YW5jZSgpO1xuXG4gICAgLy8gRW5zdXJlIFJlc291cmNlIEdyb3VwIHNjaGVtYXMgYXJlIHJlZ2lzdGVyZWRcbiAgICB0cnkge1xuICAgICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgUkVTT1VSQ0VfR1JPVVBfVFlQRSxcbiAgICAgICAgQUxMX1JFU09VUkNFX0dST1VQX1ZFUlNJT05TLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWdub3JlIGlmIGFscmVhZHkgcmVnaXN0ZXJlZFxuICAgIH1cbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb25zdHJ1Y3RvciBhbmQgQmFzaWMgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJlc291cmNlIGdyb3VwIHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJlc291cmNlR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJUZXN0UmVzb3VyY2VHcm91cFwiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwKS50b0JlSW5zdGFuY2VPZihSZXNvdXJjZUdyb3VwKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjUtMDMtMDFcIik7IC8vIExhdGVzdCB2ZXJzaW9uXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5wcm9wcykudG9CZShwcm9wcyk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5uYW1lKS50b0JlKFwidGVzdC1yZ1wiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmxvY2F0aW9uKS50b0JlKFwiZWFzdHVzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJlc291cmNlIGdyb3VwIHdpdGggZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSZXNvdXJjZUdyb3VwUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZy1waW5uZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwid2VzdHVzXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0xMS0wMVwiLCAvLyBQaW4gdG8gc3BlY2lmaWMgdmVyc2lvblxuICAgICAgICB0YWdzOiB7IGVudmlyb25tZW50OiBcInRlc3RcIiB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJUZXN0UmVzb3VyY2VHcm91cFwiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC50YWdzKS50b0VxdWFsKHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJlc291cmNlIGdyb3VwIHdpdGggYWxsIG9wdGlvbmFsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJlc291cmNlR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnLWZ1bGxcIixcbiAgICAgICAgbG9jYXRpb246IFwiY2VudHJhbHVzXCIsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgcHJvamVjdDogXCJjZGt0Zi1jb25zdHJ1Y3RzXCIsXG4gICAgICAgICAgb3duZXI6IFwidGVhbUBjb21wYW55LmNvbVwiLFxuICAgICAgICB9LFxuICAgICAgICBtYW5hZ2VkQnk6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC1zdWIvcmVzb3VyY2VHcm91cHMvbWFuYWdlbWVudC1yZ1wiLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwibWFuYWdlZEJ5XCJdLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgICBlbmFibGVNaWdyYXRpb25BbmFseXNpczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlVHJhbnNmb3JtYXRpb246IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlRlc3RSZXNvdXJjZUdyb3VwXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucHJvcHMudGFncykudG9FcXVhbChwcm9wcy50YWdzKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzLm1hbmFnZWRCeSkudG9CZShwcm9wcy5tYW5hZ2VkQnkpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucHJvcHMuaWdub3JlQ2hhbmdlcykudG9FcXVhbChwcm9wcy5pZ25vcmVDaGFuZ2VzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IG5hbWUgd2hlbiBuYW1lIGlzIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUmVzb3VyY2VHcm91cFByb3BzID0ge1xuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiVGVzdFJlc291cmNlR3JvdXBcIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5uYW1lKS50b0JlKFwiVGVzdFJlc291cmNlR3JvdXBcIik7IC8vIFNob3VsZCB1c2UgY29uc3RydWN0IGlkXG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIGxvY2F0aW9uIHRvIGJlIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSZXNvdXJjZUdyb3VwUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwgcHJvcHMpO1xuICAgICAgfSkudG9UaHJvdyhcIkxvY2F0aW9uIGlzIHJlcXVpcmVkIGZvciBNaWNyb3NvZnQuUmVzb3VyY2VzL3Jlc291cmNlR3JvdXBzXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkZyYW1ld29yayBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBsYXRlc3QgQVBJIHZlcnNpb24gYXV0b21hdGljYWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNS0wMy0wMVwiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmxhdGVzdFZlcnNpb24oKSkudG9CZShcIjIwMjUtMDMtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGFsbCByZWdpc3RlcmVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3VwcG9ydGVkVmVyc2lvbnMgPSByZXNvdXJjZUdyb3VwLnN1cHBvcnRlZFZlcnNpb25zKCk7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjUtMDEtMDFcIik7XG4gICAgICBleHBlY3Qoc3VwcG9ydGVkVmVyc2lvbnMpLnRvQ29udGFpbihcIjIwMjUtMDMtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSB2ZXJzaW9uIHN1cHBvcnRcIiwgKCkgPT4ge1xuICAgICAgLy8gVmFsaWQgdmVyc2lvblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVmFsaWRWZXJzaW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjUtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuXG4gICAgICAvLyBJbnZhbGlkIHZlcnNpb25cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkludmFsaWRWZXJzaW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjYtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjYtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0xMS0wMVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYS5yZXNvdXJjZVR5cGUpLnRvQmUoUkVTT1VSQ0VfR1JPVVBfVFlQRSk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEudmVyc2lvbikudG9CZShcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5zY2hlbWEucHJvcGVydGllcykudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGxvYWQgdmVyc2lvbiBjb25maWd1cmF0aW9uIGNvcnJlY3RseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAudmVyc2lvbkNvbmZpZykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnZlcnNpb25Db25maWcudmVyc2lvbikudG9CZShcIjIwMjUtMDMtMDFcIik7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC52ZXJzaW9uQ29uZmlnLnN1cHBvcnRMZXZlbCkudG9CZShcbiAgICAgICAgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHByb3BlcnRpZXMgd2hlbiB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJlc291cmNlR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwgcHJvcHMpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgdmFsaWRhdGlvbiByZXN1bHRzIGZvciB2YWxpZCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidmFsaWQtbmFtZVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC52YWxpZGF0aW9uUmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAudmFsaWRhdGlvblJlc3VsdCEudmFsaWQpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC52YWxpZGF0aW9uUmVzdWx0IS5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHNraXAgdmFsaWRhdGlvbiB3aGVuIGRpc2FibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiTWlncmF0aW9uIEFuYWx5c2lzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBwZXJmb3JtIG1pZ3JhdGlvbiBhbmFseXNpcyBiZXR3ZWVuIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTExLTAxXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYW5hbHlzaXMgPSByZXNvdXJjZUdyb3VwLmFuYWx5emVNaWdyYXRpb25UbyhcIjIwMjUtMDMtMDFcIik7XG5cbiAgICAgIGV4cGVjdChhbmFseXNpcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhbmFseXNpcy5mcm9tVmVyc2lvbikudG9CZShcIjIwMjQtMTEtMDFcIik7XG4gICAgICBleHBlY3QoYW5hbHlzaXMudG9WZXJzaW9uKS50b0JlKFwiMjAyNS0wMy0wMVwiKTtcbiAgICAgIGV4cGVjdChhbmFseXNpcy5jb21wYXRpYmxlKS50b0JlKHRydWUpOyAvLyBSZXNvdXJjZSBHcm91cCB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZVxuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2tpcCBtaWdyYXRpb24gYW5hbHlzaXMgd2hlbiBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5taWdyYXRpb25BbmFseXNpcykudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIENyZWF0aW9uIGFuZCBCb2R5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgY29ycmVjdCByZXNvdXJjZSBib2R5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSxcbiAgICAgICAgbWFuYWdlZEJ5OiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvcmVzb3VyY2VHcm91cHMvbWdtdFwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRlc3QgdGhlIGNyZWF0ZVJlc291cmNlQm9keSBtZXRob2QgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBmcmFtZXdvcmtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAucHJvcHMudGFncykudG9FcXVhbCh7IGVudmlyb25tZW50OiBcInRlc3RcIiB9KTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzLm1hbmFnZWRCeSkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3Jlc291cmNlR3JvdXBzL21nbXRcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgbWluaW1hbCByZXNvdXJjZSBjcmVhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiTWluaW1hbFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcIm1pbmltYWwtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5uYW1lKS50b0JlKFwibWluaW1hbC1yZ1wiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmxvY2F0aW9uKS50b0JlKFwiZWFzdHVzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJUZXN0UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yZy1vdXRwdXRzXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAubG9jYXRpb25PdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnRhZ3NPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHVibGljIE1ldGhvZHMgYW5kIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGxldCByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiVGVzdFJlc291cmNlR3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSByZXNvdXJjZUlkIHByb3BlcnR5IG1hdGNoaW5nIGlkXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnJlc291cmNlSWQpLnRvQmUocmVzb3VyY2VHcm91cC5pZCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBleHRyYWN0IHN1YnNjcmlwdGlvbiBJRCBmcm9tIHJlc291cmNlIElEXCIsICgpID0+IHtcbiAgICAgIC8vIFRoZSBpZCBwcm9wZXJ0eSBpcyBub3cgYSBnZXR0ZXIgdGhhdCBkZXJpdmVzIGZyb20gdGVycmFmb3JtUmVzb3VyY2VcbiAgICAgIC8vIFdlIGNhbiB2ZXJpZnkgdGhlIGlkIGZvcm1hdCBpcyBjb3JyZWN0XG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG5cbiAgICAgIC8vIFRoZSBzdWJzY3JpcHRpb25JZCBnZXR0ZXIgYXR0ZW1wdHMgdG8gcGFyc2UgdGhlIGlkIHN0cmluZ1xuICAgICAgLy8gSW4gdGVzdCBjb250ZXh0IHdpdGggVGVycmFmb3JtIGludGVycG9sYXRpb24sIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3JcbiAgICAgIC8vIHdoaWNoIGlzIGV4cGVjdGVkIGJlaGF2aW9yLiBJbiByZWFsIGRlcGxveW1lbnQsIGlkIHdvdWxkIGJlIGEgcmVzb2x2ZWQgQXp1cmUgcmVzb3VyY2UgSURcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIHJlc291cmNlR3JvdXAuc3Vic2NyaXB0aW9uSWQ7XG4gICAgICB9KS50b1Rocm93KFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gUmVzb3VyY2UgR3JvdXAgSURcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IHRhZyBtYW5hZ2VtZW50XCIsICgpID0+IHtcbiAgICAgIC8vIFRlc3QgYWRkVGFnXG4gICAgICByZXNvdXJjZUdyb3VwLmFkZFRhZyhcIm5ld1RhZ1wiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgLy8gVGFncyBzaG91bGQgbm93IGJlIGFjY2Vzc2libGUgdmlhIHRoZSB0YWdzIGdldHRlclxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAudGFncy5uZXdUYWcpLnRvQmUoXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnRhZ3MuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgYWRkIHRhZ3Mgd2hlbiBubyB0YWdzIGV4aXN0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJnTm9UYWdzID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiTm9UYWdzUkdcIiwge1xuICAgICAgICBuYW1lOiBcIm5vLXRhZ3MtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB9KTtcblxuICAgICAgcmdOb1RhZ3MuYWRkVGFnKFwiZmlyc3RUYWdcIiwgXCJmaXJzdFZhbHVlXCIpO1xuICAgICAgZXhwZWN0KHJnTm9UYWdzLnRhZ3MuZmlyc3RUYWcpLnRvQmUoXCJmaXJzdFZhbHVlXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiSWdub3JlQ2hhbmdlc1JHXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwibG9jYXRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXApLnRvQmVJbnN0YW5jZU9mKFJlc291cmNlR3JvdXApO1xuICAgICAgLy8gVGhlIGlnbm9yZV9jaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSB1bmRlcmx5aW5nIHRlcnJhZm9ybSByZXNvdXJjZVxuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZmlsdGVyIG91dCBpbnZhbGlkIGlnbm9yZSBjaGFuZ2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJGaWx0ZXJlZElnbm9yZVJHXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwibWFuYWdlZEJ5XCIsIFwibG9jYXRpb25cIl0sIC8vIG1hbmFnZWRCeSBzaG91bGQgYmUgZmlsdGVyZWRcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cCkudG9CZUluc3RhbmNlT2YoUmVzb3VyY2VHcm91cCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZW1wdHkgaWdub3JlIGNoYW5nZXMgYXJyYXlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkVtcHR5SWdub3JlUkdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwKS50b0JlSW5zdGFuY2VPZihSZXNvdXJjZUdyb3VwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJWZXJzaW9uIENvbXBhdGliaWxpdHlcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHdvcmsgd2l0aCBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IFtcIjIwMjQtMTEtMDFcIiwgXCIyMDI1LTAxLTAxXCIsIFwiMjAyNS0wMy0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgYFJHLSR7dmVyc2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYHRlc3QtcmctJHt2ZXJzaW9ufWAsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICAgIGFwaVZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBleHBlY3QocmVzb3VyY2VHcm91cC5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUodmVyc2lvbik7XG4gICAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYS52ZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgc2NoZW1hIGRpZmZlcmVuY2VzIGFjcm9zcyB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICAvLyBBbGwgUmVzb3VyY2UgR3JvdXAgdmVyc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgY29yZSBzY2hlbWFcbiAgICAgIGNvbnN0IHZlcnNpb25zID0gW1wiMjAyNC0xMS0wMVwiLCBcIjIwMjUtMDEtMDFcIiwgXCIyMDI1LTAzLTAxXCJdO1xuXG4gICAgICB2ZXJzaW9ucy5mb3JFYWNoKCh2ZXJzaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChcbiAgICAgICAgICBzdGFjayxcbiAgICAgICAgICBgU2NoZW1hLSR7dmVyc2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYHNjaGVtYS10ZXN0LSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KHJlc291cmNlR3JvdXAuc2NoZW1hLnByb3BlcnRpZXMubG9jYXRpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYS5wcm9wZXJ0aWVzLnRhZ3MpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnNjaGVtYS5wcm9wZXJ0aWVzLm1hbmFnZWRCeSkudG9CZURlZmluZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhY2t3YXJkIENvbXBhdGliaWxpdHlcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvcmlnaW5hbCBHcm91cFByb3BzIGludGVyZmFjZVwiLCAoKSA9PiB7XG4gICAgICAvLyBUZXN0IHVzaW5nIHRoZSBkZXByZWNhdGVkIEdyb3VwIGV4cG9ydFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgIGNvbnN0IHsgR3JvdXAgfSA9IHJlcXVpcmUoXCIuLi9saWIvcmVzb3VyY2UtZ3JvdXBcIik7XG5cbiAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdyb3VwKHN0YWNrLCBcIkJhY2t3YXJkQ29tcGF0R3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcImNvbXBhdC10ZXN0XCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICB0YWdzOiB7IGNvbXBhdGliaWxpdHk6IFwidGVzdFwiIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGdyb3VwKS50b0JlSW5zdGFuY2VPZihSZXNvdXJjZUdyb3VwKTtcbiAgICAgIGV4cGVjdChncm91cC5uYW1lKS50b0JlKFwiY29tcGF0LXRlc3RcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB3b3JrIHdpdGggZXhpc3RpbmcgUmVzb3VyY2VHcm91cCBwYXR0ZXJuc1wiLCAoKSA9PiB7XG4gICAgICAvLyBUZXN0IHBhdHRlcm5zIHRoYXQgd291bGQgaGF2ZSB3b3JrZWQgd2l0aCB2ZXJzaW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkV4aXN0aW5nUGF0dGVyblwiLCB7XG4gICAgICAgIG5hbWU6IFwiZXhpc3RpbmctcmdcIixcbiAgICAgICAgbG9jYXRpb246IFwid2VzdHVzMlwiLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgIGNvc3Q6IFwiY2VudGVyMVwiLFxuICAgICAgICB9LFxuICAgICAgICBtYW5hZ2VkQnk6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC1zdWIvcmVzb3VyY2VHcm91cHMvbWFuYWdlbWVudFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXNvdXJjZUdyb3VwLnByb3BzLnRhZ3MpLnRvRXF1YWwoe1xuICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgIGNvc3Q6IFwiY2VudGVyMVwiLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiRXJyb3IgSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBpbnZhbGlkIEFQSSB2ZXJzaW9ucyBncmFjZWZ1bGx5XCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkludmFsaWRBUElcIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgIGFwaVZlcnNpb246IFwiaW52YWxpZC12ZXJzaW9uXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSkudG9UaHJvdyhcIlVuc3VwcG9ydGVkIEFQSSB2ZXJzaW9uICdpbnZhbGlkLXZlcnNpb24nXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIHZhbGlkYXRpb24gZXJyb3JzIHdoZW4gdmFsaWRhdGlvbiBpcyBlbmFibGVkXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIlZhbGlkYXRpb25FcnJvclwiLCB7XG4gICAgICAgICAgbmFtZTogXCJcIiwgLy8gSW52YWxpZCBlbXB0eSBuYW1lXG4gICAgICAgICAgbG9jYXRpb246IFwiXCIsIC8vIEludmFsaWQgZW1wdHkgbG9jYXRpb25cbiAgICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pLnRvVGhyb3coXCJMb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3Vwc1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBzY2hlbWEgcmVnaXN0cmF0aW9uIGVycm9ycyBncmFjZWZ1bGx5XCIsICgpID0+IHtcbiAgICAgIC8vIFRoZSBSZXNvdXJjZUdyb3VwIGNvbnN0cnVjdG9yIHNob3VsZCBoYW5kbGUgYWxyZWFkeS1yZWdpc3RlcmVkIHNjaGVtYXNcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIlNjaGVtYVRlc3RcIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1yZ1wiLFxuICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSlNJSSBDb21wbGlhbmNlXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IGNvbnN0cnVjdG9yXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkpzaWlUZXN0XCIsIHtcbiAgICAgICAgICBuYW1lOiBcImpzaWktdGVzdFwiLFxuICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIkpzaWlQcm9wc1wiLCB7XG4gICAgICAgIG5hbWU6IFwianNpaS1wcm9wc1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAuaWQpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAubmFtZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgcmVzb3VyY2VHcm91cC5sb2NhdGlvbikudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgcmVzb3VyY2VHcm91cC50YWdzKS50b0JlKFwib2JqZWN0XCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgSlNJSS1jb21wbGlhbnQgbWV0aG9kc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiSnNpaU1ldGhvZHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktbWV0aG9kc1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAuYWRkVGFnKS50b0JlKFwiZnVuY3Rpb25cIik7XG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAubGF0ZXN0VmVyc2lvbikudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByZXNvdXJjZUdyb3VwLnN1cHBvcnRlZFZlcnNpb25zKS50b0JlKFwiZnVuY3Rpb25cIik7XG4gICAgICBleHBlY3QodHlwZW9mIHJlc291cmNlR3JvdXAuYW5hbHl6ZU1pZ3JhdGlvblRvKS50b0JlKFwiZnVuY3Rpb25cIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzZXJpYWxpemUgY29tcGxleCBvYmplY3RzIGNvcnJlY3RseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiSnNpaVNlcmlhbGl6YXRpb25cIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktc2VyaWFsaXphdGlvblwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGNvbXBsZXg6IFwidmFsdWVcIixcbiAgICAgICAgICBuZXN0ZWQ6IFwiZGF0YVwiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNob3VsZCBiZSBhYmxlIHRvIHNlcmlhbGl6ZSB2YWxpZGF0aW9uIHJlc3VsdHNcbiAgICAgIGV4cGVjdCgoKSA9PlxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXNvdXJjZUdyb3VwLnZhbGlkYXRpb25SZXN1bHQpLFxuICAgICAgKS5ub3QudG9UaHJvdygpO1xuXG4gICAgICAvLyBTaG91bGQgYmUgYWJsZSB0byBzZXJpYWxpemUgc2NoZW1hXG4gICAgICBleHBlY3QoKCkgPT4gSlNPTi5zdHJpbmdpZnkocmVzb3VyY2VHcm91cC5zY2hlbWEpKS5ub3QudG9UaHJvdygpO1xuXG4gICAgICAvLyBTaG91bGQgYmUgYWJsZSB0byBzZXJpYWxpemUgdmVyc2lvbiBjb25maWdcbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShyZXNvdXJjZUdyb3VwLnZlcnNpb25Db25maWcpKS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBUZXJyYWZvcm0gSW50ZWdyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdG8gdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJzeW50aC10ZXN0XCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICB0YWdzOiB7IHRlc3Q6IFwic3ludGhlc2lzXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgd29yayBpbiBjb21wbGV4IENESyBjb25zdHJ1Y3RzXCIsICgpID0+IHtcbiAgICAgIGNsYXNzIENvbXBsZXhDb25zdHJ1Y3QgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1TdGFjayB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGt0Zi5BcHAsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIG11bHRpcGxlIHJlc291cmNlIGdyb3Vwc1xuICAgICAgICAgIGNvbnN0IHJnMSA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwiUHJpbWFyeVJHXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwicHJpbWFyeS1yZ1wiLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICB0YWdzOiB7IHRpZXI6IFwicHJpbWFyeVwiIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCByZzIgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcIlNlY29uZGFyeVJHXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwic2Vjb25kYXJ5LXJnXCIsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0xMS0wMVwiLFxuICAgICAgICAgICAgdGFnczogeyB0aWVyOiBcInNlY29uZGFyeVwiIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgb3V0cHV0cyB0aGF0IHJlZmVyZW5jZSB0aGUgcmVzb3VyY2UgZ3JvdXBzXG4gICAgICAgICAgbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIlByaW1hcnlSR0lkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiByZzEuaWQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiU2Vjb25kYXJ5UkdJZFwiLCB7XG4gICAgICAgICAgICB2YWx1ZTogcmcyLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBDb21wbGV4Q29uc3RydWN0KGFwcCwgXCJDb21wbGV4U3RhY2tcIik7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIHJlc291cmNlIGdyb3VwcyBpbiB0aGUgc2FtZSBzdGFja1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZzEgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJSZXNvdXJjZUdyb3VwMVwiLCB7XG4gICAgICAgIG5hbWU6IFwicmctMVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZzIgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJSZXNvdXJjZUdyb3VwMlwiLCB7XG4gICAgICAgIG5hbWU6IFwicmctMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI1LTAxLTAxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJnMS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI1LTAzLTAxXCIpO1xuICAgICAgZXhwZWN0KHJnMi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI1LTAxLTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlBlcmZvcm1hbmNlIGFuZCBDb2RlIFJlZHVjdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVkdWNlIGNvZGUgY29tcGxleGl0eSBjb21wYXJlZCB0byB2ZXJzaW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1wiLCAoKSA9PiB7XG4gICAgICAvLyBUaGlzIHRlc3QgdmFsaWRhdGVzIHRoYXQgdGhlIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlclxuICAgICAgLy8gdGhhbiBtYWludGFpbmluZyBzZXBhcmF0ZSB2ZXJzaW9uLXNwZWNpZmljIGNsYXNzZXNcblxuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgLy8gQ3JlYXRlIG11bHRpcGxlIHJlc291cmNlIGdyb3VwcyB3aXRoIGRpZmZlcmVudCB2ZXJzaW9uc1xuICAgICAgY29uc3QgcmVzb3VyY2VHcm91cHM6IFJlc291cmNlR3JvdXBbXSA9IFtdO1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDI0LTExLTAxXCIsIFwiMjAyNS0wMS0wMVwiLCBcIjIwMjUtMDMtMDFcIl07XG5cbiAgICAgIHZlcnNpb25zLmZvckVhY2goKHZlcnNpb24sIGluZGV4KSA9PiB7XG4gICAgICAgIHJlc291cmNlR3JvdXBzLnB1c2goXG4gICAgICAgICAgbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIGBQZXJmb3JtYW5jZVRlc3Qke2luZGV4fWAsIHtcbiAgICAgICAgICAgIG5hbWU6IGBwZXJmLXRlc3QtJHtpbmRleH1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICBleHBlY3QocmVzb3VyY2VHcm91cHMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICAgIGV4cGVjdChlbmRUaW1lIC0gc3RhcnRUaW1lKS50b0JlTGVzc1RoYW4oMTAwMCk7IC8vIFNob3VsZCBiZSBmYXN0XG5cbiAgICAgIC8vIFZlcmlmeSBhbGwgaW5zdGFuY2VzIGFyZSBjcmVhdGVkIGNvcnJlY3RseVxuICAgICAgcmVzb3VyY2VHcm91cHMuZm9yRWFjaCgocmcsIGluZGV4KSA9PiB7XG4gICAgICAgIGV4cGVjdChyZykudG9CZUluc3RhbmNlT2YoUmVzb3VyY2VHcm91cCk7XG4gICAgICAgIGV4cGVjdChyZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUodmVyc2lvbnNbaW5kZXhdKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdmFsaWRhdGUgY29kZSByZWR1Y3Rpb24gY2xhaW1zXCIsICgpID0+IHtcbiAgICAgIC8vIFRoaXMgdGVzdCBkZW1vbnN0cmF0ZXMgdGhhdCBhIHNpbmdsZSBjbGFzcyByZXBsYWNlcyBtdWx0aXBsZSB2ZXJzaW9uLXNwZWNpZmljIGNsYXNzZXNcbiAgICAgIC8vIFByZXZpb3VzIGltcGxlbWVudGF0aW9uIHdvdWxkIGhhdmUgcmVxdWlyZWQ6XG4gICAgICAvLyAtIFJlc291cmNlR3JvdXAyMDI0XzExXzAxIGNsYXNzXG4gICAgICAvLyAtIFJlc291cmNlR3JvdXAyMDI1XzAxXzAxIGNsYXNzXG4gICAgICAvLyAtIFJlc291cmNlR3JvdXAyMDI1XzAzXzAxIGNsYXNzXG4gICAgICAvLyAtIFNlcGFyYXRlIHRlc3QgZmlsZXMgZm9yIGVhY2hcbiAgICAgIC8vIC0gU2VwYXJhdGUgc2NoZW1hIGRlZmluaXRpb25zXG5cbiAgICAgIC8vIE5vdyB3ZSBoYXZlOlxuICAgICAgLy8gLSBTaW5nbGUgUmVzb3VyY2VHcm91cCBjbGFzc1xuICAgICAgLy8gLSBTaW5nbGUgdGVzdCBmaWxlXG4gICAgICAvLyAtIFVuaWZpZWQgc2NoZW1hIG1hbmFnZW1lbnRcblxuICAgICAgY29uc3QgdW5pZmllZENsYXNzID0gUmVzb3VyY2VHcm91cDtcbiAgICAgIGV4cGVjdCh1bmlmaWVkQ2xhc3MpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QodHlwZW9mIHVuaWZpZWRDbGFzcykudG9CZShcImZ1bmN0aW9uXCIpO1xuXG4gICAgICAvLyBDYW4gaGFuZGxlIGFsbCB2ZXJzaW9ucyB3aXRoIHRoZSBzYW1lIGludGVyZmFjZVxuICAgICAgY29uc3QgYWxsVmVyc2lvblRlc3RzID0gW1wiMjAyNC0xMS0wMVwiLCBcIjIwMjUtMDEtMDFcIiwgXCIyMDI1LTAzLTAxXCJdLm1hcChcbiAgICAgICAgKHZlcnNpb24sIGluZGV4KSA9PlxuICAgICAgICAgIG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBgQ29kZVJlZHVjdGlvbiR7aW5kZXh9YCwge1xuICAgICAgICAgICAgbmFtZTogYGNvZGUtcmVkdWN0aW9uLSR7aW5kZXh9YCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChhbGxWZXJzaW9uVGVzdHMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICAgIGFsbFZlcnNpb25UZXN0cy5mb3JFYWNoKChyZykgPT4ge1xuICAgICAgICBleHBlY3QocmcpLnRvQmVJbnN0YW5jZU9mKFJlc291cmNlR3JvdXApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from "./lib";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUtcm9sZWFzc2lnbm1lbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xpYlwiO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from "./role-assignment-schemas";
2
+ export * from "./role-assignment";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./role-assignment-schemas"), exports);
18
+ __exportStar(require("./role-assignment"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWFzc2lnbm1lbnQvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBMEM7QUFDMUMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LXNjaGVtYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGUtYXNzaWdubWVudFwiO1xuIl19