@cdk_utils/iam 1.28.0 → 1.30.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 (470) hide show
  1. package/.jsii +2 -2
  2. package/lib/generated/index.d.ts +1 -0
  3. package/lib/generated/index.js +7 -6
  4. package/lib/generated/services/a2c.js +1 -1
  5. package/lib/generated/services/a4b.js +3 -3
  6. package/lib/generated/services/access-analyzer.js +4 -4
  7. package/lib/generated/services/account-access.js +4 -4
  8. package/lib/generated/services/account.js +4 -4
  9. package/lib/generated/services/acm-pca.js +4 -4
  10. package/lib/generated/services/acm.js +4 -4
  11. package/lib/generated/services/aco-automation.js +4 -4
  12. package/lib/generated/services/action-recommendations.js +1 -1
  13. package/lib/generated/services/activate.js +1 -1
  14. package/lib/generated/services/agent-registry.js +4 -4
  15. package/lib/generated/services/agentaccess-mcp.js +2 -2
  16. package/lib/generated/services/aidevops.js +4 -4
  17. package/lib/generated/services/aiops.js +4 -4
  18. package/lib/generated/services/airflow-serverless.js +4 -4
  19. package/lib/generated/services/airflow.js +4 -4
  20. package/lib/generated/services/amplify.js +4 -4
  21. package/lib/generated/services/amplifybackend.js +3 -3
  22. package/lib/generated/services/amplifyuibuilder.js +4 -4
  23. package/lib/generated/services/aoss.js +4 -4
  24. package/lib/generated/services/apigateway.js +4 -4
  25. package/lib/generated/services/app-integrations.js +4 -4
  26. package/lib/generated/services/appconfig.js +4 -4
  27. package/lib/generated/services/appfabric.js +4 -4
  28. package/lib/generated/services/appflow.js +4 -4
  29. package/lib/generated/services/application-autoscaling.js +4 -4
  30. package/lib/generated/services/application-signals-mcp.js +3 -3
  31. package/lib/generated/services/application-signals.js +4 -4
  32. package/lib/generated/services/application-transformation.js +1 -1
  33. package/lib/generated/services/applicationinsights.js +3 -3
  34. package/lib/generated/services/appmesh-preview.js +2 -2
  35. package/lib/generated/services/appmesh.js +4 -4
  36. package/lib/generated/services/apprunner.js +4 -4
  37. package/lib/generated/services/appstream.js +4 -4
  38. package/lib/generated/services/appstudio.js +2 -2
  39. package/lib/generated/services/appsync.js +4 -4
  40. package/lib/generated/services/apptest.js +3 -3
  41. package/lib/generated/services/aps.js +4 -4
  42. package/lib/generated/services/arc-region-switch.js +4 -4
  43. package/lib/generated/services/arc-zonal-shift.js +4 -4
  44. package/lib/generated/services/arsenal.js +1 -1
  45. package/lib/generated/services/artifact.js +4 -4
  46. package/lib/generated/services/athena.js +4 -4
  47. package/lib/generated/services/auditmanager.js +4 -4
  48. package/lib/generated/services/autoscaling-plans.js +2 -2
  49. package/lib/generated/services/autoscaling.js +4 -4
  50. package/lib/generated/services/aws-external-anthropic.js +3 -3
  51. package/lib/generated/services/aws-marketplace-management.js +1 -1
  52. package/lib/generated/services/aws-marketplace.js +4 -4
  53. package/lib/generated/services/aws-portal.js +1 -1
  54. package/lib/generated/services/awsconnector.js +1 -1
  55. package/lib/generated/services/b2bi.js +4 -4
  56. package/lib/generated/services/backup-gateway.js +4 -4
  57. package/lib/generated/services/backup-search.js +4 -4
  58. package/lib/generated/services/backup-storage.js +1 -1
  59. package/lib/generated/services/backup.js +4 -4
  60. package/lib/generated/services/batch.js +4 -4
  61. package/lib/generated/services/bcm-dashboards.js +4 -4
  62. package/lib/generated/services/bcm-data-exports.js +4 -4
  63. package/lib/generated/services/bcm-pricing-calculator.js +4 -4
  64. package/lib/generated/services/bcm-recommended-actions.js +2 -2
  65. package/lib/generated/services/bedrock-agentcore.js +4 -4
  66. package/lib/generated/services/bedrock-mantle.js +3 -3
  67. package/lib/generated/services/bedrock-websearch.js +2 -2
  68. package/lib/generated/services/bedrock.js +4 -4
  69. package/lib/generated/services/billing.d.ts +4 -0
  70. package/lib/generated/services/billing.js +12 -5
  71. package/lib/generated/services/billingconductor.js +4 -4
  72. package/lib/generated/services/braket.js +4 -4
  73. package/lib/generated/services/budgets.js +4 -4
  74. package/lib/generated/services/bugbust.js +3 -3
  75. package/lib/generated/services/cases.js +4 -4
  76. package/lib/generated/services/cassandra.js +4 -4
  77. package/lib/generated/services/ce.js +4 -4
  78. package/lib/generated/services/chatbot.js +4 -4
  79. package/lib/generated/services/chime.js +4 -4
  80. package/lib/generated/services/cleanrooms-ml.js +4 -4
  81. package/lib/generated/services/cleanrooms.js +4 -4
  82. package/lib/generated/services/cloud9.js +4 -4
  83. package/lib/generated/services/clouddirectory.js +3 -3
  84. package/lib/generated/services/cloudformation.js +4 -4
  85. package/lib/generated/services/cloudfront-keyvaluestore.js +3 -3
  86. package/lib/generated/services/cloudfront.js +4 -4
  87. package/lib/generated/services/cloudhsm.js +4 -4
  88. package/lib/generated/services/cloudsearch.js +3 -3
  89. package/lib/generated/services/cloudshell.js +3 -3
  90. package/lib/generated/services/cloudtrail-data.js +4 -4
  91. package/lib/generated/services/cloudtrail.js +4 -4
  92. package/lib/generated/services/cloudwatch.d.ts +122 -0
  93. package/lib/generated/services/cloudwatch.js +217 -5
  94. package/lib/generated/services/codeartifact.js +4 -4
  95. package/lib/generated/services/codebuild.js +4 -4
  96. package/lib/generated/services/codecatalyst.js +4 -4
  97. package/lib/generated/services/codecommit.js +4 -4
  98. package/lib/generated/services/codeconnections.js +9 -6
  99. package/lib/generated/services/codedeploy-commands-secure.js +1 -1
  100. package/lib/generated/services/codedeploy.js +4 -4
  101. package/lib/generated/services/codeguru-profiler.js +4 -4
  102. package/lib/generated/services/codeguru-reviewer.js +4 -4
  103. package/lib/generated/services/codeguru-security.js +4 -4
  104. package/lib/generated/services/codeguru.js +1 -1
  105. package/lib/generated/services/codepipeline.js +4 -4
  106. package/lib/generated/services/codestar-connections.js +4 -4
  107. package/lib/generated/services/codestar-notifications.js +4 -4
  108. package/lib/generated/services/codestar.js +3 -3
  109. package/lib/generated/services/codewhisperer.js +3 -3
  110. package/lib/generated/services/cognito-identity.js +4 -4
  111. package/lib/generated/services/cognito-idp.js +4 -4
  112. package/lib/generated/services/cognito-sync.js +3 -3
  113. package/lib/generated/services/comprehend.js +4 -4
  114. package/lib/generated/services/comprehendmedical.js +3 -3
  115. package/lib/generated/services/compute-optimizer.js +3 -3
  116. package/lib/generated/services/config.js +4 -4
  117. package/lib/generated/services/connect-campaigns.js +4 -4
  118. package/lib/generated/services/connect.d.ts +43 -0
  119. package/lib/generated/services/connect.js +45 -6
  120. package/lib/generated/services/consoleapp.js +2 -2
  121. package/lib/generated/services/consolidatedbilling.js +1 -1
  122. package/lib/generated/services/controlcatalog.js +3 -3
  123. package/lib/generated/services/controltower.js +4 -4
  124. package/lib/generated/services/cost-optimization-hub.js +2 -2
  125. package/lib/generated/services/cur.js +4 -4
  126. package/lib/generated/services/customer-verification.js +1 -1
  127. package/lib/generated/services/databrew.js +4 -4
  128. package/lib/generated/services/dataexchange.js +4 -4
  129. package/lib/generated/services/datapipeline.js +4 -4
  130. package/lib/generated/services/datasync.js +4 -4
  131. package/lib/generated/services/datazone.js +4 -4
  132. package/lib/generated/services/dax.js +4 -4
  133. package/lib/generated/services/dbqms.js +1 -1
  134. package/lib/generated/services/deadline.js +4 -4
  135. package/lib/generated/services/detective.js +4 -4
  136. package/lib/generated/services/devicefarm.js +4 -4
  137. package/lib/generated/services/devops-guru.js +4 -4
  138. package/lib/generated/services/directconnect.js +4 -4
  139. package/lib/generated/services/discovery.js +3 -3
  140. package/lib/generated/services/dlm.js +4 -4
  141. package/lib/generated/services/dms.js +4 -4
  142. package/lib/generated/services/docdb-elastic.js +4 -4
  143. package/lib/generated/services/drs.js +4 -4
  144. package/lib/generated/services/ds-data.js +4 -4
  145. package/lib/generated/services/ds.js +4 -4
  146. package/lib/generated/services/dsql.js +4 -4
  147. package/lib/generated/services/dynamodb.js +4 -4
  148. package/lib/generated/services/ebs.js +4 -4
  149. package/lib/generated/services/ec2-instance-connect.js +4 -4
  150. package/lib/generated/services/ec2.d.ts +4 -0
  151. package/lib/generated/services/ec2.js +11 -5
  152. package/lib/generated/services/ec2messages.js +2 -2
  153. package/lib/generated/services/ecr-public.js +4 -4
  154. package/lib/generated/services/ecr.js +4 -4
  155. package/lib/generated/services/ecs-mcp.js +1 -1
  156. package/lib/generated/services/ecs.js +4 -4
  157. package/lib/generated/services/eks-auth.js +4 -4
  158. package/lib/generated/services/eks-mcp.js +1 -1
  159. package/lib/generated/services/eks.js +4 -4
  160. package/lib/generated/services/elasticache.js +6 -5
  161. package/lib/generated/services/elasticbeanstalk.js +4 -4
  162. package/lib/generated/services/elasticfilesystem.js +4 -4
  163. package/lib/generated/services/elasticloadbalancing.js +4 -4
  164. package/lib/generated/services/elasticmapreduce.js +4 -4
  165. package/lib/generated/services/elastictranscoder.js +2 -2
  166. package/lib/generated/services/elemental-activations.js +1 -1
  167. package/lib/generated/services/elemental-appliances-software.js +2 -2
  168. package/lib/generated/services/elemental-inference.js +4 -4
  169. package/lib/generated/services/elemental-support-cases.js +3 -3
  170. package/lib/generated/services/elemental-support-content.js +1 -1
  171. package/lib/generated/services/emr-containers.js +4 -4
  172. package/lib/generated/services/emr-serverless.js +4 -4
  173. package/lib/generated/services/entityresolution.js +4 -4
  174. package/lib/generated/services/es.js +4 -4
  175. package/lib/generated/services/events.d.ts +219 -0
  176. package/lib/generated/services/events.js +243 -5
  177. package/lib/generated/services/eventsbilltoaws.js +3 -3
  178. package/lib/generated/services/evidently.js +3 -3
  179. package/lib/generated/services/evs.js +4 -4
  180. package/lib/generated/services/execute-api.js +4 -4
  181. package/lib/generated/services/finops-agent.js +1 -1
  182. package/lib/generated/services/finspace-api.js +3 -3
  183. package/lib/generated/services/finspace.js +4 -4
  184. package/lib/generated/services/firehose.js +4 -4
  185. package/lib/generated/services/fis.js +4 -4
  186. package/lib/generated/services/fms.js +4 -4
  187. package/lib/generated/services/forecast.js +4 -4
  188. package/lib/generated/services/frauddetector.js +4 -4
  189. package/lib/generated/services/freertos.js +3 -3
  190. package/lib/generated/services/freetier.js +2 -2
  191. package/lib/generated/services/fsx.js +4 -4
  192. package/lib/generated/services/gamelift.js +4 -4
  193. package/lib/generated/services/gameliftstreams.js +4 -4
  194. package/lib/generated/services/geo-maps.js +3 -3
  195. package/lib/generated/services/geo-places.js +3 -3
  196. package/lib/generated/services/geo-routes.js +3 -3
  197. package/lib/generated/services/geo.js +4 -4
  198. package/lib/generated/services/glacier.js +4 -4
  199. package/lib/generated/services/globalaccelerator.js +4 -4
  200. package/lib/generated/services/glue.js +4 -4
  201. package/lib/generated/services/grafana.js +4 -4
  202. package/lib/generated/services/greengrass.js +4 -4
  203. package/lib/generated/services/groundstation.js +4 -4
  204. package/lib/generated/services/groundtruthlabeling.js +1 -1
  205. package/lib/generated/services/guardduty.js +4 -4
  206. package/lib/generated/services/health-agent.js +4 -4
  207. package/lib/generated/services/health.js +4 -4
  208. package/lib/generated/services/healthlake.js +4 -4
  209. package/lib/generated/services/honeycode.js +2 -2
  210. package/lib/generated/services/iam.js +4 -4
  211. package/lib/generated/services/identity-sync.js +2 -2
  212. package/lib/generated/services/identitystore-auth.js +1 -1
  213. package/lib/generated/services/identitystore.js +4 -4
  214. package/lib/generated/services/imagebuilder.js +4 -4
  215. package/lib/generated/services/importexport.js +2 -2
  216. package/lib/generated/services/inspector-scan.js +2 -2
  217. package/lib/generated/services/inspector.js +2 -2
  218. package/lib/generated/services/inspector2-telemetry.js +1 -1
  219. package/lib/generated/services/inspector2.js +4 -4
  220. package/lib/generated/services/interconnect.js +4 -4
  221. package/lib/generated/services/internetmonitor.js +4 -4
  222. package/lib/generated/services/invoicing.js +4 -4
  223. package/lib/generated/services/iot-device-tester.js +1 -1
  224. package/lib/generated/services/iot.js +4 -4
  225. package/lib/generated/services/iotanalytics.js +3 -3
  226. package/lib/generated/services/iotdeviceadvisor.js +4 -4
  227. package/lib/generated/services/iotevents.js +3 -3
  228. package/lib/generated/services/iotfleethub.js +3 -3
  229. package/lib/generated/services/iotfleetwise.js +4 -4
  230. package/lib/generated/services/iotjobsdata.js +4 -4
  231. package/lib/generated/services/iotmanagedintegrations.js +4 -4
  232. package/lib/generated/services/iotsitewise.js +4 -4
  233. package/lib/generated/services/iottwinmaker.js +4 -4
  234. package/lib/generated/services/iotwireless.js +4 -4
  235. package/lib/generated/services/iq-permission.js +2 -2
  236. package/lib/generated/services/iq.js +2 -2
  237. package/lib/generated/services/ivs.js +4 -4
  238. package/lib/generated/services/ivschat.js +4 -4
  239. package/lib/generated/services/kafka-cluster.js +3 -3
  240. package/lib/generated/services/kafka.js +4 -4
  241. package/lib/generated/services/kafkaconnect.js +4 -4
  242. package/lib/generated/services/kendra-ranking.js +4 -4
  243. package/lib/generated/services/kendra.js +4 -4
  244. package/lib/generated/services/kinesis.d.ts +4 -0
  245. package/lib/generated/services/kinesis.js +12 -5
  246. package/lib/generated/services/kinesisanalytics.js +4 -4
  247. package/lib/generated/services/kinesisvideo.js +4 -4
  248. package/lib/generated/services/kms.js +4 -4
  249. package/lib/generated/services/lakeformation.js +3 -3
  250. package/lib/generated/services/lambda.js +4 -4
  251. package/lib/generated/services/launchwizard.js +4 -4
  252. package/lib/generated/services/lex.js +4 -4
  253. package/lib/generated/services/license-manager-linux-subscriptions.js +4 -4
  254. package/lib/generated/services/license-manager-user-subscriptions.js +4 -4
  255. package/lib/generated/services/license-manager.js +4 -4
  256. package/lib/generated/services/lightsail.js +4 -4
  257. package/lib/generated/services/logs.d.ts +2 -0
  258. package/lib/generated/services/logs.js +8 -5
  259. package/lib/generated/services/lookoutequipment.js +4 -4
  260. package/lib/generated/services/lookoutmetrics.js +3 -3
  261. package/lib/generated/services/lookoutvision.js +3 -3
  262. package/lib/generated/services/m2.js +4 -4
  263. package/lib/generated/services/machinelearning.js +3 -3
  264. package/lib/generated/services/macie2.js +4 -4
  265. package/lib/generated/services/managedblockchain-query.js +2 -2
  266. package/lib/generated/services/managedblockchain.js +4 -4
  267. package/lib/generated/services/mapcredits.js +2 -2
  268. package/lib/generated/services/marketplacecommerceanalytics.js +2 -2
  269. package/lib/generated/services/mechanicalturk.js +2 -2
  270. package/lib/generated/services/mediaconnect.js +4 -4
  271. package/lib/generated/services/mediaconvert.js +4 -4
  272. package/lib/generated/services/mediaimport.js +1 -1
  273. package/lib/generated/services/medialive.js +4 -4
  274. package/lib/generated/services/mediapackage-vod.js +4 -4
  275. package/lib/generated/services/mediapackage.js +4 -4
  276. package/lib/generated/services/mediapackagev2.js +4 -4
  277. package/lib/generated/services/mediastore.js +4 -4
  278. package/lib/generated/services/mediatailor.js +4 -4
  279. package/lib/generated/services/medical-imaging.js +4 -4
  280. package/lib/generated/services/memorydb.js +4 -4
  281. package/lib/generated/services/mgh.js +4 -4
  282. package/lib/generated/services/mgn.js +4 -4
  283. package/lib/generated/services/migrationhub-orchestrator.js +4 -4
  284. package/lib/generated/services/migrationhub-strategy.js +2 -2
  285. package/lib/generated/services/mobileanalytics.js +1 -1
  286. package/lib/generated/services/mobiletargeting.js +4 -4
  287. package/lib/generated/services/monitron.js +3 -3
  288. package/lib/generated/services/mpa.js +4 -4
  289. package/lib/generated/services/mq.js +4 -4
  290. package/lib/generated/services/neptune-db.js +4 -4
  291. package/lib/generated/services/neptune-graph.js +4 -4
  292. package/lib/generated/services/network-firewall.js +4 -4
  293. package/lib/generated/services/network-security-director.js +1 -1
  294. package/lib/generated/services/network-security-manager.d.ts +674 -0
  295. package/lib/generated/services/network-security-manager.js +778 -0
  296. package/lib/generated/services/networkflowmonitor.js +4 -4
  297. package/lib/generated/services/networkmanager-chat.js +1 -1
  298. package/lib/generated/services/networkmanager.js +4 -4
  299. package/lib/generated/services/networkmonitor.js +4 -4
  300. package/lib/generated/services/nimble.js +3 -3
  301. package/lib/generated/services/notifications-contacts.js +4 -4
  302. package/lib/generated/services/notifications.js +4 -4
  303. package/lib/generated/services/nova-act.js +3 -3
  304. package/lib/generated/services/oam.js +37 -20
  305. package/lib/generated/services/observabilityadmin.d.ts +61 -0
  306. package/lib/generated/services/observabilityadmin.js +77 -8
  307. package/lib/generated/services/odb.js +4 -4
  308. package/lib/generated/services/omics.js +4 -4
  309. package/lib/generated/services/one.js +3 -3
  310. package/lib/generated/services/opensearch.js +3 -3
  311. package/lib/generated/services/opsworks-cm.js +2 -2
  312. package/lib/generated/services/opsworks.js +2 -2
  313. package/lib/generated/services/organizations.js +4 -4
  314. package/lib/generated/services/osis.js +4 -4
  315. package/lib/generated/services/outposts.js +4 -4
  316. package/lib/generated/services/panorama.js +3 -3
  317. package/lib/generated/services/partnercentral-account-management.js +2 -2
  318. package/lib/generated/services/partnercentral.js +4 -4
  319. package/lib/generated/services/payment-cryptography.js +4 -4
  320. package/lib/generated/services/payments.js +3 -3
  321. package/lib/generated/services/pca-connector-ad.js +4 -4
  322. package/lib/generated/services/pca-connector-scep.js +4 -4
  323. package/lib/generated/services/pcs.js +4 -4
  324. package/lib/generated/services/personalize.js +4 -4
  325. package/lib/generated/services/pi.js +4 -4
  326. package/lib/generated/services/pipes.js +4 -4
  327. package/lib/generated/services/polly.js +3 -3
  328. package/lib/generated/services/pricing.js +2 -2
  329. package/lib/generated/services/pricingplanmanager.js +3 -3
  330. package/lib/generated/services/private-networks.js +3 -3
  331. package/lib/generated/services/profile.js +4 -4
  332. package/lib/generated/services/proton.js +4 -4
  333. package/lib/generated/services/purchase-orders.js +3 -3
  334. package/lib/generated/services/q.js +3 -3
  335. package/lib/generated/services/qapps.js +4 -4
  336. package/lib/generated/services/qbusiness.js +4 -4
  337. package/lib/generated/services/qdeveloper.js +3 -3
  338. package/lib/generated/services/qldb.js +3 -3
  339. package/lib/generated/services/quicksight.js +4 -4
  340. package/lib/generated/services/ram.js +4 -4
  341. package/lib/generated/services/rbin.js +4 -4
  342. package/lib/generated/services/rds-data.js +4 -4
  343. package/lib/generated/services/rds-db.js +2 -2
  344. package/lib/generated/services/rds.js +4 -4
  345. package/lib/generated/services/redshift-data.js +4 -4
  346. package/lib/generated/services/redshift-serverless.js +4 -4
  347. package/lib/generated/services/redshift.js +4 -4
  348. package/lib/generated/services/refactor-spaces.js +4 -4
  349. package/lib/generated/services/rekognition.js +4 -4
  350. package/lib/generated/services/repostspace.js +4 -4
  351. package/lib/generated/services/researchstudio.js +1 -1
  352. package/lib/generated/services/resiliencehub.js +4 -4
  353. package/lib/generated/services/resource-explorer-2.js +4 -4
  354. package/lib/generated/services/resource-explorer.js +1 -1
  355. package/lib/generated/services/resource-groups.js +4 -4
  356. package/lib/generated/services/rhelkb.js +1 -1
  357. package/lib/generated/services/robomaker.js +3 -3
  358. package/lib/generated/services/rolesanywhere.js +4 -4
  359. package/lib/generated/services/route53-recovery-cluster.js +4 -4
  360. package/lib/generated/services/route53-recovery-control-config.js +4 -4
  361. package/lib/generated/services/route53-recovery-readiness.js +4 -4
  362. package/lib/generated/services/route53.js +4 -4
  363. package/lib/generated/services/route53domains.js +2 -2
  364. package/lib/generated/services/route53globalresolver.js +4 -4
  365. package/lib/generated/services/route53profiles.js +4 -4
  366. package/lib/generated/services/route53resolver.js +4 -4
  367. package/lib/generated/services/rtbfabric.js +4 -4
  368. package/lib/generated/services/rum.js +4 -4
  369. package/lib/generated/services/s3-object-lambda.js +3 -3
  370. package/lib/generated/services/s3-outposts.js +4 -4
  371. package/lib/generated/services/s3.js +4 -4
  372. package/lib/generated/services/s3express.js +3 -3
  373. package/lib/generated/services/s3files.js +4 -4
  374. package/lib/generated/services/s3tables.js +4 -4
  375. package/lib/generated/services/s3vectors.js +4 -4
  376. package/lib/generated/services/sagemaker-data-science-assistant.js +1 -1
  377. package/lib/generated/services/sagemaker-geospatial.js +4 -4
  378. package/lib/generated/services/sagemaker-mlflow.js +3 -3
  379. package/lib/generated/services/sagemaker-unified-studio-mcp.js +1 -1
  380. package/lib/generated/services/sagemaker.js +4 -4
  381. package/lib/generated/services/savingsplans.js +4 -4
  382. package/lib/generated/services/scheduler.js +4 -4
  383. package/lib/generated/services/schemas.js +4 -4
  384. package/lib/generated/services/scn.js +4 -4
  385. package/lib/generated/services/sdb.js +3 -3
  386. package/lib/generated/services/secretsmanager.js +4 -4
  387. package/lib/generated/services/security-ir.js +4 -4
  388. package/lib/generated/services/securityagent.js +4 -4
  389. package/lib/generated/services/securityhub.js +4 -4
  390. package/lib/generated/services/securitylake.js +4 -4
  391. package/lib/generated/services/serverlessrepo.js +4 -4
  392. package/lib/generated/services/servicecatalog.js +4 -4
  393. package/lib/generated/services/servicediscovery.js +4 -4
  394. package/lib/generated/services/serviceextract.js +1 -1
  395. package/lib/generated/services/servicequotas.js +4 -4
  396. package/lib/generated/services/ses.js +4 -4
  397. package/lib/generated/services/shield.js +4 -4
  398. package/lib/generated/services/signer.js +4 -4
  399. package/lib/generated/services/signin.js +4 -4
  400. package/lib/generated/services/simspaceweaver.js +3 -3
  401. package/lib/generated/services/sms-voice.js +4 -4
  402. package/lib/generated/services/sms.js +1 -1
  403. package/lib/generated/services/snow-device-management.js +4 -4
  404. package/lib/generated/services/snowball.js +2 -2
  405. package/lib/generated/services/sns.js +4 -4
  406. package/lib/generated/services/social-messaging.js +4 -4
  407. package/lib/generated/services/sqlworkbench.js +3 -3
  408. package/lib/generated/services/sqs.js +4 -4
  409. package/lib/generated/services/ssm-contacts.js +4 -4
  410. package/lib/generated/services/ssm-guiconnect.js +2 -2
  411. package/lib/generated/services/ssm-incidents.js +4 -4
  412. package/lib/generated/services/ssm-quicksetup.js +4 -4
  413. package/lib/generated/services/ssm-sap.js +4 -4
  414. package/lib/generated/services/ssm.js +4 -4
  415. package/lib/generated/services/ssmmessages.js +2 -2
  416. package/lib/generated/services/sso-directory.js +1 -1
  417. package/lib/generated/services/sso-oauth.js +3 -3
  418. package/lib/generated/services/sso.js +4 -4
  419. package/lib/generated/services/states.js +4 -4
  420. package/lib/generated/services/storagegateway.js +4 -4
  421. package/lib/generated/services/sts.js +4 -4
  422. package/lib/generated/services/support-console.js +1 -1
  423. package/lib/generated/services/support.js +2 -2
  424. package/lib/generated/services/supportapp.js +2 -2
  425. package/lib/generated/services/supportauthz.js +4 -4
  426. package/lib/generated/services/supportplans.js +1 -1
  427. package/lib/generated/services/sustainability.js +2 -2
  428. package/lib/generated/services/swf.js +4 -4
  429. package/lib/generated/services/synthetics.js +4 -4
  430. package/lib/generated/services/tag.js +2 -2
  431. package/lib/generated/services/tax.js +2 -2
  432. package/lib/generated/services/textract.js +4 -4
  433. package/lib/generated/services/thinclient.js +4 -4
  434. package/lib/generated/services/timestream-influxdb.js +4 -4
  435. package/lib/generated/services/timestream.js +4 -4
  436. package/lib/generated/services/tiros.js +1 -1
  437. package/lib/generated/services/tnb.js +4 -4
  438. package/lib/generated/services/transcribe.js +4 -4
  439. package/lib/generated/services/transfer.js +4 -4
  440. package/lib/generated/services/transform-custom.js +3 -3
  441. package/lib/generated/services/transform.js +3 -3
  442. package/lib/generated/services/translate.js +4 -4
  443. package/lib/generated/services/trustedadvisor.js +3 -3
  444. package/lib/generated/services/ts.js +3 -3
  445. package/lib/generated/services/user-subscriptions.js +2 -2
  446. package/lib/generated/services/uxc.js +2 -2
  447. package/lib/generated/services/vendor-insights.js +3 -3
  448. package/lib/generated/services/verified-access.js +1 -1
  449. package/lib/generated/services/verifiedpermissions.js +4 -4
  450. package/lib/generated/services/voiceid.js +4 -4
  451. package/lib/generated/services/vpc-lattice-svcs.js +3 -3
  452. package/lib/generated/services/vpc-lattice.js +4 -4
  453. package/lib/generated/services/vpce.js +2 -2
  454. package/lib/generated/services/waf-regional.js +4 -4
  455. package/lib/generated/services/waf.js +4 -4
  456. package/lib/generated/services/wafv2.d.ts +4 -0
  457. package/lib/generated/services/wafv2.js +11 -5
  458. package/lib/generated/services/wam.js +1 -1
  459. package/lib/generated/services/wellarchitected.js +4 -4
  460. package/lib/generated/services/wickr.js +4 -4
  461. package/lib/generated/services/wisdom.js +4 -4
  462. package/lib/generated/services/workdocs.js +3 -3
  463. package/lib/generated/services/worklink.js +3 -3
  464. package/lib/generated/services/workmail.js +4 -4
  465. package/lib/generated/services/workmailmessageflow.js +3 -3
  466. package/lib/generated/services/workspaces-instances.js +4 -4
  467. package/lib/generated/services/workspaces-web.js +4 -4
  468. package/lib/generated/services/workspaces.js +4 -4
  469. package/lib/generated/services/xray.js +4 -4
  470. package/package.json +1 -1
@@ -16,11 +16,13 @@ class ObservabilityadminActions {
16
16
  }
17
17
  exports.ObservabilityadminActions = ObservabilityadminActions;
18
18
  _a = JSII_RTTI_SYMBOL_1;
19
- ObservabilityadminActions[_a] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminActions", version: "1.28.0" };
19
+ ObservabilityadminActions[_a] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminActions", version: "1.30.0" };
20
20
  /** The IAM service prefix. */
21
21
  ObservabilityadminActions.SERVICE_PREFIX = "observabilityadmin";
22
22
  /** [Write] observabilityadmin:CreateCentralizationRuleForOrganization */
23
23
  ObservabilityadminActions.CreateCentralizationRuleForOrganization = "observabilityadmin:CreateCentralizationRuleForOrganization";
24
+ /** [Write] observabilityadmin:CreateDatasetIntegration */
25
+ ObservabilityadminActions.CreateDatasetIntegration = "observabilityadmin:CreateDatasetIntegration";
24
26
  /** [Write] observabilityadmin:CreateS3TableIntegration */
25
27
  ObservabilityadminActions.CreateS3TableIntegration = "observabilityadmin:CreateS3TableIntegration";
26
28
  /** [Write] observabilityadmin:CreateTelemetryPipeline */
@@ -31,6 +33,8 @@ ObservabilityadminActions.CreateTelemetryRule = "observabilityadmin:CreateTeleme
31
33
  ObservabilityadminActions.CreateTelemetryRuleForOrganization = "observabilityadmin:CreateTelemetryRuleForOrganization";
32
34
  /** [Write] observabilityadmin:DeleteCentralizationRuleForOrganization */
33
35
  ObservabilityadminActions.DeleteCentralizationRuleForOrganization = "observabilityadmin:DeleteCentralizationRuleForOrganization";
36
+ /** [Write] observabilityadmin:DeleteDatasetIntegration */
37
+ ObservabilityadminActions.DeleteDatasetIntegration = "observabilityadmin:DeleteDatasetIntegration";
34
38
  /** [Write] observabilityadmin:DeleteS3TableIntegration */
35
39
  ObservabilityadminActions.DeleteS3TableIntegration = "observabilityadmin:DeleteS3TableIntegration";
36
40
  /** [Write] observabilityadmin:DeleteTelemetryPipeline */
@@ -41,6 +45,8 @@ ObservabilityadminActions.DeleteTelemetryRule = "observabilityadmin:DeleteTeleme
41
45
  ObservabilityadminActions.DeleteTelemetryRuleForOrganization = "observabilityadmin:DeleteTelemetryRuleForOrganization";
42
46
  /** [Read] observabilityadmin:GetCentralizationRuleForOrganization */
43
47
  ObservabilityadminActions.actionGetCentralizationRuleForOrganization = "observabilityadmin:GetCentralizationRuleForOrganization";
48
+ /** [Read] observabilityadmin:GetDatasetIntegration */
49
+ ObservabilityadminActions.actionGetDatasetIntegration = "observabilityadmin:GetDatasetIntegration";
44
50
  /** [Read] observabilityadmin:GetS3TableIntegration */
45
51
  ObservabilityadminActions.actionGetS3TableIntegration = "observabilityadmin:GetS3TableIntegration";
46
52
  /** [Read] observabilityadmin:GetTelemetryEnrichmentStatus */
@@ -57,6 +63,8 @@ ObservabilityadminActions.actionGetTelemetryRule = "observabilityadmin:GetTeleme
57
63
  ObservabilityadminActions.actionGetTelemetryRuleForOrganization = "observabilityadmin:GetTelemetryRuleForOrganization";
58
64
  /** [List] observabilityadmin:ListCentralizationRulesForOrganization */
59
65
  ObservabilityadminActions.ListCentralizationRulesForOrganization = "observabilityadmin:ListCentralizationRulesForOrganization";
66
+ /** [List] observabilityadmin:ListDatasetIntegrations */
67
+ ObservabilityadminActions.ListDatasetIntegrations = "observabilityadmin:ListDatasetIntegrations";
60
68
  /** [Read] observabilityadmin:ListResourceTelemetry */
61
69
  ObservabilityadminActions.ListResourceTelemetry = "observabilityadmin:ListResourceTelemetry";
62
70
  /** [Read] observabilityadmin:ListResourceTelemetryForOrganization */
@@ -91,6 +99,8 @@ ObservabilityadminActions.TestTelemetryPipeline = "observabilityadmin:TestTeleme
91
99
  ObservabilityadminActions.UntagResource = "observabilityadmin:UntagResource";
92
100
  /** [Write] observabilityadmin:UpdateCentralizationRuleForOrganization */
93
101
  ObservabilityadminActions.UpdateCentralizationRuleForOrganization = "observabilityadmin:UpdateCentralizationRuleForOrganization";
102
+ /** [Write] observabilityadmin:UpdateDatasetIntegration */
103
+ ObservabilityadminActions.UpdateDatasetIntegration = "observabilityadmin:UpdateDatasetIntegration";
94
104
  /** [Write] observabilityadmin:UpdateTelemetryPipeline */
95
105
  ObservabilityadminActions.UpdateTelemetryPipeline = "observabilityadmin:UpdateTelemetryPipeline";
96
106
  /** [Write] observabilityadmin:UpdateTelemetryRule */
@@ -102,6 +112,7 @@ ObservabilityadminActions.ValidateTelemetryPipelineConfiguration = "observabilit
102
112
  /** All read-level actions. */
103
113
  ObservabilityadminActions.AllReadActions = [
104
114
  ObservabilityadminActions.actionGetCentralizationRuleForOrganization,
115
+ ObservabilityadminActions.actionGetDatasetIntegration,
105
116
  ObservabilityadminActions.actionGetS3TableIntegration,
106
117
  ObservabilityadminActions.actionGetTelemetryEnrichmentStatus,
107
118
  ObservabilityadminActions.actionGetTelemetryEvaluationStatus,
@@ -117,11 +128,13 @@ ObservabilityadminActions.AllReadActions = [
117
128
  /** All write-level actions. */
118
129
  ObservabilityadminActions.AllWriteActions = [
119
130
  ObservabilityadminActions.CreateCentralizationRuleForOrganization,
131
+ ObservabilityadminActions.CreateDatasetIntegration,
120
132
  ObservabilityadminActions.CreateS3TableIntegration,
121
133
  ObservabilityadminActions.CreateTelemetryPipeline,
122
134
  ObservabilityadminActions.CreateTelemetryRule,
123
135
  ObservabilityadminActions.CreateTelemetryRuleForOrganization,
124
136
  ObservabilityadminActions.DeleteCentralizationRuleForOrganization,
137
+ ObservabilityadminActions.DeleteDatasetIntegration,
125
138
  ObservabilityadminActions.DeleteS3TableIntegration,
126
139
  ObservabilityadminActions.DeleteTelemetryPipeline,
127
140
  ObservabilityadminActions.DeleteTelemetryRule,
@@ -133,6 +146,7 @@ ObservabilityadminActions.AllWriteActions = [
133
146
  ObservabilityadminActions.StopTelemetryEvaluation,
134
147
  ObservabilityadminActions.StopTelemetryEvaluationForOrganization,
135
148
  ObservabilityadminActions.UpdateCentralizationRuleForOrganization,
149
+ ObservabilityadminActions.UpdateDatasetIntegration,
136
150
  ObservabilityadminActions.UpdateTelemetryPipeline,
137
151
  ObservabilityadminActions.UpdateTelemetryRule,
138
152
  ObservabilityadminActions.UpdateTelemetryRuleForOrganization,
@@ -140,6 +154,7 @@ ObservabilityadminActions.AllWriteActions = [
140
154
  /** All list-level actions. */
141
155
  ObservabilityadminActions.AllListActions = [
142
156
  ObservabilityadminActions.ListCentralizationRulesForOrganization,
157
+ ObservabilityadminActions.ListDatasetIntegrations,
143
158
  ObservabilityadminActions.ListS3TableIntegrations,
144
159
  ObservabilityadminActions.ListTagsForResource,
145
160
  ObservabilityadminActions.ListTelemetryPipelines,
@@ -153,6 +168,7 @@ ObservabilityadminActions.AllTaggingActions = [
153
168
  ObservabilityadminActions.TagResource,
154
169
  ObservabilityadminActions.UntagResource,
155
170
  ];
171
+ const DatasetIntegrationArnRegex = /^arn:(?<partition>[^:]+):observabilityadmin:(?<region>[^:]*):(?<account>[^:]*):dataset-integration\/(?<datasetIntegrationIdentifier>[^:/?]+)$/;
156
172
  const OrganizationCentralizationRuleArnRegex = /^arn:(?<partition>[^:]+):observabilityadmin:(?<region>[^:]*):(?<account>[^:]*):organization-centralization-rule\/(?<centralizationRuleName>[^:/?]+)$/;
157
173
  const OrganizationTelemetryRuleArnRegex = /^arn:(?<partition>[^:]+):observabilityadmin:(?<region>[^:]*):(?<account>[^:]*):organization-telemetry-rule\/(?<telemetryRuleName>[^:/?]+)$/;
158
174
  const S3tableintegrationArnRegex = /^arn:(?<partition>[^:]+):observabilityadmin:(?<region>[^:]*):(?<account>[^:]*):s3tableintegration\/(?<s3TableIntegrationIdentifier>[^:/?]+)$/;
@@ -162,6 +178,34 @@ const TelemetryRuleArnRegex = /^arn:(?<partition>[^:]+):observabilityadmin:(?<re
162
178
  * ARN builders, validators, and parsers for observabilityadmin resources.
163
179
  */
164
180
  class ObservabilityadminResources {
181
+ /**
182
+ * Builds an ARN for the dataset-integration resource.
183
+ */
184
+ static datasetIntegration(props) {
185
+ return `arn:${props.partition ?? "aws"}:observabilityadmin:${props.region ?? "*"}:${props.account ?? "*"}:dataset-integration/${props.datasetIntegrationIdentifier}`;
186
+ }
187
+ /**
188
+ * Validates whether a string is a valid ARN for the dataset-integration resource.
189
+ */
190
+ static isValidDatasetIntegrationArn(arn) {
191
+ return DatasetIntegrationArnRegex.test(arn);
192
+ }
193
+ /**
194
+ * Parses a dataset-integration ARN into its components.
195
+ * @throws Error if the ARN does not match the expected format.
196
+ */
197
+ static parseDatasetIntegrationArn(arn) {
198
+ const match = DatasetIntegrationArnRegex.exec(arn);
199
+ if (!match?.groups) {
200
+ throw new Error(`Invalid dataset-integration ARN: ${arn}`);
201
+ }
202
+ return {
203
+ partition: match.groups.partition,
204
+ region: match.groups.region,
205
+ account: match.groups.account,
206
+ datasetIntegrationIdentifier: match.groups.datasetIntegrationIdentifier,
207
+ };
208
+ }
165
209
  /**
166
210
  * Builds an ARN for the organization-centralization-rule resource.
167
211
  */
@@ -305,7 +349,7 @@ class ObservabilityadminResources {
305
349
  }
306
350
  exports.ObservabilityadminResources = ObservabilityadminResources;
307
351
  _b = JSII_RTTI_SYMBOL_1;
308
- ObservabilityadminResources[_b] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminResources", version: "1.28.0" };
352
+ ObservabilityadminResources[_b] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminResources", version: "1.30.0" };
309
353
  /**
310
354
  * API operation to required IAM actions mapping for observabilityadmin.
311
355
  */
@@ -313,12 +357,18 @@ class ObservabilityadminOperations {
313
357
  }
314
358
  exports.ObservabilityadminOperations = ObservabilityadminOperations;
315
359
  _c = JSII_RTTI_SYMBOL_1;
316
- ObservabilityadminOperations[_c] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminOperations", version: "1.28.0" };
360
+ ObservabilityadminOperations[_c] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminOperations", version: "1.30.0" };
317
361
  /** IAM actions required for the CreateCentralizationRuleForOrganization API call. */
318
362
  ObservabilityadminOperations.CreateCentralizationRuleForOrganization = [
319
363
  "observabilityadmin:CreateCentralizationRuleForOrganization",
320
364
  "observabilityadmin:TagResource",
321
365
  ];
366
+ /** IAM actions required for the CreateDatasetIntegration API call. */
367
+ ObservabilityadminOperations.CreateDatasetIntegration = [
368
+ "observabilityadmin:CreateDatasetIntegration",
369
+ "iam:PassRole",
370
+ "observabilityadmin:TagResource",
371
+ ];
322
372
  /** IAM actions required for the CreateS3TableIntegration API call. */
323
373
  ObservabilityadminOperations.CreateS3TableIntegration = [
324
374
  "observabilityadmin:CreateS3TableIntegration",
@@ -329,7 +379,6 @@ ObservabilityadminOperations.CreateS3TableIntegration = [
329
379
  ObservabilityadminOperations.CreateTelemetryPipeline = [
330
380
  "observabilityadmin:CreateTelemetryPipeline",
331
381
  "iam:PassRole",
332
- "cloudwatch:PutPipelineRule",
333
382
  "observabilityadmin:TagResource",
334
383
  ];
335
384
  /** IAM actions required for the CreateTelemetryRule API call. */
@@ -346,13 +395,16 @@ ObservabilityadminOperations.CreateTelemetryRuleForOrganization = [
346
395
  ObservabilityadminOperations.DeleteCentralizationRuleForOrganization = [
347
396
  "observabilityadmin:DeleteCentralizationRuleForOrganization",
348
397
  ];
398
+ /** IAM actions required for the DeleteDatasetIntegration API call. */
399
+ ObservabilityadminOperations.DeleteDatasetIntegration = [
400
+ "observabilityadmin:DeleteDatasetIntegration",
401
+ ];
349
402
  /** IAM actions required for the DeleteS3TableIntegration API call. */
350
403
  ObservabilityadminOperations.DeleteS3TableIntegration = [
351
404
  "observabilityadmin:DeleteS3TableIntegration",
352
405
  ];
353
406
  /** IAM actions required for the DeleteTelemetryPipeline API call. */
354
407
  ObservabilityadminOperations.DeleteTelemetryPipeline = [
355
- "cloudwatch:DeletePipelineRule",
356
408
  "observabilityadmin:DeleteTelemetryPipeline",
357
409
  ];
358
410
  /** IAM actions required for the DeleteTelemetryRule API call. */
@@ -367,6 +419,10 @@ ObservabilityadminOperations.DeleteTelemetryRuleForOrganization = [
367
419
  ObservabilityadminOperations.opGetCentralizationRuleForOrganization = [
368
420
  "observabilityadmin:GetCentralizationRuleForOrganization",
369
421
  ];
422
+ /** IAM actions required for the GetDatasetIntegration API call. */
423
+ ObservabilityadminOperations.opGetDatasetIntegration = [
424
+ "observabilityadmin:GetDatasetIntegration",
425
+ ];
370
426
  /** IAM actions required for the GetS3TableIntegration API call. */
371
427
  ObservabilityadminOperations.opGetS3TableIntegration = [
372
428
  "observabilityadmin:GetS3TableIntegration",
@@ -399,6 +455,10 @@ ObservabilityadminOperations.opGetTelemetryRuleForOrganization = [
399
455
  ObservabilityadminOperations.ListCentralizationRulesForOrganization = [
400
456
  "observabilityadmin:ListCentralizationRulesForOrganization",
401
457
  ];
458
+ /** IAM actions required for the ListDatasetIntegrations API call. */
459
+ ObservabilityadminOperations.ListDatasetIntegrations = [
460
+ "observabilityadmin:ListDatasetIntegrations",
461
+ ];
402
462
  /** IAM actions required for the ListResourceTelemetry API call. */
403
463
  ObservabilityadminOperations.ListResourceTelemetry = [
404
464
  "observabilityadmin:ListResourceTelemetry",
@@ -465,10 +525,14 @@ ObservabilityadminOperations.UntagResource = [
465
525
  ObservabilityadminOperations.UpdateCentralizationRuleForOrganization = [
466
526
  "observabilityadmin:UpdateCentralizationRuleForOrganization",
467
527
  ];
528
+ /** IAM actions required for the UpdateDatasetIntegration API call. */
529
+ ObservabilityadminOperations.UpdateDatasetIntegration = [
530
+ "iam:PassRole",
531
+ "observabilityadmin:UpdateDatasetIntegration",
532
+ ];
468
533
  /** IAM actions required for the UpdateTelemetryPipeline API call. */
469
534
  ObservabilityadminOperations.UpdateTelemetryPipeline = [
470
535
  "iam:PassRole",
471
- "cloudwatch:PutPipelineRule",
472
536
  "observabilityadmin:UpdateTelemetryPipeline",
473
537
  ];
474
538
  /** IAM actions required for the UpdateTelemetryRule API call. */
@@ -576,7 +640,7 @@ class ObservabilityadminConditions {
576
640
  }
577
641
  exports.ObservabilityadminConditions = ObservabilityadminConditions;
578
642
  _d = JSII_RTTI_SYMBOL_1;
579
- ObservabilityadminConditions[_d] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminConditions", version: "1.28.0" };
643
+ ObservabilityadminConditions[_d] = { fqn: "@cdk_utils/iam.observabilityadmin.ObservabilityadminConditions", version: "1.30.0" };
580
644
  /** Condition keys applicable to the CreateCentralizationRuleForOrganization action. */
581
645
  ObservabilityadminConditions.CreateCentralizationRuleForOrganizationConditionKeys = [
582
646
  "aws:RequestTag/${TagKey}",
@@ -588,6 +652,11 @@ ObservabilityadminConditions.CreateCentralizationRuleForOrganizationConditionKey
588
652
  "observabilityadmin:CentralizationSourceId",
589
653
  "observabilityadmin:CentralizationSourceRegions",
590
654
  ];
655
+ /** Condition keys applicable to the CreateDatasetIntegration action. */
656
+ ObservabilityadminConditions.CreateDatasetIntegrationConditionKeys = [
657
+ "aws:RequestTag/${TagKey}",
658
+ "aws:TagKeys",
659
+ ];
591
660
  /** Condition keys applicable to the CreateS3TableIntegration action. */
592
661
  ObservabilityadminConditions.CreateS3TableIntegrationConditionKeys = [
593
662
  "aws:RequestTag/${TagKey}",
@@ -673,4 +742,4 @@ ObservabilityadminConditions.CENTRALIZATION_SOURCE_REGIONS = "observabilityadmin
673
742
  ObservabilityadminConditions.SOURCE_TYPE = "observabilityadmin:SourceType";
674
743
  /** Condition key: observabilityadmin:TargetRegions (String) */
675
744
  ObservabilityadminConditions.TARGET_REGIONS = "observabilityadmin:TargetRegions";
676
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eWFkbWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9vYnNlcnZhYmlsaXR5YWRtaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCx5REFBeUQ7QUFDekQsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEseUJBQXlCOztBQUF0Qyw4REFnTEM7OztBQS9LQSw4QkFBOEI7QUFDZCx3Q0FBYyxHQUFHLG9CQUFvQixDQUFDO0FBRXRELHlFQUF5RTtBQUN6RCxpRUFBdUMsR0FDdEQsNERBQTRELENBQUM7QUFDOUQsMERBQTBEO0FBQzFDLGtEQUF3QixHQUN2Qyw2Q0FBNkMsQ0FBQztBQUMvQyx5REFBeUQ7QUFDekMsaURBQXVCLEdBQ3RDLDRDQUE0QyxDQUFDO0FBQzlDLHFEQUFxRDtBQUNyQyw2Q0FBbUIsR0FDbEMsd0NBQXdDLENBQUM7QUFDMUMsb0VBQW9FO0FBQ3BELDREQUFrQyxHQUNqRCx1REFBdUQsQ0FBQztBQUN6RCx5RUFBeUU7QUFDekQsaUVBQXVDLEdBQ3RELDREQUE0RCxDQUFDO0FBQzlELDBEQUEwRDtBQUMxQyxrREFBd0IsR0FDdkMsNkNBQTZDLENBQUM7QUFDL0MseURBQXlEO0FBQ3pDLGlEQUF1QixHQUN0Qyw0Q0FBNEMsQ0FBQztBQUM5QyxxREFBcUQ7QUFDckMsNkNBQW1CLEdBQ2xDLHdDQUF3QyxDQUFDO0FBQzFDLG9FQUFvRTtBQUNwRCw0REFBa0MsR0FDakQsdURBQXVELENBQUM7QUFDekQscUVBQXFFO0FBQ3JELG9FQUEwQyxHQUN6RCx5REFBeUQsQ0FBQztBQUMzRCxzREFBc0Q7QUFDdEMscURBQTJCLEdBQzFDLDBDQUEwQyxDQUFDO0FBQzVDLDZEQUE2RDtBQUM3Qyw0REFBa0MsR0FDakQsaURBQWlELENBQUM7QUFDbkQsNkRB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Q0FBa0M7Q0FDbEMsQ0FBQztBQUNGLGtGQUFrRjtBQUNsRSw0RUFBK0MsR0FBYTtJQUMzRSxrQ0FBa0M7Q0FDbEMsQ0FBQztBQUVGLHVEQUF1RDtBQUN2Qyw0Q0FBZSxHQUFHLDBCQUEwQixDQUFDO0FBQzdELHdEQUF3RDtBQUN4Qyw2Q0FBZ0IsR0FBRywyQkFBMkIsQ0FBQztBQUMvRCxpREFBaUQ7QUFDakMseUNBQVksR0FBRyxhQUFhLENBQUM7QUFDN0MsNEVBQTRFO0FBQzVELHlEQUE0QixHQUMzQywrQ0FBK0MsQ0FBQztBQUNqRCxrRkFBa0Y7QUFDbEUsK0RBQWtDLEdBQ2pELHFEQUFxRCxDQUFDO0FBQ3ZELGlGQUFpRjtBQUNqRSw4REFBaUMsR0FDaEQsb0RBQW9ELENBQUM7QUFDdEQsd0VBQXdFO0FBQ3hELHFEQUF3QixHQUN2QywyQ0FBMkMsQ0FBQztBQUM3QywrRUFBK0U7QUFDL0QscURBQXdCLEdBQ3ZDLDJDQUEyQyxDQUFDO0FBQzdDLG9GQUFvRjtBQUNwRSwwREFBNkIsR0FDNUMsZ0RBQWdELENBQUM7QUFDbEQsNERBQTREO0FBQzVDLHdDQUFXLEdBQUcsK0JBQStCLENBQUM7QUFDOUQsK0RBQStEO0FBQy9DLDJDQUFjLEdBQUcsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUTy1HRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQgTUFOVUFMTFlcbi8vIEdlbmVyYXRlZCBmcm9tIEFXUyBTZXJ2aWNlIEF1dGhvcml6YXRpb24gUmVmZXJlbmNlIGRhdGFcbi8vIFNvdXJjZTogZGF0YS9zZXJ2aWNlLXJlZmVyZW5jZS9vYnNlcnZhYmlsaXR5YWRtaW4uanNvblxuLy8gUnVuIGBucHggcHJvamVuIGdlbmVyYXRlLWNvbnN0YW50c2AgdG8gcmVnZW5lcmF0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJQU0gYWN0aW9uIGNvbnN0YW50cyBmb3IgdGhlIG9ic2VydmFiaWxpdHlhZG1pbiBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucyB7XG5cdC8qKiBUaGUgSUFNIHNlcnZpY2UgcHJlZml4LiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU0VSVklDRV9QUkVGSVggPSBcIm9ic2VydmFiaWxpdHlhZG1pblwiO1xuXG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVTM1RhYmxlSW50ZWdyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVMzVGFibGVJbnRlZ3JhdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlUzNUYWJsZUludGVncmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVUZWxlbWV0cnlQaXBlbGluZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVUZWxlbWV0cnlSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZWxlbWV0cnlSdWxlID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVUZWxlbWV0cnlSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVTM1RhYmxlSW50ZWdyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlUzNUYWJsZUludGVncmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlQaXBlbGluZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGVsZW1ldHJ5UGlwZWxpbmUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUZWxlbWV0cnlSdWxlID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkdldENlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46R2V0UzNUYWJsZUludGVncmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRTM1RhYmxlSW50ZWdyYXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFMzVGFibGVJbnRlZ3JhdGlvblwiO1xuXHQvKiogW1JlYWRdIG9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlFbnJpY2htZW50U3RhdHVzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRUZWxlbWV0cnlFbnJpY2htZW50U3RhdHVzID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlFbnJpY2htZW50U3RhdHVzXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXMgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNcIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5RXZhbHVhdGlvblN0YXR1c0Zvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VGVsZW1ldHJ5RXZhbHVhdGlvblN0YXR1c0Zvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5RXZhbHVhdGlvblN0YXR1c0Zvck9yZ2FuaXphdGlvblwiO1xuXHQvKiogW1JlYWRdIG9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlQaXBlbGluZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VGVsZW1ldHJ5UGlwZWxpbmUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeVBpcGVsaW5lXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRlbGVtZXRyeVJ1bGUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeVJ1bGVcIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvblwiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0Q2VudHJhbGl6YXRpb25SdWxlc0Zvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENlbnRyYWxpemF0aW9uUnVsZXNGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RDZW50cmFsaXphdGlvblJ1bGVzRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RSZXNvdXJjZVRlbGVtZXRyeSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlVGVsZW1ldHJ5ID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0UmVzb3VyY2VUZWxlbWV0cnlcIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVzb3VyY2VUZWxlbWV0cnlGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvblwiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0UzNUYWJsZUludGVncmF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFMzVGFibGVJbnRlZ3JhdGlvbnMgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RTM1RhYmxlSW50ZWdyYXRpb25zXCI7XG5cdC8qKiBbTGlzdF0gb2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUYWdzRm9yUmVzb3VyY2VcIjtcblx0LyoqIFtMaXN0XSBvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVBpcGVsaW5lcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRlbGVtZXRyeVBpcGVsaW5lcyA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVBpcGVsaW5lc1wiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UnVsZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlSdWxlcyA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUZWxlbWV0cnlSdWxlc1wiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UnVsZXNGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlSdWxlc0Zvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVJ1bGVzRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUVucmljaG1lbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RW5yaWNobWVudCA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFbnJpY2htZW50XCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUV2YWx1YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdG9wVGVsZW1ldHJ5RW5yaWNobWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUVucmljaG1lbnQgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFbnJpY2htZW50XCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdG9wVGVsZW1ldHJ5RXZhbHVhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdG9wVGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbVGFnZ2luZ10gb2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZSA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOlRlc3RUZWxlbWV0cnlQaXBlbGluZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGVzdFRlbGVtZXRyeVBpcGVsaW5lID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUZXN0VGVsZW1ldHJ5UGlwZWxpbmVcIjtcblx0LyoqIFtUYWdnaW5nXSBvYnNlcnZhYmlsaXR5YWRtaW46VW50YWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZSA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOlVudGFnUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpVcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVBpcGVsaW5lICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUZWxlbWV0cnlQaXBlbGluZSA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VXBkYXRlVGVsZW1ldHJ5UGlwZWxpbmVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbGVtZXRyeVJ1bGUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46VmFsaWRhdGVUZWxlbWV0cnlQaXBlbGluZUNvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFZhbGlkYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25maWd1cmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpWYWxpZGF0ZVRlbGVtZXRyeVBpcGVsaW5lQ29uZmlndXJhdGlvblwiO1xuXG5cdC8qKiBBbGwgcmVhZC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUmVhZEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0UzNUYWJsZUludGVncmF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1cyxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLmFjdGlvbkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXMsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5hY3Rpb25HZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0VGVsZW1ldHJ5UGlwZWxpbmUsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5hY3Rpb25HZXRUZWxlbWV0cnlSdWxlLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0VGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RSZXNvdXJjZVRlbGVtZXRyeSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlRlc3RUZWxlbWV0cnlQaXBlbGluZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlZhbGlkYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25maWd1cmF0aW9uLFxuXHRdO1xuXHQvKiogQWxsIHdyaXRlLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlUzNUYWJsZUludGVncmF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmUsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5DcmVhdGVUZWxlbWV0cnlSdWxlLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuRGVsZXRlVGVsZW1ldHJ5UnVsZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdGFydFRlbGVtZXRyeUVucmljaG1lbnQsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdGFydFRlbGVtZXRyeUV2YWx1YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdG9wVGVsZW1ldHJ5RW5yaWNobWVudCxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuU3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVUZWxlbWV0cnlQaXBlbGluZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlVwZGF0ZVRlbGVtZXRyeVJ1bGUsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RDZW50cmFsaXphdGlvblJ1bGVzRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuTGlzdFMzVGFibGVJbnRlZ3JhdGlvbnMsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5MaXN0VGFnc0ZvclJlc291cmNlLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuTGlzdFRlbGVtZXRyeVBpcGVsaW5lcyxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RUZWxlbWV0cnlSdWxlcyxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RUZWxlbWV0cnlSdWxlc0Zvck9yZ2FuaXphdGlvbixcblx0XTtcblx0LyoqIEFsbCBwZXJtaXNzaW9uLW1hbmFnZW1lbnQtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFBlcm1pc3Npb25NYW5hZ2VtZW50QWN0aW9uczogc3RyaW5nW10gPSBbXTtcblx0LyoqIEFsbCB0YWdnaW5nLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxUYWdnaW5nQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5UYWdSZXNvdXJjZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlVudGFnUmVzb3VyY2UsXG5cdF07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBvcmdhbml6YXRpb24tY2VudHJhbGl6YXRpb24tcnVsZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuUHJvcHMge1xuXHQvKiogVGhlIENlbnRyYWxpemF0aW9uUnVsZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGNlbnRyYWxpemF0aW9uUnVsZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBvcmdhbml6YXRpb24tY2VudHJhbGl6YXRpb24tcnVsZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBDZW50cmFsaXphdGlvblJ1bGVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgY2VudHJhbGl6YXRpb25SdWxlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmlsaXR5YWRtaW5Pcmdhbml6YXRpb25UZWxlbWV0cnlSdWxlQXJuUHJvcHMge1xuXHQvKiogVGhlIFRlbGVtZXRyeVJ1bGVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSB0ZWxlbWV0cnlSdWxlTmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIG9yZ2FuaXphdGlvbi10ZWxlbWV0cnktcnVsZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluT3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgVGVsZW1ldHJ5UnVsZU5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0ZWxlbWV0cnlSdWxlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgczN0YWJsZWludGVncmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmlsaXR5YWRtaW5TM3RhYmxlaW50ZWdyYXRpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUzNUYWJsZUludGVncmF0aW9uSWRlbnRpZmllciBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgczNUYWJsZUludGVncmF0aW9uSWRlbnRpZmllcjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHMzdGFibGVpbnRlZ3JhdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluUzN0YWJsZWludGVncmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBTM1RhYmxlSW50ZWdyYXRpb25JZGVudGlmaWVyIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgczNUYWJsZUludGVncmF0aW9uSWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgdGVsZW1ldHJ5LXBpcGVsaW5lIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmlsaXR5YWRtaW5UZWxlbWV0cnlQaXBlbGluZUFyblByb3BzIHtcblx0LyoqIFRoZSBUZWxlbWV0cnlQaXBlbGluZUlkZW50aWZpZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHRlbGVtZXRyeS1waXBlbGluZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluVGVsZW1ldHJ5UGlwZWxpbmVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgdGVsZW1ldHJ5LXJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVJ1bGVBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgVGVsZW1ldHJ5UnVsZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHRlbGVtZXRyeVJ1bGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdGVsZW1ldHJ5LXJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVJ1bGVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFRlbGVtZXRyeVJ1bGVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgdGVsZW1ldHJ5UnVsZU5hbWU6IHN0cmluZztcbn1cblxuY29uc3QgT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm9ic2VydmFiaWxpdHlhZG1pbjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOm9yZ2FuaXphdGlvbi1jZW50cmFsaXphdGlvbi1ydWxlXFwvKD88Y2VudHJhbGl6YXRpb25SdWxlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgT3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpvYnNlcnZhYmlsaXR5YWRtaW46KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGVcXC8oPzx0ZWxlbWV0cnlSdWxlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgUzN0YWJsZWludGVncmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm9ic2VydmFiaWxpdHlhZG1pbjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnMzdGFibGVpbnRlZ3JhdGlvblxcLyg/PHMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXI+W146Lz9dKykkLztcbmNvbnN0IFRlbGVtZXRyeVBpcGVsaW5lQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm9ic2VydmFiaWxpdHlhZG1pbjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRlbGVtZXRyeS1waXBlbGluZVxcLyg/PHRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcj5bXjovP10rKSQvO1xuY29uc3QgVGVsZW1ldHJ5UnVsZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpvYnNlcnZhYmlsaXR5YWRtaW46KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0ZWxlbWV0cnktcnVsZVxcLyg/PHRlbGVtZXRyeVJ1bGVOYW1lPlteOi8/XSspJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3Igb2JzZXJ2YWJpbGl0eWFkbWluIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmFiaWxpdHlhZG1pblJlc291cmNlcyB7XG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgb3JnYW5pemF0aW9uLWNlbnRyYWxpemF0aW9uLXJ1bGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgb3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlKFxuXHRcdHByb3BzOiBPYnNlcnZhYmlsaXR5YWRtaW5Pcmdhbml6YXRpb25DZW50cmFsaXphdGlvblJ1bGVBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpvYnNlcnZhYmlsaXR5YWRtaW46JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06b3JnYW5pemF0aW9uLWNlbnRyYWxpemF0aW9uLXJ1bGUvJHtwcm9wcy5jZW50cmFsaXphdGlvblJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBvcmdhbml6YXRpb24tY2VudHJhbGl6YXRpb24tcnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIE9yZ2FuaXphdGlvbkNlbnRyYWxpemF0aW9uUnVsZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBvcmdhbml6YXRpb24tY2VudHJhbGl6YXRpb24tcnVsZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VPcmdhbml6YXRpb25DZW50cmFsaXphdGlvblJ1bGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvbkNlbnRyYWxpemF0aW9uUnVsZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG9yZ2FuaXphdGlvbi1jZW50cmFsaXphdGlvbi1ydWxlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGNlbnRyYWxpemF0aW9uUnVsZU5hbWU6IG1hdGNoLmdyb3VwcyEuY2VudHJhbGl6YXRpb25SdWxlTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgb3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZShcblx0XHRwcm9wczogT2JzZXJ2YWJpbGl0eWFkbWluT3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZUFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGUvJHtwcm9wcy50ZWxlbWV0cnlSdWxlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRPcmdhbml6YXRpb25UZWxlbWV0cnlSdWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIE9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZU9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IE9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHRlbGVtZXRyeVJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnRlbGVtZXRyeVJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHMzdGFibGVpbnRlZ3JhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBzM3RhYmxlaW50ZWdyYXRpb24oXG5cdFx0cHJvcHM6IE9ic2VydmFiaWxpdHlhZG1pblMzdGFibGVpbnRlZ3JhdGlvbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpzM3RhYmxlaW50ZWdyYXRpb24vJHtwcm9wcy5zM1RhYmxlSW50ZWdyYXRpb25JZGVudGlmaWVyfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBzM3RhYmxlaW50ZWdyYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFMzdGFibGVpbnRlZ3JhdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTM3RhYmxlaW50ZWdyYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgczN0YWJsZWludGVncmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVMzdGFibGVpbnRlZ3JhdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogT2JzZXJ2YWJpbGl0eWFkbWluUzN0YWJsZWludGVncmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBTM3RhYmxlaW50ZWdyYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgczN0YWJsZWludGVncmF0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXI6IG1hdGNoLmdyb3VwcyEuczNUYWJsZUludGVncmF0aW9uSWRlbnRpZmllcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0ZWxlbWV0cnktcGlwZWxpbmUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgdGVsZW1ldHJ5UGlwZWxpbmUoXG5cdFx0cHJvcHM6IE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVBpcGVsaW5lQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06b2JzZXJ2YWJpbGl0eWFkbWluOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRlbGVtZXRyeS1waXBlbGluZS8ke3Byb3BzLnRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcn1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgdGVsZW1ldHJ5LXBpcGVsaW5lIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUZWxlbWV0cnlQaXBlbGluZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZWxlbWV0cnlQaXBlbGluZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0ZWxlbWV0cnktcGlwZWxpbmUgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVGVsZW1ldHJ5UGlwZWxpbmVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVBpcGVsaW5lQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUZWxlbWV0cnlQaXBlbGluZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZWxlbWV0cnktcGlwZWxpbmUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0dGVsZW1ldHJ5UGlwZWxpbmVJZGVudGlmaWVyOiBtYXRjaC5ncm91cHMhLnRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0ZWxlbWV0cnktcnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0ZWxlbWV0cnlSdWxlKHByb3BzOiBPYnNlcnZhYmlsaXR5YWRtaW5UZWxlbWV0cnlSdWxlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTp0ZWxlbWV0cnktcnVsZS8ke3Byb3BzLnRlbGVtZXRyeVJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSB0ZWxlbWV0cnktcnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkVGVsZW1ldHJ5UnVsZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZWxlbWV0cnlSdWxlQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHRlbGVtZXRyeS1ydWxlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVRlbGVtZXRyeVJ1bGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVJ1bGVBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFRlbGVtZXRyeVJ1bGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVsZW1ldHJ5LXJ1bGUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0dGVsZW1ldHJ5UnVsZU5hbWU6IG1hdGNoLmdyb3VwcyEudGVsZW1ldHJ5UnVsZU5hbWUsXG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIEFQSSBvcGVyYXRpb24gdG8gcmVxdWlyZWQgSUFNIGFjdGlvbnMgbWFwcGluZyBmb3Igb2JzZXJ2YWJpbGl0eWFkbWluLlxuICovXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJpbGl0eWFkbWluT3BlcmF0aW9ucyB7XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlUzNUYWJsZUludGVncmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUzNUYWJsZUludGVncmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVTM1RhYmxlSW50ZWdyYXRpb25cIixcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmU6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lXCIsXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImNsb3Vkd2F0Y2g6UHV0UGlwZWxpbmVSdWxlXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlVGVsZW1ldHJ5UnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVJ1bGU6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVJ1bGVcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvblwiLFxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlUzNUYWJsZUludGVncmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGVsZW1ldHJ5UGlwZWxpbmU6IHN0cmluZ1tdID0gW1xuXHRcdFwiY2xvdWR3YXRjaDpEZWxldGVQaXBlbGluZVJ1bGVcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlQaXBlbGluZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVUZWxlbWV0cnlSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGVsZW1ldHJ5UnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlVGVsZW1ldHJ5UnVsZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldENlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFMzVGFibGVJbnRlZ3JhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0UzNUYWJsZUludGVncmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRTM1RhYmxlSW50ZWdyYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1czogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1c1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNGb3JPcmdhbml6YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0VGVsZW1ldHJ5UGlwZWxpbmUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFRlbGVtZXRyeVBpcGVsaW5lOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlQaXBlbGluZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUZWxlbWV0cnlSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUZWxlbWV0cnlSdWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlSdWxlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdENlbnRyYWxpemF0aW9uUnVsZXNGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0Q2VudHJhbGl6YXRpb25SdWxlc0Zvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdENlbnRyYWxpemF0aW9uUnVsZXNGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFJlc291cmNlVGVsZW1ldHJ5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlVGVsZW1ldHJ5OiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0UmVzb3VyY2VUZWxlbWV0cnlcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0UmVzb3VyY2VUZWxlbWV0cnlGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFMzVGFibGVJbnRlZ3JhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UzNUYWJsZUludGVncmF0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFMzVGFibGVJbnRlZ3JhdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhZ3NGb3JSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUYWdzRm9yUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRlbGVtZXRyeVBpcGVsaW5lcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlQaXBlbGluZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUZWxlbWV0cnlQaXBlbGluZXNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRlbGVtZXRyeVJ1bGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRlbGVtZXRyeVJ1bGVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UnVsZXNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRlbGVtZXRyeVJ1bGVzRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRlbGVtZXRyeVJ1bGVzRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UnVsZXNGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RhcnRUZWxlbWV0cnlFbnJpY2htZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRUZWxlbWV0cnlFbnJpY2htZW50OiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUVucmljaG1lbnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RvcFRlbGVtZXRyeUVucmljaG1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wVGVsZW1ldHJ5RW5yaWNobWVudDogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RvcFRlbGVtZXRyeUVucmljaG1lbnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wVGVsZW1ldHJ5RXZhbHVhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RvcFRlbGVtZXRyeUV2YWx1YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wVGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJvYnNlcnZhYmlsaXR5YWRtaW46VGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFRlc3RUZWxlbWV0cnlQaXBlbGluZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRlc3RUZWxlbWV0cnlQaXBlbGluZTogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGVzdFRlbGVtZXRyeVBpcGVsaW5lXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVudGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpVbnRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VXBkYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRlbGVtZXRyeVBpcGVsaW5lIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGVsZW1ldHJ5UGlwZWxpbmU6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJjbG91ZHdhdGNoOlB1dFBpcGVsaW5lUnVsZVwiLFxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVBpcGVsaW5lXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRlbGVtZXRyeVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUZWxlbWV0cnlSdWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpVcGRhdGVUZWxlbWV0cnlSdWxlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpVcGRhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFZhbGlkYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVmFsaWRhdGVUZWxlbWV0cnlQaXBlbGluZUNvbmZpZ3VyYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlZhbGlkYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25maWd1cmF0aW9uXCIsXG5cdF07XG59XG5cbi8qKlxuICogQ29uZGl0aW9uIGtleSBjb25zdGFudHMgYW5kIGJ1aWxkZXJzIGZvciBvYnNlcnZhYmlsaXR5YWRtaW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNlcnZhYmlsaXR5YWRtaW5Db25kaXRpb25zIHtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9XG5cdFx0W1xuXHRcdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uQmFja3VwUmVnaW9uXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uQWNjb3VudFwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvblJlZ2lvblwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25SdWxlTmFtZVwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VJZFwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VSZWdpb25zXCIsXG5cdFx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZVMzVGFibGVJbnRlZ3JhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVTM1RhYmxlSW50ZWdyYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U291cmNlVHlwZVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVGVsZW1ldHJ5UnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZWxlbWV0cnlSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgRGVsZXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID1cblx0XHRbXCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25SdWxlTmFtZVwiXTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldENlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9XG5cdFx0W1wib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uUnVsZU5hbWVcIl07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0UmVzb3VyY2VUZWxlbWV0cnkgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlVGVsZW1ldHJ5Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgTGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID1cblx0XHRbXCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiXTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPVxuXHRcdFtcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCJdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVudGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1wiYXdzOlRhZ0tleXNcIl07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPVxuXHRcdFtcblx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uQmFja3VwUmVnaW9uXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uQWNjb3VudFwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvblJlZ2lvblwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25SdWxlTmFtZVwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VJZFwiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VSZWdpb25zXCIsXG5cdFx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZVRlbGVtZXRyeVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGVsZW1ldHJ5UnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnNcIixcblx0XTtcblxuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVRVUVTVF9UQUcgPSBcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFU09VUkNFX1RBRyA9IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlRhZ0tleXMgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfVEFHX0tFWVMgPSBcImF3czpUYWdLZXlzXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25CYWNrdXBSZWdpb24gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENFTlRSQUxJWkFUSU9OX0JBQ0tVUF9SRUdJT04gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uQmFja3VwUmVnaW9uXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvbkFjY291bnQgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENFTlRSQUxJWkFUSU9OX0RFU1RJTkFUSU9OX0FDQ09VTlQgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25BY2NvdW50XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvblJlZ2lvbiAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ0VOVFJBTElaQVRJT05fREVTVElOQVRJT05fUkVHSU9OID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25SdWxlTmFtZSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ0VOVFJBTElaQVRJT05fUlVMRV9OQU1FID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblJ1bGVOYW1lXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VJZCAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENFTlRSQUxJWkFUSU9OX1NPVVJDRV9JRCA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VJZFwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogb2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uU291cmNlUmVnaW9ucyAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENFTlRSQUxJWkFUSU9OX1NPVVJDRV9SRUdJT05TID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZVJlZ2lvbnNcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpTb3VyY2VUeXBlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBTT1VSQ0VfVFlQRSA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOlNvdXJjZVR5cGVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBUQVJHRVRfUkVHSU9OUyA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnNcIjtcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXF1ZXN0VGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXNvdXJjZVRhZyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpUYWdLZXlzYC5cblx0ICovXG5cdHN0YXRpYyB0YWdLZXlzKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImF3czpUYWdLZXlzXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgb2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uQmFja3VwUmVnaW9uYC5cblx0ICovXG5cdHN0YXRpYyBjZW50cmFsaXphdGlvbkJhY2t1cFJlZ2lvbihcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFN0cmluZ0VxdWFsczogeyBcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkJhY2t1cFJlZ2lvblwiOiB2YWx1ZSB9LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgb2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25BY2NvdW50YC5cblx0ICovXG5cdHN0YXRpYyBjZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uQWNjb3VudChcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFN0cmluZ0VxdWFsczoge1xuXHRcdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uQWNjb3VudFwiOiB2YWx1ZSxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvblJlZ2lvbmAuXG5cdCAqL1xuXHRzdGF0aWMgY2VudHJhbGl6YXRpb25EZXN0aW5hdGlvblJlZ2lvbihcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFN0cmluZ0VxdWFsczoge1xuXHRcdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uXCI6IHZhbHVlLFxuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblJ1bGVOYW1lYC5cblx0ICovXG5cdHN0YXRpYyBjZW50cmFsaXphdGlvblJ1bGVOYW1lKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7IFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uUnVsZU5hbWVcIjogdmFsdWUgfSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZUlkYC5cblx0ICovXG5cdHN0YXRpYyBjZW50cmFsaXphdGlvblNvdXJjZUlkKFxuXHRcdHZhbHVlczogc3RyaW5nW10sXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjoge1xuXHRcdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZUlkXCI6IHZhbHVlcyxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VSZWdpb25zYC5cblx0ICovXG5cdHN0YXRpYyBjZW50cmFsaXphdGlvblNvdXJjZVJlZ2lvbnMoXG5cdFx0dmFsdWVzOiBzdHJpbmdbXSxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7XG5cdFx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uU291cmNlUmVnaW9uc1wiOiB2YWx1ZXMsXG5cdFx0XHR9LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgb2JzZXJ2YWJpbGl0eWFkbWluOlNvdXJjZVR5cGVgLlxuXHQgKi9cblx0c3RhdGljIHNvdXJjZVR5cGUodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJvYnNlcnZhYmlsaXR5YWRtaW46U291cmNlVHlwZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgb2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnNgLlxuXHQgKi9cblx0c3RhdGljIHRhcmdldFJlZ2lvbnModmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiOiB2YWx1ZSB9IH07XG5cdH1cbn1cbiJdfQ==
745
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eWFkbWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9vYnNlcnZhYmlsaXR5YWRtaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCx5REFBeUQ7QUFDekQsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEseUJBQXlCOztBQUF0Qyw4REFvTUM7OztBQW5NQSw4QkFBOEI7QUFDZCx3Q0FBYyxHQUFHLG9CQUFvQixDQUFDO0FBRXRELHlFQUF5RTtBQUN6RCxpRUFBdUMsR0FDdEQsNERBQTRELENBQUM7QUFDOUQsMERBQTBEO0FBQzFDLGtEQUF3QixHQUN2Qyw2Q0FBNkMsQ0FBQztBQUMvQywwREFBMEQ7QUFDMUMsa0RBQXdCLEdBQ3ZDLDZDQUE2QyxDQUFDO0FBQy9DLHlEQUF5RDtBQUN6QyxpREFBdUIsR0FDdEMsNENBQTRDLENBQUM7QUFDOUMscURBQXFEO0FBQ3JDLDZDQUFtQixHQUNsQyx3Q0FBd0MsQ0FBQztBQUMxQyxvRUFBb0U7QUFDcEQsNERBQWtDLEdBQ2pELHVEQUF1RCxDQUFDO0FBQ3pELHlFQUF5RTtBQUN6RCxpRUFBdUMsR0FDdEQsNERBQTRELENBQUM7QUFDOUQsMERBQTBEO0FBQzFDLGtEQUF3QixHQUN2Qyw2Q0FBNkMsQ0FBQztBQUMvQywwREFBMEQ7QUFDMUMsa0RBQXdCLEdBQ3ZDLDZDQUE2QyxDQUFDO0FBQy9DLHlEQUF5RDtBQUN6QyxpREFBdUIsR0FDdEMsNENBQTRDLENBQUM7QUFDOUMscURBQXFEO0FBQ3JDLDZDQUFtQixHQUNsQyx3Q0FBd0MsQ0FBQztBQUMxQyxvRUFBb0U7QUFDcEQsNERBQWtDLEdBQ2pELHVEQUF1RCxDQUFDO0FBQ3pELHFFQUFxRTtBQUNyRCxvRUFBMEMsR0FDekQseURBQXlELENBQUM7QUFDM0Qsc0RB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REFBd0IsR0FDdkMsMkNBQTJDLENBQUM7QUFDN0Msb0ZBQW9GO0FBQ3BFLDBEQUE2QixHQUM1QyxnREFBZ0QsQ0FBQztBQUNsRCw0REFBNEQ7QUFDNUMsd0NBQVcsR0FBRywrQkFBK0IsQ0FBQztBQUM5RCwrREFBK0Q7QUFDL0MsMkNBQWMsR0FBRyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBVVRPLUdFTkVSQVRFRCBGSUxFIOKAlCBETyBOT1QgRURJVCBNQU5VQUxMWVxuLy8gR2VuZXJhdGVkIGZyb20gQVdTIFNlcnZpY2UgQXV0aG9yaXphdGlvbiBSZWZlcmVuY2UgZGF0YVxuLy8gU291cmNlOiBkYXRhL3NlcnZpY2UtcmVmZXJlbmNlL29ic2VydmFiaWxpdHlhZG1pbi5qc29uXG4vLyBSdW4gYG5weCBwcm9qZW4gZ2VuZXJhdGUtY29uc3RhbnRzYCB0byByZWdlbmVyYXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIElBTSBhY3Rpb24gY29uc3RhbnRzIGZvciB0aGUgb2JzZXJ2YWJpbGl0eWFkbWluIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zIHtcblx0LyoqIFRoZSBJQU0gc2VydmljZSBwcmVmaXguICovXG5cdHN0YXRpYyByZWFkb25seSBTRVJWSUNFX1BSRUZJWCA9IFwib2JzZXJ2YWJpbGl0eWFkbWluXCI7XG5cblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZURhdGFzZXRJbnRlZ3JhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGF0YXNldEludGVncmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVEYXRhc2V0SW50ZWdyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVMzVGFibGVJbnRlZ3JhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUzNUYWJsZUludGVncmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVTM1RhYmxlSW50ZWdyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZWxlbWV0cnlQaXBlbGluZSA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVJ1bGUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZURhdGFzZXRJbnRlZ3JhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRGF0YXNldEludGVncmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVEYXRhc2V0SW50ZWdyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUzNUYWJsZUludGVncmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVTM1RhYmxlSW50ZWdyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUZWxlbWV0cnlQaXBlbGluZSA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlVGVsZW1ldHJ5UGlwZWxpbmVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVRlbGVtZXRyeVJ1bGUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46R2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldENlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvblwiO1xuXHQvKiogW1JlYWRdIG9ic2VydmFiaWxpdHlhZG1pbjpHZXREYXRhc2V0SW50ZWdyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldERhdGFzZXRJbnRlZ3JhdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0RGF0YXNldEludGVncmF0aW9uXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkdldFMzVGFibGVJbnRlZ3JhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0UzNUYWJsZUludGVncmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRTM1RhYmxlSW50ZWdyYXRpb25cIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1cyA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1c1wiO1xuXHQvKiogW1JlYWRdIG9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXNGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5UGlwZWxpbmUgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRlbGVtZXRyeVBpcGVsaW5lID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlQaXBlbGluZVwiO1xuXHQvKiogW1JlYWRdIG9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRUZWxlbWV0cnlSdWxlID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlSdWxlXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtMaXN0XSBvYnNlcnZhYmlsaXR5YWRtaW46TGlzdENlbnRyYWxpemF0aW9uUnVsZXNGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDZW50cmFsaXphdGlvblJ1bGVzRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0Q2VudHJhbGl6YXRpb25SdWxlc0Zvck9yZ2FuaXphdGlvblwiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0RGF0YXNldEludGVncmF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdERhdGFzZXRJbnRlZ3JhdGlvbnMgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3REYXRhc2V0SW50ZWdyYXRpb25zXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RSZXNvdXJjZVRlbGVtZXRyeSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlVGVsZW1ldHJ5ID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0UmVzb3VyY2VUZWxlbWV0cnlcIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVzb3VyY2VUZWxlbWV0cnlGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvblwiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0UzNUYWJsZUludGVncmF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFMzVGFibGVJbnRlZ3JhdGlvbnMgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RTM1RhYmxlSW50ZWdyYXRpb25zXCI7XG5cdC8qKiBbTGlzdF0gb2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUYWdzRm9yUmVzb3VyY2VcIjtcblx0LyoqIFtMaXN0XSBvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVBpcGVsaW5lcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRlbGVtZXRyeVBpcGVsaW5lcyA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVBpcGVsaW5lc1wiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UnVsZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlSdWxlcyA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RUZWxlbWV0cnlSdWxlc1wiO1xuXHQvKiogW0xpc3RdIG9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UnVsZXNGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlSdWxlc0Zvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVJ1bGVzRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUVucmljaG1lbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RW5yaWNobWVudCA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFbnJpY2htZW50XCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUV2YWx1YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdG9wVGVsZW1ldHJ5RW5yaWNobWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUVucmljaG1lbnQgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFbnJpY2htZW50XCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdG9wVGVsZW1ldHJ5RXZhbHVhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIG9ic2VydmFiaWxpdHlhZG1pbjpTdG9wVGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uXCI7XG5cdC8qKiBbVGFnZ2luZ10gb2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZSA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCI7XG5cdC8qKiBbUmVhZF0gb2JzZXJ2YWJpbGl0eWFkbWluOlRlc3RUZWxlbWV0cnlQaXBlbGluZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGVzdFRlbGVtZXRyeVBpcGVsaW5lID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUZXN0VGVsZW1ldHJ5UGlwZWxpbmVcIjtcblx0LyoqIFtUYWdnaW5nXSBvYnNlcnZhYmlsaXR5YWRtaW46VW50YWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZSA9IFwib2JzZXJ2YWJpbGl0eWFkbWluOlVudGFnUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpVcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZURhdGFzZXRJbnRlZ3JhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRGF0YXNldEludGVncmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpVcGRhdGVEYXRhc2V0SW50ZWdyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVBpcGVsaW5lICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUZWxlbWV0cnlQaXBlbGluZSA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VXBkYXRlVGVsZW1ldHJ5UGlwZWxpbmVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbGVtZXRyeVJ1bGUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gb2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIjtcblx0LyoqIFtSZWFkXSBvYnNlcnZhYmlsaXR5YWRtaW46VmFsaWRhdGVUZWxlbWV0cnlQaXBlbGluZUNvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFZhbGlkYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25maWd1cmF0aW9uID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpWYWxpZGF0ZVRlbGVtZXRyeVBpcGVsaW5lQ29uZmlndXJhdGlvblwiO1xuXG5cdC8qKiBBbGwgcmVhZC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUmVhZEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0RGF0YXNldEludGVncmF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0UzNUYWJsZUludGVncmF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0VGVsZW1ldHJ5RW5yaWNobWVudFN0YXR1cyxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLmFjdGlvbkdldFRlbGVtZXRyeUV2YWx1YXRpb25TdGF0dXMsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5hY3Rpb25HZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0VGVsZW1ldHJ5UGlwZWxpbmUsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5hY3Rpb25HZXRUZWxlbWV0cnlSdWxlLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuYWN0aW9uR2V0VGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RSZXNvdXJjZVRlbGVtZXRyeSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlRlc3RUZWxlbWV0cnlQaXBlbGluZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlZhbGlkYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25maWd1cmF0aW9uLFxuXHRdO1xuXHQvKiogQWxsIHdyaXRlLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlRGF0YXNldEludGVncmF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlUzNUYWJsZUludGVncmF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmUsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5DcmVhdGVUZWxlbWV0cnlSdWxlLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuQ3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZURhdGFzZXRJbnRlZ3JhdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbixcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuRGVsZXRlVGVsZW1ldHJ5UnVsZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkRlbGV0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdGFydFRlbGVtZXRyeUVucmljaG1lbnQsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdGFydFRlbGVtZXRyeUV2YWx1YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5TdG9wVGVsZW1ldHJ5RW5yaWNobWVudCxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuU3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVEYXRhc2V0SW50ZWdyYXRpb24sXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVUZWxlbWV0cnlQaXBlbGluZSxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlVwZGF0ZVRlbGVtZXRyeVJ1bGUsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5VcGRhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RDZW50cmFsaXphdGlvblJ1bGVzRm9yT3JnYW5pemF0aW9uLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuTGlzdERhdGFzZXRJbnRlZ3JhdGlvbnMsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5MaXN0UzNUYWJsZUludGVncmF0aW9ucyxcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLkxpc3RUYWdzRm9yUmVzb3VyY2UsXG5cdFx0T2JzZXJ2YWJpbGl0eWFkbWluQWN0aW9ucy5MaXN0VGVsZW1ldHJ5UGlwZWxpbmVzLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuTGlzdFRlbGVtZXRyeVJ1bGVzLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuTGlzdFRlbGVtZXRyeVJ1bGVzRm9yT3JnYW5pemF0aW9uLFxuXHRdO1xuXHQvKiogQWxsIHBlcm1pc3Npb24tbWFuYWdlbWVudC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUGVybWlzc2lvbk1hbmFnZW1lbnRBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHQvKiogQWxsIHRhZ2dpbmctbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFRhZ2dpbmdBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRPYnNlcnZhYmlsaXR5YWRtaW5BY3Rpb25zLlRhZ1Jlc291cmNlLFxuXHRcdE9ic2VydmFiaWxpdHlhZG1pbkFjdGlvbnMuVW50YWdSZXNvdXJjZSxcblx0XTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGRhdGFzZXQtaW50ZWdyYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pbkRhdGFzZXRJbnRlZ3JhdGlvbkFyblByb3BzIHtcblx0LyoqIFRoZSBEYXRhc2V0SW50ZWdyYXRpb25JZGVudGlmaWVyIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBkYXRhc2V0SW50ZWdyYXRpb25JZGVudGlmaWVyOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZGF0YXNldC1pbnRlZ3JhdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluRGF0YXNldEludGVncmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEYXRhc2V0SW50ZWdyYXRpb25JZGVudGlmaWVyIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGF0YXNldEludGVncmF0aW9uSWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgb3JnYW5pemF0aW9uLWNlbnRyYWxpemF0aW9uLXJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvbkNlbnRyYWxpemF0aW9uUnVsZUFyblByb3BzIHtcblx0LyoqIFRoZSBDZW50cmFsaXphdGlvblJ1bGVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBjZW50cmFsaXphdGlvblJ1bGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgb3JnYW5pemF0aW9uLWNlbnRyYWxpemF0aW9uLXJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvbkNlbnRyYWxpemF0aW9uUnVsZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQ2VudHJhbGl6YXRpb25SdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGNlbnRyYWxpemF0aW9uUnVsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIG9yZ2FuaXphdGlvbi10ZWxlbWV0cnktcnVsZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluT3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZUFyblByb3BzIHtcblx0LyoqIFRoZSBUZWxlbWV0cnlSdWxlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgdGVsZW1ldHJ5UnVsZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFRlbGVtZXRyeVJ1bGVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgdGVsZW1ldHJ5UnVsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHMzdGFibGVpbnRlZ3JhdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluUzN0YWJsZWludGVncmF0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIFMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBzM3RhYmxlaW50ZWdyYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pblMzdGFibGVpbnRlZ3JhdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgUzNUYWJsZUludGVncmF0aW9uSWRlbnRpZmllciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRlbGVtZXRyeS1waXBlbGluZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eWFkbWluVGVsZW1ldHJ5UGlwZWxpbmVBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgVGVsZW1ldHJ5UGlwZWxpbmVJZGVudGlmaWVyIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSB0ZWxlbWV0cnlQaXBlbGluZUlkZW50aWZpZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSB0ZWxlbWV0cnktcGlwZWxpbmUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVBpcGVsaW5lQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBUZWxlbWV0cnlQaXBlbGluZUlkZW50aWZpZXIgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0ZWxlbWV0cnlQaXBlbGluZUlkZW50aWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRlbGVtZXRyeS1ydWxlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmlsaXR5YWRtaW5UZWxlbWV0cnlSdWxlQXJuUHJvcHMge1xuXHQvKiogVGhlIFRlbGVtZXRyeVJ1bGVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSB0ZWxlbWV0cnlSdWxlTmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHRlbGVtZXRyeS1ydWxlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmlsaXR5YWRtaW5UZWxlbWV0cnlSdWxlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBUZWxlbWV0cnlSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHRlbGVtZXRyeVJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IERhdGFzZXRJbnRlZ3JhdGlvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpvYnNlcnZhYmlsaXR5YWRtaW46KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpkYXRhc2V0LWludGVncmF0aW9uXFwvKD88ZGF0YXNldEludGVncmF0aW9uSWRlbnRpZmllcj5bXjovP10rKSQvO1xuY29uc3QgT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm9ic2VydmFiaWxpdHlhZG1pbjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOm9yZ2FuaXphdGlvbi1jZW50cmFsaXphdGlvbi1ydWxlXFwvKD88Y2VudHJhbGl6YXRpb25SdWxlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgT3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpvYnNlcnZhYmlsaXR5YWRtaW46KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGVcXC8oPzx0ZWxlbWV0cnlSdWxlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgUzN0YWJsZWludGVncmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm9ic2VydmFiaWxpdHlhZG1pbjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnMzdGFibGVpbnRlZ3JhdGlvblxcLyg/PHMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXI+W146Lz9dKykkLztcbmNvbnN0IFRlbGVtZXRyeVBpcGVsaW5lQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm9ic2VydmFiaWxpdHlhZG1pbjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRlbGVtZXRyeS1waXBlbGluZVxcLyg/PHRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcj5bXjovP10rKSQvO1xuY29uc3QgVGVsZW1ldHJ5UnVsZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpvYnNlcnZhYmlsaXR5YWRtaW46KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0ZWxlbWV0cnktcnVsZVxcLyg/PHRlbGVtZXRyeVJ1bGVOYW1lPlteOi8/XSspJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3Igb2JzZXJ2YWJpbGl0eWFkbWluIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmFiaWxpdHlhZG1pblJlc291cmNlcyB7XG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZGF0YXNldC1pbnRlZ3JhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBkYXRhc2V0SW50ZWdyYXRpb24oXG5cdFx0cHJvcHM6IE9ic2VydmFiaWxpdHlhZG1pbkRhdGFzZXRJbnRlZ3JhdGlvbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkYXRhc2V0LWludGVncmF0aW9uLyR7cHJvcHMuZGF0YXNldEludGVncmF0aW9uSWRlbnRpZmllcn1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZGF0YXNldC1pbnRlZ3JhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRGF0YXNldEludGVncmF0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIERhdGFzZXRJbnRlZ3JhdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBkYXRhc2V0LWludGVncmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZURhdGFzZXRJbnRlZ3JhdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogT2JzZXJ2YWJpbGl0eWFkbWluRGF0YXNldEludGVncmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBEYXRhc2V0SW50ZWdyYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YXNldC1pbnRlZ3JhdGlvbiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkYXRhc2V0SW50ZWdyYXRpb25JZGVudGlmaWVyOiBtYXRjaC5ncm91cHMhLmRhdGFzZXRJbnRlZ3JhdGlvbklkZW50aWZpZXIsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgb3JnYW5pemF0aW9uLWNlbnRyYWxpemF0aW9uLXJ1bGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgb3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlKFxuXHRcdHByb3BzOiBPYnNlcnZhYmlsaXR5YWRtaW5Pcmdhbml6YXRpb25DZW50cmFsaXphdGlvblJ1bGVBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpvYnNlcnZhYmlsaXR5YWRtaW46JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06b3JnYW5pemF0aW9uLWNlbnRyYWxpemF0aW9uLXJ1bGUvJHtwcm9wcy5jZW50cmFsaXphdGlvblJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBvcmdhbml6YXRpb24tY2VudHJhbGl6YXRpb24tcnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIE9yZ2FuaXphdGlvbkNlbnRyYWxpemF0aW9uUnVsZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBvcmdhbml6YXRpb24tY2VudHJhbGl6YXRpb24tcnVsZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VPcmdhbml6YXRpb25DZW50cmFsaXphdGlvblJ1bGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvbkNlbnRyYWxpemF0aW9uUnVsZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gT3JnYW5pemF0aW9uQ2VudHJhbGl6YXRpb25SdWxlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG9yZ2FuaXphdGlvbi1jZW50cmFsaXphdGlvbi1ydWxlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGNlbnRyYWxpemF0aW9uUnVsZU5hbWU6IG1hdGNoLmdyb3VwcyEuY2VudHJhbGl6YXRpb25SdWxlTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgb3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZShcblx0XHRwcm9wczogT2JzZXJ2YWJpbGl0eWFkbWluT3JnYW5pemF0aW9uVGVsZW1ldHJ5UnVsZUFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpvcmdhbml6YXRpb24tdGVsZW1ldHJ5LXJ1bGUvJHtwcm9wcy50ZWxlbWV0cnlSdWxlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRPcmdhbml6YXRpb25UZWxlbWV0cnlSdWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIE9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZU9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pbk9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IE9yZ2FuaXphdGlvblRlbGVtZXRyeVJ1bGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgb3JnYW5pemF0aW9uLXRlbGVtZXRyeS1ydWxlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHRlbGVtZXRyeVJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnRlbGVtZXRyeVJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHMzdGFibGVpbnRlZ3JhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBzM3RhYmxlaW50ZWdyYXRpb24oXG5cdFx0cHJvcHM6IE9ic2VydmFiaWxpdHlhZG1pblMzdGFibGVpbnRlZ3JhdGlvbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpzM3RhYmxlaW50ZWdyYXRpb24vJHtwcm9wcy5zM1RhYmxlSW50ZWdyYXRpb25JZGVudGlmaWVyfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBzM3RhYmxlaW50ZWdyYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFMzdGFibGVpbnRlZ3JhdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTM3RhYmxlaW50ZWdyYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgczN0YWJsZWludGVncmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVMzdGFibGVpbnRlZ3JhdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogT2JzZXJ2YWJpbGl0eWFkbWluUzN0YWJsZWludGVncmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBTM3RhYmxlaW50ZWdyYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgczN0YWJsZWludGVncmF0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHMzVGFibGVJbnRlZ3JhdGlvbklkZW50aWZpZXI6IG1hdGNoLmdyb3VwcyEuczNUYWJsZUludGVncmF0aW9uSWRlbnRpZmllcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0ZWxlbWV0cnktcGlwZWxpbmUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgdGVsZW1ldHJ5UGlwZWxpbmUoXG5cdFx0cHJvcHM6IE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVBpcGVsaW5lQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06b2JzZXJ2YWJpbGl0eWFkbWluOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRlbGVtZXRyeS1waXBlbGluZS8ke3Byb3BzLnRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcn1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgdGVsZW1ldHJ5LXBpcGVsaW5lIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUZWxlbWV0cnlQaXBlbGluZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZWxlbWV0cnlQaXBlbGluZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0ZWxlbWV0cnktcGlwZWxpbmUgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVGVsZW1ldHJ5UGlwZWxpbmVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVBpcGVsaW5lQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUZWxlbWV0cnlQaXBlbGluZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZWxlbWV0cnktcGlwZWxpbmUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0dGVsZW1ldHJ5UGlwZWxpbmVJZGVudGlmaWVyOiBtYXRjaC5ncm91cHMhLnRlbGVtZXRyeVBpcGVsaW5lSWRlbnRpZmllcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0ZWxlbWV0cnktcnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0ZWxlbWV0cnlSdWxlKHByb3BzOiBPYnNlcnZhYmlsaXR5YWRtaW5UZWxlbWV0cnlSdWxlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om9ic2VydmFiaWxpdHlhZG1pbjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTp0ZWxlbWV0cnktcnVsZS8ke3Byb3BzLnRlbGVtZXRyeVJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSB0ZWxlbWV0cnktcnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkVGVsZW1ldHJ5UnVsZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZWxlbWV0cnlSdWxlQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHRlbGVtZXRyeS1ydWxlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVRlbGVtZXRyeVJ1bGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE9ic2VydmFiaWxpdHlhZG1pblRlbGVtZXRyeVJ1bGVBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFRlbGVtZXRyeVJ1bGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVsZW1ldHJ5LXJ1bGUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0dGVsZW1ldHJ5UnVsZU5hbWU6IG1hdGNoLmdyb3VwcyEudGVsZW1ldHJ5UnVsZU5hbWUsXG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIEFQSSBvcGVyYXRpb24gdG8gcmVxdWlyZWQgSUFNIGFjdGlvbnMgbWFwcGluZyBmb3Igb2JzZXJ2YWJpbGl0eWFkbWluLlxuICovXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJpbGl0eWFkbWluT3BlcmF0aW9ucyB7XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRGF0YXNldEludGVncmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGF0YXNldEludGVncmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVEYXRhc2V0SW50ZWdyYXRpb25cIixcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVMzVGFibGVJbnRlZ3JhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVMzVGFibGVJbnRlZ3JhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlUzNUYWJsZUludGVncmF0aW9uXCIsXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVUZWxlbWV0cnlQaXBlbGluZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVBpcGVsaW5lOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDcmVhdGVUZWxlbWV0cnlQaXBlbGluZVwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlVGVsZW1ldHJ5UnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVJ1bGU6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNyZWF0ZVRlbGVtZXRyeVJ1bGVcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q3JlYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvblwiLFxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZURhdGFzZXRJbnRlZ3JhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZURhdGFzZXRJbnRlZ3JhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlRGF0YXNldEludGVncmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVMzVGFibGVJbnRlZ3JhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46RGVsZXRlUzNUYWJsZUludGVncmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGVsZW1ldHJ5UGlwZWxpbmU6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkRlbGV0ZVRlbGVtZXRyeVBpcGVsaW5lXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRlbGVtZXRyeVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUZWxlbWV0cnlSdWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlSdWxlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpEZWxldGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldENlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RGF0YXNldEludGVncmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXREYXRhc2V0SW50ZWdyYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldERhdGFzZXRJbnRlZ3JhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRTM1RhYmxlSW50ZWdyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFMzVGFibGVJbnRlZ3JhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0UzNUYWJsZUludGVncmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFRlbGVtZXRyeUVucmljaG1lbnRTdGF0dXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFRlbGVtZXRyeUVucmljaG1lbnRTdGF0dXM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkdldFRlbGVtZXRyeUVucmljaG1lbnRTdGF0dXNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0VGVsZW1ldHJ5RXZhbHVhdGlvblN0YXR1cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VGVsZW1ldHJ5RXZhbHVhdGlvblN0YXR1czogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5RXZhbHVhdGlvblN0YXR1c1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlFdmFsdWF0aW9uU3RhdHVzRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFRlbGVtZXRyeVBpcGVsaW5lIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUZWxlbWV0cnlQaXBlbGluZTogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5UGlwZWxpbmVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0VGVsZW1ldHJ5UnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VGVsZW1ldHJ5UnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46R2V0VGVsZW1ldHJ5UnVsZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpHZXRUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RDZW50cmFsaXphdGlvblJ1bGVzRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENlbnRyYWxpemF0aW9uUnVsZXNGb3JPcmdhbml6YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RDZW50cmFsaXphdGlvblJ1bGVzRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3REYXRhc2V0SW50ZWdyYXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdERhdGFzZXRJbnRlZ3JhdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3REYXRhc2V0SW50ZWdyYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXNvdXJjZVRlbGVtZXRyeSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXNvdXJjZVRlbGVtZXRyeTogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFJlc291cmNlVGVsZW1ldHJ5XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXNvdXJjZVRlbGVtZXRyeUZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RTM1RhYmxlSW50ZWdyYXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFMzVGFibGVJbnRlZ3JhdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkxpc3RTM1RhYmxlSW50ZWdyYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUYWdzRm9yUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFnc0ZvclJlc291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGFnc0ZvclJlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUZWxlbWV0cnlQaXBlbGluZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGVsZW1ldHJ5UGlwZWxpbmVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpMaXN0VGVsZW1ldHJ5UGlwZWxpbmVzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUZWxlbWV0cnlSdWxlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlSdWxlczogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVJ1bGVzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUZWxlbWV0cnlSdWxlc0Zvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZWxlbWV0cnlSdWxlc0Zvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46TGlzdFRlbGVtZXRyeVJ1bGVzRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0YXJ0VGVsZW1ldHJ5RW5yaWNobWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RW5yaWNobWVudDogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFbnJpY2htZW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46U3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0b3BUZWxlbWV0cnlFbnJpY2htZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUVucmljaG1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFbnJpY2htZW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlN0b3BUZWxlbWV0cnlFdmFsdWF0aW9uRm9yT3JnYW5pemF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wib2JzZXJ2YWJpbGl0eWFkbWluOlRhZ1Jlc291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBUZXN0VGVsZW1ldHJ5UGlwZWxpbmUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUZXN0VGVsZW1ldHJ5UGlwZWxpbmU6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRlc3RUZWxlbWV0cnlQaXBlbGluZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVbnRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VW50YWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVEYXRhc2V0SW50ZWdyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVEYXRhc2V0SW50ZWdyYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VXBkYXRlRGF0YXNldEludGVncmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRlbGVtZXRyeVBpcGVsaW5lIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGVsZW1ldHJ5UGlwZWxpbmU6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VXBkYXRlVGVsZW1ldHJ5UGlwZWxpbmVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlVGVsZW1ldHJ5UnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbGVtZXRyeVJ1bGU6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlVwZGF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVmFsaWRhdGVUZWxlbWV0cnlQaXBlbGluZUNvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBWYWxpZGF0ZVRlbGVtZXRyeVBpcGVsaW5lQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VmFsaWRhdGVUZWxlbWV0cnlQaXBlbGluZUNvbmZpZ3VyYXRpb25cIixcblx0XTtcbn1cblxuLyoqXG4gKiBDb25kaXRpb24ga2V5IGNvbnN0YW50cyBhbmQgYnVpbGRlcnMgZm9yIG9ic2VydmFiaWxpdHlhZG1pbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmFiaWxpdHlhZG1pbkNvbmRpdGlvbnMge1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID1cblx0XHRbXG5cdFx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25CYWNrdXBSZWdpb25cIixcblx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25BY2NvdW50XCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblJ1bGVOYW1lXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZUlkXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZVJlZ2lvbnNcIixcblx0XHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRGF0YXNldEludGVncmF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZURhdGFzZXRJbnRlZ3JhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlUzNUYWJsZUludGVncmF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVMzVGFibGVJbnRlZ3JhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGVsZW1ldHJ5UGlwZWxpbmVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpTb3VyY2VUeXBlXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVUZWxlbWV0cnlSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbGVtZXRyeVJ1bGVGb3JPcmdhbml6YXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEZWxldGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQ2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPVxuXHRcdFtcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblJ1bGVOYW1lXCJdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgR2V0Q2VudHJhbGl6YXRpb25SdWxlRm9yT3JnYW5pemF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldENlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID1cblx0XHRbXCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25SdWxlTmFtZVwiXTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIExpc3RSZXNvdXJjZVRlbGVtZXRyeSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVzb3VyY2VUZWxlbWV0cnlDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0UmVzb3VyY2VUZWxlbWV0cnlGb3JPcmdhbml6YXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlVGVsZW1ldHJ5Rm9yT3JnYW5pemF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPVxuXHRcdFtcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCJdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgU3RhcnRUZWxlbWV0cnlFdmFsdWF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFN0YXJ0VGVsZW1ldHJ5RXZhbHVhdGlvbkZvck9yZ2FuaXphdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydFRlbGVtZXRyeUV2YWx1YXRpb25Gb3JPcmdhbml6YXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9XG5cdFx0W1wib2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnNcIl07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBUYWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVW50YWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXCJhd3M6VGFnS2V5c1wiXTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZUNlbnRyYWxpemF0aW9uUnVsZUZvck9yZ2FuaXphdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDZW50cmFsaXphdGlvblJ1bGVGb3JPcmdhbml6YXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9XG5cdFx0W1xuXHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25CYWNrdXBSZWdpb25cIixcblx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25BY2NvdW50XCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblJ1bGVOYW1lXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZUlkXCIsXG5cdFx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZVJlZ2lvbnNcIixcblx0XHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlVGVsZW1ldHJ5UnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUZWxlbWV0cnlSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlVGVsZW1ldHJ5UnVsZUZvck9yZ2FuaXphdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUZWxlbWV0cnlSdWxlRm9yT3JnYW5pemF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiLFxuXHRdO1xuXG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVFVRVNUX1RBRyA9IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVTT1VSQ0VfVEFHID0gXCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6VGFnS2V5cyAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19UQUdfS0VZUyA9IFwiYXdzOlRhZ0tleXNcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkJhY2t1cFJlZ2lvbiAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ0VOVFJBTElaQVRJT05fQkFDS1VQX1JFR0lPTiA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25CYWNrdXBSZWdpb25cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uQWNjb3VudCAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ0VOVFJBTElaQVRJT05fREVTVElOQVRJT05fQUNDT1VOVCA9XG5cdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvbkFjY291bnRcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBDRU5UUkFMSVpBVElPTl9ERVNUSU5BVElPTl9SRUdJT04gPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25SZWdpb25cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblJ1bGVOYW1lIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBDRU5UUkFMSVpBVElPTl9SVUxFX05BTUUgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uUnVsZU5hbWVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZUlkIChBcnJheU9mU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ0VOVFJBTElaQVRJT05fU09VUkNFX0lEID1cblx0XHRcIm9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZUlkXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VSZWdpb25zIChBcnJheU9mU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ0VOVFJBTElaQVRJT05fU09VUkNFX1JFR0lPTlMgPVxuXHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uU291cmNlUmVnaW9uc1wiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogb2JzZXJ2YWJpbGl0eWFkbWluOlNvdXJjZVR5cGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNPVVJDRV9UWVBFID0gXCJvYnNlcnZhYmlsaXR5YWRtaW46U291cmNlVHlwZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogb2JzZXJ2YWJpbGl0eWFkbWluOlRhcmdldFJlZ2lvbnMgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFRBUkdFVF9SRUdJT05TID0gXCJvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc1wiO1xuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlcXVlc3RUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlc291cmNlVGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlRhZ0tleXNgLlxuXHQgKi9cblx0c3RhdGljIHRhZ0tleXModmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiYXdzOlRhZ0tleXNcIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25CYWNrdXBSZWdpb25gLlxuXHQgKi9cblx0c3RhdGljIGNlbnRyYWxpemF0aW9uQmFja3VwUmVnaW9uKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7IFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uQmFja3VwUmVnaW9uXCI6IHZhbHVlIH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25EZXN0aW5hdGlvbkFjY291bnRgLlxuXHQgKi9cblx0c3RhdGljIGNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25BY2NvdW50KFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7XG5cdFx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25BY2NvdW50XCI6IHZhbHVlLFxuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uYC5cblx0ICovXG5cdHN0YXRpYyBjZW50cmFsaXphdGlvbkRlc3RpbmF0aW9uUmVnaW9uKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7XG5cdFx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uRGVzdGluYXRpb25SZWdpb25cIjogdmFsdWUsXG5cdFx0XHR9LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgb2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uUnVsZU5hbWVgLlxuXHQgKi9cblx0c3RhdGljIGNlbnRyYWxpemF0aW9uUnVsZU5hbWUoXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRTdHJpbmdFcXVhbHM6IHsgXCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25SdWxlTmFtZVwiOiB2YWx1ZSB9LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgb2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uU291cmNlSWRgLlxuXHQgKi9cblx0c3RhdGljIGNlbnRyYWxpemF0aW9uU291cmNlSWQoXG5cdFx0dmFsdWVzOiBzdHJpbmdbXSxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7XG5cdFx0XHRcdFwib2JzZXJ2YWJpbGl0eWFkbWluOkNlbnRyYWxpemF0aW9uU291cmNlSWRcIjogdmFsdWVzLFxuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYG9ic2VydmFiaWxpdHlhZG1pbjpDZW50cmFsaXphdGlvblNvdXJjZVJlZ2lvbnNgLlxuXHQgKi9cblx0c3RhdGljIGNlbnRyYWxpemF0aW9uU291cmNlUmVnaW9ucyhcblx0XHR2YWx1ZXM6IHN0cmluZ1tdLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0XCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHtcblx0XHRcdFx0XCJvYnNlcnZhYmlsaXR5YWRtaW46Q2VudHJhbGl6YXRpb25Tb3VyY2VSZWdpb25zXCI6IHZhbHVlcyxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBvYnNlcnZhYmlsaXR5YWRtaW46U291cmNlVHlwZWAuXG5cdCAqL1xuXHRzdGF0aWMgc291cmNlVHlwZSh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcIm9ic2VydmFiaWxpdHlhZG1pbjpTb3VyY2VUeXBlXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBvYnNlcnZhYmlsaXR5YWRtaW46VGFyZ2V0UmVnaW9uc2AuXG5cdCAqL1xuXHRzdGF0aWMgdGFyZ2V0UmVnaW9ucyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcIm9ic2VydmFiaWxpdHlhZG1pbjpUYXJnZXRSZWdpb25zXCI6IHZhbHVlIH0gfTtcblx0fVxufVxuIl19
@@ -16,7 +16,7 @@ class OdbActions {
16
16
  }
17
17
  exports.OdbActions = OdbActions;
18
18
  _a = JSII_RTTI_SYMBOL_1;
19
- OdbActions[_a] = { fqn: "@cdk_utils/iam.odb.OdbActions", version: "1.28.0" };
19
+ OdbActions[_a] = { fqn: "@cdk_utils/iam.odb.OdbActions", version: "1.30.0" };
20
20
  /** The IAM service prefix. */
21
21
  OdbActions.SERVICE_PREFIX = "odb";
22
22
  /** [Write] odb:AcceptMarketplaceRegistration */
@@ -600,7 +600,7 @@ class OdbResources {
600
600
  }
601
601
  exports.OdbResources = OdbResources;
602
602
  _b = JSII_RTTI_SYMBOL_1;
603
- OdbResources[_b] = { fqn: "@cdk_utils/iam.odb.OdbResources", version: "1.28.0" };
603
+ OdbResources[_b] = { fqn: "@cdk_utils/iam.odb.OdbResources", version: "1.30.0" };
604
604
  /**
605
605
  * API operation to required IAM actions mapping for odb.
606
606
  */
@@ -608,7 +608,7 @@ class OdbOperations {
608
608
  }
609
609
  exports.OdbOperations = OdbOperations;
610
610
  _c = JSII_RTTI_SYMBOL_1;
611
- OdbOperations[_c] = { fqn: "@cdk_utils/iam.odb.OdbOperations", version: "1.28.0" };
611
+ OdbOperations[_c] = { fqn: "@cdk_utils/iam.odb.OdbOperations", version: "1.30.0" };
612
612
  /** IAM actions required for the AcceptMarketplaceRegistration API call. */
613
613
  OdbOperations.AcceptMarketplaceRegistration = [
614
614
  "odb:AcceptMarketplaceRegistration",
@@ -912,7 +912,7 @@ class OdbConditions {
912
912
  }
913
913
  exports.OdbConditions = OdbConditions;
914
914
  _d = JSII_RTTI_SYMBOL_1;
915
- OdbConditions[_d] = { fqn: "@cdk_utils/iam.odb.OdbConditions", version: "1.28.0" };
915
+ OdbConditions[_d] = { fqn: "@cdk_utils/iam.odb.OdbConditions", version: "1.30.0" };
916
916
  /** Condition keys applicable to the CreateAutonomousDatabase action. */
917
917
  OdbConditions.CreateAutonomousDatabaseConditionKeys = [
918
918
  "aws:RequestTag/${TagKey}",