@microsoft/terraform-cdk-constructs 0.0.3-pre.7 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1290) hide show
  1. package/.devcontainer/devcontainer.json +2 -2
  2. package/.jsii +67552 -10179
  3. package/API.md +69252 -9464
  4. package/LICENSE +16 -18
  5. package/README.md +186 -75
  6. package/cdktf.json +1 -1
  7. package/docs/ARCHITECTURE.md +836 -0
  8. package/docs/azapi-testing-architecture.md +482 -0
  9. package/docs/monitoring-guide.md +206 -0
  10. package/docs/testing.md +99 -114
  11. package/docs/versioning-and-migrations-user-guide.md +409 -0
  12. package/go.mod +12 -12
  13. package/go.sum +27 -23
  14. package/lib/azure-actiongroup/index.d.ts +10 -0
  15. package/lib/azure-actiongroup/index.js +11 -1
  16. package/lib/azure-actiongroup/lib/action-group-schemas.d.ts +24 -0
  17. package/lib/azure-actiongroup/lib/action-group-schemas.js +201 -0
  18. package/lib/azure-actiongroup/lib/action-group.d.ts +312 -0
  19. package/lib/azure-actiongroup/lib/action-group.js +201 -0
  20. package/lib/azure-actiongroup/lib/index.d.ts +5 -1
  21. package/lib/azure-actiongroup/lib/index.js +6 -2
  22. package/lib/azure-actiongroup/test/action-group.integ.d.ts +9 -0
  23. package/lib/azure-actiongroup/test/action-group.integ.js +79 -0
  24. package/lib/azure-actiongroup/test/action-group.spec.d.ts +8 -0
  25. package/lib/azure-actiongroup/test/action-group.spec.js +602 -0
  26. package/lib/azure-activitylogalert/index.d.ts +11 -0
  27. package/lib/azure-activitylogalert/index.js +28 -0
  28. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.d.ts +24 -0
  29. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.js +182 -0
  30. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +236 -0
  31. package/lib/azure-activitylogalert/lib/activity-log-alert.js +212 -0
  32. package/lib/azure-activitylogalert/lib/index.d.ts +5 -0
  33. package/lib/azure-activitylogalert/lib/index.js +22 -0
  34. package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +9 -0
  35. package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +98 -0
  36. package/lib/azure-activitylogalert/test/activity-log-alert.spec.d.ts +9 -0
  37. package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +1101 -0
  38. package/lib/azure-aks/index.d.ts +9 -0
  39. package/lib/azure-aks/index.js +28 -0
  40. package/lib/azure-aks/lib/aks-cluster-schemas.d.ts +505 -0
  41. package/lib/azure-aks/lib/aks-cluster-schemas.js +572 -0
  42. package/lib/azure-aks/lib/aks-cluster.d.ts +395 -0
  43. package/lib/azure-aks/lib/aks-cluster.js +489 -0
  44. package/lib/azure-aks/lib/index.d.ts +11 -0
  45. package/lib/azure-aks/lib/index.js +38 -0
  46. package/lib/azure-aks/test/aks-cluster.integ.d.ts +9 -0
  47. package/lib/azure-aks/test/aks-cluster.integ.js +260 -0
  48. package/lib/azure-aks/test/aks-cluster.spec.d.ts +8 -0
  49. package/lib/azure-aks/test/aks-cluster.spec.js +1396 -0
  50. package/lib/azure-diagnosticsettings/index.d.ts +7 -0
  51. package/lib/azure-diagnosticsettings/index.js +24 -0
  52. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.d.ts +50 -0
  53. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.js +207 -0
  54. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +193 -0
  55. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +200 -0
  56. package/lib/azure-diagnosticsettings/lib/index.d.ts +8 -0
  57. package/lib/azure-diagnosticsettings/lib/index.js +25 -0
  58. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.d.ts +8 -0
  59. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +432 -0
  60. package/lib/azure-metricalert/index.d.ts +10 -1
  61. package/lib/azure-metricalert/index.js +11 -2
  62. package/lib/azure-metricalert/lib/index.d.ts +4 -0
  63. package/lib/azure-metricalert/lib/index.js +5 -1
  64. package/lib/azure-metricalert/lib/metric-alert-schemas.d.ts +24 -0
  65. package/lib/azure-metricalert/lib/metric-alert-schemas.js +242 -0
  66. package/lib/azure-metricalert/lib/metric-alert.d.ts +337 -49
  67. package/lib/azure-metricalert/lib/metric-alert.js +228 -104
  68. package/lib/azure-metricalert/test/metric-alert.integ.d.ts +9 -0
  69. package/lib/azure-metricalert/test/metric-alert.integ.js +123 -0
  70. package/lib/azure-metricalert/test/metric-alert.spec.d.ts +9 -0
  71. package/lib/azure-metricalert/test/metric-alert.spec.js +1266 -0
  72. package/lib/azure-networkinterface/index.d.ts +4 -0
  73. package/lib/azure-networkinterface/index.js +21 -0
  74. package/lib/azure-networkinterface/lib/index.d.ts +6 -0
  75. package/lib/azure-networkinterface/lib/index.js +22 -0
  76. package/lib/azure-networkinterface/lib/network-interface-schemas.d.ts +32 -0
  77. package/lib/azure-networkinterface/lib/network-interface-schemas.js +222 -0
  78. package/lib/azure-networkinterface/lib/network-interface.d.ts +265 -0
  79. package/lib/azure-networkinterface/lib/network-interface.js +228 -0
  80. package/lib/azure-networkinterface/test/network-interface.integ.d.ts +9 -0
  81. package/lib/azure-networkinterface/test/network-interface.integ.js +102 -0
  82. package/lib/azure-networkinterface/test/network-interface.spec.d.ts +8 -0
  83. package/lib/azure-networkinterface/test/network-interface.spec.js +655 -0
  84. package/lib/azure-networksecuritygroup/index.d.ts +5 -0
  85. package/lib/azure-networksecuritygroup/index.js +6 -1
  86. package/lib/azure-networksecuritygroup/lib/index.d.ts +5 -2
  87. package/lib/azure-networksecuritygroup/lib/index.js +14 -17
  88. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.d.ts +32 -0
  89. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.js +198 -0
  90. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +268 -0
  91. package/lib/azure-networksecuritygroup/lib/network-security-group.js +248 -0
  92. package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +9 -0
  93. package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +151 -0
  94. package/lib/azure-networksecuritygroup/test/network-security-group.spec.d.ts +8 -0
  95. package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +652 -0
  96. package/lib/azure-publicipaddress/index.d.ts +6 -0
  97. package/lib/azure-publicipaddress/index.js +23 -0
  98. package/lib/azure-publicipaddress/lib/index.d.ts +9 -0
  99. package/lib/azure-publicipaddress/lib/index.js +19 -0
  100. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.d.ts +32 -0
  101. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.js +227 -0
  102. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +256 -0
  103. package/lib/azure-publicipaddress/lib/public-ip-address.js +267 -0
  104. package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +9 -0
  105. package/lib/azure-publicipaddress/test/public-ip-address.integ.js +75 -0
  106. package/lib/azure-publicipaddress/test/public-ip-address.spec.d.ts +15 -0
  107. package/lib/azure-publicipaddress/test/public-ip-address.spec.js +498 -0
  108. package/lib/azure-resourcegroup/index.d.ts +37 -0
  109. package/lib/azure-resourcegroup/index.js +39 -1
  110. package/lib/azure-resourcegroup/lib/index.d.ts +44 -0
  111. package/lib/azure-resourcegroup/lib/index.js +43 -1
  112. package/lib/azure-resourcegroup/lib/resource-group-schemas.d.ts +40 -0
  113. package/lib/azure-resourcegroup/lib/resource-group-schemas.js +243 -0
  114. package/lib/azure-resourcegroup/lib/resource-group.d.ts +170 -46
  115. package/lib/azure-resourcegroup/lib/resource-group.js +222 -56
  116. package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +9 -0
  117. package/lib/azure-resourcegroup/test/resource-group.integ.js +72 -0
  118. package/lib/azure-resourcegroup/test/resource-group.spec.d.ts +9 -0
  119. package/lib/azure-resourcegroup/test/resource-group.spec.js +554 -0
  120. package/lib/azure-storageaccount/index.d.ts +19 -0
  121. package/lib/azure-storageaccount/index.js +20 -1
  122. package/lib/azure-storageaccount/lib/index.d.ts +8 -5
  123. package/lib/azure-storageaccount/lib/index.js +9 -6
  124. package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +138 -0
  125. package/lib/azure-storageaccount/lib/storage-account-schemas.js +378 -0
  126. package/lib/azure-storageaccount/lib/storage-account.d.ts +348 -0
  127. package/lib/azure-storageaccount/lib/storage-account.js +365 -0
  128. package/lib/azure-storageaccount/test/storage-account.integ.d.ts +9 -0
  129. package/lib/azure-storageaccount/test/storage-account.integ.js +151 -0
  130. package/lib/azure-storageaccount/test/storage-account.spec.d.ts +4 -0
  131. package/lib/azure-storageaccount/test/storage-account.spec.js +315 -0
  132. package/lib/azure-subnet/index.d.ts +4 -0
  133. package/lib/azure-subnet/index.js +21 -0
  134. package/lib/azure-subnet/lib/index.d.ts +5 -0
  135. package/lib/azure-subnet/lib/index.js +22 -0
  136. package/lib/azure-subnet/lib/subnet-schemas.d.ts +32 -0
  137. package/lib/azure-subnet/lib/subnet-schemas.js +237 -0
  138. package/lib/azure-subnet/lib/subnet.d.ts +285 -0
  139. package/lib/azure-subnet/lib/subnet.js +254 -0
  140. package/lib/azure-subnet/test/subnet.integ.d.ts +11 -0
  141. package/lib/azure-subnet/test/subnet.integ.js +80 -0
  142. package/lib/azure-subnet/test/subnet.spec.d.ts +8 -0
  143. package/lib/azure-subnet/test/subnet.spec.js +396 -0
  144. package/lib/azure-virtualmachine/index.d.ts +6 -0
  145. package/lib/azure-virtualmachine/index.js +7 -1
  146. package/lib/azure-virtualmachine/lib/index.d.ts +11 -2
  147. package/lib/azure-virtualmachine/lib/index.js +22 -3
  148. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.d.ts +327 -0
  149. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.js +544 -0
  150. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +377 -0
  151. package/lib/azure-virtualmachine/lib/virtual-machine.js +462 -0
  152. package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +9 -0
  153. package/lib/azure-virtualmachine/test/virtual-machine.integ.js +220 -0
  154. package/lib/azure-virtualmachine/test/virtual-machine.spec.d.ts +9 -0
  155. package/lib/azure-virtualmachine/test/virtual-machine.spec.js +1032 -0
  156. package/lib/azure-virtualnetwork/index.d.ts +9 -0
  157. package/lib/azure-virtualnetwork/index.js +11 -1
  158. package/lib/azure-virtualnetwork/lib/index.d.ts +9 -2
  159. package/lib/azure-virtualnetwork/lib/index.js +20 -17
  160. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.d.ts +32 -0
  161. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.js +236 -0
  162. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +213 -0
  163. package/lib/azure-virtualnetwork/lib/virtual-network.js +245 -0
  164. package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +9 -0
  165. package/lib/azure-virtualnetwork/test/virtual-network.integ.js +91 -0
  166. package/lib/azure-virtualnetwork/test/virtual-network.spec.d.ts +8 -0
  167. package/lib/azure-virtualnetwork/test/virtual-network.spec.js +398 -0
  168. package/lib/azure-vmss/index.d.ts +6 -0
  169. package/lib/azure-vmss/index.js +23 -0
  170. package/lib/azure-vmss/lib/index.d.ts +9 -0
  171. package/lib/azure-vmss/lib/index.js +39 -0
  172. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +258 -0
  173. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +503 -0
  174. package/lib/azure-vmss/lib/vmss-schemas.d.ts +472 -0
  175. package/lib/azure-vmss/lib/vmss-schemas.js +444 -0
  176. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +15 -0
  177. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +261 -0
  178. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.d.ts +8 -0
  179. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +997 -0
  180. package/lib/core-azure/lib/azapi/azapi-exports.d.ts +16 -0
  181. package/lib/core-azure/lib/azapi/azapi-exports.js +38 -0
  182. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +481 -0
  183. package/lib/core-azure/lib/azapi/azapi-resource.js +505 -0
  184. package/lib/core-azure/lib/azapi/azapi-resource.spec.d.ts +7 -0
  185. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +545 -0
  186. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +74 -0
  187. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +203 -0
  188. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +341 -0
  189. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +671 -0
  190. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +344 -0
  191. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +583 -0
  192. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +128 -0
  193. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +281 -0
  194. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +285 -0
  195. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +491 -0
  196. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +518 -0
  197. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +839 -0
  198. package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -0
  199. package/lib/core-azure/lib/azapi/providers-azapi/index.js +15 -0
  200. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.d.ts +0 -0
  201. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +13 -0
  202. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +447 -0
  203. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +844 -0
  204. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +689 -0
  205. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +1140 -0
  206. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +400 -0
  207. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +706 -0
  208. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +450 -0
  209. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +788 -0
  210. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.d.ts +215 -0
  211. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +567 -0
  212. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.d.ts +7 -0
  213. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.js +630 -0
  214. package/lib/core-azure/lib/index.d.ts +18 -3
  215. package/lib/core-azure/lib/index.js +24 -4
  216. package/lib/core-azure/lib/version-manager/api-version-manager.d.ts +253 -0
  217. package/lib/core-azure/lib/version-manager/api-version-manager.js +509 -0
  218. package/lib/core-azure/lib/version-manager/api-version-manager.spec.d.ts +7 -0
  219. package/lib/core-azure/lib/version-manager/api-version-manager.spec.js +510 -0
  220. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.d.ts +669 -0
  221. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +202 -0
  222. package/lib/core-azure/lib/version-manager/version-manager.d.ts +9 -0
  223. package/lib/core-azure/lib/version-manager/version-manager.js +23 -0
  224. package/lib/index.d.ts +54 -13
  225. package/lib/index.js +76 -15
  226. package/lib/testing/index.d.ts +124 -1
  227. package/lib/testing/index.js +480 -4
  228. package/lib/testing/lib/cleanup.d.ts +229 -0
  229. package/lib/testing/lib/cleanup.js +331 -0
  230. package/lib/testing/lib/metadata.d.ts +151 -0
  231. package/lib/testing/lib/metadata.js +180 -0
  232. package/lib/testing/lib/naming.d.ts +96 -0
  233. package/lib/testing/lib/naming.js +336 -0
  234. package/lib/util/azureTenantIdHelpers.js +3 -4
  235. package/lib/util/randomName.js +2 -3
  236. package/node_modules/uuid/LICENSE.md +9 -0
  237. package/node_modules/uuid/README.md +510 -0
  238. package/node_modules/uuid/dist/cjs/index.d.ts +15 -0
  239. package/node_modules/uuid/dist/cjs/index.js +31 -0
  240. package/node_modules/uuid/dist/cjs/max.d.ts +2 -0
  241. package/node_modules/uuid/dist/cjs/max.js +3 -0
  242. package/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
  243. package/node_modules/uuid/dist/cjs/md5.js +13 -0
  244. package/node_modules/uuid/dist/cjs/native.d.ts +6 -0
  245. package/node_modules/uuid/dist/cjs/native.js +4 -0
  246. package/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
  247. package/node_modules/uuid/dist/cjs/nil.js +3 -0
  248. package/node_modules/uuid/dist/cjs/package.json +1 -0
  249. package/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
  250. package/node_modules/uuid/dist/cjs/parse.js +11 -0
  251. package/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
  252. package/node_modules/uuid/dist/cjs/regex.js +3 -0
  253. package/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
  254. package/node_modules/uuid/dist/cjs/rng.js +13 -0
  255. package/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
  256. package/node_modules/uuid/dist/cjs/sha1.js +13 -0
  257. package/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
  258. package/node_modules/uuid/dist/cjs/stringify.js +39 -0
  259. package/node_modules/uuid/dist/cjs/types.d.ts +21 -0
  260. package/node_modules/uuid/dist/cjs/types.js +2 -0
  261. package/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
  262. package/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
  263. package/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
  264. package/node_modules/uuid/dist/cjs/v1.js +87 -0
  265. package/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
  266. package/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
  267. package/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
  268. package/node_modules/uuid/dist/cjs/v3.js +14 -0
  269. package/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
  270. package/node_modules/uuid/dist/cjs/v35.js +41 -0
  271. package/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
  272. package/node_modules/uuid/dist/cjs/v4.js +29 -0
  273. package/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
  274. package/node_modules/uuid/dist/cjs/v5.js +14 -0
  275. package/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
  276. package/node_modules/uuid/dist/cjs/v6.js +19 -0
  277. package/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
  278. package/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
  279. package/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
  280. package/node_modules/uuid/dist/cjs/v7.js +69 -0
  281. package/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
  282. package/node_modules/uuid/dist/cjs/validate.js +7 -0
  283. package/node_modules/uuid/dist/cjs/version.d.ts +2 -0
  284. package/node_modules/uuid/dist/cjs/version.js +10 -0
  285. package/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
  286. package/node_modules/uuid/dist/cjs-browser/index.js +31 -0
  287. package/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
  288. package/node_modules/uuid/dist/cjs-browser/max.js +3 -0
  289. package/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
  290. package/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
  291. package/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
  292. package/node_modules/uuid/dist/cjs-browser/native.js +4 -0
  293. package/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
  294. package/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
  295. package/node_modules/uuid/dist/cjs-browser/package.json +1 -0
  296. package/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
  297. package/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
  298. package/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
  299. package/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
  300. package/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
  301. package/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
  302. package/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
  303. package/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
  304. package/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
  305. package/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
  306. package/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
  307. package/node_modules/uuid/dist/cjs-browser/types.js +2 -0
  308. package/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
  309. package/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
  310. package/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
  311. package/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
  312. package/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
  313. package/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
  314. package/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
  315. package/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
  316. package/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
  317. package/node_modules/uuid/dist/cjs-browser/v35.js +41 -0
  318. package/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
  319. package/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
  320. package/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
  321. package/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
  322. package/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
  323. package/node_modules/uuid/dist/cjs-browser/v6.js +19 -0
  324. package/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
  325. package/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
  326. package/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
  327. package/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
  328. package/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
  329. package/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
  330. package/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
  331. package/node_modules/uuid/dist/cjs-browser/version.js +10 -0
  332. package/node_modules/uuid/dist/esm/bin/uuid +2 -0
  333. package/node_modules/uuid/dist/esm/index.d.ts +15 -0
  334. package/node_modules/uuid/dist/esm/index.js +14 -0
  335. package/node_modules/uuid/dist/esm/max.d.ts +2 -0
  336. package/node_modules/uuid/dist/esm/max.js +1 -0
  337. package/node_modules/uuid/dist/esm/md5.d.ts +4 -0
  338. package/node_modules/uuid/dist/esm/md5.js +11 -0
  339. package/node_modules/uuid/dist/esm/native.d.ts +6 -0
  340. package/node_modules/uuid/dist/esm/native.js +2 -0
  341. package/node_modules/uuid/dist/esm/nil.d.ts +2 -0
  342. package/node_modules/uuid/dist/esm/nil.js +1 -0
  343. package/node_modules/uuid/dist/esm/parse.d.ts +2 -0
  344. package/node_modules/uuid/dist/esm/parse.js +9 -0
  345. package/node_modules/uuid/dist/esm/regex.d.ts +2 -0
  346. package/node_modules/uuid/dist/esm/regex.js +1 -0
  347. package/node_modules/uuid/dist/esm/rng.d.ts +1 -0
  348. package/node_modules/uuid/dist/esm/rng.js +10 -0
  349. package/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
  350. package/node_modules/uuid/dist/esm/sha1.js +11 -0
  351. package/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
  352. package/node_modules/uuid/dist/esm/stringify.js +35 -0
  353. package/node_modules/uuid/dist/esm/types.d.ts +21 -0
  354. package/node_modules/uuid/dist/esm/types.js +1 -0
  355. package/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
  356. package/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
  357. package/node_modules/uuid/dist/esm/v1.d.ts +11 -0
  358. package/node_modules/uuid/dist/esm/v1.js +83 -0
  359. package/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
  360. package/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
  361. package/node_modules/uuid/dist/esm/v3.d.ts +9 -0
  362. package/node_modules/uuid/dist/esm/v3.js +9 -0
  363. package/node_modules/uuid/dist/esm/v35.d.ts +7 -0
  364. package/node_modules/uuid/dist/esm/v35.js +36 -0
  365. package/node_modules/uuid/dist/esm/v4.d.ts +4 -0
  366. package/node_modules/uuid/dist/esm/v4.js +27 -0
  367. package/node_modules/uuid/dist/esm/v5.d.ts +9 -0
  368. package/node_modules/uuid/dist/esm/v5.js +9 -0
  369. package/node_modules/uuid/dist/esm/v6.d.ts +4 -0
  370. package/node_modules/uuid/dist/esm/v6.js +17 -0
  371. package/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
  372. package/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
  373. package/node_modules/uuid/dist/esm/v7.d.ts +9 -0
  374. package/node_modules/uuid/dist/esm/v7.js +65 -0
  375. package/node_modules/uuid/dist/esm/validate.d.ts +2 -0
  376. package/node_modules/uuid/dist/esm/validate.js +5 -0
  377. package/node_modules/uuid/dist/esm/version.d.ts +2 -0
  378. package/node_modules/uuid/dist/esm/version.js +8 -0
  379. package/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
  380. package/node_modules/uuid/dist/esm-browser/index.js +14 -0
  381. package/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
  382. package/node_modules/uuid/dist/esm-browser/max.js +1 -0
  383. package/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
  384. package/node_modules/uuid/dist/esm-browser/md5.js +135 -0
  385. package/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
  386. package/node_modules/uuid/dist/esm-browser/native.js +2 -0
  387. package/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
  388. package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  389. package/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
  390. package/node_modules/uuid/dist/esm-browser/parse.js +9 -0
  391. package/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
  392. package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  393. package/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
  394. package/node_modules/uuid/dist/esm-browser/rng.js +11 -0
  395. package/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
  396. package/node_modules/uuid/dist/esm-browser/sha1.js +70 -0
  397. package/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
  398. package/node_modules/uuid/dist/esm-browser/stringify.js +35 -0
  399. package/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
  400. package/node_modules/uuid/dist/esm-browser/types.js +1 -0
  401. package/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
  402. package/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
  403. package/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
  404. package/node_modules/uuid/dist/esm-browser/v1.js +83 -0
  405. package/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
  406. package/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
  407. package/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
  408. package/node_modules/uuid/dist/esm-browser/v3.js +9 -0
  409. package/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
  410. package/node_modules/uuid/dist/esm-browser/v35.js +36 -0
  411. package/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
  412. package/node_modules/uuid/dist/esm-browser/v4.js +27 -0
  413. package/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
  414. package/node_modules/uuid/dist/esm-browser/v5.js +9 -0
  415. package/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
  416. package/node_modules/uuid/dist/esm-browser/v6.js +17 -0
  417. package/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
  418. package/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
  419. package/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
  420. package/node_modules/uuid/dist/esm-browser/v7.js +65 -0
  421. package/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
  422. package/node_modules/uuid/dist/esm-browser/validate.js +5 -0
  423. package/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
  424. package/node_modules/uuid/dist/esm-browser/version.js +8 -0
  425. package/node_modules/uuid/package.json +132 -0
  426. package/package.json +51 -33
  427. package/scripts/cleanup-test-resources.ts +369 -0
  428. package/cdktf.out/manifest.json +0 -13
  429. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
  430. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
  431. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
  432. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
  433. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
  434. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
  435. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
  436. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
  437. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
  438. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
  439. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  440. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
  441. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
  442. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
  443. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
  444. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
  445. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
  446. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
  447. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  448. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
  449. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
  450. package/lib/azure-actiongroup/lib/actiongroup.d.ts +0 -49
  451. package/lib/azure-actiongroup/lib/actiongroup.js +0 -85
  452. package/lib/azure-actiongroup/model/action-group-props.d.ts +0 -47
  453. package/lib/azure-actiongroup/model/action-group-props.js +0 -3
  454. package/lib/azure-actiongroup/model/arm-role-receiver-props.d.ts +0 -20
  455. package/lib/azure-actiongroup/model/arm-role-receiver-props.js +0 -3
  456. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.d.ts +0 -14
  457. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.js +0 -3
  458. package/lib/azure-actiongroup/model/email-receiver-props.d.ts +0 -19
  459. package/lib/azure-actiongroup/model/email-receiver-props.js +0 -3
  460. package/lib/azure-actiongroup/model/eventhub-receiver-props.d.ts +0 -23
  461. package/lib/azure-actiongroup/model/eventhub-receiver-props.js +0 -3
  462. package/lib/azure-actiongroup/model/function.d.ts +0 -40
  463. package/lib/azure-actiongroup/model/function.js +0 -118
  464. package/lib/azure-actiongroup/model/index.d.ts +0 -10
  465. package/lib/azure-actiongroup/model/index.js +0 -27
  466. package/lib/azure-actiongroup/model/logic-app-receiver-props.d.ts +0 -23
  467. package/lib/azure-actiongroup/model/logic-app-receiver-props.js +0 -3
  468. package/lib/azure-actiongroup/model/sms-receiver-props.d.ts +0 -18
  469. package/lib/azure-actiongroup/model/sms-receiver-props.js +0 -3
  470. package/lib/azure-actiongroup/model/voice-receiver-props.d.ts +0 -18
  471. package/lib/azure-actiongroup/model/voice-receiver-props.js +0 -3
  472. package/lib/azure-actiongroup/model/webhook-receiver-props.d.ts +0 -18
  473. package/lib/azure-actiongroup/model/webhook-receiver-props.js +0 -3
  474. package/lib/azure-actiongroup/test/AzureActionGroup.spec.d.ts +0 -1
  475. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +0 -294
  476. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
  477. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
  478. package/lib/azure-applicationgateway/index.d.ts +0 -1
  479. package/lib/azure-applicationgateway/index.js +0 -18
  480. package/lib/azure-applicationgateway/lib/gateway.d.ts +0 -248
  481. package/lib/azure-applicationgateway/lib/gateway.js +0 -199
  482. package/lib/azure-applicationgateway/lib/index.d.ts +0 -1
  483. package/lib/azure-applicationgateway/lib/index.js +0 -18
  484. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.d.ts +0 -1
  485. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +0 -106
  486. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
  487. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
  488. package/lib/azure-applicationinsights/index.d.ts +0 -1
  489. package/lib/azure-applicationinsights/index.js +0 -18
  490. package/lib/azure-applicationinsights/lib/appinsights.d.ts +0 -110
  491. package/lib/azure-applicationinsights/lib/appinsights.js +0 -134
  492. package/lib/azure-applicationinsights/lib/index.d.ts +0 -1
  493. package/lib/azure-applicationinsights/lib/index.js +0 -18
  494. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.d.ts +0 -1
  495. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +0 -55
  496. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
  497. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
  498. package/lib/azure-containerregistry/index.d.ts +0 -1
  499. package/lib/azure-containerregistry/index.js +0 -18
  500. package/lib/azure-containerregistry/lib/index.d.ts +0 -1
  501. package/lib/azure-containerregistry/lib/index.js +0 -18
  502. package/lib/azure-containerregistry/lib/registry.d.ts +0 -70
  503. package/lib/azure-containerregistry/lib/registry.js +0 -76
  504. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.d.ts +0 -1
  505. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +0 -50
  506. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
  507. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
  508. package/lib/azure-datalake/index.d.ts +0 -1
  509. package/lib/azure-datalake/index.js +0 -18
  510. package/lib/azure-datalake/lib/datalake.d.ts +0 -64
  511. package/lib/azure-datalake/lib/datalake.js +0 -92
  512. package/lib/azure-datalake/lib/filesystem.d.ts +0 -70
  513. package/lib/azure-datalake/lib/filesystem.js +0 -83
  514. package/lib/azure-datalake/lib/index.d.ts +0 -3
  515. package/lib/azure-datalake/lib/index.js +0 -20
  516. package/lib/azure-datalake/lib/path.d.ts +0 -49
  517. package/lib/azure-datalake/lib/path.js +0 -51
  518. package/lib/azure-eventhub/index.d.ts +0 -1
  519. package/lib/azure-eventhub/index.js +0 -18
  520. package/lib/azure-eventhub/lib/authorization.d.ts +0 -58
  521. package/lib/azure-eventhub/lib/authorization.js +0 -84
  522. package/lib/azure-eventhub/lib/cluster.d.ts +0 -56
  523. package/lib/azure-eventhub/lib/cluster.js +0 -64
  524. package/lib/azure-eventhub/lib/consumer.d.ts +0 -54
  525. package/lib/azure-eventhub/lib/consumer.js +0 -59
  526. package/lib/azure-eventhub/lib/index.d.ts +0 -6
  527. package/lib/azure-eventhub/lib/index.js +0 -23
  528. package/lib/azure-eventhub/lib/instance.d.ts +0 -164
  529. package/lib/azure-eventhub/lib/instance.js +0 -184
  530. package/lib/azure-eventhub/lib/kusto-connection.d.ts +0 -109
  531. package/lib/azure-eventhub/lib/kusto-connection.js +0 -76
  532. package/lib/azure-eventhub/lib/namespace.d.ts +0 -151
  533. package/lib/azure-eventhub/lib/namespace.js +0 -131
  534. package/lib/azure-eventhub/test/AzureEventhub.spec.d.ts +0 -1
  535. package/lib/azure-eventhub/test/AzureEventhub.spec.js +0 -56
  536. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
  537. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
  538. package/lib/azure-functionapp/index.d.ts +0 -1
  539. package/lib/azure-functionapp/index.js +0 -18
  540. package/lib/azure-functionapp/lib/functionapplinux.d.ts +0 -211
  541. package/lib/azure-functionapp/lib/functionapplinux.js +0 -141
  542. package/lib/azure-functionapp/lib/index.d.ts +0 -1
  543. package/lib/azure-functionapp/lib/index.js +0 -18
  544. package/lib/azure-functionapp/serviceplanskus.d.ts +0 -70
  545. package/lib/azure-functionapp/serviceplanskus.js +0 -81
  546. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.d.ts +0 -1
  547. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +0 -48
  548. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
  549. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
  550. package/lib/azure-keyvault/index.d.ts +0 -1
  551. package/lib/azure-keyvault/index.js +0 -18
  552. package/lib/azure-keyvault/lib/certificate.d.ts +0 -133
  553. package/lib/azure-keyvault/lib/certificate.js +0 -146
  554. package/lib/azure-keyvault/lib/index.d.ts +0 -5
  555. package/lib/azure-keyvault/lib/index.js +0 -22
  556. package/lib/azure-keyvault/lib/key.d.ts +0 -72
  557. package/lib/azure-keyvault/lib/key.js +0 -69
  558. package/lib/azure-keyvault/lib/policy.d.ts +0 -76
  559. package/lib/azure-keyvault/lib/policy.js +0 -56
  560. package/lib/azure-keyvault/lib/secret.d.ts +0 -70
  561. package/lib/azure-keyvault/lib/secret.js +0 -64
  562. package/lib/azure-keyvault/lib/vault.d.ts +0 -282
  563. package/lib/azure-keyvault/lib/vault.js +0 -392
  564. package/lib/azure-keyvault/test/AzureKeyVault.spec.d.ts +0 -1
  565. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +0 -63
  566. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
  567. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
  568. package/lib/azure-kubernetes/index.d.ts +0 -1
  569. package/lib/azure-kubernetes/index.js +0 -18
  570. package/lib/azure-kubernetes/lib/cluster.d.ts +0 -93
  571. package/lib/azure-kubernetes/lib/cluster.js +0 -63
  572. package/lib/azure-kubernetes/lib/index.d.ts +0 -1
  573. package/lib/azure-kubernetes/lib/index.js +0 -18
  574. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.d.ts +0 -1
  575. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +0 -56
  576. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
  577. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
  578. package/lib/azure-kusto/index.d.ts +0 -1
  579. package/lib/azure-kusto/index.js +0 -18
  580. package/lib/azure-kusto/lib/cluster.d.ts +0 -136
  581. package/lib/azure-kusto/lib/cluster.js +0 -138
  582. package/lib/azure-kusto/lib/compute-specification.d.ts +0 -71
  583. package/lib/azure-kusto/lib/compute-specification.js +0 -651
  584. package/lib/azure-kusto/lib/database.d.ts +0 -162
  585. package/lib/azure-kusto/lib/database.js +0 -180
  586. package/lib/azure-kusto/lib/index.d.ts +0 -3
  587. package/lib/azure-kusto/lib/index.js +0 -20
  588. package/lib/azure-kusto/test/AzureKusto.spec.d.ts +0 -1
  589. package/lib/azure-kusto/test/AzureKusto.spec.js +0 -50
  590. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
  591. package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
  592. package/lib/azure-loganalytics/index.d.ts +0 -1
  593. package/lib/azure-loganalytics/index.js +0 -18
  594. package/lib/azure-loganalytics/lib/index.d.ts +0 -1
  595. package/lib/azure-loganalytics/lib/index.js +0 -18
  596. package/lib/azure-loganalytics/lib/workspace.d.ts +0 -163
  597. package/lib/azure-loganalytics/lib/workspace.js +0 -126
  598. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.d.ts +0 -1
  599. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +0 -50
  600. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
  601. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
  602. package/lib/azure-metricalert/model/action-props.d.ts +0 -11
  603. package/lib/azure-metricalert/model/action-props.js +0 -3
  604. package/lib/azure-metricalert/model/criteria-base-props.d.ts +0 -38
  605. package/lib/azure-metricalert/model/criteria-base-props.js +0 -3
  606. package/lib/azure-metricalert/model/criteria-dimension-props.d.ts +0 -21
  607. package/lib/azure-metricalert/model/criteria-dimension-props.js +0 -3
  608. package/lib/azure-metricalert/model/criteria-props.d.ts +0 -12
  609. package/lib/azure-metricalert/model/criteria-props.js +0 -3
  610. package/lib/azure-metricalert/model/dynamic-criteria-props.d.ts +0 -29
  611. package/lib/azure-metricalert/model/dynamic-criteria-props.js +0 -3
  612. package/lib/azure-metricalert/model/function.d.ts +0 -28
  613. package/lib/azure-metricalert/model/function.js +0 -78
  614. package/lib/azure-metricalert/model/index.d.ts +0 -7
  615. package/lib/azure-metricalert/model/index.js +0 -24
  616. package/lib/azure-metricalert/model/metric-alert-props.d.ts +0 -86
  617. package/lib/azure-metricalert/model/metric-alert-props.js +0 -3
  618. package/lib/azure-metricalert/test/AzureMetricAlert.spec.d.ts +0 -1
  619. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +0 -63
  620. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
  621. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
  622. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.d.ts +0 -77
  623. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +0 -608
  624. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +0 -190
  625. package/lib/azure-networksecuritygroup/lib/securitygroup.js +0 -172
  626. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.d.ts +0 -1
  627. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +0 -54
  628. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
  629. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
  630. package/lib/azure-queryrulealert/index.d.ts +0 -1
  631. package/lib/azure-queryrulealert/index.js +0 -18
  632. package/lib/azure-queryrulealert/lib/index.d.ts +0 -1
  633. package/lib/azure-queryrulealert/lib/index.js +0 -18
  634. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +0 -175
  635. package/lib/azure-queryrulealert/lib/query-rule-alert.js +0 -205
  636. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.d.ts +0 -1
  637. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +0 -67
  638. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
  639. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
  640. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.d.ts +0 -1
  641. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +0 -41
  642. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
  643. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
  644. package/lib/azure-storageaccount/lib/account.d.ts +0 -232
  645. package/lib/azure-storageaccount/lib/account.js +0 -225
  646. package/lib/azure-storageaccount/lib/container.d.ts +0 -122
  647. package/lib/azure-storageaccount/lib/container.js +0 -167
  648. package/lib/azure-storageaccount/lib/fileshare.d.ts +0 -105
  649. package/lib/azure-storageaccount/lib/fileshare.js +0 -126
  650. package/lib/azure-storageaccount/lib/queue.d.ts +0 -35
  651. package/lib/azure-storageaccount/lib/queue.js +0 -52
  652. package/lib/azure-storageaccount/lib/table.d.ts +0 -38
  653. package/lib/azure-storageaccount/lib/table.js +0 -55
  654. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.d.ts +0 -1
  655. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +0 -45
  656. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
  657. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
  658. package/lib/azure-virtualmachine/lib/image-references.d.ts +0 -22
  659. package/lib/azure-virtualmachine/lib/image-references.js +0 -128
  660. package/lib/azure-virtualmachine/lib/vm.d.ts +0 -281
  661. package/lib/azure-virtualmachine/lib/vm.js +0 -283
  662. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.d.ts +0 -1
  663. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +0 -48
  664. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.d.ts +0 -1
  665. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +0 -50
  666. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
  667. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
  668. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
  669. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
  670. package/lib/azure-virtualmachinescaleset/index.d.ts +0 -1
  671. package/lib/azure-virtualmachinescaleset/index.js +0 -18
  672. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +0 -324
  673. package/lib/azure-virtualmachinescaleset/lib/cluster.js +0 -264
  674. package/lib/azure-virtualmachinescaleset/lib/index.d.ts +0 -1
  675. package/lib/azure-virtualmachinescaleset/lib/index.js +0 -18
  676. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.d.ts +0 -1
  677. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +0 -48
  678. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.d.ts +0 -1
  679. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +0 -50
  680. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
  681. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
  682. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
  683. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
  684. package/lib/azure-virtualnetwork/lib/network.d.ts +0 -122
  685. package/lib/azure-virtualnetwork/lib/network.js +0 -120
  686. package/lib/azure-virtualnetwork/lib/peering.d.ts +0 -90
  687. package/lib/azure-virtualnetwork/lib/peering.js +0 -71
  688. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.d.ts +0 -1
  689. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +0 -48
  690. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
  691. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
  692. package/lib/core-azure/lib/diagsettings.d.ts +0 -89
  693. package/lib/core-azure/lib/diagsettings.js +0 -83
  694. package/lib/core-azure/lib/rbac.d.ts +0 -50
  695. package/lib/core-azure/lib/rbac.js +0 -48
  696. package/lib/core-azure/lib/resource.d.ts +0 -62
  697. package/lib/core-azure/lib/resource.js +0 -118
  698. package/lib/core-azure/test/AzureResource.spec.d.ts +0 -1
  699. package/lib/core-azure/test/AzureResource.spec.js +0 -19
  700. package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
  701. package/lib/core-azure/test/ExampleAzureResource.js +0 -67
  702. package/node_modules/moment/CHANGELOG.md +0 -996
  703. package/node_modules/moment/LICENSE +0 -22
  704. package/node_modules/moment/README.md +0 -55
  705. package/node_modules/moment/dist/locale/af.js +0 -71
  706. package/node_modules/moment/dist/locale/ar-dz.js +0 -156
  707. package/node_modules/moment/dist/locale/ar-kw.js +0 -55
  708. package/node_modules/moment/dist/locale/ar-ly.js +0 -171
  709. package/node_modules/moment/dist/locale/ar-ma.js +0 -56
  710. package/node_modules/moment/dist/locale/ar-ps.js +0 -112
  711. package/node_modules/moment/dist/locale/ar-sa.js +0 -105
  712. package/node_modules/moment/dist/locale/ar-tn.js +0 -55
  713. package/node_modules/moment/dist/locale/ar.js +0 -189
  714. package/node_modules/moment/dist/locale/az.js +0 -102
  715. package/node_modules/moment/dist/locale/be.js +0 -142
  716. package/node_modules/moment/dist/locale/bg.js +0 -87
  717. package/node_modules/moment/dist/locale/bm.js +0 -52
  718. package/node_modules/moment/dist/locale/bn-bd.js +0 -129
  719. package/node_modules/moment/dist/locale/bn.js +0 -119
  720. package/node_modules/moment/dist/locale/bo.js +0 -124
  721. package/node_modules/moment/dist/locale/br.js +0 -168
  722. package/node_modules/moment/dist/locale/bs.js +0 -160
  723. package/node_modules/moment/dist/locale/ca.js +0 -100
  724. package/node_modules/moment/dist/locale/cs.js +0 -181
  725. package/node_modules/moment/dist/locale/cv.js +0 -63
  726. package/node_modules/moment/dist/locale/cy.js +0 -98
  727. package/node_modules/moment/dist/locale/da.js +0 -53
  728. package/node_modules/moment/dist/locale/de-at.js +0 -79
  729. package/node_modules/moment/dist/locale/de-ch.js +0 -78
  730. package/node_modules/moment/dist/locale/de.js +0 -78
  731. package/node_modules/moment/dist/locale/dv.js +0 -90
  732. package/node_modules/moment/dist/locale/el.js +0 -106
  733. package/node_modules/moment/dist/locale/en-au.js +0 -68
  734. package/node_modules/moment/dist/locale/en-ca.js +0 -64
  735. package/node_modules/moment/dist/locale/en-gb.js +0 -68
  736. package/node_modules/moment/dist/locale/en-ie.js +0 -68
  737. package/node_modules/moment/dist/locale/en-il.js +0 -64
  738. package/node_modules/moment/dist/locale/en-in.js +0 -68
  739. package/node_modules/moment/dist/locale/en-nz.js +0 -68
  740. package/node_modules/moment/dist/locale/en-sg.js +0 -68
  741. package/node_modules/moment/dist/locale/eo.js +0 -68
  742. package/node_modules/moment/dist/locale/es-do.js +0 -108
  743. package/node_modules/moment/dist/locale/es-mx.js +0 -110
  744. package/node_modules/moment/dist/locale/es-us.js +0 -110
  745. package/node_modules/moment/dist/locale/es.js +0 -110
  746. package/node_modules/moment/dist/locale/et.js +0 -78
  747. package/node_modules/moment/dist/locale/eu.js +0 -65
  748. package/node_modules/moment/dist/locale/fa.js +0 -113
  749. package/node_modules/moment/dist/locale/fi.js +0 -124
  750. package/node_modules/moment/dist/locale/fil.js +0 -58
  751. package/node_modules/moment/dist/locale/fo.js +0 -57
  752. package/node_modules/moment/dist/locale/fr-ca.js +0 -70
  753. package/node_modules/moment/dist/locale/fr-ch.js +0 -74
  754. package/node_modules/moment/dist/locale/fr.js +0 -108
  755. package/node_modules/moment/dist/locale/fy.js +0 -75
  756. package/node_modules/moment/dist/locale/ga.js +0 -95
  757. package/node_modules/moment/dist/locale/gd.js +0 -95
  758. package/node_modules/moment/dist/locale/gl.js +0 -75
  759. package/node_modules/moment/dist/locale/gom-deva.js +0 -126
  760. package/node_modules/moment/dist/locale/gom-latn.js +0 -124
  761. package/node_modules/moment/dist/locale/gu.js +0 -122
  762. package/node_modules/moment/dist/locale/he.js +0 -94
  763. package/node_modules/moment/dist/locale/hi.js +0 -168
  764. package/node_modules/moment/dist/locale/hr.js +0 -156
  765. package/node_modules/moment/dist/locale/hu.js +0 -118
  766. package/node_modules/moment/dist/locale/hy-am.js +0 -94
  767. package/node_modules/moment/dist/locale/id.js +0 -76
  768. package/node_modules/moment/dist/locale/is.js +0 -140
  769. package/node_modules/moment/dist/locale/it-ch.js +0 -64
  770. package/node_modules/moment/dist/locale/it.js +0 -106
  771. package/node_modules/moment/dist/locale/ja.js +0 -148
  772. package/node_modules/moment/dist/locale/jv.js +0 -76
  773. package/node_modules/moment/dist/locale/ka.js +0 -92
  774. package/node_modules/moment/dist/locale/kk.js +0 -82
  775. package/node_modules/moment/dist/locale/km.js +0 -103
  776. package/node_modules/moment/dist/locale/kn.js +0 -124
  777. package/node_modules/moment/dist/locale/ko.js +0 -75
  778. package/node_modules/moment/dist/locale/ku-kmr.js +0 -121
  779. package/node_modules/moment/dist/locale/ku.js +0 -118
  780. package/node_modules/moment/dist/locale/ky.js +0 -84
  781. package/node_modules/moment/dist/locale/lb.js +0 -137
  782. package/node_modules/moment/dist/locale/lo.js +0 -66
  783. package/node_modules/moment/dist/locale/lt.js +0 -125
  784. package/node_modules/moment/dist/locale/lv.js +0 -94
  785. package/node_modules/moment/dist/locale/me.js +0 -117
  786. package/node_modules/moment/dist/locale/mi.js +0 -60
  787. package/node_modules/moment/dist/locale/mk.js +0 -85
  788. package/node_modules/moment/dist/locale/ml.js +0 -82
  789. package/node_modules/moment/dist/locale/mn.js +0 -100
  790. package/node_modules/moment/dist/locale/mr.js +0 -203
  791. package/node_modules/moment/dist/locale/ms-my.js +0 -76
  792. package/node_modules/moment/dist/locale/ms.js +0 -75
  793. package/node_modules/moment/dist/locale/mt.js +0 -56
  794. package/node_modules/moment/dist/locale/my.js +0 -91
  795. package/node_modules/moment/dist/locale/nb.js +0 -60
  796. package/node_modules/moment/dist/locale/ne.js +0 -121
  797. package/node_modules/moment/dist/locale/nl-be.js +0 -102
  798. package/node_modules/moment/dist/locale/nl.js +0 -104
  799. package/node_modules/moment/dist/locale/nn.js +0 -59
  800. package/node_modules/moment/dist/locale/oc-lnc.js +0 -85
  801. package/node_modules/moment/dist/locale/pa-in.js +0 -122
  802. package/node_modules/moment/dist/locale/pl.js +0 -140
  803. package/node_modules/moment/dist/locale/pt-br.js +0 -58
  804. package/node_modules/moment/dist/locale/pt.js +0 -63
  805. package/node_modules/moment/dist/locale/ro.js +0 -76
  806. package/node_modules/moment/dist/locale/ru.js +0 -213
  807. package/node_modules/moment/dist/locale/sd.js +0 -81
  808. package/node_modules/moment/dist/locale/se.js +0 -57
  809. package/node_modules/moment/dist/locale/si.js +0 -69
  810. package/node_modules/moment/dist/locale/sk.js +0 -145
  811. package/node_modules/moment/dist/locale/sl.js +0 -171
  812. package/node_modules/moment/dist/locale/sq.js +0 -65
  813. package/node_modules/moment/dist/locale/sr-cyrl.js +0 -127
  814. package/node_modules/moment/dist/locale/sr.js +0 -129
  815. package/node_modules/moment/dist/locale/ss.js +0 -84
  816. package/node_modules/moment/dist/locale/sv.js +0 -68
  817. package/node_modules/moment/dist/locale/sw.js +0 -55
  818. package/node_modules/moment/dist/locale/ta.js +0 -131
  819. package/node_modules/moment/dist/locale/te.js +0 -88
  820. package/node_modules/moment/dist/locale/tet.js +0 -68
  821. package/node_modules/moment/dist/locale/tg.js +0 -117
  822. package/node_modules/moment/dist/locale/th.js +0 -65
  823. package/node_modules/moment/dist/locale/tk.js +0 -91
  824. package/node_modules/moment/dist/locale/tl-ph.js +0 -57
  825. package/node_modules/moment/dist/locale/tlh.js +0 -124
  826. package/node_modules/moment/dist/locale/tr.js +0 -106
  827. package/node_modules/moment/dist/locale/tzl.js +0 -89
  828. package/node_modules/moment/dist/locale/tzm-latn.js +0 -54
  829. package/node_modules/moment/dist/locale/tzm.js +0 -54
  830. package/node_modules/moment/dist/locale/ug-cn.js +0 -111
  831. package/node_modules/moment/dist/locale/uk.js +0 -167
  832. package/node_modules/moment/dist/locale/ur.js +0 -82
  833. package/node_modules/moment/dist/locale/uz-latn.js +0 -54
  834. package/node_modules/moment/dist/locale/uz.js +0 -51
  835. package/node_modules/moment/dist/locale/vi.js +0 -80
  836. package/node_modules/moment/dist/locale/x-pseudo.js +0 -73
  837. package/node_modules/moment/dist/locale/yo.js +0 -53
  838. package/node_modules/moment/dist/locale/zh-cn.js +0 -120
  839. package/node_modules/moment/dist/locale/zh-hk.js +0 -101
  840. package/node_modules/moment/dist/locale/zh-mo.js +0 -100
  841. package/node_modules/moment/dist/locale/zh-tw.js +0 -99
  842. package/node_modules/moment/dist/moment.js +0 -5680
  843. package/node_modules/moment/ender.js +0 -1
  844. package/node_modules/moment/locale/af.js +0 -82
  845. package/node_modules/moment/locale/ar-dz.js +0 -167
  846. package/node_modules/moment/locale/ar-kw.js +0 -66
  847. package/node_modules/moment/locale/ar-ly.js +0 -182
  848. package/node_modules/moment/locale/ar-ma.js +0 -67
  849. package/node_modules/moment/locale/ar-ps.js +0 -123
  850. package/node_modules/moment/locale/ar-sa.js +0 -116
  851. package/node_modules/moment/locale/ar-tn.js +0 -66
  852. package/node_modules/moment/locale/ar.js +0 -200
  853. package/node_modules/moment/locale/az.js +0 -113
  854. package/node_modules/moment/locale/be.js +0 -153
  855. package/node_modules/moment/locale/bg.js +0 -98
  856. package/node_modules/moment/locale/bm.js +0 -62
  857. package/node_modules/moment/locale/bn-bd.js +0 -140
  858. package/node_modules/moment/locale/bn.js +0 -130
  859. package/node_modules/moment/locale/bo.js +0 -135
  860. package/node_modules/moment/locale/br.js +0 -179
  861. package/node_modules/moment/locale/bs.js +0 -171
  862. package/node_modules/moment/locale/ca.js +0 -111
  863. package/node_modules/moment/locale/cs.js +0 -192
  864. package/node_modules/moment/locale/cv.js +0 -74
  865. package/node_modules/moment/locale/cy.js +0 -109
  866. package/node_modules/moment/locale/da.js +0 -64
  867. package/node_modules/moment/locale/de-at.js +0 -90
  868. package/node_modules/moment/locale/de-ch.js +0 -87
  869. package/node_modules/moment/locale/de.js +0 -89
  870. package/node_modules/moment/locale/dv.js +0 -101
  871. package/node_modules/moment/locale/el.js +0 -117
  872. package/node_modules/moment/locale/en-au.js +0 -79
  873. package/node_modules/moment/locale/en-ca.js +0 -75
  874. package/node_modules/moment/locale/en-gb.js +0 -79
  875. package/node_modules/moment/locale/en-ie.js +0 -79
  876. package/node_modules/moment/locale/en-il.js +0 -75
  877. package/node_modules/moment/locale/en-in.js +0 -79
  878. package/node_modules/moment/locale/en-nz.js +0 -79
  879. package/node_modules/moment/locale/en-sg.js +0 -79
  880. package/node_modules/moment/locale/eo.js +0 -79
  881. package/node_modules/moment/locale/es-do.js +0 -119
  882. package/node_modules/moment/locale/es-mx.js +0 -121
  883. package/node_modules/moment/locale/es-us.js +0 -121
  884. package/node_modules/moment/locale/es.js +0 -121
  885. package/node_modules/moment/locale/et.js +0 -89
  886. package/node_modules/moment/locale/eu.js +0 -76
  887. package/node_modules/moment/locale/fa.js +0 -124
  888. package/node_modules/moment/locale/fi.js +0 -135
  889. package/node_modules/moment/locale/fil.js +0 -69
  890. package/node_modules/moment/locale/fo.js +0 -68
  891. package/node_modules/moment/locale/fr-ca.js +0 -81
  892. package/node_modules/moment/locale/fr-ch.js +0 -85
  893. package/node_modules/moment/locale/fr.js +0 -119
  894. package/node_modules/moment/locale/fy.js +0 -86
  895. package/node_modules/moment/locale/ga.js +0 -106
  896. package/node_modules/moment/locale/gd.js +0 -106
  897. package/node_modules/moment/locale/gl.js +0 -86
  898. package/node_modules/moment/locale/gom-deva.js +0 -137
  899. package/node_modules/moment/locale/gom-latn.js +0 -135
  900. package/node_modules/moment/locale/gu.js +0 -133
  901. package/node_modules/moment/locale/he.js +0 -105
  902. package/node_modules/moment/locale/hi.js +0 -179
  903. package/node_modules/moment/locale/hr.js +0 -167
  904. package/node_modules/moment/locale/hu.js +0 -129
  905. package/node_modules/moment/locale/hy-am.js +0 -105
  906. package/node_modules/moment/locale/id.js +0 -87
  907. package/node_modules/moment/locale/is.js +0 -151
  908. package/node_modules/moment/locale/it-ch.js +0 -75
  909. package/node_modules/moment/locale/it.js +0 -117
  910. package/node_modules/moment/locale/ja.js +0 -159
  911. package/node_modules/moment/locale/jv.js +0 -87
  912. package/node_modules/moment/locale/ka.js +0 -103
  913. package/node_modules/moment/locale/kk.js +0 -93
  914. package/node_modules/moment/locale/km.js +0 -114
  915. package/node_modules/moment/locale/kn.js +0 -135
  916. package/node_modules/moment/locale/ko.js +0 -86
  917. package/node_modules/moment/locale/ku-kmr.js +0 -125
  918. package/node_modules/moment/locale/ku.js +0 -129
  919. package/node_modules/moment/locale/ky.js +0 -95
  920. package/node_modules/moment/locale/lb.js +0 -148
  921. package/node_modules/moment/locale/lo.js +0 -77
  922. package/node_modules/moment/locale/lt.js +0 -136
  923. package/node_modules/moment/locale/lv.js +0 -105
  924. package/node_modules/moment/locale/me.js +0 -128
  925. package/node_modules/moment/locale/mi.js +0 -71
  926. package/node_modules/moment/locale/mk.js +0 -97
  927. package/node_modules/moment/locale/ml.js +0 -93
  928. package/node_modules/moment/locale/mn.js +0 -111
  929. package/node_modules/moment/locale/mr.js +0 -214
  930. package/node_modules/moment/locale/ms-my.js +0 -87
  931. package/node_modules/moment/locale/ms.js +0 -86
  932. package/node_modules/moment/locale/mt.js +0 -67
  933. package/node_modules/moment/locale/my.js +0 -102
  934. package/node_modules/moment/locale/nb.js +0 -71
  935. package/node_modules/moment/locale/ne.js +0 -132
  936. package/node_modules/moment/locale/nl-be.js +0 -113
  937. package/node_modules/moment/locale/nl.js +0 -115
  938. package/node_modules/moment/locale/nn.js +0 -70
  939. package/node_modules/moment/locale/oc-lnc.js +0 -96
  940. package/node_modules/moment/locale/pa-in.js +0 -133
  941. package/node_modules/moment/locale/pl.js +0 -151
  942. package/node_modules/moment/locale/pt-br.js +0 -69
  943. package/node_modules/moment/locale/pt.js +0 -74
  944. package/node_modules/moment/locale/ro.js +0 -87
  945. package/node_modules/moment/locale/ru.js +0 -224
  946. package/node_modules/moment/locale/sd.js +0 -92
  947. package/node_modules/moment/locale/se.js +0 -68
  948. package/node_modules/moment/locale/si.js +0 -80
  949. package/node_modules/moment/locale/sk.js +0 -156
  950. package/node_modules/moment/locale/sl.js +0 -182
  951. package/node_modules/moment/locale/sq.js +0 -76
  952. package/node_modules/moment/locale/sr-cyrl.js +0 -138
  953. package/node_modules/moment/locale/sr.js +0 -140
  954. package/node_modules/moment/locale/ss.js +0 -95
  955. package/node_modules/moment/locale/sv.js +0 -79
  956. package/node_modules/moment/locale/sw.js +0 -66
  957. package/node_modules/moment/locale/ta.js +0 -142
  958. package/node_modules/moment/locale/te.js +0 -99
  959. package/node_modules/moment/locale/tet.js +0 -79
  960. package/node_modules/moment/locale/tg.js +0 -128
  961. package/node_modules/moment/locale/th.js +0 -76
  962. package/node_modules/moment/locale/tk.js +0 -102
  963. package/node_modules/moment/locale/tl-ph.js +0 -68
  964. package/node_modules/moment/locale/tlh.js +0 -135
  965. package/node_modules/moment/locale/tr.js +0 -117
  966. package/node_modules/moment/locale/tzl.js +0 -100
  967. package/node_modules/moment/locale/tzm-latn.js +0 -65
  968. package/node_modules/moment/locale/tzm.js +0 -65
  969. package/node_modules/moment/locale/ug-cn.js +0 -122
  970. package/node_modules/moment/locale/uk.js +0 -178
  971. package/node_modules/moment/locale/ur.js +0 -93
  972. package/node_modules/moment/locale/uz-latn.js +0 -65
  973. package/node_modules/moment/locale/uz.js +0 -62
  974. package/node_modules/moment/locale/vi.js +0 -91
  975. package/node_modules/moment/locale/x-pseudo.js +0 -84
  976. package/node_modules/moment/locale/yo.js +0 -64
  977. package/node_modules/moment/locale/zh-cn.js +0 -131
  978. package/node_modules/moment/locale/zh-hk.js +0 -112
  979. package/node_modules/moment/locale/zh-mo.js +0 -111
  980. package/node_modules/moment/locale/zh-tw.js +0 -110
  981. package/node_modules/moment/min/locales.js +0 -12800
  982. package/node_modules/moment/min/locales.min.js +0 -2
  983. package/node_modules/moment/min/locales.min.js.map +0 -1
  984. package/node_modules/moment/min/moment-with-locales.js +0 -18472
  985. package/node_modules/moment/min/moment-with-locales.min.js +0 -2
  986. package/node_modules/moment/min/moment-with-locales.min.js.map +0 -1
  987. package/node_modules/moment/min/moment.min.js +0 -2
  988. package/node_modules/moment/min/moment.min.js.map +0 -1
  989. package/node_modules/moment/moment.d.ts +0 -796
  990. package/node_modules/moment/moment.js +0 -5688
  991. package/node_modules/moment/package.js +0 -11
  992. package/node_modules/moment/package.json +0 -116
  993. package/node_modules/moment/src/lib/create/check-overflow.js +0 -57
  994. package/node_modules/moment/src/lib/create/date-from-array.js +0 -35
  995. package/node_modules/moment/src/lib/create/from-anything.js +0 -117
  996. package/node_modules/moment/src/lib/create/from-array.js +0 -187
  997. package/node_modules/moment/src/lib/create/from-object.js +0 -20
  998. package/node_modules/moment/src/lib/create/from-string-and-array.js +0 -67
  999. package/node_modules/moment/src/lib/create/from-string-and-format.js +0 -135
  1000. package/node_modules/moment/src/lib/create/from-string.js +0 -258
  1001. package/node_modules/moment/src/lib/create/local.js +0 -5
  1002. package/node_modules/moment/src/lib/create/parsing-flags.js +0 -28
  1003. package/node_modules/moment/src/lib/create/utc.js +0 -5
  1004. package/node_modules/moment/src/lib/create/valid.js +0 -51
  1005. package/node_modules/moment/src/lib/duration/abs.js +0 -18
  1006. package/node_modules/moment/src/lib/duration/add-subtract.js +0 -21
  1007. package/node_modules/moment/src/lib/duration/as.js +0 -76
  1008. package/node_modules/moment/src/lib/duration/bubble.js +0 -68
  1009. package/node_modules/moment/src/lib/duration/clone.js +0 -5
  1010. package/node_modules/moment/src/lib/duration/constructor.js +0 -42
  1011. package/node_modules/moment/src/lib/duration/create.js +0 -133
  1012. package/node_modules/moment/src/lib/duration/duration.js +0 -16
  1013. package/node_modules/moment/src/lib/duration/get.js +0 -27
  1014. package/node_modules/moment/src/lib/duration/humanize.js +0 -114
  1015. package/node_modules/moment/src/lib/duration/iso-string.js +0 -68
  1016. package/node_modules/moment/src/lib/duration/prototype.js +0 -78
  1017. package/node_modules/moment/src/lib/duration/valid.js +0 -55
  1018. package/node_modules/moment/src/lib/format/format.js +0 -104
  1019. package/node_modules/moment/src/lib/locale/base-config.js +0 -41
  1020. package/node_modules/moment/src/lib/locale/calendar.js +0 -15
  1021. package/node_modules/moment/src/lib/locale/constructor.js +0 -5
  1022. package/node_modules/moment/src/lib/locale/en.js +0 -39
  1023. package/node_modules/moment/src/lib/locale/formats.js +0 -36
  1024. package/node_modules/moment/src/lib/locale/invalid.js +0 -5
  1025. package/node_modules/moment/src/lib/locale/lists.js +0 -93
  1026. package/node_modules/moment/src/lib/locale/locale.js +0 -45
  1027. package/node_modules/moment/src/lib/locale/locales.js +0 -249
  1028. package/node_modules/moment/src/lib/locale/ordinal.js +0 -8
  1029. package/node_modules/moment/src/lib/locale/pre-post-format.js +0 -3
  1030. package/node_modules/moment/src/lib/locale/prototype.js +0 -88
  1031. package/node_modules/moment/src/lib/locale/relative.js +0 -32
  1032. package/node_modules/moment/src/lib/locale/set.js +0 -56
  1033. package/node_modules/moment/src/lib/moment/add-subtract.js +0 -61
  1034. package/node_modules/moment/src/lib/moment/calendar.js +0 -53
  1035. package/node_modules/moment/src/lib/moment/clone.js +0 -5
  1036. package/node_modules/moment/src/lib/moment/compare.js +0 -72
  1037. package/node_modules/moment/src/lib/moment/constructor.js +0 -80
  1038. package/node_modules/moment/src/lib/moment/creation-data.js +0 -9
  1039. package/node_modules/moment/src/lib/moment/diff.js +0 -79
  1040. package/node_modules/moment/src/lib/moment/format.js +0 -78
  1041. package/node_modules/moment/src/lib/moment/from.js +0 -20
  1042. package/node_modules/moment/src/lib/moment/get-set.js +0 -117
  1043. package/node_modules/moment/src/lib/moment/locale.js +0 -34
  1044. package/node_modules/moment/src/lib/moment/min-max.js +0 -62
  1045. package/node_modules/moment/src/lib/moment/moment.js +0 -28
  1046. package/node_modules/moment/src/lib/moment/now.js +0 -3
  1047. package/node_modules/moment/src/lib/moment/prototype.js +0 -197
  1048. package/node_modules/moment/src/lib/moment/start-end-of.js +0 -164
  1049. package/node_modules/moment/src/lib/moment/to-type.js +0 -42
  1050. package/node_modules/moment/src/lib/moment/to.js +0 -20
  1051. package/node_modules/moment/src/lib/moment/valid.js +0 -15
  1052. package/node_modules/moment/src/lib/parse/regex.js +0 -84
  1053. package/node_modules/moment/src/lib/parse/token.js +0 -36
  1054. package/node_modules/moment/src/lib/units/aliases.js +0 -75
  1055. package/node_modules/moment/src/lib/units/constants.js +0 -9
  1056. package/node_modules/moment/src/lib/units/day-of-month.js +0 -35
  1057. package/node_modules/moment/src/lib/units/day-of-week.js +0 -432
  1058. package/node_modules/moment/src/lib/units/day-of-year.js +0 -28
  1059. package/node_modules/moment/src/lib/units/era.js +0 -293
  1060. package/node_modules/moment/src/lib/units/hour.js +0 -152
  1061. package/node_modules/moment/src/lib/units/millisecond.js +0 -66
  1062. package/node_modules/moment/src/lib/units/minute.js +0 -24
  1063. package/node_modules/moment/src/lib/units/month.js +0 -340
  1064. package/node_modules/moment/src/lib/units/offset.js +0 -249
  1065. package/node_modules/moment/src/lib/units/priorities.js +0 -34
  1066. package/node_modules/moment/src/lib/units/quarter.js +0 -24
  1067. package/node_modules/moment/src/lib/units/second.js +0 -24
  1068. package/node_modules/moment/src/lib/units/timestamp.js +0 -20
  1069. package/node_modules/moment/src/lib/units/timezone.js +0 -16
  1070. package/node_modules/moment/src/lib/units/units.js +0 -20
  1071. package/node_modules/moment/src/lib/units/week-calendar-utils.js +0 -66
  1072. package/node_modules/moment/src/lib/units/week-year.js +0 -128
  1073. package/node_modules/moment/src/lib/units/week.js +0 -62
  1074. package/node_modules/moment/src/lib/units/year.js +0 -75
  1075. package/node_modules/moment/src/lib/utils/abs-ceil.js +0 -7
  1076. package/node_modules/moment/src/lib/utils/abs-floor.js +0 -8
  1077. package/node_modules/moment/src/lib/utils/abs-round.js +0 -7
  1078. package/node_modules/moment/src/lib/utils/compare-arrays.js +0 -18
  1079. package/node_modules/moment/src/lib/utils/defaults.js +0 -10
  1080. package/node_modules/moment/src/lib/utils/deprecate.js +0 -69
  1081. package/node_modules/moment/src/lib/utils/extend.js +0 -19
  1082. package/node_modules/moment/src/lib/utils/has-own-prop.js +0 -3
  1083. package/node_modules/moment/src/lib/utils/hooks.js +0 -13
  1084. package/node_modules/moment/src/lib/utils/index-of.js +0 -18
  1085. package/node_modules/moment/src/lib/utils/is-array.js +0 -6
  1086. package/node_modules/moment/src/lib/utils/is-calendar-spec.js +0 -25
  1087. package/node_modules/moment/src/lib/utils/is-date.js +0 -6
  1088. package/node_modules/moment/src/lib/utils/is-function.js +0 -6
  1089. package/node_modules/moment/src/lib/utils/is-leap-year.js +0 -3
  1090. package/node_modules/moment/src/lib/utils/is-moment-input.js +0 -75
  1091. package/node_modules/moment/src/lib/utils/is-number.js +0 -6
  1092. package/node_modules/moment/src/lib/utils/is-object-empty.js +0 -15
  1093. package/node_modules/moment/src/lib/utils/is-object.js +0 -8
  1094. package/node_modules/moment/src/lib/utils/is-string.js +0 -3
  1095. package/node_modules/moment/src/lib/utils/is-undefined.js +0 -3
  1096. package/node_modules/moment/src/lib/utils/keys.js +0 -20
  1097. package/node_modules/moment/src/lib/utils/map.js +0 -9
  1098. package/node_modules/moment/src/lib/utils/mod.js +0 -3
  1099. package/node_modules/moment/src/lib/utils/some.js +0 -20
  1100. package/node_modules/moment/src/lib/utils/to-int.js +0 -12
  1101. package/node_modules/moment/src/lib/utils/zero-fill.js +0 -10
  1102. package/node_modules/moment/src/locale/af.js +0 -71
  1103. package/node_modules/moment/src/locale/ar-dz.js +0 -156
  1104. package/node_modules/moment/src/locale/ar-kw.js +0 -55
  1105. package/node_modules/moment/src/locale/ar-ly.js +0 -171
  1106. package/node_modules/moment/src/locale/ar-ma.js +0 -56
  1107. package/node_modules/moment/src/locale/ar-ps.js +0 -112
  1108. package/node_modules/moment/src/locale/ar-sa.js +0 -105
  1109. package/node_modules/moment/src/locale/ar-tn.js +0 -55
  1110. package/node_modules/moment/src/locale/ar.js +0 -189
  1111. package/node_modules/moment/src/locale/az.js +0 -102
  1112. package/node_modules/moment/src/locale/be.js +0 -142
  1113. package/node_modules/moment/src/locale/bg.js +0 -87
  1114. package/node_modules/moment/src/locale/bm.js +0 -52
  1115. package/node_modules/moment/src/locale/bn-bd.js +0 -129
  1116. package/node_modules/moment/src/locale/bn.js +0 -119
  1117. package/node_modules/moment/src/locale/bo.js +0 -124
  1118. package/node_modules/moment/src/locale/br.js +0 -168
  1119. package/node_modules/moment/src/locale/bs.js +0 -160
  1120. package/node_modules/moment/src/locale/ca.js +0 -100
  1121. package/node_modules/moment/src/locale/cs.js +0 -181
  1122. package/node_modules/moment/src/locale/cv.js +0 -63
  1123. package/node_modules/moment/src/locale/cy.js +0 -98
  1124. package/node_modules/moment/src/locale/da.js +0 -53
  1125. package/node_modules/moment/src/locale/de-at.js +0 -79
  1126. package/node_modules/moment/src/locale/de-ch.js +0 -78
  1127. package/node_modules/moment/src/locale/de.js +0 -78
  1128. package/node_modules/moment/src/locale/dv.js +0 -90
  1129. package/node_modules/moment/src/locale/el.js +0 -106
  1130. package/node_modules/moment/src/locale/en-au.js +0 -68
  1131. package/node_modules/moment/src/locale/en-ca.js +0 -64
  1132. package/node_modules/moment/src/locale/en-gb.js +0 -68
  1133. package/node_modules/moment/src/locale/en-ie.js +0 -68
  1134. package/node_modules/moment/src/locale/en-il.js +0 -64
  1135. package/node_modules/moment/src/locale/en-in.js +0 -68
  1136. package/node_modules/moment/src/locale/en-nz.js +0 -68
  1137. package/node_modules/moment/src/locale/en-sg.js +0 -68
  1138. package/node_modules/moment/src/locale/eo.js +0 -68
  1139. package/node_modules/moment/src/locale/es-do.js +0 -108
  1140. package/node_modules/moment/src/locale/es-mx.js +0 -110
  1141. package/node_modules/moment/src/locale/es-us.js +0 -110
  1142. package/node_modules/moment/src/locale/es.js +0 -110
  1143. package/node_modules/moment/src/locale/et.js +0 -78
  1144. package/node_modules/moment/src/locale/eu.js +0 -65
  1145. package/node_modules/moment/src/locale/fa.js +0 -113
  1146. package/node_modules/moment/src/locale/fi.js +0 -124
  1147. package/node_modules/moment/src/locale/fil.js +0 -58
  1148. package/node_modules/moment/src/locale/fo.js +0 -57
  1149. package/node_modules/moment/src/locale/fr-ca.js +0 -70
  1150. package/node_modules/moment/src/locale/fr-ch.js +0 -74
  1151. package/node_modules/moment/src/locale/fr.js +0 -108
  1152. package/node_modules/moment/src/locale/fy.js +0 -75
  1153. package/node_modules/moment/src/locale/ga.js +0 -95
  1154. package/node_modules/moment/src/locale/gd.js +0 -95
  1155. package/node_modules/moment/src/locale/gl.js +0 -75
  1156. package/node_modules/moment/src/locale/gom-deva.js +0 -126
  1157. package/node_modules/moment/src/locale/gom-latn.js +0 -124
  1158. package/node_modules/moment/src/locale/gu.js +0 -122
  1159. package/node_modules/moment/src/locale/he.js +0 -94
  1160. package/node_modules/moment/src/locale/hi.js +0 -168
  1161. package/node_modules/moment/src/locale/hr.js +0 -156
  1162. package/node_modules/moment/src/locale/hu.js +0 -118
  1163. package/node_modules/moment/src/locale/hy-am.js +0 -94
  1164. package/node_modules/moment/src/locale/id.js +0 -76
  1165. package/node_modules/moment/src/locale/is.js +0 -140
  1166. package/node_modules/moment/src/locale/it-ch.js +0 -64
  1167. package/node_modules/moment/src/locale/it.js +0 -106
  1168. package/node_modules/moment/src/locale/ja.js +0 -148
  1169. package/node_modules/moment/src/locale/jv.js +0 -76
  1170. package/node_modules/moment/src/locale/ka.js +0 -92
  1171. package/node_modules/moment/src/locale/kk.js +0 -82
  1172. package/node_modules/moment/src/locale/km.js +0 -103
  1173. package/node_modules/moment/src/locale/kn.js +0 -124
  1174. package/node_modules/moment/src/locale/ko.js +0 -75
  1175. package/node_modules/moment/src/locale/ku-kmr.js +0 -121
  1176. package/node_modules/moment/src/locale/ku.js +0 -118
  1177. package/node_modules/moment/src/locale/ky.js +0 -84
  1178. package/node_modules/moment/src/locale/lb.js +0 -137
  1179. package/node_modules/moment/src/locale/lo.js +0 -66
  1180. package/node_modules/moment/src/locale/lt.js +0 -125
  1181. package/node_modules/moment/src/locale/lv.js +0 -94
  1182. package/node_modules/moment/src/locale/me.js +0 -117
  1183. package/node_modules/moment/src/locale/mi.js +0 -60
  1184. package/node_modules/moment/src/locale/mk.js +0 -85
  1185. package/node_modules/moment/src/locale/ml.js +0 -82
  1186. package/node_modules/moment/src/locale/mn.js +0 -100
  1187. package/node_modules/moment/src/locale/mr.js +0 -203
  1188. package/node_modules/moment/src/locale/ms-my.js +0 -76
  1189. package/node_modules/moment/src/locale/ms.js +0 -75
  1190. package/node_modules/moment/src/locale/mt.js +0 -56
  1191. package/node_modules/moment/src/locale/my.js +0 -91
  1192. package/node_modules/moment/src/locale/nb.js +0 -60
  1193. package/node_modules/moment/src/locale/ne.js +0 -121
  1194. package/node_modules/moment/src/locale/nl-be.js +0 -102
  1195. package/node_modules/moment/src/locale/nl.js +0 -104
  1196. package/node_modules/moment/src/locale/nn.js +0 -59
  1197. package/node_modules/moment/src/locale/oc-lnc.js +0 -85
  1198. package/node_modules/moment/src/locale/pa-in.js +0 -122
  1199. package/node_modules/moment/src/locale/pl.js +0 -140
  1200. package/node_modules/moment/src/locale/pt-br.js +0 -58
  1201. package/node_modules/moment/src/locale/pt.js +0 -63
  1202. package/node_modules/moment/src/locale/ro.js +0 -76
  1203. package/node_modules/moment/src/locale/ru.js +0 -213
  1204. package/node_modules/moment/src/locale/sd.js +0 -81
  1205. package/node_modules/moment/src/locale/se.js +0 -57
  1206. package/node_modules/moment/src/locale/si.js +0 -69
  1207. package/node_modules/moment/src/locale/sk.js +0 -145
  1208. package/node_modules/moment/src/locale/sl.js +0 -171
  1209. package/node_modules/moment/src/locale/sq.js +0 -65
  1210. package/node_modules/moment/src/locale/sr-cyrl.js +0 -127
  1211. package/node_modules/moment/src/locale/sr.js +0 -129
  1212. package/node_modules/moment/src/locale/ss.js +0 -84
  1213. package/node_modules/moment/src/locale/sv.js +0 -68
  1214. package/node_modules/moment/src/locale/sw.js +0 -55
  1215. package/node_modules/moment/src/locale/ta.js +0 -131
  1216. package/node_modules/moment/src/locale/te.js +0 -88
  1217. package/node_modules/moment/src/locale/tet.js +0 -68
  1218. package/node_modules/moment/src/locale/tg.js +0 -117
  1219. package/node_modules/moment/src/locale/th.js +0 -65
  1220. package/node_modules/moment/src/locale/tk.js +0 -91
  1221. package/node_modules/moment/src/locale/tl-ph.js +0 -57
  1222. package/node_modules/moment/src/locale/tlh.js +0 -124
  1223. package/node_modules/moment/src/locale/tr.js +0 -106
  1224. package/node_modules/moment/src/locale/tzl.js +0 -89
  1225. package/node_modules/moment/src/locale/tzm-latn.js +0 -54
  1226. package/node_modules/moment/src/locale/tzm.js +0 -54
  1227. package/node_modules/moment/src/locale/ug-cn.js +0 -111
  1228. package/node_modules/moment/src/locale/uk.js +0 -167
  1229. package/node_modules/moment/src/locale/ur.js +0 -82
  1230. package/node_modules/moment/src/locale/uz-latn.js +0 -54
  1231. package/node_modules/moment/src/locale/uz.js +0 -51
  1232. package/node_modules/moment/src/locale/vi.js +0 -80
  1233. package/node_modules/moment/src/locale/x-pseudo.js +0 -73
  1234. package/node_modules/moment/src/locale/yo.js +0 -53
  1235. package/node_modules/moment/src/locale/zh-cn.js +0 -120
  1236. package/node_modules/moment/src/locale/zh-hk.js +0 -101
  1237. package/node_modules/moment/src/locale/zh-mo.js +0 -100
  1238. package/node_modules/moment/src/locale/zh-tw.js +0 -99
  1239. package/node_modules/moment/src/moment.js +0 -93
  1240. package/node_modules/moment/ts3.1-typings/moment.d.ts +0 -785
  1241. package/node_modules/nanoid/LICENSE +0 -20
  1242. package/node_modules/nanoid/README.md +0 -38
  1243. package/node_modules/nanoid/async/index.browser.js +0 -33
  1244. package/node_modules/nanoid/async/index.d.ts +0 -56
  1245. package/node_modules/nanoid/async/index.js +0 -34
  1246. package/node_modules/nanoid/async/index.native.js +0 -25
  1247. package/node_modules/nanoid/bin/nanoid.js +0 -46
  1248. package/node_modules/nanoid/index.browser.js +0 -33
  1249. package/node_modules/nanoid/index.d.ts +0 -91
  1250. package/node_modules/nanoid/index.js +0 -45
  1251. package/node_modules/nanoid/nanoid.js +0 -1
  1252. package/node_modules/nanoid/non-secure/index.d.ts +0 -33
  1253. package/node_modules/nanoid/non-secure/index.js +0 -20
  1254. package/node_modules/nanoid/package.json +0 -46
  1255. package/node_modules/nanoid/url-alphabet/index.js +0 -2
  1256. package/node_modules/ts-md5/LICENSE +0 -21
  1257. package/node_modules/ts-md5/README.md +0 -101
  1258. package/node_modules/ts-md5/dist/cjs/index.d.ts +0 -3
  1259. package/node_modules/ts-md5/dist/cjs/index.js +0 -10
  1260. package/node_modules/ts-md5/dist/cjs/index.js.map +0 -1
  1261. package/node_modules/ts-md5/dist/cjs/md5.d.ts +0 -70
  1262. package/node_modules/ts-md5/dist/cjs/md5.js +0 -429
  1263. package/node_modules/ts-md5/dist/cjs/md5.js.map +0 -1
  1264. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.d.ts +0 -25
  1265. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js +0 -96
  1266. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js.map +0 -1
  1267. package/node_modules/ts-md5/dist/cjs/parallel_hasher.d.ts +0 -22
  1268. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js +0 -69
  1269. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js.map +0 -1
  1270. package/node_modules/ts-md5/dist/esm/index.d.ts +0 -3
  1271. package/node_modules/ts-md5/dist/esm/index.js +0 -4
  1272. package/node_modules/ts-md5/dist/esm/index.js.map +0 -1
  1273. package/node_modules/ts-md5/dist/esm/md5.d.ts +0 -70
  1274. package/node_modules/ts-md5/dist/esm/md5.js +0 -421
  1275. package/node_modules/ts-md5/dist/esm/md5.js.map +0 -1
  1276. package/node_modules/ts-md5/dist/esm/md5_file_hasher.d.ts +0 -25
  1277. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js +0 -89
  1278. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js.map +0 -1
  1279. package/node_modules/ts-md5/dist/esm/parallel_hasher.d.ts +0 -22
  1280. package/node_modules/ts-md5/dist/esm/parallel_hasher.js +0 -64
  1281. package/node_modules/ts-md5/dist/esm/parallel_hasher.js.map +0 -1
  1282. package/node_modules/ts-md5/dist/md5.js +0 -429
  1283. package/node_modules/ts-md5/dist/md5_worker.js +0 -523
  1284. package/node_modules/ts-md5/package.json +0 -82
  1285. package/node_modules/ts-md5/src/index.ts +0 -4
  1286. package/node_modules/ts-md5/src/md5.ts +0 -473
  1287. package/node_modules/ts-md5/src/md5_file_hasher.ts +0 -110
  1288. package/node_modules/ts-md5/src/parallel_hasher.ts +0 -90
  1289. package/node_modules/ts-md5/src/worker.js +0 -20
  1290. package/tfsec.json +0 -4
@@ -0,0 +1,839 @@
1
+ "use strict";
2
+ // https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/data_plane_resource
3
+ // generated from terraform resource schema
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.DataPlaneResource = exports.DataPlaneResourceTimeoutsOutputReference = exports.DataPlaneResourceRetryOutputReference = void 0;
6
+ exports.dataPlaneResourceRetryToTerraform = dataPlaneResourceRetryToTerraform;
7
+ exports.dataPlaneResourceRetryToHclTerraform = dataPlaneResourceRetryToHclTerraform;
8
+ exports.dataPlaneResourceTimeoutsToTerraform = dataPlaneResourceTimeoutsToTerraform;
9
+ exports.dataPlaneResourceTimeoutsToHclTerraform = dataPlaneResourceTimeoutsToHclTerraform;
10
+ const cdktf = require("cdktf");
11
+ function dataPlaneResourceRetryToTerraform(struct) {
12
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
13
+ return struct;
14
+ }
15
+ if (cdktf.isComplexElement(struct)) {
16
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
17
+ }
18
+ return {
19
+ error_message_regex: cdktf.listMapper(cdktf.stringToTerraform, false)(struct.errorMessageRegex),
20
+ interval_seconds: cdktf.numberToTerraform(struct.intervalSeconds),
21
+ max_interval_seconds: cdktf.numberToTerraform(struct.maxIntervalSeconds),
22
+ multiplier: cdktf.numberToTerraform(struct.multiplier),
23
+ randomization_factor: cdktf.numberToTerraform(struct.randomizationFactor),
24
+ };
25
+ }
26
+ function dataPlaneResourceRetryToHclTerraform(struct) {
27
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
28
+ return struct;
29
+ }
30
+ if (cdktf.isComplexElement(struct)) {
31
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
32
+ }
33
+ const attrs = {
34
+ error_message_regex: {
35
+ value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(struct.errorMessageRegex),
36
+ isBlock: false,
37
+ type: "list",
38
+ storageClassType: "stringList",
39
+ },
40
+ interval_seconds: {
41
+ value: cdktf.numberToHclTerraform(struct.intervalSeconds),
42
+ isBlock: false,
43
+ type: "simple",
44
+ storageClassType: "number",
45
+ },
46
+ max_interval_seconds: {
47
+ value: cdktf.numberToHclTerraform(struct.maxIntervalSeconds),
48
+ isBlock: false,
49
+ type: "simple",
50
+ storageClassType: "number",
51
+ },
52
+ multiplier: {
53
+ value: cdktf.numberToHclTerraform(struct.multiplier),
54
+ isBlock: false,
55
+ type: "simple",
56
+ storageClassType: "number",
57
+ },
58
+ randomization_factor: {
59
+ value: cdktf.numberToHclTerraform(struct.randomizationFactor),
60
+ isBlock: false,
61
+ type: "simple",
62
+ storageClassType: "number",
63
+ },
64
+ };
65
+ // remove undefined attributes
66
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
67
+ }
68
+ class DataPlaneResourceRetryOutputReference extends cdktf.ComplexObject {
69
+ /**
70
+ * @param terraformResource The parent resource
71
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
72
+ */
73
+ constructor(terraformResource, terraformAttribute) {
74
+ super(terraformResource, terraformAttribute, false);
75
+ this.isEmptyObject = false;
76
+ }
77
+ get internalValue() {
78
+ if (this.resolvableValue) {
79
+ return this.resolvableValue;
80
+ }
81
+ let hasAnyValues = this.isEmptyObject;
82
+ const internalValueResult = {};
83
+ if (this._errorMessageRegex !== undefined) {
84
+ hasAnyValues = true;
85
+ internalValueResult.errorMessageRegex = this._errorMessageRegex;
86
+ }
87
+ if (this._intervalSeconds !== undefined) {
88
+ hasAnyValues = true;
89
+ internalValueResult.intervalSeconds = this._intervalSeconds;
90
+ }
91
+ if (this._maxIntervalSeconds !== undefined) {
92
+ hasAnyValues = true;
93
+ internalValueResult.maxIntervalSeconds = this._maxIntervalSeconds;
94
+ }
95
+ if (this._multiplier !== undefined) {
96
+ hasAnyValues = true;
97
+ internalValueResult.multiplier = this._multiplier;
98
+ }
99
+ if (this._randomizationFactor !== undefined) {
100
+ hasAnyValues = true;
101
+ internalValueResult.randomizationFactor = this._randomizationFactor;
102
+ }
103
+ return hasAnyValues ? internalValueResult : undefined;
104
+ }
105
+ set internalValue(value) {
106
+ if (value === undefined) {
107
+ this.isEmptyObject = false;
108
+ this.resolvableValue = undefined;
109
+ this._errorMessageRegex = undefined;
110
+ this._intervalSeconds = undefined;
111
+ this._maxIntervalSeconds = undefined;
112
+ this._multiplier = undefined;
113
+ this._randomizationFactor = undefined;
114
+ }
115
+ else if (cdktf.Tokenization.isResolvable(value)) {
116
+ this.isEmptyObject = false;
117
+ this.resolvableValue = value;
118
+ }
119
+ else {
120
+ this.isEmptyObject = Object.keys(value).length === 0;
121
+ this.resolvableValue = undefined;
122
+ this._errorMessageRegex = value.errorMessageRegex;
123
+ this._intervalSeconds = value.intervalSeconds;
124
+ this._maxIntervalSeconds = value.maxIntervalSeconds;
125
+ this._multiplier = value.multiplier;
126
+ this._randomizationFactor = value.randomizationFactor;
127
+ }
128
+ }
129
+ get errorMessageRegex() {
130
+ return this.getListAttribute('error_message_regex');
131
+ }
132
+ set errorMessageRegex(value) {
133
+ this._errorMessageRegex = value;
134
+ }
135
+ // Temporarily expose input value. Use with caution.
136
+ get errorMessageRegexInput() {
137
+ return this._errorMessageRegex;
138
+ }
139
+ get intervalSeconds() {
140
+ return this.getNumberAttribute('interval_seconds');
141
+ }
142
+ set intervalSeconds(value) {
143
+ this._intervalSeconds = value;
144
+ }
145
+ resetIntervalSeconds() {
146
+ this._intervalSeconds = undefined;
147
+ }
148
+ // Temporarily expose input value. Use with caution.
149
+ get intervalSecondsInput() {
150
+ return this._intervalSeconds;
151
+ }
152
+ get maxIntervalSeconds() {
153
+ return this.getNumberAttribute('max_interval_seconds');
154
+ }
155
+ set maxIntervalSeconds(value) {
156
+ this._maxIntervalSeconds = value;
157
+ }
158
+ resetMaxIntervalSeconds() {
159
+ this._maxIntervalSeconds = undefined;
160
+ }
161
+ // Temporarily expose input value. Use with caution.
162
+ get maxIntervalSecondsInput() {
163
+ return this._maxIntervalSeconds;
164
+ }
165
+ get multiplier() {
166
+ return this.getNumberAttribute('multiplier');
167
+ }
168
+ set multiplier(value) {
169
+ this._multiplier = value;
170
+ }
171
+ resetMultiplier() {
172
+ this._multiplier = undefined;
173
+ }
174
+ // Temporarily expose input value. Use with caution.
175
+ get multiplierInput() {
176
+ return this._multiplier;
177
+ }
178
+ get randomizationFactor() {
179
+ return this.getNumberAttribute('randomization_factor');
180
+ }
181
+ set randomizationFactor(value) {
182
+ this._randomizationFactor = value;
183
+ }
184
+ resetRandomizationFactor() {
185
+ this._randomizationFactor = undefined;
186
+ }
187
+ // Temporarily expose input value. Use with caution.
188
+ get randomizationFactorInput() {
189
+ return this._randomizationFactor;
190
+ }
191
+ }
192
+ exports.DataPlaneResourceRetryOutputReference = DataPlaneResourceRetryOutputReference;
193
+ function dataPlaneResourceTimeoutsToTerraform(struct) {
194
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
195
+ return struct;
196
+ }
197
+ if (cdktf.isComplexElement(struct)) {
198
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
199
+ }
200
+ return {
201
+ create: cdktf.stringToTerraform(struct.create),
202
+ delete: cdktf.stringToTerraform(struct.delete),
203
+ read: cdktf.stringToTerraform(struct.read),
204
+ update: cdktf.stringToTerraform(struct.update),
205
+ };
206
+ }
207
+ function dataPlaneResourceTimeoutsToHclTerraform(struct) {
208
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
209
+ return struct;
210
+ }
211
+ if (cdktf.isComplexElement(struct)) {
212
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
213
+ }
214
+ const attrs = {
215
+ create: {
216
+ value: cdktf.stringToHclTerraform(struct.create),
217
+ isBlock: false,
218
+ type: "simple",
219
+ storageClassType: "string",
220
+ },
221
+ delete: {
222
+ value: cdktf.stringToHclTerraform(struct.delete),
223
+ isBlock: false,
224
+ type: "simple",
225
+ storageClassType: "string",
226
+ },
227
+ read: {
228
+ value: cdktf.stringToHclTerraform(struct.read),
229
+ isBlock: false,
230
+ type: "simple",
231
+ storageClassType: "string",
232
+ },
233
+ update: {
234
+ value: cdktf.stringToHclTerraform(struct.update),
235
+ isBlock: false,
236
+ type: "simple",
237
+ storageClassType: "string",
238
+ },
239
+ };
240
+ // remove undefined attributes
241
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
242
+ }
243
+ class DataPlaneResourceTimeoutsOutputReference extends cdktf.ComplexObject {
244
+ /**
245
+ * @param terraformResource The parent resource
246
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
247
+ */
248
+ constructor(terraformResource, terraformAttribute) {
249
+ super(terraformResource, terraformAttribute, false);
250
+ this.isEmptyObject = false;
251
+ }
252
+ get internalValue() {
253
+ if (this.resolvableValue) {
254
+ return this.resolvableValue;
255
+ }
256
+ let hasAnyValues = this.isEmptyObject;
257
+ const internalValueResult = {};
258
+ if (this._create !== undefined) {
259
+ hasAnyValues = true;
260
+ internalValueResult.create = this._create;
261
+ }
262
+ if (this._delete !== undefined) {
263
+ hasAnyValues = true;
264
+ internalValueResult.delete = this._delete;
265
+ }
266
+ if (this._read !== undefined) {
267
+ hasAnyValues = true;
268
+ internalValueResult.read = this._read;
269
+ }
270
+ if (this._update !== undefined) {
271
+ hasAnyValues = true;
272
+ internalValueResult.update = this._update;
273
+ }
274
+ return hasAnyValues ? internalValueResult : undefined;
275
+ }
276
+ set internalValue(value) {
277
+ if (value === undefined) {
278
+ this.isEmptyObject = false;
279
+ this.resolvableValue = undefined;
280
+ this._create = undefined;
281
+ this._delete = undefined;
282
+ this._read = undefined;
283
+ this._update = undefined;
284
+ }
285
+ else if (cdktf.Tokenization.isResolvable(value)) {
286
+ this.isEmptyObject = false;
287
+ this.resolvableValue = value;
288
+ }
289
+ else {
290
+ this.isEmptyObject = Object.keys(value).length === 0;
291
+ this.resolvableValue = undefined;
292
+ this._create = value.create;
293
+ this._delete = value.delete;
294
+ this._read = value.read;
295
+ this._update = value.update;
296
+ }
297
+ }
298
+ get create() {
299
+ return this.getStringAttribute('create');
300
+ }
301
+ set create(value) {
302
+ this._create = value;
303
+ }
304
+ resetCreate() {
305
+ this._create = undefined;
306
+ }
307
+ // Temporarily expose input value. Use with caution.
308
+ get createInput() {
309
+ return this._create;
310
+ }
311
+ get delete() {
312
+ return this.getStringAttribute('delete');
313
+ }
314
+ set delete(value) {
315
+ this._delete = value;
316
+ }
317
+ resetDelete() {
318
+ this._delete = undefined;
319
+ }
320
+ // Temporarily expose input value. Use with caution.
321
+ get deleteInput() {
322
+ return this._delete;
323
+ }
324
+ get read() {
325
+ return this.getStringAttribute('read');
326
+ }
327
+ set read(value) {
328
+ this._read = value;
329
+ }
330
+ resetRead() {
331
+ this._read = undefined;
332
+ }
333
+ // Temporarily expose input value. Use with caution.
334
+ get readInput() {
335
+ return this._read;
336
+ }
337
+ get update() {
338
+ return this.getStringAttribute('update');
339
+ }
340
+ set update(value) {
341
+ this._update = value;
342
+ }
343
+ resetUpdate() {
344
+ this._update = undefined;
345
+ }
346
+ // Temporarily expose input value. Use with caution.
347
+ get updateInput() {
348
+ return this._update;
349
+ }
350
+ }
351
+ exports.DataPlaneResourceTimeoutsOutputReference = DataPlaneResourceTimeoutsOutputReference;
352
+ /**
353
+ * Represents a {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/data_plane_resource azapi_data_plane_resource}
354
+ */
355
+ class DataPlaneResource extends cdktf.TerraformResource {
356
+ // ==============
357
+ // STATIC Methods
358
+ // ==============
359
+ /**
360
+ * Generates CDKTF code for importing a DataPlaneResource resource upon running "cdktf plan <stack-name>"
361
+ * @param scope The scope in which to define this construct
362
+ * @param importToId The construct id used in the generated config for the DataPlaneResource to import
363
+ * @param importFromId The id of the existing DataPlaneResource that should be imported. Refer to the {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/data_plane_resource#import import section} in the documentation of this resource for the id to use
364
+ * @param provider? Optional instance of the provider where the DataPlaneResource to import is found
365
+ */
366
+ static generateConfigForImport(scope, importToId, importFromId, provider) {
367
+ return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "azapi_data_plane_resource", importId: importFromId, provider });
368
+ }
369
+ // ===========
370
+ // INITIALIZER
371
+ // ===========
372
+ /**
373
+ * Create a new {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/data_plane_resource azapi_data_plane_resource} Resource
374
+ *
375
+ * @param scope The scope in which to define this construct
376
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
377
+ * @param options DataPlaneResourceConfig
378
+ */
379
+ constructor(scope, id, config) {
380
+ super(scope, id, {
381
+ terraformResourceType: 'azapi_data_plane_resource',
382
+ terraformGeneratorMetadata: {
383
+ providerName: 'azapi',
384
+ providerVersion: '2.7.0',
385
+ providerVersionConstraint: '~> 2.7.0'
386
+ },
387
+ provider: config.provider,
388
+ dependsOn: config.dependsOn,
389
+ count: config.count,
390
+ lifecycle: config.lifecycle,
391
+ provisioners: config.provisioners,
392
+ connection: config.connection,
393
+ forEach: config.forEach
394
+ });
395
+ // output - computed: true, optional: false, required: false
396
+ this._output = new cdktf.AnyMap(this, "output");
397
+ // retry - computed: false, optional: true, required: false
398
+ this._retry = new DataPlaneResourceRetryOutputReference(this, "retry");
399
+ // timeouts - computed: false, optional: true, required: false
400
+ this._timeouts = new DataPlaneResourceTimeoutsOutputReference(this, "timeouts");
401
+ this._body = config.body;
402
+ this._createHeaders = config.createHeaders;
403
+ this._createQueryParameters = config.createQueryParameters;
404
+ this._deleteHeaders = config.deleteHeaders;
405
+ this._deleteQueryParameters = config.deleteQueryParameters;
406
+ this._ignoreCasing = config.ignoreCasing;
407
+ this._ignoreMissingProperty = config.ignoreMissingProperty;
408
+ this._locks = config.locks;
409
+ this._name = config.name;
410
+ this._parentId = config.parentId;
411
+ this._readHeaders = config.readHeaders;
412
+ this._readQueryParameters = config.readQueryParameters;
413
+ this._replaceTriggersExternalValues = config.replaceTriggersExternalValues;
414
+ this._replaceTriggersRefs = config.replaceTriggersRefs;
415
+ this._responseExportValues = config.responseExportValues;
416
+ this._retry.internalValue = config.retry;
417
+ this._type = config.type;
418
+ this._updateHeaders = config.updateHeaders;
419
+ this._updateQueryParameters = config.updateQueryParameters;
420
+ this._timeouts.internalValue = config.timeouts;
421
+ }
422
+ get body() {
423
+ return this.getAnyMapAttribute('body');
424
+ }
425
+ set body(value) {
426
+ this._body = value;
427
+ }
428
+ resetBody() {
429
+ this._body = undefined;
430
+ }
431
+ // Temporarily expose input value. Use with caution.
432
+ get bodyInput() {
433
+ return this._body;
434
+ }
435
+ get createHeaders() {
436
+ return this.getStringMapAttribute('create_headers');
437
+ }
438
+ set createHeaders(value) {
439
+ this._createHeaders = value;
440
+ }
441
+ resetCreateHeaders() {
442
+ this._createHeaders = undefined;
443
+ }
444
+ // Temporarily expose input value. Use with caution.
445
+ get createHeadersInput() {
446
+ return this._createHeaders;
447
+ }
448
+ get createQueryParameters() {
449
+ return this.interpolationForAttribute('create_query_parameters');
450
+ }
451
+ set createQueryParameters(value) {
452
+ this._createQueryParameters = value;
453
+ }
454
+ resetCreateQueryParameters() {
455
+ this._createQueryParameters = undefined;
456
+ }
457
+ // Temporarily expose input value. Use with caution.
458
+ get createQueryParametersInput() {
459
+ return this._createQueryParameters;
460
+ }
461
+ get deleteHeaders() {
462
+ return this.getStringMapAttribute('delete_headers');
463
+ }
464
+ set deleteHeaders(value) {
465
+ this._deleteHeaders = value;
466
+ }
467
+ resetDeleteHeaders() {
468
+ this._deleteHeaders = undefined;
469
+ }
470
+ // Temporarily expose input value. Use with caution.
471
+ get deleteHeadersInput() {
472
+ return this._deleteHeaders;
473
+ }
474
+ get deleteQueryParameters() {
475
+ return this.interpolationForAttribute('delete_query_parameters');
476
+ }
477
+ set deleteQueryParameters(value) {
478
+ this._deleteQueryParameters = value;
479
+ }
480
+ resetDeleteQueryParameters() {
481
+ this._deleteQueryParameters = undefined;
482
+ }
483
+ // Temporarily expose input value. Use with caution.
484
+ get deleteQueryParametersInput() {
485
+ return this._deleteQueryParameters;
486
+ }
487
+ // id - computed: true, optional: false, required: false
488
+ get id() {
489
+ return this.getStringAttribute('id');
490
+ }
491
+ get ignoreCasing() {
492
+ return this.getBooleanAttribute('ignore_casing');
493
+ }
494
+ set ignoreCasing(value) {
495
+ this._ignoreCasing = value;
496
+ }
497
+ resetIgnoreCasing() {
498
+ this._ignoreCasing = undefined;
499
+ }
500
+ // Temporarily expose input value. Use with caution.
501
+ get ignoreCasingInput() {
502
+ return this._ignoreCasing;
503
+ }
504
+ get ignoreMissingProperty() {
505
+ return this.getBooleanAttribute('ignore_missing_property');
506
+ }
507
+ set ignoreMissingProperty(value) {
508
+ this._ignoreMissingProperty = value;
509
+ }
510
+ resetIgnoreMissingProperty() {
511
+ this._ignoreMissingProperty = undefined;
512
+ }
513
+ // Temporarily expose input value. Use with caution.
514
+ get ignoreMissingPropertyInput() {
515
+ return this._ignoreMissingProperty;
516
+ }
517
+ get locks() {
518
+ return this.getListAttribute('locks');
519
+ }
520
+ set locks(value) {
521
+ this._locks = value;
522
+ }
523
+ resetLocks() {
524
+ this._locks = undefined;
525
+ }
526
+ // Temporarily expose input value. Use with caution.
527
+ get locksInput() {
528
+ return this._locks;
529
+ }
530
+ get name() {
531
+ return this.getStringAttribute('name');
532
+ }
533
+ set name(value) {
534
+ this._name = value;
535
+ }
536
+ // Temporarily expose input value. Use with caution.
537
+ get nameInput() {
538
+ return this._name;
539
+ }
540
+ get output() {
541
+ return this._output;
542
+ }
543
+ get parentId() {
544
+ return this.getStringAttribute('parent_id');
545
+ }
546
+ set parentId(value) {
547
+ this._parentId = value;
548
+ }
549
+ // Temporarily expose input value. Use with caution.
550
+ get parentIdInput() {
551
+ return this._parentId;
552
+ }
553
+ get readHeaders() {
554
+ return this.getStringMapAttribute('read_headers');
555
+ }
556
+ set readHeaders(value) {
557
+ this._readHeaders = value;
558
+ }
559
+ resetReadHeaders() {
560
+ this._readHeaders = undefined;
561
+ }
562
+ // Temporarily expose input value. Use with caution.
563
+ get readHeadersInput() {
564
+ return this._readHeaders;
565
+ }
566
+ get readQueryParameters() {
567
+ return this.interpolationForAttribute('read_query_parameters');
568
+ }
569
+ set readQueryParameters(value) {
570
+ this._readQueryParameters = value;
571
+ }
572
+ resetReadQueryParameters() {
573
+ this._readQueryParameters = undefined;
574
+ }
575
+ // Temporarily expose input value. Use with caution.
576
+ get readQueryParametersInput() {
577
+ return this._readQueryParameters;
578
+ }
579
+ get replaceTriggersExternalValues() {
580
+ return this.getAnyMapAttribute('replace_triggers_external_values');
581
+ }
582
+ set replaceTriggersExternalValues(value) {
583
+ this._replaceTriggersExternalValues = value;
584
+ }
585
+ resetReplaceTriggersExternalValues() {
586
+ this._replaceTriggersExternalValues = undefined;
587
+ }
588
+ // Temporarily expose input value. Use with caution.
589
+ get replaceTriggersExternalValuesInput() {
590
+ return this._replaceTriggersExternalValues;
591
+ }
592
+ get replaceTriggersRefs() {
593
+ return this.getListAttribute('replace_triggers_refs');
594
+ }
595
+ set replaceTriggersRefs(value) {
596
+ this._replaceTriggersRefs = value;
597
+ }
598
+ resetReplaceTriggersRefs() {
599
+ this._replaceTriggersRefs = undefined;
600
+ }
601
+ // Temporarily expose input value. Use with caution.
602
+ get replaceTriggersRefsInput() {
603
+ return this._replaceTriggersRefs;
604
+ }
605
+ get responseExportValues() {
606
+ return this.getAnyMapAttribute('response_export_values');
607
+ }
608
+ set responseExportValues(value) {
609
+ this._responseExportValues = value;
610
+ }
611
+ resetResponseExportValues() {
612
+ this._responseExportValues = undefined;
613
+ }
614
+ // Temporarily expose input value. Use with caution.
615
+ get responseExportValuesInput() {
616
+ return this._responseExportValues;
617
+ }
618
+ get retry() {
619
+ return this._retry;
620
+ }
621
+ putRetry(value) {
622
+ this._retry.internalValue = value;
623
+ }
624
+ resetRetry() {
625
+ this._retry.internalValue = undefined;
626
+ }
627
+ // Temporarily expose input value. Use with caution.
628
+ get retryInput() {
629
+ return this._retry.internalValue;
630
+ }
631
+ get type() {
632
+ return this.getStringAttribute('type');
633
+ }
634
+ set type(value) {
635
+ this._type = value;
636
+ }
637
+ // Temporarily expose input value. Use with caution.
638
+ get typeInput() {
639
+ return this._type;
640
+ }
641
+ get updateHeaders() {
642
+ return this.getStringMapAttribute('update_headers');
643
+ }
644
+ set updateHeaders(value) {
645
+ this._updateHeaders = value;
646
+ }
647
+ resetUpdateHeaders() {
648
+ this._updateHeaders = undefined;
649
+ }
650
+ // Temporarily expose input value. Use with caution.
651
+ get updateHeadersInput() {
652
+ return this._updateHeaders;
653
+ }
654
+ get updateQueryParameters() {
655
+ return this.interpolationForAttribute('update_query_parameters');
656
+ }
657
+ set updateQueryParameters(value) {
658
+ this._updateQueryParameters = value;
659
+ }
660
+ resetUpdateQueryParameters() {
661
+ this._updateQueryParameters = undefined;
662
+ }
663
+ // Temporarily expose input value. Use with caution.
664
+ get updateQueryParametersInput() {
665
+ return this._updateQueryParameters;
666
+ }
667
+ get timeouts() {
668
+ return this._timeouts;
669
+ }
670
+ putTimeouts(value) {
671
+ this._timeouts.internalValue = value;
672
+ }
673
+ resetTimeouts() {
674
+ this._timeouts.internalValue = undefined;
675
+ }
676
+ // Temporarily expose input value. Use with caution.
677
+ get timeoutsInput() {
678
+ return this._timeouts.internalValue;
679
+ }
680
+ // =========
681
+ // SYNTHESIS
682
+ // =========
683
+ synthesizeAttributes() {
684
+ return {
685
+ body: cdktf.hashMapper(cdktf.anyToTerraform)(this._body),
686
+ create_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._createHeaders),
687
+ create_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._createQueryParameters),
688
+ delete_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._deleteHeaders),
689
+ delete_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._deleteQueryParameters),
690
+ ignore_casing: cdktf.booleanToTerraform(this._ignoreCasing),
691
+ ignore_missing_property: cdktf.booleanToTerraform(this._ignoreMissingProperty),
692
+ locks: cdktf.listMapper(cdktf.stringToTerraform, false)(this._locks),
693
+ name: cdktf.stringToTerraform(this._name),
694
+ parent_id: cdktf.stringToTerraform(this._parentId),
695
+ read_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._readHeaders),
696
+ read_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._readQueryParameters),
697
+ replace_triggers_external_values: cdktf.hashMapper(cdktf.anyToTerraform)(this._replaceTriggersExternalValues),
698
+ replace_triggers_refs: cdktf.listMapper(cdktf.stringToTerraform, false)(this._replaceTriggersRefs),
699
+ response_export_values: cdktf.hashMapper(cdktf.anyToTerraform)(this._responseExportValues),
700
+ retry: dataPlaneResourceRetryToTerraform(this._retry.internalValue),
701
+ type: cdktf.stringToTerraform(this._type),
702
+ update_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._updateHeaders),
703
+ update_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._updateQueryParameters),
704
+ timeouts: dataPlaneResourceTimeoutsToTerraform(this._timeouts.internalValue),
705
+ };
706
+ }
707
+ synthesizeHclAttributes() {
708
+ const attrs = {
709
+ body: {
710
+ value: cdktf.hashMapperHcl(cdktf.anyToHclTerraform)(this._body),
711
+ isBlock: false,
712
+ type: "map",
713
+ storageClassType: "anyMap",
714
+ },
715
+ create_headers: {
716
+ value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._createHeaders),
717
+ isBlock: false,
718
+ type: "map",
719
+ storageClassType: "stringMap",
720
+ },
721
+ create_query_parameters: {
722
+ value: cdktf.hashMapperHcl(cdktf.listMapperHcl(cdktf.stringToHclTerraform, false))(this._createQueryParameters),
723
+ isBlock: false,
724
+ type: "map",
725
+ storageClassType: "stringListMap",
726
+ },
727
+ delete_headers: {
728
+ value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._deleteHeaders),
729
+ isBlock: false,
730
+ type: "map",
731
+ storageClassType: "stringMap",
732
+ },
733
+ delete_query_parameters: {
734
+ value: cdktf.hashMapperHcl(cdktf.listMapperHcl(cdktf.stringToHclTerraform, false))(this._deleteQueryParameters),
735
+ isBlock: false,
736
+ type: "map",
737
+ storageClassType: "stringListMap",
738
+ },
739
+ ignore_casing: {
740
+ value: cdktf.booleanToHclTerraform(this._ignoreCasing),
741
+ isBlock: false,
742
+ type: "simple",
743
+ storageClassType: "boolean",
744
+ },
745
+ ignore_missing_property: {
746
+ value: cdktf.booleanToHclTerraform(this._ignoreMissingProperty),
747
+ isBlock: false,
748
+ type: "simple",
749
+ storageClassType: "boolean",
750
+ },
751
+ locks: {
752
+ value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._locks),
753
+ isBlock: false,
754
+ type: "list",
755
+ storageClassType: "stringList",
756
+ },
757
+ name: {
758
+ value: cdktf.stringToHclTerraform(this._name),
759
+ isBlock: false,
760
+ type: "simple",
761
+ storageClassType: "string",
762
+ },
763
+ parent_id: {
764
+ value: cdktf.stringToHclTerraform(this._parentId),
765
+ isBlock: false,
766
+ type: "simple",
767
+ storageClassType: "string",
768
+ },
769
+ read_headers: {
770
+ value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._readHeaders),
771
+ isBlock: false,
772
+ type: "map",
773
+ storageClassType: "stringMap",
774
+ },
775
+ read_query_parameters: {
776
+ value: cdktf.hashMapperHcl(cdktf.listMapperHcl(cdktf.stringToHclTerraform, false))(this._readQueryParameters),
777
+ isBlock: false,
778
+ type: "map",
779
+ storageClassType: "stringListMap",
780
+ },
781
+ replace_triggers_external_values: {
782
+ value: cdktf.hashMapperHcl(cdktf.anyToHclTerraform)(this._replaceTriggersExternalValues),
783
+ isBlock: false,
784
+ type: "map",
785
+ storageClassType: "anyMap",
786
+ },
787
+ replace_triggers_refs: {
788
+ value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._replaceTriggersRefs),
789
+ isBlock: false,
790
+ type: "list",
791
+ storageClassType: "stringList",
792
+ },
793
+ response_export_values: {
794
+ value: cdktf.hashMapperHcl(cdktf.anyToHclTerraform)(this._responseExportValues),
795
+ isBlock: false,
796
+ type: "map",
797
+ storageClassType: "anyMap",
798
+ },
799
+ retry: {
800
+ value: dataPlaneResourceRetryToHclTerraform(this._retry.internalValue),
801
+ isBlock: true,
802
+ type: "struct",
803
+ storageClassType: "DataPlaneResourceRetry",
804
+ },
805
+ type: {
806
+ value: cdktf.stringToHclTerraform(this._type),
807
+ isBlock: false,
808
+ type: "simple",
809
+ storageClassType: "string",
810
+ },
811
+ update_headers: {
812
+ value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._updateHeaders),
813
+ isBlock: false,
814
+ type: "map",
815
+ storageClassType: "stringMap",
816
+ },
817
+ update_query_parameters: {
818
+ value: cdktf.hashMapperHcl(cdktf.listMapperHcl(cdktf.stringToHclTerraform, false))(this._updateQueryParameters),
819
+ isBlock: false,
820
+ type: "map",
821
+ storageClassType: "stringListMap",
822
+ },
823
+ timeouts: {
824
+ value: dataPlaneResourceTimeoutsToHclTerraform(this._timeouts.internalValue),
825
+ isBlock: true,
826
+ type: "struct",
827
+ storageClassType: "DataPlaneResourceTimeouts",
828
+ },
829
+ };
830
+ // remove undefined attributes
831
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
832
+ }
833
+ }
834
+ exports.DataPlaneResource = DataPlaneResource;
835
+ // =================
836
+ // STATIC PROPERTIES
837
+ // =================
838
+ DataPlaneResource.tfResourceType = "azapi_data_plane_resource";
839
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL2RhdGEtcGxhbmUtcmVzb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtGQUErRjtBQUMvRiwyQ0FBMkM7OztBQW9OM0MsOEVBWUM7QUFHRCxvRkF3Q0M7QUE0S0Qsb0ZBV0M7QUFHRCwwRkFrQ0M7QUFwZUQsK0JBQStCO0FBaU4vQixTQUFnQixpQ0FBaUMsQ0FBQyxNQUFtRDtJQUNuRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUM7SUFBQyxDQUFDO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxPQUFPO1FBQ0wsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTyxDQUFDLGlCQUFpQixDQUFDO1FBQ2hHLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsZUFBZSxDQUFDO1FBQ2xFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsa0JBQWtCLENBQUM7UUFDekUsVUFBVSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3ZELG9CQUFvQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsbUJBQW1CLENBQUM7S0FDM0UsQ0FBQTtBQUNILENBQUM7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RUFBRSxLQUFLO2dCQUNYLGdCQUFnQixFQUFFLGVBQWU7YUFDbEM7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUM1RSxPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsUUFBUTtnQkFDZCxnQkFBZ0IsRUFBRSwyQkFBMkI7YUFDOUM7U0FDRixDQUFDO1FBRUYsOEJBQThCO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFFLENBQUMsQ0FBQTtJQUM1SCxDQUFDOztBQXZpQkgsOENBd2lCQztBQXRpQkMsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDRyxnQ0FBYyxHQUFHLDJCQUEyQixBQUE5QixDQUErQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlXG4vLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSAnY2RrdGYnO1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVBsYW5lUmVzb3VyY2VDb25maWcgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgLyoqXG4gICogQSBkeW5hbWljIGF0dHJpYnV0ZSB0aGF0IGNvbnRhaW5zIHRoZSByZXF1ZXN0IGJvZHkuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI2JvZHkgRGF0YVBsYW5lUmVzb3VyY2UjYm9keX1cbiAgKi9cbiAgcmVhZG9ubHkgYm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAqIEEgbWFwcGluZyBvZiBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgY3JlYXRlIHJlcXVlc3QuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI2NyZWF0ZV9oZWFkZXJzIERhdGFQbGFuZVJlc291cmNlI2NyZWF0ZV9oZWFkZXJzfVxuICAqL1xuICByZWFkb25seSBjcmVhdGVIZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICogQSBtYXBwaW5nIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSBjcmVhdGUgcmVxdWVzdC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnMgRGF0YVBsYW5lUmVzb3VyY2UjY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnN9XG4gICovXG4gIHJlYWRvbmx5IGNyZWF0ZVF1ZXJ5UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBBIG1hcHBpbmcgb2YgaGVhZGVycyB0byBiZSBzZW50IHdpdGggdGhlIGRlbGV0ZSByZXF1ZXN0LlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNkZWxldGVfaGVhZGVycyBEYXRhUGxhbmVSZXNvdXJjZSNkZWxldGVfaGVhZGVyc31cbiAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAqIEEgbWFwcGluZyBvZiBxdWVyeSBwYXJhbWV0ZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgZGVsZXRlIHJlcXVlc3QuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI2RlbGV0ZV9xdWVyeV9wYXJhbWV0ZXJzIERhdGFQbGFuZVJlc291cmNlI2RlbGV0ZV9xdWVyeV9wYXJhbWV0ZXJzfVxuICAqL1xuICByZWFkb25seSBkZWxldGVRdWVyeVBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogQSBkeW5hbWljIGF0dHJpYnV0ZSB0aGF0IGNvbnRhaW5zIHRoZSByZXF1ZXN0IGJvZHkuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI2lnbm9yZV9jYXNpbmcgRGF0YVBsYW5lUmVzb3VyY2UjaWdub3JlX2Nhc2luZ31cbiAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2FzaW5nPzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBXaGV0aGVyIGlnbm9yZSBub3QgcmV0dXJuZWQgcHJvcGVydGllcyBsaWtlIGNyZWRlbnRpYWxzIGluIGBib2R5YCB0byBzdXBwcmVzcyBwbGFuLWRpZmYuIERlZmF1bHRzIHRvIGB0cnVlYC4gSXQncyByZWNvbW1lbmQgdG8gZW5hYmxlIHRoaXMgb3B0aW9uIHdoZW4gc29tZSBzZW5zaXRpdmUgcHJvcGVydGllcyBhcmUgbm90IHJldHVybmVkIGluIHJlc3BvbnNlIGJvZHksIGluc3RlYWQgb2Ygc2V0dGluZyB0aGVtIGluIGBsaWZlY3ljbGUuaWdub3JlX2NoYW5nZXNgIGJlY2F1c2UgaXQgd2lsbCBtYWtlIHRoZSBzZW5zaXRpdmUgZmllbGRzIHVuYWJsZSB0byB1cGRhdGUuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI2lnbm9yZV9taXNzaW5nX3Byb3BlcnR5IERhdGFQbGFuZVJlc291cmNlI2lnbm9yZV9taXNzaW5nX3Byb3BlcnR5fVxuICAqL1xuICByZWFkb25seSBpZ25vcmVNaXNzaW5nUHJvcGVydHk/OiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIEEgbGlzdCBvZiBBUk0gcmVzb3VyY2UgSURzIHdoaWNoIGFyZSB1c2VkIHRvIGF2b2lkIGNyZWF0ZS9tb2RpZnkvZGVsZXRlIGF6YXBpIHJlc291cmNlcyBhdCB0aGUgc2FtZSB0aW1lLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNsb2NrcyBEYXRhUGxhbmVSZXNvdXJjZSNsb2Nrc31cbiAgKi9cbiAgcmVhZG9ubHkgbG9ja3M/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICogU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBBenVyZSByZXNvdXJjZS4gQ2hhbmdpbmcgdGhpcyBmb3JjZXMgYSBuZXcgcmVzb3VyY2UgdG8gYmUgY3JlYXRlZC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjbmFtZSBEYXRhUGxhbmVSZXNvdXJjZSNuYW1lfVxuICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAqIFRoZSBJRCBvZiB0aGUgYXp1cmUgcmVzb3VyY2UgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBjcmVhdGVkLiBDaGFuZ2luZyB0aGlzIGZvcmNlcyBhIG5ldyByZXNvdXJjZSB0byBiZSBjcmVhdGVkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNwYXJlbnRfaWQgRGF0YVBsYW5lUmVzb3VyY2UjcGFyZW50X2lkfVxuICAqL1xuICByZWFkb25seSBwYXJlbnRJZDogc3RyaW5nO1xuICAvKipcbiAgKiBBIG1hcHBpbmcgb2YgaGVhZGVycyB0byBiZSBzZW50IHdpdGggdGhlIHJlYWQgcmVxdWVzdC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjcmVhZF9oZWFkZXJzIERhdGFQbGFuZVJlc291cmNlI3JlYWRfaGVhZGVyc31cbiAgKi9cbiAgcmVhZG9ubHkgcmVhZEhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgKiBBIG1hcHBpbmcgb2YgcXVlcnkgcGFyYW1ldGVycyB0byBiZSBzZW50IHdpdGggdGhlIHJlYWQgcmVxdWVzdC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjcmVhZF9xdWVyeV9wYXJhbWV0ZXJzIERhdGFQbGFuZVJlc291cmNlI3JlYWRfcXVlcnlfcGFyYW1ldGVyc31cbiAgKi9cbiAgcmVhZG9ubHkgcmVhZFF1ZXJ5UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBXaWxsIHRyaWdnZXIgYSByZXBsYWNlIG9mIHRoZSByZXNvdXJjZSB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIGFuZCBpcyBub3QgYG51bGxgLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHByYWN0aXRpb25lcnMgdG8gZm9yY2UgYSByZXBsYWNlIG9mIHRoZSByZXNvdXJjZSB3aGVuIGNlcnRhaW4gdmFsdWVzIGNoYW5nZSwgZS5nLiBjaGFuZ2luZyB0aGUgU0tVIG9mIGEgdmlydHVhbCBtYWNoaW5lIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZXMgb3IgbG9jYWxzLiBUaGUgdmFsdWUgaXMgYSBgZHluYW1pY2AsIHNvIHByYWN0aXRpb25lcnMgY2FuIGNvbXBvc2UgdGhlIGlucHV0IGhvd2V2ZXIgdGhleSB3aXNoLiBGb3IgYSBcImJyZWFrIGdsYXNzXCIgc2V0IHRoZSB2YWx1ZSB0byBgbnVsbGAgdG8gcHJldmVudCB0aGUgcGxhbiBtb2RpZmllciB0YWtpbmcgZWZmZWN0LiBcbiAgKiBJZiB5b3UgaGF2ZSBgbnVsbGAgdmFsdWVzIHRoYXQgeW91IGRvIHdhbnQgdG8gYmUgdHJhY2tlZCBhcyBhZmZlY3RpbmcgdGhlIHJlc291cmNlIHJlcGxhY2VtZW50LCBpbmNsdWRlIHRoZXNlIGluc2lkZSBhbiBvYmplY3QuIFxuICAqIEFkdmFuY2VkIHVzZSBjYXNlcyBhcmUgcG9zc2libGUgYW5kIHJlc291cmNlIHJlcGxhY2VtZW50IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdmFsdWVzIGV4dGVybmFsIHRvIHRoZSByZXNvdXJjZSwgZm9yIGV4YW1wbGUgd2hlbiBhIGRlcGVuZGVudCByZXNvdXJjZSBjaGFuZ2VzLlxuICAqIFxuICAqIGUuZy4gdG8gcmVwbGFjZSBhIHJlc291cmNlIHdoZW4gZWl0aGVyIHRoZSBTS1Ugb3Igb3NfdHlwZSBhdHRyaWJ1dGVzIGNoYW5nZTpcbiAgKiBcbiAgKiBgYGBoY2xcbiAgKiByZXNvdXJjZSBcImF6YXBpX2RhdGFfcGxhbmVfcmVzb3VyY2VcIiBcImV4YW1wbGVcIiB7XG4gICogICBuYW1lID0gdmFyLm5hbWVcbiAgKiAgIHR5cGUgPSBcIk1pY3Jvc29mdC5BcHBDb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb25TdG9yZXMva2V5VmFsdWVzQDEuMFwiXG4gICogICBib2R5ID0ge1xuICAqICAgICBwcm9wZXJ0aWVzID0ge1xuICAqICAgICAgIHNrdSAgID0gdmFyLnNrdVxuICAqICAgICAgIHpvbmVzID0gdmFyLnpvbmVzXG4gICogICAgIH1cbiAgKiAgIH1cbiAgKiBcbiAgKiAgIHJlcGxhY2VfdHJpZ2dlcnNfZXh0ZXJuYWxfdmFsdWVzID0gW1xuICAqICAgICB2YXIuc2t1LFxuICAqICAgICB2YXIuem9uZXMsXG4gICogICBdXG4gICogfVxuICAqIGBgYFxuICAqIFxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNyZXBsYWNlX3RyaWdnZXJzX2V4dGVybmFsX3ZhbHVlcyBEYXRhUGxhbmVSZXNvdXJjZSNyZXBsYWNlX3RyaWdnZXJzX2V4dGVybmFsX3ZhbHVlc31cbiAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICAvKipcbiAgKiBBIGxpc3Qgb2YgcGF0aHMgaW4gdGhlIGN1cnJlbnQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb24uIFdoZW4gdGhlIHZhbHVlcyBhdCB0aGVzZSBwYXRocyBjaGFuZ2UsIHRoZSByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNyZXBsYWNlX3RyaWdnZXJzX3JlZnMgRGF0YVBsYW5lUmVzb3VyY2UjcmVwbGFjZV90cmlnZ2Vyc19yZWZzfVxuICAqL1xuICByZWFkb25seSByZXBsYWNlVHJpZ2dlcnNSZWZzPzogc3RyaW5nW107XG4gIC8qKlxuICAqIFRoZSBhdHRyaWJ1dGUgY2FuIGFjY2VwdCBlaXRoZXIgYSBsaXN0IG9yIGEgbWFwLlxuICAqIFxuICAqIC0gKipMaXN0Kio6IEEgbGlzdCBvZiBwYXRocyB0aGF0IG5lZWQgdG8gYmUgZXhwb3J0ZWQgZnJvbSB0aGUgcmVzcG9uc2UgYm9keS4gU2V0dGluZyBpdCB0byBgW1wiKlwiXWAgd2lsbCBleHBvcnQgdGhlIGZ1bGwgcmVzcG9uc2UgYm9keS4gSGVyZSdzIGFuIGV4YW1wbGUuIElmIGl0IHNldHMgdG8gYFtcInByb3BlcnRpZXMubG9naW5TZXJ2ZXJcIiwgXCJwcm9wZXJ0aWVzLnBvbGljaWVzLnF1YXJhbnRpbmVQb2xpY3kuc3RhdHVzXCJdYCwgaXQgd2lsbCBzZXQgdGhlIGZvbGxvd2luZyBIQ0wgb2JqZWN0IHRvIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSBvdXRwdXQuXG4gICogXG4gICogXHRgYGB0ZXh0XG4gICogXHR7XG4gICogXHRcdHByb3BlcnRpZXMgPSB7XG4gICogXHRcdFx0bG9naW5TZXJ2ZXIgPSBcInJlZ2lzdHJ5MS5henVyZWNyLmlvXCJcbiAgKiBcdFx0XHRwb2xpY2llcyA9IHtcbiAgKiBcdFx0XHRcdHF1YXJhbnRpbmVQb2xpY3kgPSB7XG4gICogXHRcdFx0XHRcdHN0YXR1cyA9IFwiZGlzYWJsZWRcIlxuICAqIFx0XHRcdFx0fVxuICAqIFx0XHRcdH1cbiAgKiBcdFx0fVxuICAqIFx0fVxuICAqIFx0YGBgXG4gICogXG4gICogLSAqKk1hcCoqOiBBIG1hcCB3aGVyZSB0aGUga2V5IGlzIHRoZSBuYW1lIGZvciB0aGUgcmVzdWx0IGFuZCB0aGUgdmFsdWUgaXMgYSBKTUVTUGF0aCBxdWVyeSBzdHJpbmcgdG8gZmlsdGVyIHRoZSByZXNwb25zZS4gSGVyZSdzIGFuIGV4YW1wbGUuIElmIGl0IHNldHMgdG8gYHtcImxvZ2luX3NlcnZlclwiOiBcInByb3BlcnRpZXMubG9naW5TZXJ2ZXJcIiwgXCJxdWFyYW50aW5lX3N0YXR1c1wiOiBcInByb3BlcnRpZXMucG9saWNpZXMucXVhcmFudGluZVBvbGljeS5zdGF0dXNcIn1gLCBpdCB3aWxsIHNldCB0aGUgZm9sbG93aW5nIEhDTCBvYmplY3QgdG8gdGhlIGNvbXB1dGVkIHByb3BlcnR5IG91dHB1dC5cbiAgKiBcbiAgKiBcdGBgYHRleHRcbiAgKiBcdHtcbiAgKiBcdFx0XCJsb2dpbl9zZXJ2ZXJcIiA9IFwicmVnaXN0cnkxLmF6dXJlY3IuaW9cIlxuICAqIFx0XHRcInF1YXJhbnRpbmVfc3RhdHVzXCIgPSBcImRpc2FibGVkXCJcbiAgKiBcdH1cbiAgKiBcdGBgYFxuICAqIFxuICAqIFRvIGxlYXJuIG1vcmUgYWJvdXQgSk1FU1BhdGgsIHZpc2l0IFtKTUVTUGF0aF0oaHR0cHM6Ly9qbWVzcGF0aC5vcmcvKS5cbiAgKiBcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjcmVzcG9uc2VfZXhwb3J0X3ZhbHVlcyBEYXRhUGxhbmVSZXNvdXJjZSNyZXNwb25zZV9leHBvcnRfdmFsdWVzfVxuICAqL1xuICByZWFkb25seSByZXNwb25zZUV4cG9ydFZhbHVlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAqIFRoZSByZXRyeSBvYmplY3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNyZXRyeSBEYXRhUGxhbmVSZXNvdXJjZSNyZXRyeX1cbiAgKi9cbiAgcmVhZG9ubHkgcmV0cnk/OiBEYXRhUGxhbmVSZXNvdXJjZVJldHJ5O1xuICAvKipcbiAgKiBJbiBhIGZvcm1hdCBsaWtlIGA8cmVzb3VyY2UtdHlwZT5APGFwaS12ZXJzaW9uPmAuIGA8cmVzb3VyY2UtdHlwZT5gIGlzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlLCBmb3IgZXhhbXBsZSwgYE1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50c2AuIGA8YXBpLXZlcnNpb24+YCBpcyB2ZXJzaW9uIG9mIHRoZSBBUEkgdXNlZCB0byBtYW5hZ2UgdGhpcyBhenVyZSByZXNvdXJjZS5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjdHlwZSBEYXRhUGxhbmVSZXNvdXJjZSN0eXBlfVxuICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIC8qKlxuICAqIEEgbWFwcGluZyBvZiBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgdXBkYXRlIHJlcXVlc3QuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI3VwZGF0ZV9oZWFkZXJzIERhdGFQbGFuZVJlc291cmNlI3VwZGF0ZV9oZWFkZXJzfVxuICAqL1xuICByZWFkb25seSB1cGRhdGVIZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICogQSBtYXBwaW5nIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSB1cGRhdGUgcmVxdWVzdC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjdXBkYXRlX3F1ZXJ5X3BhcmFtZXRlcnMgRGF0YVBsYW5lUmVzb3VyY2UjdXBkYXRlX3F1ZXJ5X3BhcmFtZXRlcnN9XG4gICovXG4gIHJlYWRvbmx5IHVwZGF0ZVF1ZXJ5UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiB0aW1lb3V0cyBibG9ja1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSN0aW1lb3V0cyBEYXRhUGxhbmVSZXNvdXJjZSN0aW1lb3V0c31cbiAgKi9cbiAgcmVhZG9ubHkgdGltZW91dHM/OiBEYXRhUGxhbmVSZXNvdXJjZVRpbWVvdXRzO1xufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhUGxhbmVSZXNvdXJjZVJldHJ5IHtcbiAgLyoqXG4gICogQSBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggYWdhaW5zdCBlcnJvciBtZXNzYWdlcy4gSWYgYW55IG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIG1hdGNoLCB0aGUgcmVxdWVzdCB3aWxsIGJlIHJldHJpZWQuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI2Vycm9yX21lc3NhZ2VfcmVnZXggRGF0YVBsYW5lUmVzb3VyY2UjZXJyb3JfbWVzc2FnZV9yZWdleH1cbiAgKi9cbiAgcmVhZG9ubHkgZXJyb3JNZXNzYWdlUmVnZXg6IHN0cmluZ1tdO1xuICAvKipcbiAgKiBUaGUgYmFzZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gcmV0cmllcy4gRGVmYXVsdCBpcyBgMTBgLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNpbnRlcnZhbF9zZWNvbmRzIERhdGFQbGFuZVJlc291cmNlI2ludGVydmFsX3NlY29uZHN9XG4gICovXG4gIHJlYWRvbmx5IGludGVydmFsU2Vjb25kcz86IG51bWJlcjtcbiAgLyoqXG4gICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIHJldHJpZXMuIERlZmF1bHQgaXMgYDE4MGAuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI21heF9pbnRlcnZhbF9zZWNvbmRzIERhdGFQbGFuZVJlc291cmNlI21heF9pbnRlcnZhbF9zZWNvbmRzfVxuICAqL1xuICByZWFkb25seSBtYXhJbnRlcnZhbFNlY29uZHM/OiBudW1iZXI7XG4gIC8qKlxuICAqIFRoZSBtdWx0aXBsaWVyIHRvIGFwcGx5IHRvIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHJldHJpZXMuIERlZmF1bHQgaXMgYDEuNWAuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlI211bHRpcGxpZXIgRGF0YVBsYW5lUmVzb3VyY2UjbXVsdGlwbGllcn1cbiAgKi9cbiAgcmVhZG9ubHkgbXVsdGlwbGllcj86IG51bWJlcjtcbiAgLyoqXG4gICogVGhlIHJhbmRvbWl6YXRpb24gZmFjdG9yIHRvIGFwcGx5IHRvIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHJldHJpZXMuIFRoZSBmb3JtdWxhIGZvciB0aGUgcmFuZG9taXplZCBpbnRlcnZhbCBpczogYFJldHJ5SW50ZXJ2YWwgKiAocmFuZG9tIHZhbHVlIGluIHJhbmdlIFsxIC0gUmFuZG9taXphdGlvbkZhY3RvciwgMSArIFJhbmRvbWl6YXRpb25GYWN0b3JdKWAuIFRoZXJlZm9yZSBzZXQgdG8gemVybyBgMC4wYCBmb3Igbm8gcmFuZG9taXphdGlvbi4gRGVmYXVsdCBpcyBgMC41YC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjcmFuZG9taXphdGlvbl9mYWN0b3IgRGF0YVBsYW5lUmVzb3VyY2UjcmFuZG9taXphdGlvbl9mYWN0b3J9XG4gICovXG4gIHJlYWRvbmx5IHJhbmRvbWl6YXRpb25GYWN0b3I/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhUGxhbmVSZXNvdXJjZVJldHJ5VG9UZXJyYWZvcm0oc3RydWN0PzogRGF0YVBsYW5lUmVzb3VyY2VSZXRyeSB8IGNka3RmLklSZXNvbHZhYmxlKTogYW55IHtcbiAgaWYgKCFjZGt0Zi5jYW5JbnNwZWN0KHN0cnVjdCkgfHwgY2RrdGYuVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShzdHJ1Y3QpKSB7IHJldHVybiBzdHJ1Y3Q7IH1cbiAgaWYgKGNka3RmLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgY29tcGxleCBlbGVtZW50IHdhcyB1c2VkIGFzIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgbm90IHN1cHBvcnRlZDogaHR0cHM6Ly9jZGsudGYvY29tcGxleC1vYmplY3QtYXMtY29uZmlndXJhdGlvblwiKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVycm9yX21lc3NhZ2VfcmVnZXg6IGNka3RmLmxpc3RNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0sIGZhbHNlKShzdHJ1Y3QhLmVycm9yTWVzc2FnZVJlZ2V4KSxcbiAgICBpbnRlcnZhbF9zZWNvbmRzOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLmludGVydmFsU2Vjb25kcyksXG4gICAgbWF4X2ludGVydmFsX3NlY29uZHM6IGNka3RmLm51bWJlclRvVGVycmFmb3JtKHN0cnVjdCEubWF4SW50ZXJ2YWxTZWNvbmRzKSxcbiAgICBtdWx0aXBsaWVyOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLm11bHRpcGxpZXIpLFxuICAgIHJhbmRvbWl6YXRpb25fZmFjdG9yOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLnJhbmRvbWl6YXRpb25GYWN0b3IpLFxuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFQbGFuZVJlc291cmNlUmV0cnlUb0hjbFRlcnJhZm9ybShzdHJ1Y3Q/OiBEYXRhUGxhbmVSZXNvdXJjZVJldHJ5IHwgY2RrdGYuSVJlc29sdmFibGUpOiBhbnkge1xuICBpZiAoIWNka3RmLmNhbkluc3BlY3Qoc3RydWN0KSB8fCBjZGt0Zi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHN0cnVjdCkpIHsgcmV0dXJuIHN0cnVjdDsgfVxuICBpZiAoY2RrdGYuaXNDb21wbGV4RWxlbWVudChzdHJ1Y3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIpO1xuICB9XG4gIGNvbnN0IGF0dHJzID0ge1xuICAgIGVycm9yX21lc3NhZ2VfcmVnZXg6IHtcbiAgICAgIHZhbHVlOiBjZGt0Zi5saXN0TWFwcGVySGNsKGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtLCBmYWxzZSkoc3RydWN0IS5lcnJvck1lc3NhZ2VSZWdleCksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdMaXN0XCIsXG4gICAgfSxcbiAgICBpbnRlcnZhbF9zZWNvbmRzOiB7XG4gICAgICB2YWx1ZTogY2RrdGYubnVtYmVyVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5pbnRlcnZhbFNlY29uZHMpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJudW1iZXJcIixcbiAgICB9LFxuICAgIG1heF9pbnRlcnZhbF9zZWNvbmRzOiB7XG4gICAgICB2YWx1ZTogY2RrdGYubnVtYmVyVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5tYXhJbnRlcnZhbFNlY29uZHMpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJudW1iZXJcIixcbiAgICB9LFxuICAgIG11bHRpcGxpZXI6IHtcbiAgICAgIHZhbHVlOiBjZGt0Zi5udW1iZXJUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLm11bHRpcGxpZXIpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJudW1iZXJcIixcbiAgICB9LFxuICAgIHJhbmRvbWl6YXRpb25fZmFjdG9yOiB7XG4gICAgICB2YWx1ZTogY2RrdGYubnVtYmVyVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5yYW5kb21pemF0aW9uRmFjdG9yKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwibnVtYmVyXCIsXG4gICAgfSxcbiAgfTtcblxuICAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQpKTtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFQbGFuZVJlc291cmNlUmV0cnlPdXRwdXRSZWZlcmVuY2UgZXh0ZW5kcyBjZGt0Zi5Db21wbGV4T2JqZWN0IHtcbiAgcHJpdmF0ZSBpc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gIHByaXZhdGUgcmVzb2x2YWJsZVZhbHVlPzogY2RrdGYuSVJlc29sdmFibGU7XG5cbiAgLyoqXG4gICogQHBhcmFtIHRlcnJhZm9ybVJlc291cmNlIFRoZSBwYXJlbnQgcmVzb3VyY2VcbiAgKiBAcGFyYW0gdGVycmFmb3JtQXR0cmlidXRlIFRoZSBhdHRyaWJ1dGUgb24gdGhlIHBhcmVudCByZXNvdXJjZSB0aGlzIGNsYXNzIGlzIHJlZmVyZW5jaW5nXG4gICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0ZXJyYWZvcm1SZXNvdXJjZTogY2RrdGYuSUludGVycG9sYXRpbmdQYXJlbnQsIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlcm5hbFZhbHVlKCk6IERhdGFQbGFuZVJlc291cmNlUmV0cnkgfCBjZGt0Zi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2YWJsZVZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZhYmxlVmFsdWU7XG4gICAgfVxuICAgIGxldCBoYXNBbnlWYWx1ZXMgPSB0aGlzLmlzRW1wdHlPYmplY3Q7XG4gICAgY29uc3QgaW50ZXJuYWxWYWx1ZVJlc3VsdDogYW55ID0ge307XG4gICAgaWYgKHRoaXMuX2Vycm9yTWVzc2FnZVJlZ2V4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmVycm9yTWVzc2FnZVJlZ2V4ID0gdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXg7XG4gICAgfVxuICAgIGlmICh0aGlzLl9pbnRlcnZhbFNlY29uZHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQuaW50ZXJ2YWxTZWNvbmRzID0gdGhpcy5faW50ZXJ2YWxTZWNvbmRzO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbWF4SW50ZXJ2YWxTZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0Lm1heEludGVydmFsU2Vjb25kcyA9IHRoaXMuX21heEludGVydmFsU2Vjb25kcztcbiAgICB9XG4gICAgaWYgKHRoaXMuX211bHRpcGxpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQubXVsdGlwbGllciA9IHRoaXMuX211bHRpcGxpZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LnJhbmRvbWl6YXRpb25GYWN0b3IgPSB0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yO1xuICAgIH1cbiAgICByZXR1cm4gaGFzQW55VmFsdWVzID8gaW50ZXJuYWxWYWx1ZVJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaW50ZXJuYWxWYWx1ZSh2YWx1ZTogRGF0YVBsYW5lUmVzb3VyY2VSZXRyeSB8IGNka3RmLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9lcnJvck1lc3NhZ2VSZWdleCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2ludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX21heEludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX211bHRpcGxpZXIgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIGlmIChjZGt0Zi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDA7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2Vycm9yTWVzc2FnZVJlZ2V4ID0gdmFsdWUuZXJyb3JNZXNzYWdlUmVnZXg7XG4gICAgICB0aGlzLl9pbnRlcnZhbFNlY29uZHMgPSB2YWx1ZS5pbnRlcnZhbFNlY29uZHM7XG4gICAgICB0aGlzLl9tYXhJbnRlcnZhbFNlY29uZHMgPSB2YWx1ZS5tYXhJbnRlcnZhbFNlY29uZHM7XG4gICAgICB0aGlzLl9tdWx0aXBsaWVyID0gdmFsdWUubXVsdGlwbGllcjtcbiAgICAgIHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3IgPSB2YWx1ZS5yYW5kb21pemF0aW9uRmFjdG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVycm9yX21lc3NhZ2VfcmVnZXggLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfZXJyb3JNZXNzYWdlUmVnZXg/OiBzdHJpbmdbXTsgXG4gIHB1YmxpYyBnZXQgZXJyb3JNZXNzYWdlUmVnZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZSgnZXJyb3JfbWVzc2FnZV9yZWdleCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgZXJyb3JNZXNzYWdlUmVnZXgodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXggPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgZXJyb3JNZXNzYWdlUmVnZXhJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXg7XG4gIH1cblxuICAvLyBpbnRlcnZhbF9zZWNvbmRzIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaW50ZXJ2YWxTZWNvbmRzPzogbnVtYmVyOyBcbiAgcHVibGljIGdldCBpbnRlcnZhbFNlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TnVtYmVyQXR0cmlidXRlKCdpbnRlcnZhbF9zZWNvbmRzJyk7XG4gIH1cbiAgcHVibGljIHNldCBpbnRlcnZhbFNlY29uZHModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2ludGVydmFsU2Vjb25kcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEludGVydmFsU2Vjb25kcygpIHtcbiAgICB0aGlzLl9pbnRlcnZhbFNlY29uZHMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGludGVydmFsU2Vjb25kc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcnZhbFNlY29uZHM7XG4gIH1cblxuICAvLyBtYXhfaW50ZXJ2YWxfc2Vjb25kcyAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX21heEludGVydmFsU2Vjb25kcz86IG51bWJlcjsgXG4gIHB1YmxpYyBnZXQgbWF4SW50ZXJ2YWxTZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlckF0dHJpYnV0ZSgnbWF4X2ludGVydmFsX3NlY29uZHMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IG1heEludGVydmFsU2Vjb25kcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4SW50ZXJ2YWxTZWNvbmRzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0TWF4SW50ZXJ2YWxTZWNvbmRzKCkge1xuICAgIHRoaXMuX21heEludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbWF4SW50ZXJ2YWxTZWNvbmRzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heEludGVydmFsU2Vjb25kcztcbiAgfVxuXG4gIC8vIG11bHRpcGxpZXIgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9tdWx0aXBsaWVyPzogbnVtYmVyOyBcbiAgcHVibGljIGdldCBtdWx0aXBsaWVyKCkge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlckF0dHJpYnV0ZSgnbXVsdGlwbGllcicpO1xuICB9XG4gIHB1YmxpYyBzZXQgbXVsdGlwbGllcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbXVsdGlwbGllciA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldE11bHRpcGxpZXIoKSB7XG4gICAgdGhpcy5fbXVsdGlwbGllciA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGllcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsaWVyO1xuICB9XG5cbiAgLy8gcmFuZG9taXphdGlvbl9mYWN0b3IgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yYW5kb21pemF0aW9uRmFjdG9yPzogbnVtYmVyOyBcbiAgcHVibGljIGdldCByYW5kb21pemF0aW9uRmFjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlckF0dHJpYnV0ZSgncmFuZG9taXphdGlvbl9mYWN0b3InKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJhbmRvbWl6YXRpb25GYWN0b3IodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3IgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSYW5kb21pemF0aW9uRmFjdG9yKCkge1xuICAgIHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3IgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJhbmRvbWl6YXRpb25GYWN0b3JJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZG9taXphdGlvbkZhY3RvcjtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhUGxhbmVSZXNvdXJjZVRpbWVvdXRzIHtcbiAgLyoqXG4gICogQSBzdHJpbmcgdGhhdCBjYW4gYmUgW3BhcnNlZCBhcyBhIGR1cmF0aW9uXShodHRwczovL3BrZy5nby5kZXYvdGltZSNQYXJzZUR1cmF0aW9uKSBjb25zaXN0aW5nIG9mIG51bWJlcnMgYW5kIHVuaXQgc3VmZml4ZXMsIHN1Y2ggYXMgXCIzMHNcIiBvciBcIjJoNDVtXCIuIFZhbGlkIHRpbWUgdW5pdHMgYXJlIFwic1wiIChzZWNvbmRzKSwgXCJtXCIgKG1pbnV0ZXMpLCBcImhcIiAoaG91cnMpLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNjcmVhdGUgRGF0YVBsYW5lUmVzb3VyY2UjY3JlYXRlfVxuICAqL1xuICByZWFkb25seSBjcmVhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS4gU2V0dGluZyBhIHRpbWVvdXQgZm9yIGEgRGVsZXRlIG9wZXJhdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgaWYgY2hhbmdlcyBhcmUgc2F2ZWQgaW50byBzdGF0ZSBiZWZvcmUgdGhlIGRlc3Ryb3kgb3BlcmF0aW9uIG9jY3Vycy5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjZGVsZXRlIERhdGFQbGFuZVJlc291cmNlI2RlbGV0ZX1cbiAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlPzogc3RyaW5nO1xuICAvKipcbiAgKiBBIHN0cmluZyB0aGF0IGNhbiBiZSBbcGFyc2VkIGFzIGEgZHVyYXRpb25dKGh0dHBzOi8vcGtnLmdvLmRldi90aW1lI1BhcnNlRHVyYXRpb24pIGNvbnNpc3Rpbmcgb2YgbnVtYmVycyBhbmQgdW5pdCBzdWZmaXhlcywgc3VjaCBhcyBcIjMwc1wiIG9yIFwiMmg0NW1cIi4gVmFsaWQgdGltZSB1bml0cyBhcmUgXCJzXCIgKHNlY29uZHMpLCBcIm1cIiAobWludXRlcyksIFwiaFwiIChob3VycykuIFJlYWQgb3BlcmF0aW9ucyBvY2N1ciBkdXJpbmcgYW55IHJlZnJlc2ggb3IgcGxhbm5pbmcgb3BlcmF0aW9uIHdoZW4gcmVmcmVzaCBpcyBlbmFibGVkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvZGF0YV9wbGFuZV9yZXNvdXJjZSNyZWFkIERhdGFQbGFuZVJlc291cmNlI3JlYWR9XG4gICovXG4gIHJlYWRvbmx5IHJlYWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjdXBkYXRlIERhdGFQbGFuZVJlc291cmNlI3VwZGF0ZX1cbiAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0YVBsYW5lUmVzb3VyY2VUaW1lb3V0c1RvVGVycmFmb3JtKHN0cnVjdD86IERhdGFQbGFuZVJlc291cmNlVGltZW91dHMgfCBjZGt0Zi5JUmVzb2x2YWJsZSk6IGFueSB7XG4gIGlmICghY2RrdGYuY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkgeyByZXR1cm4gc3RydWN0OyB9XG4gIGlmIChjZGt0Zi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGU6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEuY3JlYXRlKSxcbiAgICBkZWxldGU6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEuZGVsZXRlKSxcbiAgICByZWFkOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLnJlYWQpLFxuICAgIHVwZGF0ZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS51cGRhdGUpLFxuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFQbGFuZVJlc291cmNlVGltZW91dHNUb0hjbFRlcnJhZm9ybShzdHJ1Y3Q/OiBEYXRhUGxhbmVSZXNvdXJjZVRpbWVvdXRzIHwgY2RrdGYuSVJlc29sdmFibGUpOiBhbnkge1xuICBpZiAoIWNka3RmLmNhbkluc3BlY3Qoc3RydWN0KSB8fCBjZGt0Zi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHN0cnVjdCkpIHsgcmV0dXJuIHN0cnVjdDsgfVxuICBpZiAoY2RrdGYuaXNDb21wbGV4RWxlbWVudChzdHJ1Y3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIpO1xuICB9XG4gIGNvbnN0IGF0dHJzID0ge1xuICAgIGNyZWF0ZToge1xuICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHN0cnVjdCEuY3JlYXRlKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICBkZWxldGU6IHtcbiAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLmRlbGV0ZSksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgcmVhZDoge1xuICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHN0cnVjdCEucmVhZCksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgdXBkYXRlOiB7XG4gICAgICB2YWx1ZTogY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS51cGRhdGUpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICB9LFxuICB9O1xuXG4gIC8vIHJlbW92ZSB1bmRlZmluZWQgYXR0cmlidXRlc1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCkpO1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YVBsYW5lUmVzb3VyY2VUaW1lb3V0c091dHB1dFJlZmVyZW5jZSBleHRlbmRzIGNka3RmLkNvbXBsZXhPYmplY3Qge1xuICBwcml2YXRlIGlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXNvbHZhYmxlVmFsdWU/OiBjZGt0Zi5JUmVzb2x2YWJsZTtcblxuICAvKipcbiAgKiBAcGFyYW0gdGVycmFmb3JtUmVzb3VyY2UgVGhlIHBhcmVudCByZXNvdXJjZVxuICAqIEBwYXJhbSB0ZXJyYWZvcm1BdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBvbiB0aGUgcGFyZW50IHJlc291cmNlIHRoaXMgY2xhc3MgaXMgcmVmZXJlbmNpbmdcbiAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHRlcnJhZm9ybVJlc291cmNlOiBjZGt0Zi5JSW50ZXJwb2xhdGluZ1BhcmVudCwgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVybmFsVmFsdWUoKTogRGF0YVBsYW5lUmVzb3VyY2VUaW1lb3V0cyB8IGNka3RmLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZhYmxlVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmFibGVWYWx1ZTtcbiAgICB9XG4gICAgbGV0IGhhc0FueVZhbHVlcyA9IHRoaXMuaXNFbXB0eU9iamVjdDtcbiAgICBjb25zdCBpbnRlcm5hbFZhbHVlUmVzdWx0OiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5fY3JlYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmNyZWF0ZSA9IHRoaXMuX2NyZWF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2RlbGV0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5kZWxldGUgPSB0aGlzLl9kZWxldGU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9yZWFkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LnJlYWQgPSB0aGlzLl9yZWFkO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdXBkYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LnVwZGF0ZSA9IHRoaXMuX3VwZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlcyA/IGludGVybmFsVmFsdWVSZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGludGVybmFsVmFsdWUodmFsdWU6IERhdGFQbGFuZVJlc291cmNlVGltZW91dHMgfCBjZGt0Zi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fY3JlYXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fZGVsZXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fcmVhZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX3VwZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2RrdGYuVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jcmVhdGUgPSB2YWx1ZS5jcmVhdGU7XG4gICAgICB0aGlzLl9kZWxldGUgPSB2YWx1ZS5kZWxldGU7XG4gICAgICB0aGlzLl9yZWFkID0gdmFsdWUucmVhZDtcbiAgICAgIHRoaXMuX3VwZGF0ZSA9IHZhbHVlLnVwZGF0ZTtcbiAgICB9XG4gIH1cblxuICAvLyBjcmVhdGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY3JlYXRlPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdjcmVhdGUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGNyZWF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY3JlYXRlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0Q3JlYXRlKCkge1xuICAgIHRoaXMuX2NyZWF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgY3JlYXRlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZTtcbiAgfVxuXG4gIC8vIGRlbGV0ZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9kZWxldGU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGRlbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2RlbGV0ZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsZXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWxldGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZWxldGUoKSB7XG4gICAgdGhpcy5fZGVsZXRlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZWxldGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICB9XG5cbiAgLy8gcmVhZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCByZWFkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgncmVhZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVhZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlYWQoKSB7XG4gICAgdGhpcy5fcmVhZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVhZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkO1xuICB9XG5cbiAgLy8gdXBkYXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3VwZGF0ZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgdXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgndXBkYXRlJyk7XG4gIH1cbiAgcHVibGljIHNldCB1cGRhdGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3VwZGF0ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFVwZGF0ZSgpIHtcbiAgICB0aGlzLl91cGRhdGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHVwZGF0ZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl91cGRhdGU7XG4gIH1cbn1cblxuLyoqXG4qIFJlcHJlc2VudHMgYSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UgYXphcGlfZGF0YV9wbGFuZV9yZXNvdXJjZX1cbiovXG5leHBvcnQgY2xhc3MgRGF0YVBsYW5lUmVzb3VyY2UgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwiYXphcGlfZGF0YV9wbGFuZV9yZXNvdXJjZVwiO1xuXG4gIC8vID09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09XG4gIC8qKlxuICAqIEdlbmVyYXRlcyBDREtURiBjb2RlIGZvciBpbXBvcnRpbmcgYSBEYXRhUGxhbmVSZXNvdXJjZSByZXNvdXJjZSB1cG9uIHJ1bm5pbmcgXCJjZGt0ZiBwbGFuIDxzdGFjay1uYW1lPlwiXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaW1wb3J0VG9JZCBUaGUgY29uc3RydWN0IGlkIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBjb25maWcgZm9yIHRoZSBEYXRhUGxhbmVSZXNvdXJjZSB0byBpbXBvcnRcbiAgKiBAcGFyYW0gaW1wb3J0RnJvbUlkIFRoZSBpZCBvZiB0aGUgZXhpc3RpbmcgRGF0YVBsYW5lUmVzb3VyY2UgdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQuIFJlZmVyIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL2RhdGFfcGxhbmVfcmVzb3VyY2UjaW1wb3J0IGltcG9ydCBzZWN0aW9ufSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJlc291cmNlIGZvciB0aGUgaWQgdG8gdXNlXG4gICogQHBhcmFtIHByb3ZpZGVyPyBPcHRpb25hbCBpbnN0YW5jZSBvZiB0aGUgcHJvdmlkZXIgd2hlcmUgdGhlIERhdGFQbGFuZVJlc291cmNlIHRvIGltcG9ydCBpcyBmb3VuZFxuICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlQ29uZmlnRm9ySW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGltcG9ydFRvSWQ6IHN0cmluZywgaW1wb3J0RnJvbUlkOiBzdHJpbmcsIHByb3ZpZGVyPzogY2RrdGYuVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjZGt0Zi5JbXBvcnRhYmxlUmVzb3VyY2Uoc2NvcGUsIGltcG9ydFRvSWQsIHsgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBcImF6YXBpX2RhdGFfcGxhbmVfcmVzb3VyY2VcIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy9kYXRhX3BsYW5lX3Jlc291cmNlIGF6YXBpX2RhdGFfcGxhbmVfcmVzb3VyY2V9IFJlc291cmNlXG4gICpcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgYW1vbmdzdCBzaWJsaW5ncyBpbiB0aGUgc2FtZSBzY29wZVxuICAqIEBwYXJhbSBvcHRpb25zIERhdGFQbGFuZVJlc291cmNlQ29uZmlnXG4gICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IERhdGFQbGFuZVJlc291cmNlQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdhemFwaV9kYXRhX3BsYW5lX3Jlc291cmNlJyxcbiAgICAgIHRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhOiB7XG4gICAgICAgIHByb3ZpZGVyTmFtZTogJ2F6YXBpJyxcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uOiAnMi43LjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMi43LjAnXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6IGNvbmZpZy5wcm92aWRlcixcbiAgICAgIGRlcGVuZHNPbjogY29uZmlnLmRlcGVuZHNPbixcbiAgICAgIGNvdW50OiBjb25maWcuY291bnQsXG4gICAgICBsaWZlY3ljbGU6IGNvbmZpZy5saWZlY3ljbGUsXG4gICAgICBwcm92aXNpb25lcnM6IGNvbmZpZy5wcm92aXNpb25lcnMsXG4gICAgICBjb25uZWN0aW9uOiBjb25maWcuY29ubmVjdGlvbixcbiAgICAgIGZvckVhY2g6IGNvbmZpZy5mb3JFYWNoXG4gICAgfSk7XG4gICAgdGhpcy5fYm9keSA9IGNvbmZpZy5ib2R5O1xuICAgIHRoaXMuX2NyZWF0ZUhlYWRlcnMgPSBjb25maWcuY3JlYXRlSGVhZGVycztcbiAgICB0aGlzLl9jcmVhdGVRdWVyeVBhcmFtZXRlcnMgPSBjb25maWcuY3JlYXRlUXVlcnlQYXJhbWV0ZXJzO1xuICAgIHRoaXMuX2RlbGV0ZUhlYWRlcnMgPSBjb25maWcuZGVsZXRlSGVhZGVycztcbiAgICB0aGlzLl9kZWxldGVRdWVyeVBhcmFtZXRlcnMgPSBjb25maWcuZGVsZXRlUXVlcnlQYXJhbWV0ZXJzO1xuICAgIHRoaXMuX2lnbm9yZUNhc2luZyA9IGNvbmZpZy5pZ25vcmVDYXNpbmc7XG4gICAgdGhpcy5faWdub3JlTWlzc2luZ1Byb3BlcnR5ID0gY29uZmlnLmlnbm9yZU1pc3NpbmdQcm9wZXJ0eTtcbiAgICB0aGlzLl9sb2NrcyA9IGNvbmZpZy5sb2NrcztcbiAgICB0aGlzLl9uYW1lID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5fcGFyZW50SWQgPSBjb25maWcucGFyZW50SWQ7XG4gICAgdGhpcy5fcmVhZEhlYWRlcnMgPSBjb25maWcucmVhZEhlYWRlcnM7XG4gICAgdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycyA9IGNvbmZpZy5yZWFkUXVlcnlQYXJhbWV0ZXJzO1xuICAgIHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzID0gY29uZmlnLnJlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzO1xuICAgIHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc1JlZnMgPSBjb25maWcucmVwbGFjZVRyaWdnZXJzUmVmcztcbiAgICB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcyA9IGNvbmZpZy5yZXNwb25zZUV4cG9ydFZhbHVlcztcbiAgICB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlID0gY29uZmlnLnJldHJ5O1xuICAgIHRoaXMuX3R5cGUgPSBjb25maWcudHlwZTtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJzID0gY29uZmlnLnVwZGF0ZUhlYWRlcnM7XG4gICAgdGhpcy5fdXBkYXRlUXVlcnlQYXJhbWV0ZXJzID0gY29uZmlnLnVwZGF0ZVF1ZXJ5UGFyYW1ldGVycztcbiAgICB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlID0gY29uZmlnLnRpbWVvdXRzO1xuICB9XG5cbiAgLy8gPT09PT09PT09PVxuICAvLyBBVFRSSUJVVEVTXG4gIC8vID09PT09PT09PT1cblxuICAvLyBib2R5IC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfYm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07IFxuICBwdWJsaWMgZ2V0IGJvZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QW55TWFwQXR0cmlidXRlKCdib2R5Jyk7XG4gIH1cbiAgcHVibGljIHNldCBib2R5KHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fYm9keSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEJvZHkoKSB7XG4gICAgdGhpcy5fYm9keSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgYm9keUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9ib2R5O1xuICB9XG5cbiAgLy8gY3JlYXRlX2hlYWRlcnMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY3JlYXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07IFxuICBwdWJsaWMgZ2V0IGNyZWF0ZUhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nTWFwQXR0cmlidXRlKCdjcmVhdGVfaGVhZGVycycpO1xuICB9XG4gIHB1YmxpYyBzZXQgY3JlYXRlSGVhZGVycyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX2NyZWF0ZUhlYWRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDcmVhdGVIZWFkZXJzKCkge1xuICAgIHRoaXMuX2NyZWF0ZUhlYWRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGNyZWF0ZUhlYWRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlSGVhZGVycztcbiAgfVxuXG4gIC8vIGNyZWF0ZV9xdWVyeV9wYXJhbWV0ZXJzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2NyZWF0ZVF1ZXJ5UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCBjcmVhdGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGNyZWF0ZVF1ZXJ5UGFyYW1ldGVycyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHwgY2RrdGYuSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9jcmVhdGVRdWVyeVBhcmFtZXRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDcmVhdGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5fY3JlYXRlUXVlcnlQYXJhbWV0ZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBjcmVhdGVRdWVyeVBhcmFtZXRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlUXVlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgLy8gZGVsZXRlX2hlYWRlcnMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfZGVsZXRlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07IFxuICBwdWJsaWMgZ2V0IGRlbGV0ZUhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nTWFwQXR0cmlidXRlKCdkZWxldGVfaGVhZGVycycpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsZXRlSGVhZGVycyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX2RlbGV0ZUhlYWRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZWxldGVIZWFkZXJzKCkge1xuICAgIHRoaXMuX2RlbGV0ZUhlYWRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGRlbGV0ZUhlYWRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlSGVhZGVycztcbiAgfVxuXG4gIC8vIGRlbGV0ZV9xdWVyeV9wYXJhbWV0ZXJzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2RlbGV0ZVF1ZXJ5UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCBkZWxldGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnZGVsZXRlX3F1ZXJ5X3BhcmFtZXRlcnMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRlbGV0ZVF1ZXJ5UGFyYW1ldGVycyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHwgY2RrdGYuSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9kZWxldGVRdWVyeVBhcmFtZXRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZWxldGVRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5fZGVsZXRlUXVlcnlQYXJhbWV0ZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZWxldGVRdWVyeVBhcmFtZXRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlUXVlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgLy8gaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cblxuICAvLyBpZ25vcmVfY2FzaW5nIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWdub3JlQ2FzaW5nPzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCBpZ25vcmVDYXNpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Qm9vbGVhbkF0dHJpYnV0ZSgnaWdub3JlX2Nhc2luZycpO1xuICB9XG4gIHB1YmxpYyBzZXQgaWdub3JlQ2FzaW5nKHZhbHVlOiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9pZ25vcmVDYXNpbmcgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZ25vcmVDYXNpbmcoKSB7XG4gICAgdGhpcy5faWdub3JlQ2FzaW5nID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZ25vcmVDYXNpbmdJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWdub3JlQ2FzaW5nO1xuICB9XG5cbiAgLy8gaWdub3JlX21pc3NpbmdfcHJvcGVydHkgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9pZ25vcmVNaXNzaW5nUHJvcGVydHk/OiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGU7IFxuICBwdWJsaWMgZ2V0IGlnbm9yZU1pc3NpbmdQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb29sZWFuQXR0cmlidXRlKCdpZ25vcmVfbWlzc2luZ19wcm9wZXJ0eScpO1xuICB9XG4gIHB1YmxpYyBzZXQgaWdub3JlTWlzc2luZ1Byb3BlcnR5KHZhbHVlOiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9pZ25vcmVNaXNzaW5nUHJvcGVydHkgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZ25vcmVNaXNzaW5nUHJvcGVydHkoKSB7XG4gICAgdGhpcy5faWdub3JlTWlzc2luZ1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZ25vcmVNaXNzaW5nUHJvcGVydHlJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWdub3JlTWlzc2luZ1Byb3BlcnR5O1xuICB9XG5cbiAgLy8gbG9ja3MgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfbG9ja3M/OiBzdHJpbmdbXTsgXG4gIHB1YmxpYyBnZXQgbG9ja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZSgnbG9ja3MnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGxvY2tzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2xvY2tzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0TG9ja3MoKSB7XG4gICAgdGhpcy5fbG9ja3MgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGxvY2tzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2tzO1xuICB9XG5cbiAgLy8gbmFtZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9uYW1lPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnbmFtZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBuYW1lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvLyBvdXRwdXQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfb3V0cHV0ID0gbmV3IGNka3RmLkFueU1hcCh0aGlzLCBcIm91dHB1dFwiKTtcbiAgcHVibGljIGdldCBvdXRwdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dDtcbiAgfVxuXG4gIC8vIHBhcmVudF9pZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9wYXJlbnRJZD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgcGFyZW50SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdwYXJlbnRfaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHBhcmVudElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXJlbnRJZCA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBwYXJlbnRJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRJZDtcbiAgfVxuXG4gIC8vIHJlYWRfaGVhZGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07IFxuICBwdWJsaWMgZ2V0IHJlYWRIZWFkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ01hcEF0dHJpYnV0ZSgncmVhZF9oZWFkZXJzJyk7XG4gIH1cbiAgcHVibGljIHNldCByZWFkSGVhZGVycyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX3JlYWRIZWFkZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0UmVhZEhlYWRlcnMoKSB7XG4gICAgdGhpcy5fcmVhZEhlYWRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJlYWRIZWFkZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRIZWFkZXJzO1xuICB9XG5cbiAgLy8gcmVhZF9xdWVyeV9wYXJhbWV0ZXJzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3JlYWRRdWVyeVBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gfCBjZGt0Zi5JUmVzb2x2YWJsZTsgXG4gIHB1YmxpYyBnZXQgcmVhZFF1ZXJ5UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKCdyZWFkX3F1ZXJ5X3BhcmFtZXRlcnMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlYWRRdWVyeVBhcmFtZXRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlYWRRdWVyeVBhcmFtZXRlcnMoKSB7XG4gICAgdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVhZFF1ZXJ5UGFyYW1ldGVyc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkUXVlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgLy8gcmVwbGFjZV90cmlnZ2Vyc19leHRlcm5hbF92YWx1ZXMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9OyBcbiAgcHVibGljIGdldCByZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbnlNYXBBdHRyaWJ1dGUoJ3JlcGxhY2VfdHJpZ2dlcnNfZXh0ZXJuYWxfdmFsdWVzJyk7XG4gIH1cbiAgcHVibGljIHNldCByZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0UmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXMoKSB7XG4gICAgdGhpcy5fcmVwbGFjZVRyaWdnZXJzRXh0ZXJuYWxWYWx1ZXMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzO1xuICB9XG5cbiAgLy8gcmVwbGFjZV90cmlnZ2Vyc19yZWZzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3JlcGxhY2VUcmlnZ2Vyc1JlZnM/OiBzdHJpbmdbXTsgXG4gIHB1YmxpYyBnZXQgcmVwbGFjZVRyaWdnZXJzUmVmcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0QXR0cmlidXRlKCdyZXBsYWNlX3RyaWdnZXJzX3JlZnMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcGxhY2VUcmlnZ2Vyc1JlZnModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fcmVwbGFjZVRyaWdnZXJzUmVmcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlcGxhY2VUcmlnZ2Vyc1JlZnMoKSB7XG4gICAgdGhpcy5fcmVwbGFjZVRyaWdnZXJzUmVmcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVwbGFjZVRyaWdnZXJzUmVmc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXBsYWNlVHJpZ2dlcnNSZWZzO1xuICB9XG5cbiAgLy8gcmVzcG9uc2VfZXhwb3J0X3ZhbHVlcyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZXNwb25zZUV4cG9ydFZhbHVlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07IFxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlRXhwb3J0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFueU1hcEF0dHJpYnV0ZSgncmVzcG9uc2VfZXhwb3J0X3ZhbHVlcycpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVzcG9uc2VFeHBvcnRWYWx1ZXModmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlc3BvbnNlRXhwb3J0VmFsdWVzKCkge1xuICAgIHRoaXMuX3Jlc3BvbnNlRXhwb3J0VmFsdWVzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZXNwb25zZUV4cG9ydFZhbHVlc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcztcbiAgfVxuXG4gIC8vIHJldHJ5IC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3JldHJ5ID0gbmV3IERhdGFQbGFuZVJlc291cmNlUmV0cnlPdXRwdXRSZWZlcmVuY2UodGhpcywgXCJyZXRyeVwiKTtcbiAgcHVibGljIGdldCByZXRyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnk7XG4gIH1cbiAgcHVibGljIHB1dFJldHJ5KHZhbHVlOiBEYXRhUGxhbmVSZXNvdXJjZVJldHJ5KSB7XG4gICAgdGhpcy5fcmV0cnkuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJldHJ5KCkge1xuICAgIHRoaXMuX3JldHJ5LmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJldHJ5SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHJ5LmludGVybmFsVmFsdWU7XG4gIH1cblxuICAvLyB0eXBlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX3R5cGU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCd0eXBlJyk7XG4gIH1cbiAgcHVibGljIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHR5cGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIC8vIHVwZGF0ZV9oZWFkZXJzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3VwZGF0ZUhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9OyBcbiAgcHVibGljIGdldCB1cGRhdGVIZWFkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ01hcEF0dHJpYnV0ZSgndXBkYXRlX2hlYWRlcnMnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVwZGF0ZUhlYWRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXBkYXRlSGVhZGVycygpIHtcbiAgICB0aGlzLl91cGRhdGVIZWFkZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB1cGRhdGVIZWFkZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUhlYWRlcnM7XG4gIH1cblxuICAvLyB1cGRhdGVfcXVlcnlfcGFyYW1ldGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF91cGRhdGVRdWVyeVBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gfCBjZGt0Zi5JUmVzb2x2YWJsZTsgXG4gIHB1YmxpYyBnZXQgdXBkYXRlUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoJ3VwZGF0ZV9xdWVyeV9wYXJhbWV0ZXJzJyk7XG4gIH1cbiAgcHVibGljIHNldCB1cGRhdGVRdWVyeVBhcmFtZXRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5fdXBkYXRlUXVlcnlQYXJhbWV0ZXJzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXBkYXRlUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXBkYXRlUXVlcnlQYXJhbWV0ZXJzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIC8vIHRpbWVvdXRzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3RpbWVvdXRzID0gbmV3IERhdGFQbGFuZVJlc291cmNlVGltZW91dHNPdXRwdXRSZWZlcmVuY2UodGhpcywgXCJ0aW1lb3V0c1wiKTtcbiAgcHVibGljIGdldCB0aW1lb3V0cygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZW91dHM7XG4gIH1cbiAgcHVibGljIHB1dFRpbWVvdXRzKHZhbHVlOiBEYXRhUGxhbmVSZXNvdXJjZVRpbWVvdXRzKSB7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFRpbWVvdXRzKCkge1xuICAgIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHRpbWVvdXRzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWU7XG4gIH1cblxuICAvLyA9PT09PT09PT1cbiAgLy8gU1lOVEhFU0lTXG4gIC8vID09PT09PT09PVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuYW55VG9UZXJyYWZvcm0pKHRoaXMuX2JvZHkpLFxuICAgICAgY3JlYXRlX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKHRoaXMuX2NyZWF0ZUhlYWRlcnMpLFxuICAgICAgY3JlYXRlX3F1ZXJ5X3BhcmFtZXRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKSh0aGlzLl9jcmVhdGVRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgZGVsZXRlX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKHRoaXMuX2RlbGV0ZUhlYWRlcnMpLFxuICAgICAgZGVsZXRlX3F1ZXJ5X3BhcmFtZXRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKSh0aGlzLl9kZWxldGVRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgaWdub3JlX2Nhc2luZzogY2RrdGYuYm9vbGVhblRvVGVycmFmb3JtKHRoaXMuX2lnbm9yZUNhc2luZyksXG4gICAgICBpZ25vcmVfbWlzc2luZ19wcm9wZXJ0eTogY2RrdGYuYm9vbGVhblRvVGVycmFmb3JtKHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSksXG4gICAgICBsb2NrczogY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2xvY2tzKSxcbiAgICAgIG5hbWU6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX25hbWUpLFxuICAgICAgcGFyZW50X2lkOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9wYXJlbnRJZCksXG4gICAgICByZWFkX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKHRoaXMuX3JlYWRIZWFkZXJzKSxcbiAgICAgIHJlYWRfcXVlcnlfcGFyYW1ldGVyczogY2RrdGYuaGFzaE1hcHBlcihjZGt0Zi5saXN0TWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLCBmYWxzZSkpKHRoaXMuX3JlYWRRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgcmVwbGFjZV90cmlnZ2Vyc19leHRlcm5hbF92YWx1ZXM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuYW55VG9UZXJyYWZvcm0pKHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc0V4dGVybmFsVmFsdWVzKSxcbiAgICAgIHJlcGxhY2VfdHJpZ2dlcnNfcmVmczogY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc1JlZnMpLFxuICAgICAgcmVzcG9uc2VfZXhwb3J0X3ZhbHVlczogY2RrdGYuaGFzaE1hcHBlcihjZGt0Zi5hbnlUb1RlcnJhZm9ybSkodGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXMpLFxuICAgICAgcmV0cnk6IGRhdGFQbGFuZVJlc291cmNlUmV0cnlUb1RlcnJhZm9ybSh0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIHR5cGU6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX3R5cGUpLFxuICAgICAgdXBkYXRlX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKHRoaXMuX3VwZGF0ZUhlYWRlcnMpLFxuICAgICAgdXBkYXRlX3F1ZXJ5X3BhcmFtZXRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKSh0aGlzLl91cGRhdGVRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgdGltZW91dHM6IGRhdGFQbGFuZVJlc291cmNlVGltZW91dHNUb1RlcnJhZm9ybSh0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLmhhc2hNYXBwZXJIY2woY2RrdGYuYW55VG9IY2xUZXJyYWZvcm0pKHRoaXMuX2JvZHkpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJhbnlNYXBcIixcbiAgICAgIH0sXG4gICAgICBjcmVhdGVfaGVhZGVyczoge1xuICAgICAgICB2YWx1ZTogY2RrdGYuaGFzaE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSkodGhpcy5fY3JlYXRlSGVhZGVycyksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ01hcFwiLFxuICAgICAgfSxcbiAgICAgIGNyZWF0ZV9xdWVyeV9wYXJhbWV0ZXJzOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5oYXNoTWFwcGVySGNsKGNka3RmLmxpc3RNYXBwZXJIY2woY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0sIGZhbHNlKSkodGhpcy5fY3JlYXRlUXVlcnlQYXJhbWV0ZXJzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nTGlzdE1hcFwiLFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZV9oZWFkZXJzOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5oYXNoTWFwcGVySGNsKGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKSh0aGlzLl9kZWxldGVIZWFkZXJzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nTWFwXCIsXG4gICAgICB9LFxuICAgICAgZGVsZXRlX3F1ZXJ5X3BhcmFtZXRlcnM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLmhhc2hNYXBwZXJIY2woY2RrdGYubGlzdE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKSh0aGlzLl9kZWxldGVRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdMaXN0TWFwXCIsXG4gICAgICB9LFxuICAgICAgaWdub3JlX2Nhc2luZzoge1xuICAgICAgICB2YWx1ZTogY2RrdGYuYm9vbGVhblRvSGNsVGVycmFmb3JtKHRoaXMuX2lnbm9yZUNhc2luZyksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBpZ25vcmVfbWlzc2luZ19wcm9wZXJ0eToge1xuICAgICAgICB2YWx1ZTogY2RrdGYuYm9vbGVhblRvSGNsVGVycmFmb3JtKHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBsb2Nrczoge1xuICAgICAgICB2YWx1ZTogY2RrdGYubGlzdE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2xvY2tzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ0xpc3RcIixcbiAgICAgIH0sXG4gICAgICBuYW1lOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9uYW1lKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgcGFyZW50X2lkOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9wYXJlbnRJZCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHJlYWRfaGVhZGVyczoge1xuICAgICAgICB2YWx1ZTogY2RrdGYuaGFzaE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSkodGhpcy5fcmVhZEhlYWRlcnMpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdNYXBcIixcbiAgICAgIH0sXG4gICAgICByZWFkX3F1ZXJ5X3BhcmFtZXRlcnM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLmhhc2hNYXBwZXJIY2woY2RrdGYubGlzdE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKSh0aGlzLl9yZWFkUXVlcnlQYXJhbWV0ZXJzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nTGlzdE1hcFwiLFxuICAgICAgfSxcbiAgICAgIHJlcGxhY2VfdHJpZ2dlcnNfZXh0ZXJuYWxfdmFsdWVzOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5oYXNoTWFwcGVySGNsKGNka3RmLmFueVRvSGNsVGVycmFmb3JtKSh0aGlzLl9yZXBsYWNlVHJpZ2dlcnNFeHRlcm5hbFZhbHVlcyksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImFueU1hcFwiLFxuICAgICAgfSxcbiAgICAgIHJlcGxhY2VfdHJpZ2dlcnNfcmVmczoge1xuICAgICAgICB2YWx1ZTogY2RrdGYubGlzdE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX3JlcGxhY2VUcmlnZ2Vyc1JlZnMpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nTGlzdFwiLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNlX2V4cG9ydF92YWx1ZXM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLmhhc2hNYXBwZXJIY2woY2RrdGYuYW55VG9IY2xUZXJyYWZvcm0pKHRoaXMuX3Jlc3BvbnNlRXhwb3J0VmFsdWVzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYW55TWFwXCIsXG4gICAgICB9LFxuICAgICAgcmV0cnk6IHtcbiAgICAgICAgdmFsdWU6IGRhdGFQbGFuZVJlc291cmNlUmV0cnlUb0hjbFRlcnJhZm9ybSh0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlKSxcbiAgICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJzdHJ1Y3RcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJEYXRhUGxhbmVSZXNvdXJjZVJldHJ5XCIsXG4gICAgICB9LFxuICAgICAgdHlwZToge1xuICAgICAgICB2YWx1ZTogY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fdHlwZSksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZV9oZWFkZXJzOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5oYXNoTWFwcGVySGNsKGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKSh0aGlzLl91cGRhdGVIZWFkZXJzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nTWFwXCIsXG4gICAgICB9LFxuICAgICAgdXBkYXRlX3F1ZXJ5X3BhcmFtZXRlcnM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLmhhc2hNYXBwZXJIY2woY2RrdGYubGlzdE1hcHBlckhjbChjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKSh0aGlzLl91cGRhdGVRdWVyeVBhcmFtZXRlcnMpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJtYXBcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdMaXN0TWFwXCIsXG4gICAgICB9LFxuICAgICAgdGltZW91dHM6IHtcbiAgICAgICAgdmFsdWU6IGRhdGFQbGFuZVJlc291cmNlVGltZW91dHNUb0hjbFRlcnJhZm9ybSh0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlKSxcbiAgICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJzdHJ1Y3RcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJEYXRhUGxhbmVSZXNvdXJjZVRpbWVvdXRzXCIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCApKVxuICB9XG59XG4iXX0=