@cdk_utils/iam 1.30.0 → 1.31.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 (466) hide show
  1. package/.jsii +2 -2
  2. package/lib/generated/services/a2c.js +1 -1
  3. package/lib/generated/services/a4b.js +3 -3
  4. package/lib/generated/services/access-analyzer.js +4 -4
  5. package/lib/generated/services/account-access.js +4 -4
  6. package/lib/generated/services/account.js +4 -4
  7. package/lib/generated/services/acm-pca.js +4 -4
  8. package/lib/generated/services/acm.js +4 -4
  9. package/lib/generated/services/aco-automation.js +4 -4
  10. package/lib/generated/services/action-recommendations.js +1 -1
  11. package/lib/generated/services/activate.js +1 -1
  12. package/lib/generated/services/agent-registry.js +4 -4
  13. package/lib/generated/services/agentaccess-mcp.js +2 -2
  14. package/lib/generated/services/aidevops.js +4 -4
  15. package/lib/generated/services/aiops.js +4 -4
  16. package/lib/generated/services/airflow-serverless.js +4 -4
  17. package/lib/generated/services/airflow.js +4 -4
  18. package/lib/generated/services/amplify.js +4 -4
  19. package/lib/generated/services/amplifybackend.js +3 -3
  20. package/lib/generated/services/amplifyuibuilder.js +4 -4
  21. package/lib/generated/services/aoss.js +4 -4
  22. package/lib/generated/services/apigateway.js +4 -4
  23. package/lib/generated/services/app-integrations.js +4 -4
  24. package/lib/generated/services/appconfig.js +4 -4
  25. package/lib/generated/services/appfabric.js +4 -4
  26. package/lib/generated/services/appflow.js +4 -4
  27. package/lib/generated/services/application-autoscaling.js +4 -4
  28. package/lib/generated/services/application-signals-mcp.js +3 -3
  29. package/lib/generated/services/application-signals.js +4 -4
  30. package/lib/generated/services/application-transformation.js +1 -1
  31. package/lib/generated/services/applicationinsights.js +3 -3
  32. package/lib/generated/services/appmesh-preview.js +2 -2
  33. package/lib/generated/services/appmesh.js +4 -4
  34. package/lib/generated/services/apprunner.js +4 -4
  35. package/lib/generated/services/appstream.js +4 -4
  36. package/lib/generated/services/appstudio.js +2 -2
  37. package/lib/generated/services/appsync.js +4 -4
  38. package/lib/generated/services/apptest.js +3 -3
  39. package/lib/generated/services/aps.js +4 -4
  40. package/lib/generated/services/arc-region-switch.js +4 -4
  41. package/lib/generated/services/arc-zonal-shift.js +4 -4
  42. package/lib/generated/services/arsenal.js +1 -1
  43. package/lib/generated/services/artifact.js +4 -4
  44. package/lib/generated/services/athena.js +4 -4
  45. package/lib/generated/services/auditmanager.js +4 -4
  46. package/lib/generated/services/autoscaling-plans.js +2 -2
  47. package/lib/generated/services/autoscaling.js +4 -4
  48. package/lib/generated/services/aws-external-anthropic.d.ts +24 -0
  49. package/lib/generated/services/aws-external-anthropic.js +44 -4
  50. package/lib/generated/services/aws-marketplace-management.js +1 -1
  51. package/lib/generated/services/aws-marketplace.js +4 -4
  52. package/lib/generated/services/aws-portal.js +1 -1
  53. package/lib/generated/services/awsconnector.js +1 -1
  54. package/lib/generated/services/b2bi.js +4 -4
  55. package/lib/generated/services/backup-gateway.js +4 -4
  56. package/lib/generated/services/backup-search.js +4 -4
  57. package/lib/generated/services/backup-storage.js +1 -1
  58. package/lib/generated/services/backup.js +4 -4
  59. package/lib/generated/services/batch.js +4 -4
  60. package/lib/generated/services/bcm-dashboards.js +4 -4
  61. package/lib/generated/services/bcm-data-exports.js +4 -4
  62. package/lib/generated/services/bcm-pricing-calculator.js +4 -4
  63. package/lib/generated/services/bcm-recommended-actions.js +2 -2
  64. package/lib/generated/services/bedrock-agentcore.js +4 -4
  65. package/lib/generated/services/bedrock-mantle.js +3 -3
  66. package/lib/generated/services/bedrock-websearch.js +2 -2
  67. package/lib/generated/services/bedrock.js +4 -4
  68. package/lib/generated/services/billing.js +4 -4
  69. package/lib/generated/services/billingconductor.js +4 -4
  70. package/lib/generated/services/braket.js +4 -4
  71. package/lib/generated/services/budgets.js +4 -4
  72. package/lib/generated/services/bugbust.js +3 -3
  73. package/lib/generated/services/cases.js +4 -4
  74. package/lib/generated/services/cassandra.js +4 -4
  75. package/lib/generated/services/ce.js +4 -4
  76. package/lib/generated/services/chatbot.js +4 -4
  77. package/lib/generated/services/chime.js +4 -4
  78. package/lib/generated/services/cleanrooms-ml.js +4 -4
  79. package/lib/generated/services/cleanrooms.js +4 -4
  80. package/lib/generated/services/cloud9.js +4 -4
  81. package/lib/generated/services/clouddirectory.js +3 -3
  82. package/lib/generated/services/cloudformation.js +4 -4
  83. package/lib/generated/services/cloudfront-keyvaluestore.js +3 -3
  84. package/lib/generated/services/cloudfront.js +4 -4
  85. package/lib/generated/services/cloudhsm.js +4 -4
  86. package/lib/generated/services/cloudsearch.js +3 -3
  87. package/lib/generated/services/cloudshell.js +3 -3
  88. package/lib/generated/services/cloudtrail-data.js +4 -4
  89. package/lib/generated/services/cloudtrail.js +4 -4
  90. package/lib/generated/services/cloudwatch.d.ts +10 -0
  91. package/lib/generated/services/cloudwatch.js +16 -6
  92. package/lib/generated/services/codeartifact.js +4 -4
  93. package/lib/generated/services/codebuild.js +4 -4
  94. package/lib/generated/services/codecatalyst.js +4 -4
  95. package/lib/generated/services/codecommit.js +4 -4
  96. package/lib/generated/services/codeconnections.js +4 -4
  97. package/lib/generated/services/codedeploy-commands-secure.js +1 -1
  98. package/lib/generated/services/codedeploy.js +4 -4
  99. package/lib/generated/services/codeguru-profiler.js +4 -4
  100. package/lib/generated/services/codeguru-reviewer.js +4 -4
  101. package/lib/generated/services/codeguru-security.js +4 -4
  102. package/lib/generated/services/codeguru.js +1 -1
  103. package/lib/generated/services/codepipeline.js +4 -4
  104. package/lib/generated/services/codestar-connections.js +4 -4
  105. package/lib/generated/services/codestar-notifications.js +4 -4
  106. package/lib/generated/services/codestar.js +3 -3
  107. package/lib/generated/services/codewhisperer.js +3 -3
  108. package/lib/generated/services/cognito-identity.js +4 -4
  109. package/lib/generated/services/cognito-idp.js +4 -4
  110. package/lib/generated/services/cognito-sync.js +3 -3
  111. package/lib/generated/services/comprehend.js +4 -4
  112. package/lib/generated/services/comprehendmedical.js +3 -3
  113. package/lib/generated/services/compute-optimizer.js +3 -3
  114. package/lib/generated/services/config.js +4 -4
  115. package/lib/generated/services/connect-campaigns.js +4 -4
  116. package/lib/generated/services/connect.js +4 -4
  117. package/lib/generated/services/consoleapp.js +2 -2
  118. package/lib/generated/services/consolidatedbilling.js +1 -1
  119. package/lib/generated/services/controlcatalog.js +3 -3
  120. package/lib/generated/services/controltower.js +4 -4
  121. package/lib/generated/services/cost-optimization-hub.js +2 -2
  122. package/lib/generated/services/cur.js +4 -4
  123. package/lib/generated/services/customer-verification.js +1 -1
  124. package/lib/generated/services/databrew.js +4 -4
  125. package/lib/generated/services/dataexchange.js +4 -4
  126. package/lib/generated/services/datapipeline.js +4 -4
  127. package/lib/generated/services/datasync.js +4 -4
  128. package/lib/generated/services/datazone.d.ts +28 -0
  129. package/lib/generated/services/datazone.js +47 -5
  130. package/lib/generated/services/dax.js +4 -4
  131. package/lib/generated/services/dbqms.js +1 -1
  132. package/lib/generated/services/deadline.js +4 -4
  133. package/lib/generated/services/detective.js +4 -4
  134. package/lib/generated/services/devicefarm.js +4 -4
  135. package/lib/generated/services/devops-guru.js +4 -4
  136. package/lib/generated/services/directconnect.js +4 -4
  137. package/lib/generated/services/discovery.js +3 -3
  138. package/lib/generated/services/dlm.js +4 -4
  139. package/lib/generated/services/dms.js +4 -4
  140. package/lib/generated/services/docdb-elastic.js +4 -4
  141. package/lib/generated/services/drs.js +4 -4
  142. package/lib/generated/services/ds-data.js +4 -4
  143. package/lib/generated/services/ds.js +4 -4
  144. package/lib/generated/services/dsql.js +4 -4
  145. package/lib/generated/services/dynamodb.js +4 -4
  146. package/lib/generated/services/ebs.js +4 -4
  147. package/lib/generated/services/ec2-instance-connect.js +4 -4
  148. package/lib/generated/services/ec2.js +4 -4
  149. package/lib/generated/services/ec2messages.js +2 -2
  150. package/lib/generated/services/ecr-public.js +4 -4
  151. package/lib/generated/services/ecr.js +4 -4
  152. package/lib/generated/services/ecs-mcp.js +1 -1
  153. package/lib/generated/services/ecs.js +4 -4
  154. package/lib/generated/services/eks-auth.js +4 -4
  155. package/lib/generated/services/eks-mcp.js +1 -1
  156. package/lib/generated/services/eks.js +4 -4
  157. package/lib/generated/services/elasticache.d.ts +10 -0
  158. package/lib/generated/services/elasticache.js +26 -7
  159. package/lib/generated/services/elasticbeanstalk.js +4 -4
  160. package/lib/generated/services/elasticfilesystem.js +4 -4
  161. package/lib/generated/services/elasticloadbalancing.js +4 -4
  162. package/lib/generated/services/elasticmapreduce.js +4 -4
  163. package/lib/generated/services/elastictranscoder.js +2 -2
  164. package/lib/generated/services/elemental-activations.js +1 -1
  165. package/lib/generated/services/elemental-appliances-software.js +2 -2
  166. package/lib/generated/services/elemental-inference.d.ts +6 -0
  167. package/lib/generated/services/elemental-inference.js +23 -8
  168. package/lib/generated/services/elemental-support-cases.js +3 -3
  169. package/lib/generated/services/elemental-support-content.js +1 -1
  170. package/lib/generated/services/emr-containers.js +4 -4
  171. package/lib/generated/services/emr-serverless.js +4 -4
  172. package/lib/generated/services/entityresolution.js +4 -4
  173. package/lib/generated/services/es.js +4 -4
  174. package/lib/generated/services/events.d.ts +28 -0
  175. package/lib/generated/services/events.js +47 -5
  176. package/lib/generated/services/eventsbilltoaws.js +3 -3
  177. package/lib/generated/services/evidently.js +3 -3
  178. package/lib/generated/services/evs.js +4 -4
  179. package/lib/generated/services/execute-api.js +4 -4
  180. package/lib/generated/services/finops-agent.js +1 -1
  181. package/lib/generated/services/finspace-api.js +3 -3
  182. package/lib/generated/services/finspace.js +4 -4
  183. package/lib/generated/services/firehose.js +4 -4
  184. package/lib/generated/services/fis.js +4 -4
  185. package/lib/generated/services/fms.js +4 -4
  186. package/lib/generated/services/forecast.js +4 -4
  187. package/lib/generated/services/frauddetector.js +4 -4
  188. package/lib/generated/services/freertos.js +3 -3
  189. package/lib/generated/services/freetier.js +2 -2
  190. package/lib/generated/services/fsx.js +4 -4
  191. package/lib/generated/services/gamelift.js +4 -4
  192. package/lib/generated/services/gameliftstreams.js +4 -4
  193. package/lib/generated/services/geo-maps.js +3 -3
  194. package/lib/generated/services/geo-places.js +3 -3
  195. package/lib/generated/services/geo-routes.js +3 -3
  196. package/lib/generated/services/geo.js +4 -4
  197. package/lib/generated/services/glacier.js +4 -4
  198. package/lib/generated/services/globalaccelerator.js +4 -4
  199. package/lib/generated/services/glue.js +4 -4
  200. package/lib/generated/services/grafana.js +4 -4
  201. package/lib/generated/services/greengrass.js +4 -4
  202. package/lib/generated/services/groundstation.js +4 -4
  203. package/lib/generated/services/groundtruthlabeling.js +1 -1
  204. package/lib/generated/services/guardduty.js +4 -4
  205. package/lib/generated/services/health-agent.js +4 -4
  206. package/lib/generated/services/health.js +4 -4
  207. package/lib/generated/services/healthlake.js +4 -4
  208. package/lib/generated/services/honeycode.js +2 -2
  209. package/lib/generated/services/iam.js +4 -4
  210. package/lib/generated/services/identity-sync.js +2 -2
  211. package/lib/generated/services/identitystore-auth.js +1 -1
  212. package/lib/generated/services/identitystore.d.ts +6 -0
  213. package/lib/generated/services/identitystore.js +15 -5
  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.js +4 -4
  245. package/lib/generated/services/kinesisanalytics.js +4 -4
  246. package/lib/generated/services/kinesisvideo.js +4 -4
  247. package/lib/generated/services/kms.js +4 -4
  248. package/lib/generated/services/lakeformation.js +3 -3
  249. package/lib/generated/services/lambda.js +4 -4
  250. package/lib/generated/services/launchwizard.js +4 -4
  251. package/lib/generated/services/lex.js +4 -4
  252. package/lib/generated/services/license-manager-linux-subscriptions.js +4 -4
  253. package/lib/generated/services/license-manager-user-subscriptions.js +4 -4
  254. package/lib/generated/services/license-manager.js +4 -4
  255. package/lib/generated/services/lightsail.js +4 -4
  256. package/lib/generated/services/logs.js +4 -4
  257. package/lib/generated/services/lookoutequipment.js +4 -4
  258. package/lib/generated/services/lookoutmetrics.js +3 -3
  259. package/lib/generated/services/lookoutvision.js +3 -3
  260. package/lib/generated/services/m2.js +4 -4
  261. package/lib/generated/services/machinelearning.js +3 -3
  262. package/lib/generated/services/macie2.js +4 -4
  263. package/lib/generated/services/managedblockchain-query.js +2 -2
  264. package/lib/generated/services/managedblockchain.js +4 -4
  265. package/lib/generated/services/mapcredits.js +2 -2
  266. package/lib/generated/services/marketplacecommerceanalytics.js +2 -2
  267. package/lib/generated/services/mechanicalturk.js +2 -2
  268. package/lib/generated/services/mediaconnect.js +4 -4
  269. package/lib/generated/services/mediaconvert.js +4 -4
  270. package/lib/generated/services/mediaimport.js +1 -1
  271. package/lib/generated/services/medialive.js +4 -4
  272. package/lib/generated/services/mediapackage-vod.js +4 -4
  273. package/lib/generated/services/mediapackage.js +4 -4
  274. package/lib/generated/services/mediapackagev2.js +4 -4
  275. package/lib/generated/services/mediastore.js +4 -4
  276. package/lib/generated/services/mediatailor.js +4 -4
  277. package/lib/generated/services/medical-imaging.js +4 -4
  278. package/lib/generated/services/memorydb.js +4 -4
  279. package/lib/generated/services/mgh.js +4 -4
  280. package/lib/generated/services/mgn.js +4 -4
  281. package/lib/generated/services/migrationhub-orchestrator.js +4 -4
  282. package/lib/generated/services/migrationhub-strategy.js +2 -2
  283. package/lib/generated/services/mobileanalytics.js +1 -1
  284. package/lib/generated/services/mobiletargeting.js +4 -4
  285. package/lib/generated/services/monitron.js +3 -3
  286. package/lib/generated/services/mpa.js +4 -4
  287. package/lib/generated/services/mq.js +4 -4
  288. package/lib/generated/services/neptune-db.js +4 -4
  289. package/lib/generated/services/neptune-graph.js +4 -4
  290. package/lib/generated/services/network-firewall.js +4 -4
  291. package/lib/generated/services/network-security-director.js +1 -1
  292. package/lib/generated/services/network-security-manager.js +4 -4
  293. package/lib/generated/services/networkflowmonitor.js +4 -4
  294. package/lib/generated/services/networkmanager-chat.js +1 -1
  295. package/lib/generated/services/networkmanager.js +4 -4
  296. package/lib/generated/services/networkmonitor.js +4 -4
  297. package/lib/generated/services/nimble.js +3 -3
  298. package/lib/generated/services/notifications-contacts.js +4 -4
  299. package/lib/generated/services/notifications.js +4 -4
  300. package/lib/generated/services/nova-act.js +3 -3
  301. package/lib/generated/services/oam.js +4 -4
  302. package/lib/generated/services/observabilityadmin.js +4 -4
  303. package/lib/generated/services/odb.js +4 -4
  304. package/lib/generated/services/omics.js +4 -4
  305. package/lib/generated/services/one.js +3 -3
  306. package/lib/generated/services/opensearch.js +3 -3
  307. package/lib/generated/services/opsworks-cm.js +2 -2
  308. package/lib/generated/services/opsworks.js +2 -2
  309. package/lib/generated/services/organizations.js +4 -4
  310. package/lib/generated/services/osis.js +4 -4
  311. package/lib/generated/services/outposts.js +4 -4
  312. package/lib/generated/services/panorama.js +3 -3
  313. package/lib/generated/services/partnercentral-account-management.js +2 -2
  314. package/lib/generated/services/partnercentral.js +4 -4
  315. package/lib/generated/services/payment-cryptography.js +4 -4
  316. package/lib/generated/services/payments.js +3 -3
  317. package/lib/generated/services/pca-connector-ad.js +4 -4
  318. package/lib/generated/services/pca-connector-scep.js +4 -4
  319. package/lib/generated/services/pcs.js +4 -4
  320. package/lib/generated/services/personalize.js +4 -4
  321. package/lib/generated/services/pi.js +4 -4
  322. package/lib/generated/services/pipes.js +4 -4
  323. package/lib/generated/services/polly.js +3 -3
  324. package/lib/generated/services/pricing.js +2 -2
  325. package/lib/generated/services/pricingplanmanager.js +3 -3
  326. package/lib/generated/services/private-networks.js +3 -3
  327. package/lib/generated/services/profile.js +4 -4
  328. package/lib/generated/services/proton.js +4 -4
  329. package/lib/generated/services/purchase-orders.js +3 -3
  330. package/lib/generated/services/q.js +3 -3
  331. package/lib/generated/services/qapps.js +4 -4
  332. package/lib/generated/services/qbusiness.js +4 -4
  333. package/lib/generated/services/qdeveloper.js +3 -3
  334. package/lib/generated/services/qldb.js +3 -3
  335. package/lib/generated/services/quicksight.js +4 -4
  336. package/lib/generated/services/ram.js +4 -4
  337. package/lib/generated/services/rbin.js +4 -4
  338. package/lib/generated/services/rds-data.js +4 -4
  339. package/lib/generated/services/rds-db.js +2 -2
  340. package/lib/generated/services/rds.js +4 -4
  341. package/lib/generated/services/redshift-data.js +4 -4
  342. package/lib/generated/services/redshift-serverless.js +4 -4
  343. package/lib/generated/services/redshift.js +4 -4
  344. package/lib/generated/services/refactor-spaces.js +4 -4
  345. package/lib/generated/services/rekognition.js +4 -4
  346. package/lib/generated/services/repostspace.js +4 -4
  347. package/lib/generated/services/researchstudio.js +1 -1
  348. package/lib/generated/services/resiliencehub.js +4 -4
  349. package/lib/generated/services/resource-explorer-2.js +4 -4
  350. package/lib/generated/services/resource-explorer.js +1 -1
  351. package/lib/generated/services/resource-groups.js +4 -4
  352. package/lib/generated/services/rhelkb.js +1 -1
  353. package/lib/generated/services/robomaker.js +3 -3
  354. package/lib/generated/services/rolesanywhere.js +4 -4
  355. package/lib/generated/services/route53-recovery-cluster.js +4 -4
  356. package/lib/generated/services/route53-recovery-control-config.js +4 -4
  357. package/lib/generated/services/route53-recovery-readiness.js +4 -4
  358. package/lib/generated/services/route53.js +4 -4
  359. package/lib/generated/services/route53domains.js +2 -2
  360. package/lib/generated/services/route53globalresolver.js +4 -4
  361. package/lib/generated/services/route53profiles.js +4 -4
  362. package/lib/generated/services/route53resolver.js +4 -4
  363. package/lib/generated/services/rtbfabric.js +4 -4
  364. package/lib/generated/services/rum.js +4 -4
  365. package/lib/generated/services/s3-object-lambda.js +3 -3
  366. package/lib/generated/services/s3-outposts.js +4 -4
  367. package/lib/generated/services/s3.js +4 -4
  368. package/lib/generated/services/s3express.js +3 -3
  369. package/lib/generated/services/s3files.js +4 -4
  370. package/lib/generated/services/s3tables.js +4 -4
  371. package/lib/generated/services/s3vectors.js +4 -4
  372. package/lib/generated/services/sagemaker-data-science-assistant.js +1 -1
  373. package/lib/generated/services/sagemaker-geospatial.js +4 -4
  374. package/lib/generated/services/sagemaker-mlflow.js +3 -3
  375. package/lib/generated/services/sagemaker-unified-studio-mcp.js +1 -1
  376. package/lib/generated/services/sagemaker.js +4 -4
  377. package/lib/generated/services/savingsplans.js +4 -4
  378. package/lib/generated/services/scheduler.js +4 -4
  379. package/lib/generated/services/schemas.js +4 -4
  380. package/lib/generated/services/scn.js +4 -4
  381. package/lib/generated/services/sdb.js +3 -3
  382. package/lib/generated/services/secretsmanager.js +4 -4
  383. package/lib/generated/services/security-ir.js +4 -4
  384. package/lib/generated/services/securityagent.d.ts +2 -0
  385. package/lib/generated/services/securityagent.js +8 -5
  386. package/lib/generated/services/securityhub.js +4 -4
  387. package/lib/generated/services/securitylake.js +4 -4
  388. package/lib/generated/services/serverlessrepo.js +4 -4
  389. package/lib/generated/services/servicecatalog.js +4 -4
  390. package/lib/generated/services/servicediscovery.js +4 -4
  391. package/lib/generated/services/serviceextract.js +1 -1
  392. package/lib/generated/services/servicequotas.js +4 -4
  393. package/lib/generated/services/ses.js +4 -4
  394. package/lib/generated/services/shield.js +4 -4
  395. package/lib/generated/services/signer.js +4 -4
  396. package/lib/generated/services/signin.js +4 -4
  397. package/lib/generated/services/simspaceweaver.js +3 -3
  398. package/lib/generated/services/sms-voice.js +4 -4
  399. package/lib/generated/services/sms.js +1 -1
  400. package/lib/generated/services/snow-device-management.js +4 -4
  401. package/lib/generated/services/snowball.js +2 -2
  402. package/lib/generated/services/sns.js +4 -4
  403. package/lib/generated/services/social-messaging.js +4 -4
  404. package/lib/generated/services/sqlworkbench.js +3 -3
  405. package/lib/generated/services/sqs.js +4 -4
  406. package/lib/generated/services/ssm-contacts.js +4 -4
  407. package/lib/generated/services/ssm-guiconnect.js +2 -2
  408. package/lib/generated/services/ssm-incidents.js +4 -4
  409. package/lib/generated/services/ssm-quicksetup.js +4 -4
  410. package/lib/generated/services/ssm-sap.js +4 -4
  411. package/lib/generated/services/ssm.js +4 -4
  412. package/lib/generated/services/ssmmessages.js +2 -2
  413. package/lib/generated/services/sso-directory.js +1 -1
  414. package/lib/generated/services/sso-oauth.js +3 -3
  415. package/lib/generated/services/sso.js +4 -4
  416. package/lib/generated/services/states.js +4 -4
  417. package/lib/generated/services/storagegateway.js +4 -4
  418. package/lib/generated/services/sts.js +4 -4
  419. package/lib/generated/services/support-console.js +1 -1
  420. package/lib/generated/services/support.js +2 -2
  421. package/lib/generated/services/supportapp.js +2 -2
  422. package/lib/generated/services/supportauthz.js +4 -4
  423. package/lib/generated/services/supportplans.js +1 -1
  424. package/lib/generated/services/sustainability.js +2 -2
  425. package/lib/generated/services/swf.js +4 -4
  426. package/lib/generated/services/synthetics.js +4 -4
  427. package/lib/generated/services/tag.js +2 -2
  428. package/lib/generated/services/tax.js +2 -2
  429. package/lib/generated/services/textract.js +4 -4
  430. package/lib/generated/services/thinclient.js +4 -4
  431. package/lib/generated/services/timestream-influxdb.js +4 -4
  432. package/lib/generated/services/timestream.js +4 -4
  433. package/lib/generated/services/tiros.js +1 -1
  434. package/lib/generated/services/tnb.js +4 -4
  435. package/lib/generated/services/transcribe.js +4 -4
  436. package/lib/generated/services/transfer.js +4 -4
  437. package/lib/generated/services/transform-custom.js +3 -3
  438. package/lib/generated/services/transform.js +3 -3
  439. package/lib/generated/services/translate.js +4 -4
  440. package/lib/generated/services/trustedadvisor.js +3 -3
  441. package/lib/generated/services/ts.js +3 -3
  442. package/lib/generated/services/user-subscriptions.js +2 -2
  443. package/lib/generated/services/uxc.js +2 -2
  444. package/lib/generated/services/vendor-insights.js +3 -3
  445. package/lib/generated/services/verified-access.js +1 -1
  446. package/lib/generated/services/verifiedpermissions.js +4 -4
  447. package/lib/generated/services/voiceid.js +4 -4
  448. package/lib/generated/services/vpc-lattice-svcs.js +3 -3
  449. package/lib/generated/services/vpc-lattice.js +4 -4
  450. package/lib/generated/services/vpce.js +2 -2
  451. package/lib/generated/services/waf-regional.js +4 -4
  452. package/lib/generated/services/waf.js +4 -4
  453. package/lib/generated/services/wafv2.js +4 -4
  454. package/lib/generated/services/wam.js +1 -1
  455. package/lib/generated/services/wellarchitected.js +4 -4
  456. package/lib/generated/services/wickr.js +4 -4
  457. package/lib/generated/services/wisdom.js +4 -4
  458. package/lib/generated/services/workdocs.js +3 -3
  459. package/lib/generated/services/worklink.js +3 -3
  460. package/lib/generated/services/workmail.js +4 -4
  461. package/lib/generated/services/workmailmessageflow.js +3 -3
  462. package/lib/generated/services/workspaces-instances.js +4 -4
  463. package/lib/generated/services/workspaces-web.js +4 -4
  464. package/lib/generated/services/workspaces.js +4 -4
  465. package/lib/generated/services/xray.js +4 -4
  466. package/package.json +1 -1
@@ -16,7 +16,7 @@ class EventsActions {
16
16
  }
17
17
  exports.EventsActions = EventsActions;
18
18
  _a = JSII_RTTI_SYMBOL_1;
19
- EventsActions[_a] = { fqn: "@cdk_utils/iam.events.EventsActions", version: "1.30.0" };
19
+ EventsActions[_a] = { fqn: "@cdk_utils/iam.events.EventsActions", version: "1.31.0" };
20
20
  /** The IAM service prefix. */
21
21
  EventsActions.SERVICE_PREFIX = "events";
22
22
  /** [Write] events:ActivateEventSource */
@@ -786,7 +786,7 @@ class EventsResources {
786
786
  }
787
787
  exports.EventsResources = EventsResources;
788
788
  _b = JSII_RTTI_SYMBOL_1;
789
- EventsResources[_b] = { fqn: "@cdk_utils/iam.events.EventsResources", version: "1.30.0" };
789
+ EventsResources[_b] = { fqn: "@cdk_utils/iam.events.EventsResources", version: "1.31.0" };
790
790
  /**
791
791
  * API operation to required IAM actions mapping for events.
792
792
  */
@@ -794,7 +794,7 @@ class EventsOperations {
794
794
  }
795
795
  exports.EventsOperations = EventsOperations;
796
796
  _c = JSII_RTTI_SYMBOL_1;
797
- EventsOperations[_c] = { fqn: "@cdk_utils/iam.events.EventsOperations", version: "1.30.0" };
797
+ EventsOperations[_c] = { fqn: "@cdk_utils/iam.events.EventsOperations", version: "1.31.0" };
798
798
  /** IAM actions required for the ActivateEventSource API call. */
799
799
  EventsOperations.ActivateEventSource = [
800
800
  "events:ActivateEventSource",
@@ -819,10 +819,21 @@ EventsOperations.CreateEventBus = [
819
819
  "events:CreateEventBus",
820
820
  "events:TagResource",
821
821
  ];
822
+ /** IAM actions required for the CreateEventSource API call. */
823
+ EventsOperations.CreateEventSource = [
824
+ "events:CreateEventSource",
825
+ "events:TagResource",
826
+ ];
822
827
  /** IAM actions required for the CreatePartnerEventSource API call. */
823
828
  EventsOperations.CreatePartnerEventSource = [
824
829
  "events:CreatePartnerEventSource",
825
830
  ];
831
+ /** IAM actions required for the CreateSubscriber API call. */
832
+ EventsOperations.CreateSubscriber = [
833
+ "events:CreateSubscriber",
834
+ "iam:PassRole",
835
+ "events:TagResource",
836
+ ];
826
837
  /** IAM actions required for the DeactivateEventSource API call. */
827
838
  EventsOperations.DeactivateEventSource = [
828
839
  "events:DeactivateEventSource",
@@ -843,12 +854,20 @@ EventsOperations.DeleteConnection = ["events:DeleteConnection"];
843
854
  EventsOperations.DeleteEndpoint = ["events:DeleteEndpoint"];
844
855
  /** IAM actions required for the DeleteEventBus API call. */
845
856
  EventsOperations.DeleteEventBus = ["events:DeleteEventBus"];
857
+ /** IAM actions required for the DeleteEventSource API call. */
858
+ EventsOperations.DeleteEventSource = ["events:DeleteEventSource"];
846
859
  /** IAM actions required for the DeletePartnerEventSource API call. */
847
860
  EventsOperations.DeletePartnerEventSource = [
848
861
  "events:DeletePartnerEventSource",
849
862
  ];
863
+ /** IAM actions required for the DeleteResourcePolicy API call. */
864
+ EventsOperations.DeleteResourcePolicy = [
865
+ "events:DeleteResourcePolicy",
866
+ ];
850
867
  /** IAM actions required for the DeleteRule API call. */
851
868
  EventsOperations.DeleteRule = ["events:DeleteRule"];
869
+ /** IAM actions required for the DeleteSubscriber API call. */
870
+ EventsOperations.DeleteSubscriber = ["events:DeleteSubscriber"];
852
871
  /** IAM actions required for the DescribeApiDestination API call. */
853
872
  EventsOperations.DescribeApiDestination = [
854
873
  "events:DescribeApiDestination",
@@ -873,10 +892,14 @@ EventsOperations.DescribePartnerEventSource = [
873
892
  EventsOperations.DescribeReplay = ["events:DescribeReplay"];
874
893
  /** IAM actions required for the DescribeRule API call. */
875
894
  EventsOperations.DescribeRule = ["events:DescribeRule"];
895
+ /** IAM actions required for the DescribeSubscriber API call. */
896
+ EventsOperations.DescribeSubscriber = ["events:DescribeSubscriber"];
876
897
  /** IAM actions required for the DisableRule API call. */
877
898
  EventsOperations.DisableRule = ["events:DisableRule"];
878
899
  /** IAM actions required for the EnableRule API call. */
879
900
  EventsOperations.EnableRule = ["events:EnableRule"];
901
+ /** IAM actions required for the GetResourcePolicy API call. */
902
+ EventsOperations.opGetResourcePolicy = ["events:GetResourcePolicy"];
880
903
  /** IAM actions required for the ListApiDestinations API call. */
881
904
  EventsOperations.ListApiDestinations = [
882
905
  "events:ListApiDestinations",
@@ -901,12 +924,18 @@ EventsOperations.ListPartnerEventSources = [
901
924
  ];
902
925
  /** IAM actions required for the ListReplays API call. */
903
926
  EventsOperations.ListReplays = ["events:ListReplays"];
927
+ /** IAM actions required for the ListResourcePolicies API call. */
928
+ EventsOperations.ListResourcePolicies = [
929
+ "events:ListResourcePolicies",
930
+ ];
904
931
  /** IAM actions required for the ListRuleNamesByTarget API call. */
905
932
  EventsOperations.ListRuleNamesByTarget = [
906
933
  "events:ListRuleNamesByTarget",
907
934
  ];
908
935
  /** IAM actions required for the ListRules API call. */
909
936
  EventsOperations.ListRules = ["events:ListRules"];
937
+ /** IAM actions required for the ListSubscribers API call. */
938
+ EventsOperations.ListSubscribers = ["events:ListSubscribers"];
910
939
  /** IAM actions required for the ListTagsForResource API call. */
911
940
  EventsOperations.ListTagsForResource = [
912
941
  "events:ListTagsForResource",
@@ -919,6 +948,10 @@ EventsOperations.PutEvents = ["events:PutEvents"];
919
948
  EventsOperations.PutPartnerEvents = ["events:PutPartnerEvents"];
920
949
  /** IAM actions required for the PutPermission API call. */
921
950
  EventsOperations.PutPermission = ["events:PutPermission"];
951
+ /** IAM actions required for the PutRawEvents API call. */
952
+ EventsOperations.PutRawEvents = ["events:PutRawEvents"];
953
+ /** IAM actions required for the PutResourcePolicy API call. */
954
+ EventsOperations.PutResourcePolicy = ["events:PutResourcePolicy"];
922
955
  /** IAM actions required for the PutRule API call. */
923
956
  EventsOperations.PutRule = [
924
957
  "iam:PassRole",
@@ -931,6 +964,8 @@ EventsOperations.PutTargets = ["iam:PassRole", "events:PutTargets"];
931
964
  EventsOperations.RemovePermission = ["events:RemovePermission"];
932
965
  /** IAM actions required for the RemoveTargets API call. */
933
966
  EventsOperations.RemoveTargets = ["events:RemoveTargets"];
967
+ /** IAM actions required for the RevokeResource API call. */
968
+ EventsOperations.RevokeResource = ["events:RevokeResource"];
934
969
  /** IAM actions required for the StartReplay API call. */
935
970
  EventsOperations.StartReplay = ["events:StartReplay"];
936
971
  /** IAM actions required for the TagResource API call. */
@@ -954,6 +989,13 @@ EventsOperations.UpdateEndpoint = [
954
989
  ];
955
990
  /** IAM actions required for the UpdateEventBus API call. */
956
991
  EventsOperations.UpdateEventBus = ["events:UpdateEventBus"];
992
+ /** IAM actions required for the UpdateEventSource API call. */
993
+ EventsOperations.UpdateEventSource = ["events:UpdateEventSource"];
994
+ /** IAM actions required for the UpdateSubscriber API call. */
995
+ EventsOperations.UpdateSubscriber = [
996
+ "iam:PassRole",
997
+ "events:UpdateSubscriber",
998
+ ];
957
999
  /**
958
1000
  * Condition key constants and builders for events.
959
1001
  */
@@ -1087,7 +1129,7 @@ class EventsConditions {
1087
1129
  }
1088
1130
  exports.EventsConditions = EventsConditions;
1089
1131
  _d = JSII_RTTI_SYMBOL_1;
1090
- EventsConditions[_d] = { fqn: "@cdk_utils/iam.events.EventsConditions", version: "1.30.0" };
1132
+ EventsConditions[_d] = { fqn: "@cdk_utils/iam.events.EventsConditions", version: "1.31.0" };
1091
1133
  /** Condition keys applicable to the CreateEndpoint action. */
1092
1134
  EventsConditions.CreateEndpointConditionKeys = [
1093
1135
  "events:EventBusArn",
@@ -1253,4 +1295,4 @@ EventsConditions.DETAIL_USER_IDENTITY_PRINCIPAL_ID = "events:detail.userIdentity
1253
1295
  EventsConditions.EVENT_BUS_INVOCATION = "events:eventBusInvocation";
1254
1296
  /** Condition key: events:source (ArrayOfString) */
1255
1297
  EventsConditions.SOURCE = "events:source";
1256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCw2Q0FBNkM7QUFDN0Msb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsYUFBYTs7QUFBMUIsc0NBc1BDOzs7QUFyUEEsOEJBQThCO0FBQ2QsNEJBQWMsR0FBRyxRQUFRLENBQUM7QUFFMUMseUNBQXlDO0FBQ3pCLGlDQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBQ25FLHVEQUF1RDtBQUN2QywrQ0FBaUMsR0FDaEQsMENBQTBDLENBQUM7QUFDNUMsa0NBQWtDO0FBQ2xCLDBCQUFZLEdBQUcscUJBQXFCLENBQUM7QUFDckQsMENBQTBDO0FBQzFCLGtDQUFvQixHQUFHLDZCQUE2QixDQUFDO0FBQ3JFLG1DQUFtQztBQUNuQiwyQkFBYSxHQUFHLHNCQUFzQixDQUFDO0FBQ3ZELHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCx1Q0FBdUM7QUFDdkIsK0JBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFDL0QsOENBQThDO0FBQzlCLHNDQUF3QixHQUFHLGlDQUFpQyxDQUFDO0FBQzdFLHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCwyQ0FBMkM7QUFDM0IsbUNBQXFCLEdBQUcsOEJBQThCLENBQUM7QUFDdkUsMkNBQTJDO0FBQzNCLG1DQUFxQixHQUFHLDhCQUE4QixDQUFDO0FBQ3ZFLDBDQUEwQztBQUMxQixrQ0FBb0IsR0FBRyw2QkFBNkIsQ0FBQztBQUNyRSxtQ0FB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Q0FBZSxHQUFHLHVCQUF1QixDQUFDO0FBQzFELHdEQUF3RDtBQUN4Qyw0QkFBVyxHQUFHLG9CQUFvQixDQUFDO0FBQ25ELDBEQUEwRDtBQUMxQyx1Q0FBc0IsR0FBRyw2QkFBNkIsQ0FBQztBQUN2RSxvREFBb0Q7QUFDcEMsK0JBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxxRUFBcUU7QUFDckQsa0RBQWlDLEdBQ2hELHdDQUF3QyxDQUFDO0FBQzFDLHdEQUF3RDtBQUN4QyxxQ0FBb0IsR0FBRywyQkFBMkIsQ0FBQztBQUNuRSxtREFBbUQ7QUFDbkMsdUJBQU0sR0FBRyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUTy1HRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQgTUFOVUFMTFlcbi8vIEdlbmVyYXRlZCBmcm9tIEFXUyBTZXJ2aWNlIEF1dGhvcml6YXRpb24gUmVmZXJlbmNlIGRhdGFcbi8vIFNvdXJjZTogZGF0YS9zZXJ2aWNlLXJlZmVyZW5jZS9ldmVudHMuanNvblxuLy8gUnVuIGBucHggcHJvamVuIGdlbmVyYXRlLWNvbnN0YW50c2AgdG8gcmVnZW5lcmF0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJQU0gYWN0aW9uIGNvbnN0YW50cyBmb3IgdGhlIGV2ZW50cyBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzQWN0aW9ucyB7XG5cdC8qKiBUaGUgSUFNIHNlcnZpY2UgcHJlZml4LiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU0VSVklDRV9QUkVGSVggPSBcImV2ZW50c1wiO1xuXG5cdC8qKiBbV3JpdGVdIGV2ZW50czpBY3RpdmF0ZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBBY3RpdmF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6QWN0aXZhdGVFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6QWxsb3dWZW5kZWRMb2dEZWxpdmVyeUZvclJlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxvd1ZlbmRlZExvZ0RlbGl2ZXJ5Rm9yUmVzb3VyY2UgPVxuXHRcdFwiZXZlbnRzOkFsbG93VmVuZGVkTG9nRGVsaXZlcnlGb3JSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q2FuY2VsUmVwbGF5ICovXG5cdHN0YXRpYyByZWFkb25seSBDYW5jZWxSZXBsYXkgPSBcImV2ZW50czpDYW5jZWxSZXBsYXlcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOkNyZWF0ZUFwaURlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcmNoaXZlID0gXCJldmVudHM6Q3JlYXRlQXJjaGl2ZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlQ29ubmVjdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ29ubmVjdGlvbiA9IFwiZXZlbnRzOkNyZWF0ZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUVuZHBvaW50ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbmRwb2ludCA9IFwiZXZlbnRzOkNyZWF0ZUVuZHBvaW50XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRCdXMgPSBcImV2ZW50czpDcmVhdGVFdmVudEJ1c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6Q3JlYXRlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUGFydG5lckV2ZW50U291cmNlID0gXCJldmVudHM6Q3JlYXRlUGFydG5lckV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVTdWJzY3JpYmVyICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVTdWJzY3JpYmVyID0gXCJldmVudHM6Q3JlYXRlU3Vic2NyaWJlclwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVhY3RpdmF0ZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWFjdGl2YXRlRXZlbnRTb3VyY2UgPSBcImV2ZW50czpEZWFjdGl2YXRlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlYXV0aG9yaXplQ29ubmVjdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhdXRob3JpemVDb25uZWN0aW9uID0gXCJldmVudHM6RGVhdXRob3JpemVDb25uZWN0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQXBpRGVzdGluYXRpb24gPSBcImV2ZW50czpEZWxldGVBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlQXJjaGl2ZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQXJjaGl2ZSA9IFwiZXZlbnRzOkRlbGV0ZUFyY2hpdmVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUNvbm5lY3Rpb24gPSBcImV2ZW50czpEZWxldGVDb25uZWN0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVFbmRwb2ludCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRW5kcG9pbnQgPSBcImV2ZW50czpEZWxldGVFbmRwb2ludFwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlRXZlbnRCdXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV2ZW50QnVzID0gXCJldmVudHM6RGVsZXRlRXZlbnRCdXNcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkRlbGV0ZUV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkRlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBldmVudHM6RGVsZXRlUmVzb3VyY2VQb2xpY3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVJlc291cmNlUG9saWN5ID0gXCJldmVudHM6RGVsZXRlUmVzb3VyY2VQb2xpY3lcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVJ1bGUgPSBcImV2ZW50czpEZWxldGVSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVTdWJzY3JpYmVyICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVTdWJzY3JpYmVyID0gXCJldmVudHM6RGVsZXRlU3Vic2NyaWJlclwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFwaURlc3RpbmF0aW9uID0gXCJldmVudHM6RGVzY3JpYmVBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZUFyY2hpdmUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQXJjaGl2ZSA9IFwiZXZlbnRzOkRlc2NyaWJlQXJjaGl2ZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQ29ubmVjdGlvbiA9IFwiZXZlbnRzOkRlc2NyaWJlQ29ubmVjdGlvblwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZUVuZHBvaW50ICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUVuZHBvaW50ID0gXCJldmVudHM6RGVzY3JpYmVFbmRwb2ludFwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZUV2ZW50QnVzICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUV2ZW50QnVzID0gXCJldmVudHM6RGVzY3JpYmVFdmVudEJ1c1wiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUV2ZW50U291cmNlID0gXCJldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2UgPVxuXHRcdFwiZXZlbnRzOkRlc2NyaWJlUGFydG5lckV2ZW50U291cmNlXCI7XG5cdC8qKiBbUmVhZF0gZXZlbnRzOkRlc2NyaWJlUmVwbGF5ICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZVJlcGxheSA9IFwiZXZlbnRzOkRlc2NyaWJlUmVwbGF5XCI7XG5cdC8qKiBbUmVhZF0gZXZlbnRzOkRlc2NyaWJlUnVsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSdWxlID0gXCJldmVudHM6RGVzY3JpYmVSdWxlXCI7XG5cdC8qKiBbUmVhZF0gZXZlbnRzOkRlc2NyaWJlU3Vic2NyaWJlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVTdWJzY3JpYmVyID0gXCJldmVudHM6RGVzY3JpYmVTdWJzY3JpYmVyXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEaXNhYmxlUnVsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYWJsZVJ1bGUgPSBcImV2ZW50czpEaXNhYmxlUnVsZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RW5hYmxlUnVsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRW5hYmxlUnVsZSA9IFwiZXZlbnRzOkVuYWJsZVJ1bGVcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6R2V0UmVzb3VyY2VQb2xpY3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFJlc291cmNlUG9saWN5ID0gXCJldmVudHM6R2V0UmVzb3VyY2VQb2xpY3lcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkludm9rZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBJbnZva2VBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOkludm9rZUFwaURlc3RpbmF0aW9uXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RBcGlEZXN0aW5hdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcGlEZXN0aW5hdGlvbnMgPSBcImV2ZW50czpMaXN0QXBpRGVzdGluYXRpb25zXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RBcmNoaXZlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFyY2hpdmVzID0gXCJldmVudHM6TGlzdEFyY2hpdmVzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RDb25uZWN0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvbm5lY3Rpb25zID0gXCJldmVudHM6TGlzdENvbm5lY3Rpb25zXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RFbmRwb2ludHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbmRwb2ludHMgPSBcImV2ZW50czpMaXN0RW5kcG9pbnRzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RFdmVudEJ1c2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXZlbnRCdXNlcyA9IFwiZXZlbnRzOkxpc3RFdmVudEJ1c2VzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RFdmVudFNvdXJjZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFdmVudFNvdXJjZXMgPSBcImV2ZW50czpMaXN0RXZlbnRTb3VyY2VzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzID1cblx0XHRcImV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHNcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzID0gXCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZXNcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFJlcGxheXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXBsYXlzID0gXCJldmVudHM6TGlzdFJlcGxheXNcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFJlc291cmNlUG9saWNpZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXNvdXJjZVBvbGljaWVzID0gXCJldmVudHM6TGlzdFJlc291cmNlUG9saWNpZXNcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFJ1bGVOYW1lc0J5VGFyZ2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UnVsZU5hbWVzQnlUYXJnZXQgPSBcImV2ZW50czpMaXN0UnVsZU5hbWVzQnlUYXJnZXRcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFJ1bGVzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UnVsZXMgPSBcImV2ZW50czpMaXN0UnVsZXNcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFN1YnNjcmliZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0U3Vic2NyaWJlcnMgPSBcImV2ZW50czpMaXN0U3Vic2NyaWJlcnNcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFRhZ3NGb3JSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZSA9IFwiZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2VcIjtcblx0LyoqIFtMaXN0XSBldmVudHM6TGlzdFRhcmdldHNCeVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYXJnZXRzQnlSdWxlID0gXCJldmVudHM6TGlzdFRhcmdldHNCeVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlB1dEV2ZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0RXZlbnRzID0gXCJldmVudHM6UHV0RXZlbnRzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRQYXJ0bmVyRXZlbnRzICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRQYXJ0bmVyRXZlbnRzID0gXCJldmVudHM6UHV0UGFydG5lckV2ZW50c1wiO1xuXHQvKiogW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBldmVudHM6UHV0UGVybWlzc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGVybWlzc2lvbiA9IFwiZXZlbnRzOlB1dFBlcm1pc3Npb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlB1dFJhd0V2ZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UmF3RXZlbnRzID0gXCJldmVudHM6UHV0UmF3RXZlbnRzXCI7XG5cdC8qKiBbUGVybWlzc2lvbk1hbmFnZW1lbnRdIGV2ZW50czpQdXRSZXNvdXJjZVBvbGljeSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UmVzb3VyY2VQb2xpY3kgPSBcImV2ZW50czpQdXRSZXNvdXJjZVBvbGljeVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UHV0UnVsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UnVsZSA9IFwiZXZlbnRzOlB1dFJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlB1dFRhcmdldHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFRhcmdldHMgPSBcImV2ZW50czpQdXRUYXJnZXRzXCI7XG5cdC8qKiBbUGVybWlzc2lvbk1hbmFnZW1lbnRdIGV2ZW50czpSZW1vdmVQZXJtaXNzaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBSZW1vdmVQZXJtaXNzaW9uID0gXCJldmVudHM6UmVtb3ZlUGVybWlzc2lvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UmVtb3ZlVGFyZ2V0cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlVGFyZ2V0cyA9IFwiZXZlbnRzOlJlbW92ZVRhcmdldHNcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlJldHJpZXZlQ29ubmVjdGlvbkNyZWRlbnRpYWxzICovXG5cdHN0YXRpYyByZWFkb25seSBSZXRyaWV2ZUNvbm5lY3Rpb25DcmVkZW50aWFscyA9XG5cdFx0XCJldmVudHM6UmV0cmlldmVDb25uZWN0aW9uQ3JlZGVudGlhbHNcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlJldm9rZVJlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBSZXZva2VSZXNvdXJjZSA9IFwiZXZlbnRzOlJldm9rZVJlc291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpTdGFydFJlcGxheSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRSZXBsYXkgPSBcImV2ZW50czpTdGFydFJlcGxheVwiO1xuXHQvKiogW1RhZ2dpbmddIGV2ZW50czpUYWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2UgPSBcImV2ZW50czpUYWdSZXNvdXJjZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpUZXN0RXZlbnRQYXR0ZXJuICovXG5cdHN0YXRpYyByZWFkb25seSBUZXN0RXZlbnRQYXR0ZXJuID0gXCJldmVudHM6VGVzdEV2ZW50UGF0dGVyblwiO1xuXHQvKiogW1RhZ2dpbmddIGV2ZW50czpVbnRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlID0gXCJldmVudHM6VW50YWdSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlQXBpRGVzdGluYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFwaURlc3RpbmF0aW9uID0gXCJldmVudHM6VXBkYXRlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUFyY2hpdmUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFyY2hpdmUgPSBcImV2ZW50czpVcGRhdGVBcmNoaXZlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDb25uZWN0aW9uID0gXCJldmVudHM6VXBkYXRlQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlRW5kcG9pbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUVuZHBvaW50ID0gXCJldmVudHM6VXBkYXRlRW5kcG9pbnRcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUV2ZW50QnVzICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFdmVudEJ1cyA9IFwiZXZlbnRzOlVwZGF0ZUV2ZW50QnVzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRTb3VyY2UgPSBcImV2ZW50czpVcGRhdGVFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlU3Vic2NyaWJlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlU3Vic2NyaWJlciA9IFwiZXZlbnRzOlVwZGF0ZVN1YnNjcmliZXJcIjtcblxuXHQvKiogQWxsIHJlYWQtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFJlYWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlQXBpRGVzdGluYXRpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUFyY2hpdmUsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUVuZHBvaW50LFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVFdmVudEJ1cyxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlUmVwbGF5LFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVTdWJzY3JpYmVyLFxuXHRcdEV2ZW50c0FjdGlvbnMuYWN0aW9uR2V0UmVzb3VyY2VQb2xpY3ksXG5cdFx0RXZlbnRzQWN0aW9ucy5UZXN0RXZlbnRQYXR0ZXJuLFxuXHRdO1xuXHQvKiogQWxsIHdyaXRlLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEV2ZW50c0FjdGlvbnMuQWN0aXZhdGVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkFsbG93VmVuZGVkTG9nRGVsaXZlcnlGb3JSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkNhbmNlbFJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVTdWJzY3JpYmVyLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVhY3RpdmF0ZUV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVhdXRob3JpemVDb25uZWN0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlQXBpRGVzdGluYXRpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVBcmNoaXZlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlQ29ubmVjdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUVuZHBvaW50LFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlRXZlbnRCdXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZVJ1bGUsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVTdWJzY3JpYmVyLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGlzYWJsZVJ1bGUsXG5cdFx0RXZlbnRzQWN0aW9ucy5FbmFibGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuSW52b2tlQXBpRGVzdGluYXRpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRFdmVudHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRQYXJ0bmVyRXZlbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UmF3RXZlbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UnVsZSxcblx0XHRFdmVudHNBY3Rpb25zLlB1dFRhcmdldHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5SZW1vdmVUYXJnZXRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmV0cmlldmVDb25uZWN0aW9uQ3JlZGVudGlhbHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5SZXZva2VSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLlN0YXJ0UmVwbGF5LFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlQXBpRGVzdGluYXRpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVBcmNoaXZlLFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlQ29ubmVjdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUVuZHBvaW50LFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlRXZlbnRCdXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZVN1YnNjcmliZXIsXG5cdF07XG5cdC8qKiBBbGwgbGlzdC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsTGlzdEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdEFwaURlc3RpbmF0aW9ucyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RBcmNoaXZlcyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RDb25uZWN0aW9ucyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RFbmRwb2ludHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RXZlbnRCdXNlcyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RFdmVudFNvdXJjZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UGFydG5lckV2ZW50U291cmNlcyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RSZXBsYXlzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFJlc291cmNlUG9saWNpZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UnVsZU5hbWVzQnlUYXJnZXQsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UnVsZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0U3Vic2NyaWJlcnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0VGFnc0ZvclJlc291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFRhcmdldHNCeVJ1bGUsXG5cdF07XG5cdC8qKiBBbGwgcGVybWlzc2lvbi1tYW5hZ2VtZW50LWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxQZXJtaXNzaW9uTWFuYWdlbWVudEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlUmVzb3VyY2VQb2xpY3ksXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRQZXJtaXNzaW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UmVzb3VyY2VQb2xpY3ksXG5cdFx0RXZlbnRzQWN0aW9ucy5SZW1vdmVQZXJtaXNzaW9uLFxuXHRdO1xuXHQvKiogQWxsIHRhZ2dpbmctbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFRhZ2dpbmdBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLlRhZ1Jlc291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuVW50YWdSZXNvdXJjZSxcblx0XTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGFsaWFzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBbGlhc0FyblByb3BzIHtcblx0LyoqIFRoZSBBbGlhcyBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgYWxpYXM6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBhbGlhcyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQWxpYXNBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFsaWFzIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYWxpYXM6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGFwaS1kZXN0aW5hdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQVBJRGVzdGluYXRpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQXBpRGVzdGluYXRpb25OYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcGlEZXN0aW5hdGlvbk5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBhcGktZGVzdGluYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcGlEZXN0aW5hdGlvbk5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcGlEZXN0aW5hdGlvbk5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGFyY2hpdmUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FyY2hpdmVBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQXJjaGl2ZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFyY2hpdmVOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYXJjaGl2ZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQXJjaGl2ZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXJjaGl2ZU5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcmNoaXZlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY29ubmVjdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQ29ubmVjdGlvbkFyblByb3BzIHtcblx0LyoqIFRoZSBDb25uZWN0aW9uTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgY29ubmVjdGlvbk5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBjb25uZWN0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNDb25uZWN0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBDb25uZWN0aW9uTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGNvbm5lY3Rpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBjcmVhdGUtc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0NyZWF0ZVNuYXBzaG90QXJuUHJvcHMge1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGNyZWF0ZS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQ3JlYXRlU25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgZW5kcG9pbnQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0VuZHBvaW50QXJuUHJvcHMge1xuXHQvKiogVGhlIEVuZHBvaW50TmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZW5kcG9pbnQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0VuZHBvaW50QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFbmRwb2ludE5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGV2ZW50LWJ1c3YyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudEJ1c3YyQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50QnVzTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgT3BhcXVlSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtYnVzdjIgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50QnVzdjJBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEV2ZW50QnVzTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGV2ZW50LXNvdXJjZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRTb3VyY2VBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXZlbnRTb3VyY2VOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudFNvdXJjZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBldmVudC1zb3VyY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50U291cmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudFNvdXJjZU5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudFNvdXJjZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGV2ZW50LXNvdXJjZXYyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudFNvdXJjZXYyQXJuUHJvcHMge1xuXHQvKiogVGhlIFNvdXJjZVR5cGUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHNvdXJjZVR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudFNvdXJjZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGV2ZW50U291cmNlTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBvcGFxdWVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGV2ZW50LXNvdXJjZXYyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudFNvdXJjZXYyQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBTb3VyY2VUeXBlIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgc291cmNlVHlwZTogc3RyaW5nO1xuXHQvKiogVGhlIEV2ZW50U291cmNlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV2ZW50U291cmNlTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGtleSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzS2V5QXJuUHJvcHMge1xuXHQvKiogVGhlIEtleUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBrZXlJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGtleSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzS2V5QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBLZXlJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGtleUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSByZWJvb3QtaW5zdGFuY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuUHJvcHMge1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHJlYm9vdC1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUmVib290SW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgcmVwbGF5IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSZXBsYXlBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUmVwbGF5TmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcmVwbGF5TmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHJlcGxheSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUmVwbGF5QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBSZXBsYXlOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgcmVwbGF5TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgcnVsZS1vbi1jdXN0b20tZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSdWxlT25DdXN0b21FdmVudEJ1c0FyblByb3BzIHtcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIFJ1bGVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBydWxlTmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEV2ZW50QnVzTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIFJ1bGVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1J1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblByb3BzIHtcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFJ1bGVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHN0b3AtaW5zdGFuY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1N0b3BJbnN0YW5jZUFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBzdG9wLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNTdG9wSW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgc3Vic2NyaWJlciBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzU3Vic2NyaWJlckFyblByb3BzIHtcblx0LyoqIFRoZSBTdWJzY3JpYmVyTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgc3Vic2NyaWJlck5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBzdWJzY3JpYmVyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNTdWJzY3JpYmVyQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBTdWJzY3JpYmVyTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHN1YnNjcmliZXJOYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgT3BhcXVlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBvcGFxdWVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgdGVybWluYXRlLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNUZXJtaW5hdGVJbnN0YW5jZUFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSB0ZXJtaW5hdGUtaW5zdGFuY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1Rlcm1pbmF0ZUluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuY29uc3QgQWxpYXNBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6a21zOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6YWxpYXNcXC8oPzxhbGlhcz5bXjovP10rKSQvO1xuY29uc3QgQVBJRGVzdGluYXRpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6YXBpLWRlc3RpbmF0aW9uXFwvKD88YXBpRGVzdGluYXRpb25OYW1lPlteOi8/XSspJC87XG5jb25zdCBBcmNoaXZlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFyY2hpdmVcXC8oPzxhcmNoaXZlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgQ29ubmVjdGlvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpjb25uZWN0aW9uXFwvKD88Y29ubmVjdGlvbk5hbWU+W146Lz9dKykkLztcbmNvbnN0IENyZWF0ZVNuYXBzaG90QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRhcmdldFxcL2NyZWF0ZS1zbmFwc2hvdCQvO1xuY29uc3QgRW5kcG9pbnRBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZW5kcG9pbnRcXC8oPzxlbmRwb2ludE5hbWU+W146Lz9dKykkLztcbmNvbnN0IEV2ZW50QnVzQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmV2ZW50LWJ1c1xcLyg/PGV2ZW50QnVzTmFtZT5bXjovP10rKSQvO1xuY29uc3QgRXZlbnRCdXN2MkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpldmVudC1idXN2MlxcLyg/PGV2ZW50QnVzTmFtZT5bXjovP10rKVxcLyg/PG9wYXF1ZUlkPlteOi8/XSspJC87XG5jb25zdCBFdmVudFNvdXJjZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTo6ZXZlbnQtc291cmNlXFwvKD88ZXZlbnRTb3VyY2VOYW1lPlteOi8/XSspJC87XG5jb25zdCBFdmVudFNvdXJjZXYyQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmV2ZW50LXNvdXJjZXYyXFwvKD88c291cmNlVHlwZT5bXjovP10rKVxcLyg/PGV2ZW50U291cmNlTmFtZT5bXjovP10rKVxcLyg/PG9wYXF1ZUlkPlteOi8/XSspJC87XG5jb25zdCBLZXlBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6a21zOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6a2V5XFwvKD88a2V5SWQ+W146Lz9dKykkLztcbmNvbnN0IFJlYm9vdEluc3RhbmNlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRhcmdldFxcL3JlYm9vdC1pbnN0YW5jZSQvO1xuY29uc3QgUmVwbGF5QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnJlcGxheVxcLyg/PHJlcGxheU5hbWU+W146Lz9dKykkLztcbmNvbnN0IFJ1bGVPbkN1c3RvbUV2ZW50QnVzQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnJ1bGVcXC8oPzxldmVudEJ1c05hbWU+W146Lz9dKylcXC8oPzxydWxlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnJ1bGVcXC8oPzxydWxlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgU3RvcEluc3RhbmNlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRhcmdldFxcL3N0b3AtaW5zdGFuY2UkLztcbmNvbnN0IFN1YnNjcmliZXJBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6c3Vic2NyaWJlclxcLyg/PHN1YnNjcmliZXJOYW1lPlteOi8/XSspXFwvKD88b3BhcXVlSWQ+W146Lz9dKykkLztcbmNvbnN0IFRlcm1pbmF0ZUluc3RhbmNlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRhcmdldFxcL3Rlcm1pbmF0ZS1pbnN0YW5jZSQvO1xuXG4vKipcbiAqIEFSTiBidWlsZGVycywgdmFsaWRhdG9ycywgYW5kIHBhcnNlcnMgZm9yIGV2ZW50cyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudHNSZXNvdXJjZXMge1xuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGFsaWFzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGFsaWFzKHByb3BzOiBFdmVudHNBbGlhc0FyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTprbXM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YWxpYXMvJHtwcm9wcy5hbGlhc31gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgYWxpYXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEFsaWFzQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEFsaWFzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGFsaWFzIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUFsaWFzQXJuKGFybjogc3RyaW5nKTogRXZlbnRzQWxpYXNBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEFsaWFzQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFsaWFzIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFsaWFzOiBtYXRjaC5ncm91cHMhLmFsaWFzLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGFwaS1kZXN0aW5hdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBhcGlEZXN0aW5hdGlvbihwcm9wczogRXZlbnRzQVBJRGVzdGluYXRpb25Bcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFwaS1kZXN0aW5hdGlvbi8ke3Byb3BzLmFwaURlc3RpbmF0aW9uTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgYXBpLWRlc3RpbmF0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRBUElEZXN0aW5hdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBUElEZXN0aW5hdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBhcGktZGVzdGluYXRpb24gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQVBJRGVzdGluYXRpb25Bcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBBUElEZXN0aW5hdGlvbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcGktZGVzdGluYXRpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBpRGVzdGluYXRpb25OYW1lOiBtYXRjaC5ncm91cHMhLmFwaURlc3RpbmF0aW9uTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBhcmNoaXZlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGFyY2hpdmUocHJvcHM6IEV2ZW50c0FyY2hpdmVBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFyY2hpdmUvJHtwcm9wcy5hcmNoaXZlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgYXJjaGl2ZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQXJjaGl2ZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBcmNoaXZlQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGFyY2hpdmUgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQXJjaGl2ZUFybihhcm46IHN0cmluZyk6IEV2ZW50c0FyY2hpdmVBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEFyY2hpdmVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXJjaGl2ZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhcmNoaXZlTmFtZTogbWF0Y2guZ3JvdXBzIS5hcmNoaXZlTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBjb25uZWN0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGNvbm5lY3Rpb24ocHJvcHM6IEV2ZW50c0Nvbm5lY3Rpb25Bcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmNvbm5lY3Rpb24vJHtwcm9wcy5jb25uZWN0aW9uTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgY29ubmVjdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQ29ubmVjdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDb25uZWN0aW9uQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGNvbm5lY3Rpb24gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQ29ubmVjdGlvbkFybihhcm46IHN0cmluZyk6IEV2ZW50c0Nvbm5lY3Rpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IENvbm5lY3Rpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29ubmVjdGlvbiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRjb25uZWN0aW9uTmFtZTogbWF0Y2guZ3JvdXBzIS5jb25uZWN0aW9uTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBjcmVhdGUtc25hcHNob3QgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlU25hcHNob3QocHJvcHM6IEV2ZW50c0NyZWF0ZVNuYXBzaG90QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTp0YXJnZXQvY3JlYXRlLXNuYXBzaG90YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGNyZWF0ZS1zbmFwc2hvdCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQ3JlYXRlU25hcHNob3RBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ3JlYXRlU25hcHNob3RBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgY3JlYXRlLXNuYXBzaG90IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUNyZWF0ZVNuYXBzaG90QXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNDcmVhdGVTbmFwc2hvdEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQ3JlYXRlU25hcHNob3RBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3JlYXRlLXNuYXBzaG90IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBlbmRwb2ludCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBlbmRwb2ludChwcm9wczogRXZlbnRzRW5kcG9pbnRBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmVuZHBvaW50LyR7cHJvcHMuZW5kcG9pbnROYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBlbmRwb2ludCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRW5kcG9pbnRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRW5kcG9pbnRBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZW5kcG9pbnQgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRW5kcG9pbnRBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNFbmRwb2ludEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRW5kcG9pbnRBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZW5kcG9pbnQgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZW5kcG9pbnROYW1lOiBtYXRjaC5ncm91cHMhLmVuZHBvaW50TmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZXZlbnRCdXMocHJvcHM6IEV2ZW50c0V2ZW50QnVzQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpldmVudC1idXMvJHtwcm9wcy5ldmVudEJ1c05hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV2ZW50LWJ1cyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXZlbnRCdXNBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRCdXNBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZXZlbnQtYnVzIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUV2ZW50QnVzQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV2ZW50QnVzQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV2ZW50LWJ1cyBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudEJ1c05hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRCdXNOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGV2ZW50LWJ1c3YyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzdjIocHJvcHM6IEV2ZW50c0V2ZW50QnVzdjJBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmV2ZW50LWJ1c3YyLyR7cHJvcHMuZXZlbnRCdXNOYW1lfS8ke3Byb3BzLm9wYXF1ZUlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBldmVudC1idXN2MiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXZlbnRCdXN2MkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFdmVudEJ1c3YyQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGV2ZW50LWJ1c3YyIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUV2ZW50QnVzdjJBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNFdmVudEJ1c3YyQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBFdmVudEJ1c3YyQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV2ZW50LWJ1c3YyIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGV2ZW50QnVzTmFtZTogbWF0Y2guZ3JvdXBzIS5ldmVudEJ1c05hbWUsXG5cdFx0XHRvcGFxdWVJZDogbWF0Y2guZ3JvdXBzIS5vcGFxdWVJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBldmVudC1zb3VyY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZXZlbnRTb3VyY2UocHJvcHM6IEV2ZW50c0V2ZW50U291cmNlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06OmV2ZW50LXNvdXJjZS8ke3Byb3BzLmV2ZW50U291cmNlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXZlbnQtc291cmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFdmVudFNvdXJjZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFdmVudFNvdXJjZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBldmVudC1zb3VyY2UgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRXZlbnRTb3VyY2VBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNFdmVudFNvdXJjZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXZlbnRTb3VyY2VBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXZlbnQtc291cmNlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGV2ZW50U291cmNlTmFtZTogbWF0Y2guZ3JvdXBzIS5ldmVudFNvdXJjZU5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXZlbnQtc291cmNldjIgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZXZlbnRTb3VyY2V2Mihwcm9wczogRXZlbnRzRXZlbnRTb3VyY2V2MkFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZXZlbnQtc291cmNldjIvJHtwcm9wcy5zb3VyY2VUeXBlfS8ke3Byb3BzLmV2ZW50U291cmNlTmFtZX0vJHtwcm9wcy5vcGFxdWVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXZlbnQtc291cmNldjIgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEV2ZW50U291cmNldjJBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRTb3VyY2V2MkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBldmVudC1zb3VyY2V2MiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFdmVudFNvdXJjZXYyQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRTb3VyY2V2MkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXZlbnRTb3VyY2V2MkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBldmVudC1zb3VyY2V2MiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRzb3VyY2VUeXBlOiBtYXRjaC5ncm91cHMhLnNvdXJjZVR5cGUsXG5cdFx0XHRldmVudFNvdXJjZU5hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRTb3VyY2VOYW1lLFxuXHRcdFx0b3BhcXVlSWQ6IG1hdGNoLmdyb3VwcyEub3BhcXVlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUga2V5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGtleShwcm9wczogRXZlbnRzS2V5QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omttczoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTprZXkvJHtwcm9wcy5rZXlJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUga2V5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRLZXlBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gS2V5QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGtleSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VLZXlBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNLZXlBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEtleUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBrZXkgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0a2V5SWQ6IG1hdGNoLmdyb3VwcyEua2V5SWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgcmVib290LWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHJlYm9vdEluc3RhbmNlKHByb3BzOiBFdmVudHNSZWJvb3RJbnN0YW5jZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06dGFyZ2V0L3JlYm9vdC1pbnN0YW5jZWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSByZWJvb3QtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFJlYm9vdEluc3RhbmNlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFJlYm9vdEluc3RhbmNlQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJlYm9vdC1pbnN0YW5jZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSZWJvb3RJbnN0YW5jZUFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogRXZlbnRzUmVib290SW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJlYm9vdEluc3RhbmNlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlYm9vdC1pbnN0YW5jZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgcmVwbGF5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHJlcGxheShwcm9wczogRXZlbnRzUmVwbGF5QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpyZXBsYXkvJHtwcm9wcy5yZXBsYXlOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSByZXBsYXkgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFJlcGxheUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSZXBsYXlBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgcmVwbGF5IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVJlcGxheUFybihhcm46IHN0cmluZyk6IEV2ZW50c1JlcGxheUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gUmVwbGF5QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlcGxheSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRyZXBsYXlOYW1lOiBtYXRjaC5ncm91cHMhLnJlcGxheU5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgcnVsZS1vbi1jdXN0b20tZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHJ1bGVPbkN1c3RvbUV2ZW50QnVzKFxuXHRcdHByb3BzOiBFdmVudHNSdWxlT25DdXN0b21FdmVudEJ1c0FyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpydWxlLyR7cHJvcHMuZXZlbnRCdXNOYW1lfS8ke3Byb3BzLnJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFJ1bGVPbkN1c3RvbUV2ZW50QnVzQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFJ1bGVPbkN1c3RvbUV2ZW50QnVzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSdWxlT25DdXN0b21FdmVudEJ1c0Fybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJ1bGVPbkN1c3RvbUV2ZW50QnVzQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudEJ1c05hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRCdXNOYW1lLFxuXHRcdFx0cnVsZU5hbWU6IG1hdGNoLmdyb3VwcyEucnVsZU5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgcnVsZS1vbi1kZWZhdWx0LWV2ZW50LWJ1cyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBydWxlT25EZWZhdWx0RXZlbnRCdXMoXG5cdFx0cHJvcHM6IEV2ZW50c1J1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpydWxlLyR7cHJvcHMucnVsZU5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFJ1bGVPbkRlZmF1bHRFdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgcnVsZS1vbi1kZWZhdWx0LWV2ZW50LWJ1cyBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1J1bGVPbkRlZmF1bHRFdmVudEJ1c0FybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cnVsZU5hbWU6IG1hdGNoLmdyb3VwcyEucnVsZU5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgc3RvcC1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBzdG9wSW5zdGFuY2UocHJvcHM6IEV2ZW50c1N0b3BJbnN0YW5jZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06dGFyZ2V0L3N0b3AtaW5zdGFuY2VgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgc3RvcC1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkU3RvcEluc3RhbmNlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFN0b3BJbnN0YW5jZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBzdG9wLWluc3RhbmNlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVN0b3BJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IEV2ZW50c1N0b3BJbnN0YW5jZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gU3RvcEluc3RhbmNlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHN0b3AtaW5zdGFuY2UgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHN1YnNjcmliZXIgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgc3Vic2NyaWJlcihwcm9wczogRXZlbnRzU3Vic2NyaWJlckFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06c3Vic2NyaWJlci8ke3Byb3BzLnN1YnNjcmliZXJOYW1lfS8ke3Byb3BzLm9wYXF1ZUlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBzdWJzY3JpYmVyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRTdWJzY3JpYmVyQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFN1YnNjcmliZXJBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgc3Vic2NyaWJlciBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VTdWJzY3JpYmVyQXJuKGFybjogc3RyaW5nKTogRXZlbnRzU3Vic2NyaWJlckFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gU3Vic2NyaWJlckFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdWJzY3JpYmVyIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHN1YnNjcmliZXJOYW1lOiBtYXRjaC5ncm91cHMhLnN1YnNjcmliZXJOYW1lLFxuXHRcdFx0b3BhcXVlSWQ6IG1hdGNoLmdyb3VwcyEub3BhcXVlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgdGVybWluYXRlLWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHRlcm1pbmF0ZUluc3RhbmNlKHByb3BzOiBFdmVudHNUZXJtaW5hdGVJbnN0YW5jZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06dGFyZ2V0L3Rlcm1pbmF0ZS1pbnN0YW5jZWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSB0ZXJtaW5hdGUtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFRlcm1pbmF0ZUluc3RhbmNlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFRlcm1pbmF0ZUluc3RhbmNlQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHRlcm1pbmF0ZS1pbnN0YW5jZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VUZXJtaW5hdGVJbnN0YW5jZUFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogRXZlbnRzVGVybWluYXRlSW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFRlcm1pbmF0ZUluc3RhbmNlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlcm1pbmF0ZS1pbnN0YW5jZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIEFQSSBvcGVyYXRpb24gdG8gcmVxdWlyZWQgSUFNIGFjdGlvbnMgbWFwcGluZyBmb3IgZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzT3BlcmF0aW9ucyB7XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEFjdGl2YXRlRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBBY3RpdmF0ZUV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpBY3RpdmF0ZUV2ZW50U291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENhbmNlbFJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENhbmNlbFJlcGxheTogc3RyaW5nW10gPSBbXCJldmVudHM6Q2FuY2VsUmVwbGF5XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVBcGlEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUFwaURlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpDcmVhdGVBcGlEZXN0aW5hdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVBcmNoaXZlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXJjaGl2ZTogc3RyaW5nW10gPSBbXCJldmVudHM6Q3JlYXRlQXJjaGl2ZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQ29ubmVjdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNvbm5lY3Rpb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOkNyZWF0ZUNvbm5lY3Rpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUVuZHBvaW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRW5kcG9pbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZUVuZHBvaW50XCIsXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRXZlbnRCdXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudEJ1czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlRXZlbnRCdXNcIixcblx0XHRcImV2ZW50czpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWFjdGl2YXRlRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWFjdGl2YXRlRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlYWN0aXZhdGVFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWF1dGhvcml6ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWF1dGhvcml6ZUNvbm5lY3Rpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlYXV0aG9yaXplQ29ubmVjdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVBcGlEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwaURlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWxldGVBcGlEZXN0aW5hdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVBcmNoaXZlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQXJjaGl2ZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlQXJjaGl2ZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQ29ubmVjdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUNvbm5lY3Rpb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUNvbm5lY3Rpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUVuZHBvaW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRW5kcG9pbnQ6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUVuZHBvaW50XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVFdmVudEJ1cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV2ZW50QnVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZWxldGVFdmVudEJ1c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlUGFydG5lckV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUGFydG5lckV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlUnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVJ1bGU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFwaURlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZUFwaURlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQXJjaGl2ZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVBcmNoaXZlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUNvbm5lY3Rpb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlQ29ubmVjdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlRW5kcG9pbnQ6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlRW5kcG9pbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlRXZlbnRCdXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUV2ZW50QnVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZUV2ZW50QnVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZVJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSdWxlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERpc2FibGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYWJsZVJ1bGU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRpc2FibGVSdWxlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBFbmFibGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRW5hYmxlUnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6RW5hYmxlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEFwaURlc3RpbmF0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcGlEZXN0aW5hdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RBcGlEZXN0aW5hdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEFyY2hpdmVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFyY2hpdmVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0QXJjaGl2ZXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RDb25uZWN0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDb25uZWN0aW9uczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdENvbm5lY3Rpb25zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RW5kcG9pbnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEVuZHBvaW50czogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdEVuZHBvaW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEV2ZW50QnVzZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXZlbnRCdXNlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdEV2ZW50QnVzZXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFdmVudFNvdXJjZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXZlbnRTb3VyY2VzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0RXZlbnRTb3VyY2VzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50c1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0UGFydG5lckV2ZW50U291cmNlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0UmVwbGF5cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXBsYXlzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0UmVwbGF5c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0UnVsZU5hbWVzQnlUYXJnZXRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFJ1bGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0UnVsZXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUYWdzRm9yUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFnc0ZvclJlc291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0VGFnc0ZvclJlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUYXJnZXRzQnlSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhcmdldHNCeVJ1bGU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRFdmVudHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRFdmVudHM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlB1dEV2ZW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0UGFydG5lckV2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBhcnRuZXJFdmVudHM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlB1dFBhcnRuZXJFdmVudHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dFBlcm1pc3Npb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRQZXJtaXNzaW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpQdXRQZXJtaXNzaW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImV2ZW50czpQdXRSdWxlXCIsXG5cdFx0XCJldmVudHM6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0VGFyZ2V0cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFRhcmdldHM6IHN0cmluZ1tdID0gW1wiaWFtOlBhc3NSb2xlXCIsIFwiZXZlbnRzOlB1dFRhcmdldHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFJlbW92ZVBlcm1pc3Npb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBSZW1vdmVQZXJtaXNzaW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpSZW1vdmVQZXJtaXNzaW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBSZW1vdmVUYXJnZXRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlVGFyZ2V0czogc3RyaW5nW10gPSBbXCJldmVudHM6UmVtb3ZlVGFyZ2V0c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RhcnRSZXBsYXkgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydFJlcGxheTogc3RyaW5nW10gPSBbXCJldmVudHM6U3RhcnRSZXBsYXlcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlRhZ1Jlc291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBUZXN0RXZlbnRQYXR0ZXJuIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGVzdEV2ZW50UGF0dGVybjogc3RyaW5nW10gPSBbXCJldmVudHM6VGVzdEV2ZW50UGF0dGVyblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVW50YWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVudGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUFwaURlc3RpbmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQXBpRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUFyY2hpdmUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcmNoaXZlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVBcmNoaXZlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVDb25uZWN0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ29ubmVjdGlvbjogc3RyaW5nW10gPSBbXCJldmVudHM6VXBkYXRlQ29ubmVjdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRW5kcG9pbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbmRwb2ludDogc3RyaW5nW10gPSBbXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImV2ZW50czpVcGRhdGVFbmRwb2ludFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFdmVudEJ1cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV2ZW50QnVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVFdmVudEJ1c1wiXTtcbn1cblxuLyoqXG4gKiBDb25kaXRpb24ga2V5IGNvbnN0YW50cyBhbmQgYnVpbGRlcnMgZm9yIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50c0NvbmRpdGlvbnMge1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRW5kcG9pbnQgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRW5kcG9pbnRDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpFdmVudEJ1c0FyblwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXZlbnRCdXMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRCdXNDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZUV2ZW50U291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV2ZW50U291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJldmVudHM6c291cmNlXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVTdWJzY3JpYmVyIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVN1YnNjcmliZXJDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpDb250ZW50RmlsdGVyUHJlc2VudFwiLFxuXHRcdFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9XCIsXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlclwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgRGVsZXRlUmVzb3VyY2VQb2xpY3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUmVzb3VyY2VQb2xpY3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpQb2xpY3lOYW1lXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEZWxldGVSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgRGVzY3JpYmVSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEaXNhYmxlUnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhYmxlUnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBFbmFibGVSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZVJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgR2V0UmVzb3VyY2VQb2xpY3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0UmVzb3VyY2VQb2xpY3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpQb2xpY3lOYW1lXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0VGFnc0ZvclJlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgTGlzdFRhcmdldHNCeVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhcmdldHNCeVJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgUHV0RXZlbnRzIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGVcIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2VcIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Db250ZW50VHlwZVwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC10eXBlXCIsXG5cdFx0XCJldmVudHM6ZXZlbnRCdXNJbnZvY2F0aW9uXCIsXG5cdFx0XCJldmVudHM6c291cmNlXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRSYXdFdmVudHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UmF3RXZlbnRzQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlXCIsXG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzU291cmNlXCIsXG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQ29udGVudFR5cGVcIixcblx0XHRcImV2ZW50czpldmVudEJ1c0ludm9jYXRpb25cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFB1dFJlc291cmNlUG9saWN5IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJlc291cmNlUG9saWN5Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6UG9saWN5TmFtZVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgUHV0UnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XHRcImV2ZW50czpkZXRhaWwtdHlwZVwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC5ldmVudFR5cGVDb2RlXCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLnNlcnZpY2VcIixcblx0XHRcImV2ZW50czpkZXRhaWwudXNlcklkZW50aXR5LnByaW5jaXBhbElkXCIsXG5cdFx0XCJldmVudHM6c291cmNlXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRUYXJnZXRzIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFRhcmdldHNDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpUYXJnZXRBcm5cIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgUmVtb3ZlVGFyZ2V0cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBSZW1vdmVUYXJnZXRzQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFRhZ1Jlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVudGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlRW5kcG9pbnQgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRW5kcG9pbnRDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpFdmVudEJ1c0FyblwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlRXZlbnRTb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRTb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpzb3VyY2VcIl07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVTdWJzY3JpYmVyIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVN1YnNjcmliZXJDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpDb250ZW50RmlsdGVyUHJlc2VudFwiLFxuXHRcdFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9XCIsXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlclwiLFxuXHRdO1xuXG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVFVRVNUX1RBRyA9IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVTT1VSQ0VfVEFHID0gXCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6VGFnS2V5cyAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19UQUdfS0VZUyA9IFwiYXdzOlRhZ0tleXNcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpDb250ZW50RmlsdGVyUHJlc2VudCAoQm9vbCkgKi9cblx0c3RhdGljIHJlYWRvbmx5IENPTlRFTlRfRklMVEVSX1BSRVNFTlQgPSBcImV2ZW50czpDb250ZW50RmlsdGVyUHJlc2VudFwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOkV2ZW50QnVzQXJuIChBcnJheU9mQVJOKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRVZFTlRfQlVTX0FSTiA9IFwiZXZlbnRzOkV2ZW50QnVzQXJuXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6TWFuYWdlZEJ5IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBNQU5BR0VEX0JZID0gXCJldmVudHM6TWFuYWdlZEJ5XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0gKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBNRVRBREFUQSA9IFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlciAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTUVUQURBVEFfTUFUQ0hFUiA9IFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9L01hdGNoZXJcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpQb2xpY3lOYW1lIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBQT0xJQ1lfTkFNRSA9IFwiZXZlbnRzOlBvbGljeU5hbWVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBTWVNURU1fTUVUQURBVEFfQVdTX0RFVEFJTF9UWVBFID1cblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzU291cmNlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBTWVNURU1fTUVUQURBVEFfQVdTX1NPVVJDRSA9XG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzU291cmNlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6U3lzdGVtTWV0YWRhdGEvQ29udGVudFR5cGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNZU1RFTV9NRVRBREFUQV9DT05URU5UX1RZUEUgPVxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0NvbnRlbnRUeXBlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6VGFyZ2V0QXJuIChBcnJheU9mQVJOKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVEFSR0VUX0FSTiA9IFwiZXZlbnRzOlRhcmdldEFyblwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmNyZWF0b3JBY2NvdW50IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBDUkVBVE9SX0FDQ09VTlQgPSBcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmRldGFpbC10eXBlIChBcnJheU9mU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgREVUQUlMX1RZUEUgPSBcImV2ZW50czpkZXRhaWwtdHlwZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmRldGFpbC5ldmVudFR5cGVDb2RlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfRVZFTlRfVFlQRV9DT0RFID0gXCJldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpkZXRhaWwuc2VydmljZSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgREVUQUlMX1NFUlZJQ0UgPSBcImV2ZW50czpkZXRhaWwuc2VydmljZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWQgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IERFVEFJTF9VU0VSX0lERU5USVRZX1BSSU5DSVBBTF9JRCA9XG5cdFx0XCJldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZFwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvbiAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRVZFTlRfQlVTX0lOVk9DQVRJT04gPSBcImV2ZW50czpldmVudEJ1c0ludm9jYXRpb25cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpzb3VyY2UgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBTT1VSQ0UgPSBcImV2ZW50czpzb3VyY2VcIjtcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXF1ZXN0VGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXNvdXJjZVRhZyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpUYWdLZXlzYC5cblx0ICovXG5cdHN0YXRpYyB0YWdLZXlzKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImF3czpUYWdLZXlzXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50YC5cblx0ICovXG5cdHN0YXRpYyBjb250ZW50RmlsdGVyUHJlc2VudChcblx0XHR2YWx1ZTogYm9vbGVhbixcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+IHtcblx0XHRyZXR1cm4geyBCb29sOiB7IFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6RXZlbnRCdXNBcm5gLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzQVJOKFxuXHRcdHZhbHVlczogc3RyaW5nW10sXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOkFybkVxdWFsc1wiOiB7IFwiZXZlbnRzOkV2ZW50QnVzQXJuXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOk1hbmFnZWRCeWAuXG5cdCAqL1xuXHRzdGF0aWMgbWFuYWdlZEJ5KHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOk1hbmFnZWRCeVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9YC5cblx0ICovXG5cdHN0YXRpYyBtZXRhZGF0YSh2YWx1ZXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9XCI6IHZhbHVlcyB9LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9L01hdGNoZXJgLlxuXHQgKi9cblx0c3RhdGljIG1ldGFkYXRhTWF0Y2hlcihcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyXCI6IHZhbHVlIH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6UG9saWN5TmFtZWAuXG5cdCAqL1xuXHRzdGF0aWMgcG9saWN5TmFtZSh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpQb2xpY3lOYW1lXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzRGV0YWlsVHlwZWAuXG5cdCAqL1xuXHRzdGF0aWMgc3lzdGVtTWV0YWRhdGFBV1NEZXRhaWxUeXBlKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzRGV0YWlsVHlwZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c1NvdXJjZWAuXG5cdCAqL1xuXHRzdGF0aWMgc3lzdGVtTWV0YWRhdGFBV1NTb3VyY2UoXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2VcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Db250ZW50VHlwZWAuXG5cdCAqL1xuXHRzdGF0aWMgc3lzdGVtTWV0YWRhdGFDb250ZW50VHlwZShcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0NvbnRlbnRUeXBlXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6VGFyZ2V0QXJuYC5cblx0ICovXG5cdHN0YXRpYyB0YXJnZXRBUk4odmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOkFybkVxdWFsc1wiOiB7IFwiZXZlbnRzOlRhcmdldEFyblwiOiB2YWx1ZXMgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpjcmVhdG9yQWNjb3VudGAuXG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRvckFjY291bnQodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6Y3JlYXRvckFjY291bnRcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpkZXRhaWwtdHlwZWAuXG5cdCAqL1xuXHRzdGF0aWMgZGV0YWlsVHlwZShcblx0XHR2YWx1ZXM6IHN0cmluZ1tdLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImV2ZW50czpkZXRhaWwtdHlwZVwiOiB2YWx1ZXMgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpkZXRhaWwuZXZlbnRUeXBlQ29kZWAuXG5cdCAqL1xuXHRzdGF0aWMgZGV0YWlsRXZlbnRUeXBlQ29kZShcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmRldGFpbC5ldmVudFR5cGVDb2RlXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6ZGV0YWlsLnNlcnZpY2VgLlxuXHQgKi9cblx0c3RhdGljIGRldGFpbFNlcnZpY2UodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6ZGV0YWlsLnNlcnZpY2VcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpkZXRhaWwudXNlcklkZW50aXR5LnByaW5jaXBhbElkYC5cblx0ICovXG5cdHN0YXRpYyBkZXRhaWxVc2VySWRlbnRpdHlQcmluY2lwYWxJZChcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpkZXRhaWwudXNlcklkZW50aXR5LnByaW5jaXBhbElkXCI6IHZhbHVlIH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6ZXZlbnRCdXNJbnZvY2F0aW9uYC5cblx0ICovXG5cdHN0YXRpYyBldmVudEJ1c0ludm9jYXRpb24oXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpldmVudEJ1c0ludm9jYXRpb25cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpzb3VyY2VgLlxuXHQgKi9cblx0c3RhdGljIHNvdXJjZSh2YWx1ZXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHsgXCJldmVudHM6c291cmNlXCI6IHZhbHVlcyB9IH07XG5cdH1cbn1cbiJdfQ==
1298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCw2Q0FBNkM7QUFDN0Msb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsYUFBYTs7QUFBMUIsc0NBc1BDOzs7QUFyUEEsOEJBQThCO0FBQ2QsNEJBQWMsR0FBRyxRQUFRLENBQUM7QUFFMUMseUNBQXlDO0FBQ3pCLGlDQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBQ25FLHVEQUF1RDtBQUN2QywrQ0FBaUMsR0FDaEQsMENBQTBDLENBQUM7QUFDNUMsa0NBQWtDO0FBQ2xCLDBCQUFZLEdBQUcscUJBQXFCLENBQUM7QUFDckQsMENBQTBDO0FBQzFCLGtDQUFvQixHQUFHLDZCQUE2QixDQUFDO0FBQ3JFLG1DQUFtQztBQUNuQiwyQkFBYSxHQUFHLHNCQUFzQixDQUFDO0FBQ3ZELHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCx1Q0FBdUM7QUFDdkIsK0JBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFDL0QsOENBQThDO0FBQzlCLHNDQUF3QixHQUFHLGlDQUFpQyxDQUFDO0FBQzdFLHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCwyQ0FBMkM7QUFDM0IsbUNBQXFCLEdBQUcsOEJBQThCLENBQUM7QUFDdkUsMkNBQTJDO0FBQzNCLG1DQUFxQixHQUFHLDhCQUE4QixDQUFDO0FBQ3ZFLDBDQUEwQztBQUMxQixrQ0FBb0IsR0FBRyw2QkFBNkIsQ0FBQztBQUNyRSxtQ0FB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dkUsb0RBQW9EO0FBQ3BDLCtCQUFjLEdBQUcsdUJBQXVCLENBQUM7QUFDekQscUVBQXFFO0FBQ3JELGtEQUFpQyxHQUNoRCx3Q0FBd0MsQ0FBQztBQUMxQyx3REFBd0Q7QUFDeEMscUNBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFDbkUsbURBQW1EO0FBQ25DLHVCQUFNLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFVVE8tR0VORVJBVEVEIEZJTEUg4oCUIERPIE5PVCBFRElUIE1BTlVBTExZXG4vLyBHZW5lcmF0ZWQgZnJvbSBBV1MgU2VydmljZSBBdXRob3JpemF0aW9uIFJlZmVyZW5jZSBkYXRhXG4vLyBTb3VyY2U6IGRhdGEvc2VydmljZS1yZWZlcmVuY2UvZXZlbnRzLmpzb25cbi8vIFJ1biBgbnB4IHByb2plbiBnZW5lcmF0ZS1jb25zdGFudHNgIHRvIHJlZ2VuZXJhdGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSUFNIGFjdGlvbiBjb25zdGFudHMgZm9yIHRoZSBldmVudHMgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50c0FjdGlvbnMge1xuXHQvKiogVGhlIElBTSBzZXJ2aWNlIHByZWZpeC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfUFJFRklYID0gXCJldmVudHNcIjtcblxuXHQvKiogW1dyaXRlXSBldmVudHM6QWN0aXZhdGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWN0aXZhdGVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkFjdGl2YXRlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkFsbG93VmVuZGVkTG9nRGVsaXZlcnlGb3JSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsb3dWZW5kZWRMb2dEZWxpdmVyeUZvclJlc291cmNlID1cblx0XHRcImV2ZW50czpBbGxvd1ZlbmRlZExvZ0RlbGl2ZXJ5Rm9yUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNhbmNlbFJlcGxheSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ2FuY2VsUmVwbGF5ID0gXCJldmVudHM6Q2FuY2VsUmVwbGF5XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXBpRGVzdGluYXRpb24gPSBcImV2ZW50czpDcmVhdGVBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlQXJjaGl2ZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXJjaGl2ZSA9IFwiZXZlbnRzOkNyZWF0ZUFyY2hpdmVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNvbm5lY3Rpb24gPSBcImV2ZW50czpDcmVhdGVDb25uZWN0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVFbmRwb2ludCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRW5kcG9pbnQgPSBcImV2ZW50czpDcmVhdGVFbmRwb2ludFwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlRXZlbnRCdXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV2ZW50QnVzID0gXCJldmVudHM6Q3JlYXRlRXZlbnRCdXNcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkNyZWF0ZUV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkNyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlU3Vic2NyaWJlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU3Vic2NyaWJlciA9IFwiZXZlbnRzOkNyZWF0ZVN1YnNjcmliZXJcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlYWN0aXZhdGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhY3RpdmF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6RGVhY3RpdmF0ZUV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWF1dGhvcml6ZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlYXV0aG9yaXplQ29ubmVjdGlvbiA9IFwiZXZlbnRzOkRlYXV0aG9yaXplQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwaURlc3RpbmF0aW9uID0gXCJldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUFyY2hpdmUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFyY2hpdmUgPSBcImV2ZW50czpEZWxldGVBcmNoaXZlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25uZWN0aW9uID0gXCJldmVudHM6RGVsZXRlQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlRW5kcG9pbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUVuZHBvaW50ID0gXCJldmVudHM6RGVsZXRlRW5kcG9pbnRcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUV2ZW50QnVzICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFdmVudEJ1cyA9IFwiZXZlbnRzOkRlbGV0ZUV2ZW50QnVzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXZlbnRTb3VyY2UgPSBcImV2ZW50czpEZWxldGVFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlUGFydG5lckV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgPSBcImV2ZW50czpEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtQZXJtaXNzaW9uTWFuYWdlbWVudF0gZXZlbnRzOkRlbGV0ZVJlc291cmNlUG9saWN5ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSZXNvdXJjZVBvbGljeSA9IFwiZXZlbnRzOkRlbGV0ZVJlc291cmNlUG9saWN5XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSdWxlID0gXCJldmVudHM6RGVsZXRlUnVsZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlU3Vic2NyaWJlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlU3Vic2NyaWJlciA9IFwiZXZlbnRzOkRlbGV0ZVN1YnNjcmliZXJcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOkRlc2NyaWJlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFyY2hpdmUgPSBcImV2ZW50czpEZXNjcmliZUFyY2hpdmVcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUNvbm5lY3Rpb24gPSBcImV2ZW50czpEZXNjcmliZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFbmRwb2ludCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFbmRwb2ludCA9IFwiZXZlbnRzOkRlc2NyaWJlRW5kcG9pbnRcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudEJ1cyA9IFwiZXZlbnRzOkRlc2NyaWJlRXZlbnRCdXNcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkRlc2NyaWJlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlID1cblx0XHRcImV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVJlcGxheSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSZXBsYXkgPSBcImV2ZW50czpEZXNjcmliZVJlcGxheVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUnVsZSA9IFwiZXZlbnRzOkRlc2NyaWJlUnVsZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVN1YnNjcmliZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlU3Vic2NyaWJlciA9IFwiZXZlbnRzOkRlc2NyaWJlU3Vic2NyaWJlclwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGlzYWJsZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlID0gXCJldmVudHM6RGlzYWJsZVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkVuYWJsZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZVJ1bGUgPSBcImV2ZW50czpFbmFibGVSdWxlXCI7XG5cdC8qKiBbUmVhZF0gZXZlbnRzOkdldFJlc291cmNlUG9saWN5ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRSZXNvdXJjZVBvbGljeSA9IFwiZXZlbnRzOkdldFJlc291cmNlUG9saWN5XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpJbnZva2VBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgSW52b2tlQXBpRGVzdGluYXRpb24gPSBcImV2ZW50czpJbnZva2VBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0QXBpRGVzdGluYXRpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBpRGVzdGluYXRpb25zID0gXCJldmVudHM6TGlzdEFwaURlc3RpbmF0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0QXJjaGl2ZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcmNoaXZlcyA9IFwiZXZlbnRzOkxpc3RBcmNoaXZlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0Q29ubmVjdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDb25uZWN0aW9ucyA9IFwiZXZlbnRzOkxpc3RDb25uZWN0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RW5kcG9pbnRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RW5kcG9pbnRzID0gXCJldmVudHM6TGlzdEVuZHBvaW50c1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RXZlbnRCdXNlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50QnVzZXMgPSBcImV2ZW50czpMaXN0RXZlbnRCdXNlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RXZlbnRTb3VyY2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXZlbnRTb3VyY2VzID0gXCJldmVudHM6TGlzdEV2ZW50U291cmNlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50cyA9XG5cdFx0XCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UGFydG5lckV2ZW50U291cmNlcyA9IFwiZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSZXBsYXlzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVwbGF5cyA9IFwiZXZlbnRzOkxpc3RSZXBsYXlzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSZXNvdXJjZVBvbGljaWVzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVzb3VyY2VQb2xpY2llcyA9IFwiZXZlbnRzOkxpc3RSZXNvdXJjZVBvbGljaWVzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSdWxlTmFtZXNCeVRhcmdldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0ID0gXCJldmVudHM6TGlzdFJ1bGVOYW1lc0J5VGFyZ2V0XCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSdWxlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVzID0gXCJldmVudHM6TGlzdFJ1bGVzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RTdWJzY3JpYmVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFN1YnNjcmliZXJzID0gXCJldmVudHM6TGlzdFN1YnNjcmliZXJzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPSBcImV2ZW50czpMaXN0VGFnc0ZvclJlc291cmNlXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZSA9IFwiZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRFdmVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50cyA9IFwiZXZlbnRzOlB1dEV2ZW50c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UHV0UGFydG5lckV2ZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGFydG5lckV2ZW50cyA9IFwiZXZlbnRzOlB1dFBhcnRuZXJFdmVudHNcIjtcblx0LyoqIFtQZXJtaXNzaW9uTWFuYWdlbWVudF0gZXZlbnRzOlB1dFBlcm1pc3Npb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBlcm1pc3Npb24gPSBcImV2ZW50czpQdXRQZXJtaXNzaW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRSYXdFdmVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJhd0V2ZW50cyA9IFwiZXZlbnRzOlB1dFJhd0V2ZW50c1wiO1xuXHQvKiogW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBldmVudHM6UHV0UmVzb3VyY2VQb2xpY3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJlc291cmNlUG9saWN5ID0gXCJldmVudHM6UHV0UmVzb3VyY2VQb2xpY3lcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlB1dFJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJ1bGUgPSBcImV2ZW50czpQdXRSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRUYXJnZXRzICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRUYXJnZXRzID0gXCJldmVudHM6UHV0VGFyZ2V0c1wiO1xuXHQvKiogW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBldmVudHM6UmVtb3ZlUGVybWlzc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlUGVybWlzc2lvbiA9IFwiZXZlbnRzOlJlbW92ZVBlcm1pc3Npb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlJlbW92ZVRhcmdldHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVRhcmdldHMgPSBcImV2ZW50czpSZW1vdmVUYXJnZXRzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpSZXRyaWV2ZUNvbm5lY3Rpb25DcmVkZW50aWFscyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmV0cmlldmVDb25uZWN0aW9uQ3JlZGVudGlhbHMgPVxuXHRcdFwiZXZlbnRzOlJldHJpZXZlQ29ubmVjdGlvbkNyZWRlbnRpYWxzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpSZXZva2VSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmV2b2tlUmVzb3VyY2UgPSBcImV2ZW50czpSZXZva2VSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6U3RhcnRSZXBsYXkgKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0UmVwbGF5ID0gXCJldmVudHM6U3RhcnRSZXBsYXlcIjtcblx0LyoqIFtUYWdnaW5nXSBldmVudHM6VGFnUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlID0gXCJldmVudHM6VGFnUmVzb3VyY2VcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6VGVzdEV2ZW50UGF0dGVybiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGVzdEV2ZW50UGF0dGVybiA9IFwiZXZlbnRzOlRlc3RFdmVudFBhdHRlcm5cIjtcblx0LyoqIFtUYWdnaW5nXSBldmVudHM6VW50YWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZSA9IFwiZXZlbnRzOlVudGFnUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcmNoaXZlID0gXCJldmVudHM6VXBkYXRlQXJjaGl2ZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlQ29ubmVjdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ29ubmVjdGlvbiA9IFwiZXZlbnRzOlVwZGF0ZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUVuZHBvaW50ICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbmRwb2ludCA9IFwiZXZlbnRzOlVwZGF0ZUVuZHBvaW50XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRCdXMgPSBcImV2ZW50czpVcGRhdGVFdmVudEJ1c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6VXBkYXRlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZVN1YnNjcmliZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVN1YnNjcmliZXIgPSBcImV2ZW50czpVcGRhdGVTdWJzY3JpYmVyXCI7XG5cblx0LyoqIEFsbCByZWFkLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxSZWFkQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVBcmNoaXZlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVDb25uZWN0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlRXZlbnRCdXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZVJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlUnVsZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlU3Vic2NyaWJlcixcblx0XHRFdmVudHNBY3Rpb25zLmFjdGlvbkdldFJlc291cmNlUG9saWN5LFxuXHRcdEV2ZW50c0FjdGlvbnMuVGVzdEV2ZW50UGF0dGVybixcblx0XTtcblx0LyoqIEFsbCB3cml0ZS1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsV3JpdGVBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkFjdGl2YXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5BbGxvd1ZlbmRlZExvZ0RlbGl2ZXJ5Rm9yUmVzb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5DYW5jZWxSZXBsYXksXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVBcGlEZXN0aW5hdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUFyY2hpdmUsXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVDb25uZWN0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlRW5kcG9pbnQsXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVFdmVudEJ1cyxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlUGFydG5lckV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlU3Vic2NyaWJlcixcblx0XHRFdmVudHNBY3Rpb25zLkRlYWN0aXZhdGVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlYXV0aG9yaXplQ29ubmVjdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlU3Vic2NyaWJlcixcblx0XHRFdmVudHNBY3Rpb25zLkRpc2FibGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRW5hYmxlUnVsZSxcblx0XHRFdmVudHNBY3Rpb25zLkludm9rZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0RXZlbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UGFydG5lckV2ZW50cyxcblx0XHRFdmVudHNBY3Rpb25zLlB1dFJhd0V2ZW50cyxcblx0XHRFdmVudHNBY3Rpb25zLlB1dFJ1bGUsXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRUYXJnZXRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmVtb3ZlVGFyZ2V0cyxcblx0XHRFdmVudHNBY3Rpb25zLlJldHJpZXZlQ29ubmVjdGlvbkNyZWRlbnRpYWxzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmV2b2tlUmVzb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5TdGFydFJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVTdWJzY3JpYmVyLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RBcGlEZXN0aW5hdGlvbnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0QXJjaGl2ZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0Q29ubmVjdGlvbnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RW5kcG9pbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdEV2ZW50QnVzZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RXZlbnRTb3VyY2VzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFBhcnRuZXJFdmVudFNvdXJjZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UmVwbGF5cyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RSZXNvdXJjZVBvbGljaWVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0LFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFJ1bGVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFN1YnNjcmliZXJzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFRhZ3NGb3JSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RUYXJnZXRzQnlSdWxlLFxuXHRdO1xuXHQvKiogQWxsIHBlcm1pc3Npb24tbWFuYWdlbWVudC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUGVybWlzc2lvbk1hbmFnZW1lbnRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZVJlc291cmNlUG9saWN5LFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UGVybWlzc2lvbixcblx0XHRFdmVudHNBY3Rpb25zLlB1dFJlc291cmNlUG9saWN5LFxuXHRcdEV2ZW50c0FjdGlvbnMuUmVtb3ZlUGVybWlzc2lvbixcblx0XTtcblx0LyoqIEFsbCB0YWdnaW5nLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxUYWdnaW5nQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0RXZlbnRzQWN0aW9ucy5UYWdSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLlVudGFnUmVzb3VyY2UsXG5cdF07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhbGlhcyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQWxpYXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQWxpYXMgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFsaWFzOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYWxpYXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FsaWFzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBbGlhcyBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGFsaWFzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhcGktZGVzdGluYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwaURlc3RpbmF0aW9uTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgYXBpRGVzdGluYXRpb25OYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYXBpLWRlc3RpbmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBUElEZXN0aW5hdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXBpRGVzdGluYXRpb25OYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBpRGVzdGluYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhcmNoaXZlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBcmNoaXZlQXJuUHJvcHMge1xuXHQvKiogVGhlIEFyY2hpdmVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcmNoaXZlTmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGFyY2hpdmUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FyY2hpdmVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFyY2hpdmVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXJjaGl2ZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGNvbm5lY3Rpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0Nvbm5lY3Rpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQ29ubmVjdGlvbk5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGNvbm5lY3Rpb25OYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgY29ubmVjdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQ29ubmVjdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29ubmVjdGlvbk5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBjb25uZWN0aW9uTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY3JlYXRlLXNuYXBzaG90IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNDcmVhdGVTbmFwc2hvdEFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBjcmVhdGUtc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0NyZWF0ZVNuYXBzaG90QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGVuZHBvaW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFbmRwb2ludEFyblByb3BzIHtcblx0LyoqIFRoZSBFbmRwb2ludE5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGVuZHBvaW50TmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGVuZHBvaW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFbmRwb2ludEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRW5kcG9pbnROYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50QnVzQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50QnVzTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudEJ1c0FybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1idXN2MiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRCdXN2MkFyblByb3BzIHtcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBvcGFxdWVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGV2ZW50LWJ1c3YyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudEJ1c3YyQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1zb3VyY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50U291cmNlQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50U291cmNlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtc291cmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudFNvdXJjZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRTb3VyY2VOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1zb3VyY2V2MiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRTb3VyY2V2MkFyblByb3BzIHtcblx0LyoqIFRoZSBTb3VyY2VUeXBlIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBzb3VyY2VUeXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRTb3VyY2VOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudFNvdXJjZU5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBldmVudC1zb3VyY2V2MiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRTb3VyY2V2MkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgU291cmNlVHlwZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHNvdXJjZVR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudFNvdXJjZU5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudFNvdXJjZU5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBrZXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0tleUFyblByb3BzIHtcblx0LyoqIFRoZSBLZXlJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkga2V5SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBrZXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0tleUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgS2V5SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBrZXlJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgcmVib290LWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSZWJvb3RJbnN0YW5jZUFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSByZWJvb3QtaW5zdGFuY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJlcGxheSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUmVwbGF5QXJuUHJvcHMge1xuXHQvKiogVGhlIFJlcGxheU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJlcGxheU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSByZXBsYXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlcGxheUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgUmVwbGF5TmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJlcGxheU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1J1bGVPbkN1c3RvbUV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUnVsZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgcnVsZS1vbi1kZWZhdWx0LWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBzdG9wLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNTdG9wSW5zdGFuY2VBcm5Qcm9wcyB7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgc3RvcC1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzU3RvcEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHN1YnNjcmliZXIgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1N1YnNjcmliZXJBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgU3Vic2NyaWJlck5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHN1YnNjcmliZXJOYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgT3BhcXVlSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgc3Vic2NyaWJlciBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzU3Vic2NyaWJlckFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgU3Vic2NyaWJlck5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBzdWJzY3JpYmVyTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRlcm1pbmF0ZS1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzVGVybWluYXRlSW5zdGFuY2VBcm5Qcm9wcyB7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdGVybWluYXRlLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNUZXJtaW5hdGVJbnN0YW5jZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG59XG5cbmNvbnN0IEFsaWFzQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmttczooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFsaWFzXFwvKD88YWxpYXM+W146Lz9dKykkLztcbmNvbnN0IEFQSURlc3RpbmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwaS1kZXN0aW5hdGlvblxcLyg/PGFwaURlc3RpbmF0aW9uTmFtZT5bXjovP10rKSQvO1xuY29uc3QgQXJjaGl2ZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcmNoaXZlXFwvKD88YXJjaGl2ZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IENvbm5lY3Rpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6Y29ubmVjdGlvblxcLyg/PGNvbm5lY3Rpb25OYW1lPlteOi8/XSspJC87XG5jb25zdCBDcmVhdGVTbmFwc2hvdEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9jcmVhdGUtc25hcHNob3QkLztcbmNvbnN0IEVuZHBvaW50QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmVuZHBvaW50XFwvKD88ZW5kcG9pbnROYW1lPlteOi8/XSspJC87XG5jb25zdCBFdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpldmVudC1idXNcXC8oPzxldmVudEJ1c05hbWU+W146Lz9dKykkLztcbmNvbnN0IEV2ZW50QnVzdjJBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZXZlbnQtYnVzdjJcXC8oPzxldmVudEJ1c05hbWU+W146Lz9dKylcXC8oPzxvcGFxdWVJZD5bXjovP10rKSQvO1xuY29uc3QgRXZlbnRTb3VyY2VBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6OmV2ZW50LXNvdXJjZVxcLyg/PGV2ZW50U291cmNlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgRXZlbnRTb3VyY2V2MkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpldmVudC1zb3VyY2V2MlxcLyg/PHNvdXJjZVR5cGU+W146Lz9dKylcXC8oPzxldmVudFNvdXJjZU5hbWU+W146Lz9dKylcXC8oPzxvcGFxdWVJZD5bXjovP10rKSQvO1xuY29uc3QgS2V5QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmttczooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmtleVxcLyg/PGtleUlkPlteOi8/XSspJC87XG5jb25zdCBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9yZWJvb3QtaW5zdGFuY2UkLztcbmNvbnN0IFJlcGxheUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpyZXBsYXlcXC8oPzxyZXBsYXlOYW1lPlteOi8/XSspJC87XG5jb25zdCBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpydWxlXFwvKD88ZXZlbnRCdXNOYW1lPlteOi8/XSspXFwvKD88cnVsZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IFJ1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpydWxlXFwvKD88cnVsZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IFN0b3BJbnN0YW5jZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9zdG9wLWluc3RhbmNlJC87XG5jb25zdCBTdWJzY3JpYmVyQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnN1YnNjcmliZXJcXC8oPzxzdWJzY3JpYmVyTmFtZT5bXjovP10rKVxcLyg/PG9wYXF1ZUlkPlteOi8/XSspJC87XG5jb25zdCBUZXJtaW5hdGVJbnN0YW5jZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC90ZXJtaW5hdGUtaW5zdGFuY2UkLztcblxuLyoqXG4gKiBBUk4gYnVpbGRlcnMsIHZhbGlkYXRvcnMsIGFuZCBwYXJzZXJzIGZvciBldmVudHMgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzUmVzb3VyY2VzIHtcblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBhbGlhcyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBhbGlhcyhwcm9wczogRXZlbnRzQWxpYXNBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06a21zOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFsaWFzLyR7cHJvcHMuYWxpYXN9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFsaWFzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRBbGlhc0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBbGlhc0FyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBhbGlhcyBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VBbGlhc0Fybihhcm46IHN0cmluZyk6IEV2ZW50c0FsaWFzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBBbGlhc0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhbGlhcyBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhbGlhczogbWF0Y2guZ3JvdXBzIS5hbGlhcyxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBhcGktZGVzdGluYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgYXBpRGVzdGluYXRpb24ocHJvcHM6IEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcGktZGVzdGluYXRpb24vJHtwcm9wcy5hcGlEZXN0aW5hdGlvbk5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFwaS1kZXN0aW5hdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQVBJRGVzdGluYXRpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQVBJRGVzdGluYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgYXBpLWRlc3RpbmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUFQSURlc3RpbmF0aW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNBUElEZXN0aW5hdGlvbkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQVBJRGVzdGluYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXBpLWRlc3RpbmF0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwaURlc3RpbmF0aW9uTmFtZTogbWF0Y2guZ3JvdXBzIS5hcGlEZXN0aW5hdGlvbk5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgYXJjaGl2ZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBhcmNoaXZlKHByb3BzOiBFdmVudHNBcmNoaXZlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcmNoaXZlLyR7cHJvcHMuYXJjaGl2ZU5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFyY2hpdmUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEFyY2hpdmVBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQXJjaGl2ZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBhcmNoaXZlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUFyY2hpdmVBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNBcmNoaXZlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBBcmNoaXZlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyY2hpdmUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXJjaGl2ZU5hbWU6IG1hdGNoLmdyb3VwcyEuYXJjaGl2ZU5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY29ubmVjdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBjb25uZWN0aW9uKHByb3BzOiBFdmVudHNDb25uZWN0aW9uQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpjb25uZWN0aW9uLyR7cHJvcHMuY29ubmVjdGlvbk5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGNvbm5lY3Rpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZENvbm5lY3Rpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ29ubmVjdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBjb25uZWN0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUNvbm5lY3Rpb25Bcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNDb25uZWN0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBDb25uZWN0aW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbm5lY3Rpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0Y29ubmVjdGlvbk5hbWU6IG1hdGNoLmdyb3VwcyEuY29ubmVjdGlvbk5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY3JlYXRlLXNuYXBzaG90IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZVNuYXBzaG90KHByb3BzOiBFdmVudHNDcmVhdGVTbmFwc2hvdEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06dGFyZ2V0L2NyZWF0ZS1zbmFwc2hvdGA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBjcmVhdGUtc25hcHNob3QgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZENyZWF0ZVNuYXBzaG90QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENyZWF0ZVNuYXBzaG90QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGNyZWF0ZS1zbmFwc2hvdCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VDcmVhdGVTbmFwc2hvdEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogRXZlbnRzQ3JlYXRlU25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IENyZWF0ZVNuYXBzaG90QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNyZWF0ZS1zbmFwc2hvdCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZW5kcG9pbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZW5kcG9pbnQocHJvcHM6IEV2ZW50c0VuZHBvaW50QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTplbmRwb2ludC8ke3Byb3BzLmVuZHBvaW50TmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZW5kcG9pbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEVuZHBvaW50QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEVuZHBvaW50QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGVuZHBvaW50IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUVuZHBvaW50QXJuKGFybjogc3RyaW5nKTogRXZlbnRzRW5kcG9pbnRBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEVuZHBvaW50QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVuZHBvaW50IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGVuZHBvaW50TmFtZTogbWF0Y2guZ3JvdXBzIS5lbmRwb2ludE5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzKHByb3BzOiBFdmVudHNFdmVudEJ1c0FyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZXZlbnQtYnVzLyR7cHJvcHMuZXZlbnRCdXNOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEV2ZW50QnVzQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEV2ZW50QnVzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGV2ZW50LWJ1cyBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IEV2ZW50c0V2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBFdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBldmVudC1idXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXZlbnRCdXNOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50QnVzTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBldmVudC1idXN2MiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBldmVudEJ1c3YyKHByb3BzOiBFdmVudHNFdmVudEJ1c3YyQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpldmVudC1idXN2Mi8ke3Byb3BzLmV2ZW50QnVzTmFtZX0vJHtwcm9wcy5vcGFxdWVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXZlbnQtYnVzdjIgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEV2ZW50QnVzdjJBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRCdXN2MkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBldmVudC1idXN2MiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFdmVudEJ1c3YyQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRCdXN2MkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXZlbnRCdXN2MkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBldmVudC1idXN2MiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudEJ1c05hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRCdXNOYW1lLFxuXHRcdFx0b3BhcXVlSWQ6IG1hdGNoLmdyb3VwcyEub3BhcXVlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXZlbnQtc291cmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50U291cmNlKHByb3BzOiBFdmVudHNFdmVudFNvdXJjZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OjpldmVudC1zb3VyY2UvJHtwcm9wcy5ldmVudFNvdXJjZU5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXZlbnRTb3VyY2VBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRTb3VyY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZXZlbnQtc291cmNlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUV2ZW50U291cmNlQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRTb3VyY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV2ZW50U291cmNlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV2ZW50LXNvdXJjZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudFNvdXJjZU5hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRTb3VyY2VOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZXYyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50U291cmNldjIocHJvcHM6IEV2ZW50c0V2ZW50U291cmNldjJBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmV2ZW50LXNvdXJjZXYyLyR7cHJvcHMuc291cmNlVHlwZX0vJHtwcm9wcy5ldmVudFNvdXJjZU5hbWV9LyR7cHJvcHMub3BhcXVlSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZXYyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFdmVudFNvdXJjZXYyQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEV2ZW50U291cmNldjJBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZXZlbnQtc291cmNldjIgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRXZlbnRTb3VyY2V2MkFybihhcm46IHN0cmluZyk6IEV2ZW50c0V2ZW50U291cmNldjJBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV2ZW50U291cmNldjJBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXZlbnQtc291cmNldjIgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0c291cmNlVHlwZTogbWF0Y2guZ3JvdXBzIS5zb3VyY2VUeXBlLFxuXHRcdFx0ZXZlbnRTb3VyY2VOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50U291cmNlTmFtZSxcblx0XHRcdG9wYXF1ZUlkOiBtYXRjaC5ncm91cHMhLm9wYXF1ZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGtleSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBrZXkocHJvcHM6IEV2ZW50c0tleUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTprbXM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06a2V5LyR7cHJvcHMua2V5SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGtleSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkS2V5QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEtleUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBrZXkgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlS2V5QXJuKGFybjogc3RyaW5nKTogRXZlbnRzS2V5QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBLZXlBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGtleUlkOiBtYXRjaC5ncm91cHMhLmtleUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJlYm9vdC1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyByZWJvb3RJbnN0YW5jZShwcm9wczogRXZlbnRzUmVib290SW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9yZWJvb3QtaW5zdGFuY2VgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcmVib290LWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSZWJvb3RJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSByZWJvb3QtaW5zdGFuY2UgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUmVib290SW5zdGFuY2VBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZWJvb3QtaW5zdGFuY2UgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJlcGxheSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyByZXBsYXkocHJvcHM6IEV2ZW50c1JlcGxheUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cmVwbGF5LyR7cHJvcHMucmVwbGF5TmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcmVwbGF5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSZXBsYXlBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUmVwbGF5QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJlcGxheSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSZXBsYXlBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNSZXBsYXlBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJlcGxheUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXBsYXkgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cmVwbGF5TmFtZTogbWF0Y2guZ3JvdXBzIS5yZXBsYXlOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBydWxlT25DdXN0b21FdmVudEJ1cyhcblx0XHRwcm9wczogRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cnVsZS8ke3Byb3BzLmV2ZW50QnVzTmFtZX0vJHtwcm9wcy5ydWxlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcnVsZS1vbi1jdXN0b20tZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlT25DdXN0b21FdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1J1bGVPbkN1c3RvbUV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXZlbnRCdXNOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50QnVzTmFtZSxcblx0XHRcdHJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgcnVsZU9uRGVmYXVsdEV2ZW50QnVzKFxuXHRcdHByb3BzOiBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cnVsZS8ke3Byb3BzLnJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJ1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHN0b3AtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgc3RvcEluc3RhbmNlKHByb3BzOiBFdmVudHNTdG9wSW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9zdG9wLWluc3RhbmNlYDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHN0b3AtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFN0b3BJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTdG9wSW5zdGFuY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgc3RvcC1pbnN0YW5jZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VTdG9wSW5zdGFuY2VBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNTdG9wSW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFN0b3BJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdG9wLWluc3RhbmNlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBzdWJzY3JpYmVyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHN1YnNjcmliZXIocHJvcHM6IEV2ZW50c1N1YnNjcmliZXJBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnN1YnNjcmliZXIvJHtwcm9wcy5zdWJzY3JpYmVyTmFtZX0vJHtwcm9wcy5vcGFxdWVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgc3Vic2NyaWJlciByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkU3Vic2NyaWJlckFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTdWJzY3JpYmVyQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHN1YnNjcmliZXIgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlU3Vic2NyaWJlckFybihhcm46IHN0cmluZyk6IEV2ZW50c1N1YnNjcmliZXJBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFN1YnNjcmliZXJBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3Vic2NyaWJlciBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRzdWJzY3JpYmVyTmFtZTogbWF0Y2guZ3JvdXBzIS5zdWJzY3JpYmVyTmFtZSxcblx0XHRcdG9wYXF1ZUlkOiBtYXRjaC5ncm91cHMhLm9wYXF1ZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHRlcm1pbmF0ZS1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0ZXJtaW5hdGVJbnN0YW5jZShwcm9wczogRXZlbnRzVGVybWluYXRlSW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC90ZXJtaW5hdGUtaW5zdGFuY2VgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgdGVybWluYXRlLWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUZXJtaW5hdGVJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZXJtaW5hdGVJbnN0YW5jZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0ZXJtaW5hdGUtaW5zdGFuY2UgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVGVybWluYXRlSW5zdGFuY2VBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1Rlcm1pbmF0ZUluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUZXJtaW5hdGVJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZXJtaW5hdGUtaW5zdGFuY2UgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBBUEkgb3BlcmF0aW9uIHRvIHJlcXVpcmVkIElBTSBhY3Rpb25zIG1hcHBpbmcgZm9yIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50c09wZXJhdGlvbnMge1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBBY3RpdmF0ZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWN0aXZhdGVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6QWN0aXZhdGVFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDYW5jZWxSZXBsYXkgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDYW5jZWxSZXBsYXk6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkNhbmNlbFJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkNyZWF0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpDcmVhdGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpDcmVhdGVFbmRwb2ludFwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUV2ZW50QnVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZUV2ZW50QnVzXCIsXG5cdFx0XCJldmVudHM6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlRXZlbnRTb3VyY2VcIixcblx0XHRcImV2ZW50czpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVTdWJzY3JpYmVyIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU3Vic2NyaWJlcjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlU3Vic2NyaWJlclwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJldmVudHM6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVhY3RpdmF0ZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhY3RpdmF0ZUV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWFjdGl2YXRlRXZlbnRTb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVhdXRob3JpemVDb25uZWN0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhdXRob3JpemVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWF1dGhvcml6ZUNvbm5lY3Rpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZWxldGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZWxldGVFbmRwb2ludFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRXZlbnRCdXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFdmVudEJ1czogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlRXZlbnRCdXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUV2ZW50U291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVSZXNvdXJjZVBvbGljeSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVJlc291cmNlUG9saWN5OiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWxldGVSZXNvdXJjZVBvbGljeVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlU3Vic2NyaWJlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVN1YnNjcmliZXI6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZVN1YnNjcmliZXJcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFwaURlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZUFwaURlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQXJjaGl2ZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVBcmNoaXZlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUNvbm5lY3Rpb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlQ29ubmVjdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlRW5kcG9pbnQ6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlRW5kcG9pbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlRXZlbnRCdXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUV2ZW50QnVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZUV2ZW50QnVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZVJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSdWxlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlU3Vic2NyaWJlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlU3Vic2NyaWJlcjogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVTdWJzY3JpYmVyXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEaXNhYmxlUnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEaXNhYmxlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRW5hYmxlUnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZVJ1bGU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkVuYWJsZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFJlc291cmNlUG9saWN5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRSZXNvdXJjZVBvbGljeTogc3RyaW5nW10gPSBbXCJldmVudHM6R2V0UmVzb3VyY2VQb2xpY3lcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBcGlEZXN0aW5hdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBpRGVzdGluYXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0QXBpRGVzdGluYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBcmNoaXZlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcmNoaXZlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdEFyY2hpdmVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0Q29ubmVjdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0Q29ubmVjdGlvbnM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RDb25uZWN0aW9uc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEVuZHBvaW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbmRwb2ludHM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RFbmRwb2ludHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFdmVudEJ1c2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50QnVzZXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RFdmVudEJ1c2VzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RXZlbnRTb3VyY2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50U291cmNlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdEV2ZW50U291cmNlc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFBhcnRuZXJFdmVudFNvdXJjZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UGFydG5lckV2ZW50U291cmNlczogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZXNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFJlcGxheXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVwbGF5czogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFJlcGxheXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXNvdXJjZVBvbGljaWVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlUG9saWNpZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RSZXNvdXJjZVBvbGljaWVzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSdWxlTmFtZXNCeVRhcmdldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSdWxlTmFtZXNCeVRhcmdldDogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TGlzdFJ1bGVOYW1lc0J5VGFyZ2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSdWxlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSdWxlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFJ1bGVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0U3Vic2NyaWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0U3Vic2NyaWJlcnM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RTdWJzY3JpYmVyc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhZ3NGb3JSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhcmdldHNCeVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFRhcmdldHNCeVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dEV2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0RXZlbnRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRQYXJ0bmVyRXZlbnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGFydG5lckV2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0UGFydG5lckV2ZW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0UGVybWlzc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBlcm1pc3Npb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOlB1dFBlcm1pc3Npb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dFJhd0V2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJhd0V2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0UmF3RXZlbnRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRSZXNvdXJjZVBvbGljeSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJlc291cmNlUG9saWN5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpQdXRSZXNvdXJjZVBvbGljeVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0UnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJ1bGU6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJldmVudHM6UHV0UnVsZVwiLFxuXHRcdFwiZXZlbnRzOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dFRhcmdldHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRUYXJnZXRzOiBzdHJpbmdbXSA9IFtcImlhbTpQYXNzUm9sZVwiLCBcImV2ZW50czpQdXRUYXJnZXRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBSZW1vdmVQZXJtaXNzaW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlUGVybWlzc2lvbjogc3RyaW5nW10gPSBbXCJldmVudHM6UmVtb3ZlUGVybWlzc2lvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUmVtb3ZlVGFyZ2V0cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVRhcmdldHM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlJlbW92ZVRhcmdldHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFJldm9rZVJlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmV2b2tlUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlJldm9rZVJlc291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydFJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0UmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpTdGFydFJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJldmVudHM6VGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFRlc3RFdmVudFBhdHRlcm4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUZXN0RXZlbnRQYXR0ZXJuOiBzdHJpbmdbXSA9IFtcImV2ZW50czpUZXN0RXZlbnRQYXR0ZXJuXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVbnRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJldmVudHM6VW50YWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6VXBkYXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVwZGF0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiZXZlbnRzOlVwZGF0ZUVuZHBvaW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUV2ZW50QnVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVwZGF0ZUV2ZW50QnVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVFdmVudFNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlU3Vic2NyaWJlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVN1YnNjcmliZXI6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJldmVudHM6VXBkYXRlU3Vic2NyaWJlclwiLFxuXHRdO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbiBrZXkgY29uc3RhbnRzIGFuZCBidWlsZGVycyBmb3IgZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzQ29uZGl0aW9ucyB7XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFbmRwb2ludCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbmRwb2ludENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkV2ZW50QnVzQXJuXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFdmVudEJ1cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudEJ1c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXZlbnRTb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRTb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZVN1YnNjcmliZXIgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU3Vic2NyaWJlckNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCIsXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIixcblx0XHRcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEZWxldGVSZXNvdXJjZVBvbGljeSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSZXNvdXJjZVBvbGljeUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOlBvbGljeU5hbWVcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIERlbGV0ZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEZXNjcmliZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIERpc2FibGVSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEVuYWJsZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRW5hYmxlUnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRSZXNvdXJjZVBvbGljeSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRSZXNvdXJjZVBvbGljeUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOlBvbGljeU5hbWVcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIExpc3RUYWdzRm9yUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0VGFyZ2V0c0J5UnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRFdmVudHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0RXZlbnRzQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzRGV0YWlsVHlwZVwiLFxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c1NvdXJjZVwiLFxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0NvbnRlbnRUeXBlXCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLXR5cGVcIixcblx0XHRcImV2ZW50czpldmVudEJ1c0ludm9jYXRpb25cIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFB1dFJhd0V2ZW50cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRSYXdFdmVudHNDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fVwiLFxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGVcIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2VcIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Db250ZW50VHlwZVwiLFxuXHRcdFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgUHV0UmVzb3VyY2VQb2xpY3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UmVzb3VyY2VQb2xpY3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpQb2xpY3lOYW1lXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC10eXBlXCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGVcIixcblx0XHRcImV2ZW50czpkZXRhaWwuc2VydmljZVwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWRcIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFB1dFRhcmdldHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0VGFyZ2V0c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOlRhcmdldEFyblwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBSZW1vdmVUYXJnZXRzIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVRhcmdldHNDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVW50YWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFbmRwb2ludCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbmRwb2ludENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkV2ZW50QnVzQXJuXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFdmVudFNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFdmVudFNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOnNvdXJjZVwiXTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZVN1YnNjcmliZXIgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlU3Vic2NyaWJlckNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCIsXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIixcblx0XHRcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyXCIsXG5cdF07XG5cblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFUVVFU1RfVEFHID0gXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVNPVVJDRV9UQUcgPSBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpUYWdLZXlzIChBcnJheU9mU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1RBR19LRVlTID0gXCJhd3M6VGFnS2V5c1wiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50IChCb29sKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ09OVEVOVF9GSUxURVJfUFJFU0VOVCA9IFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6RXZlbnRCdXNBcm4gKEFycmF5T2ZBUk4pICovXG5cdHN0YXRpYyByZWFkb25seSBFVkVOVF9CVVNfQVJOID0gXCJldmVudHM6RXZlbnRCdXNBcm5cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNYW5hZ2VkQnkgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IE1BTkFHRURfQlkgPSBcImV2ZW50czpNYW5hZ2VkQnlcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fSAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IE1FVEFEQVRBID0gXCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBNRVRBREFUQV9NQVRDSEVSID0gXCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlclwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOlBvbGljeU5hbWUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFBPTElDWV9OQU1FID0gXCJldmVudHM6UG9saWN5TmFtZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNZU1RFTV9NRVRBREFUQV9BV1NfREVUQUlMX1RZUEUgPVxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2UgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNZU1RFTV9NRVRBREFUQV9BV1NfU09VUkNFID1cblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2VcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Db250ZW50VHlwZSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU1lTVEVNX01FVEFEQVRBX0NPTlRFTlRfVFlQRSA9XG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQ29udGVudFR5cGVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpUYXJnZXRBcm4gKEFycmF5T2ZBUk4pICovXG5cdHN0YXRpYyByZWFkb25seSBUQVJHRVRfQVJOID0gXCJldmVudHM6VGFyZ2V0QXJuXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6Y3JlYXRvckFjY291bnQgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENSRUFUT1JfQUNDT1VOVCA9IFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLXR5cGUgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfVFlQRSA9IFwiZXZlbnRzOmRldGFpbC10eXBlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IERFVEFJTF9FVkVOVF9UWVBFX0NPREUgPSBcImV2ZW50czpkZXRhaWwuZXZlbnRUeXBlQ29kZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmRldGFpbC5zZXJ2aWNlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfU0VSVklDRSA9IFwiZXZlbnRzOmRldGFpbC5zZXJ2aWNlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZCAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgREVUQUlMX1VTRVJfSURFTlRJVFlfUFJJTkNJUEFMX0lEID1cblx0XHRcImV2ZW50czpkZXRhaWwudXNlcklkZW50aXR5LnByaW5jaXBhbElkXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZXZlbnRCdXNJbnZvY2F0aW9uIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBFVkVOVF9CVVNfSU5WT0NBVElPTiA9IFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOnNvdXJjZSAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNPVVJDRSA9IFwiZXZlbnRzOnNvdXJjZVwiO1xuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlcXVlc3RUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlc291cmNlVGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlRhZ0tleXNgLlxuXHQgKi9cblx0c3RhdGljIHRhZ0tleXModmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiYXdzOlRhZ0tleXNcIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6Q29udGVudEZpbHRlclByZXNlbnRgLlxuXHQgKi9cblx0c3RhdGljIGNvbnRlbnRGaWx0ZXJQcmVzZW50KFxuXHRcdHZhbHVlOiBib29sZWFuLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4ge1xuXHRcdHJldHVybiB7IEJvb2w6IHsgXCJldmVudHM6Q29udGVudEZpbHRlclByZXNlbnRcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpFdmVudEJ1c0FybmAuXG5cdCAqL1xuXHRzdGF0aWMgZXZlbnRCdXNBUk4oXG5cdFx0dmFsdWVzOiBzdHJpbmdbXSxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6QXJuRXF1YWxzXCI6IHsgXCJldmVudHM6RXZlbnRCdXNBcm5cIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6TWFuYWdlZEJ5YC5cblx0ICovXG5cdHN0YXRpYyBtYW5hZ2VkQnkodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6TWFuYWdlZEJ5XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1gLlxuXHQgKi9cblx0c3RhdGljIG1ldGFkYXRhKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0XCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHsgXCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIjogdmFsdWVzIH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlcmAuXG5cdCAqL1xuXHRzdGF0aWMgbWV0YWRhdGFNYXRjaGVyKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9L01hdGNoZXJcIjogdmFsdWUgfSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpQb2xpY3lOYW1lYC5cblx0ICovXG5cdHN0YXRpYyBwb2xpY3lOYW1lKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOlBvbGljeU5hbWVcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlYC5cblx0ICovXG5cdHN0YXRpYyBzeXN0ZW1NZXRhZGF0YUFXU0RldGFpbFR5cGUoXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzU291cmNlYC5cblx0ICovXG5cdHN0YXRpYyBzeXN0ZW1NZXRhZGF0YUFXU1NvdXJjZShcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c1NvdXJjZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0NvbnRlbnRUeXBlYC5cblx0ICovXG5cdHN0YXRpYyBzeXN0ZW1NZXRhZGF0YUNvbnRlbnRUeXBlKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQ29udGVudFR5cGVcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpUYXJnZXRBcm5gLlxuXHQgKi9cblx0c3RhdGljIHRhcmdldEFSTih2YWx1ZXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6QXJuRXF1YWxzXCI6IHsgXCJldmVudHM6VGFyZ2V0QXJuXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmNyZWF0b3JBY2NvdW50YC5cblx0ICovXG5cdHN0YXRpYyBjcmVhdG9yQWNjb3VudCh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC10eXBlYC5cblx0ICovXG5cdHN0YXRpYyBkZXRhaWxUeXBlKFxuXHRcdHZhbHVlczogc3RyaW5nW10sXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiZXZlbnRzOmRldGFpbC10eXBlXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC5ldmVudFR5cGVDb2RlYC5cblx0ICovXG5cdHN0YXRpYyBkZXRhaWxFdmVudFR5cGVDb2RlKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGVcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpkZXRhaWwuc2VydmljZWAuXG5cdCAqL1xuXHRzdGF0aWMgZGV0YWlsU2VydmljZSh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpkZXRhaWwuc2VydmljZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWRgLlxuXHQgKi9cblx0c3RhdGljIGRldGFpbFVzZXJJZGVudGl0eVByaW5jaXBhbElkKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWRcIjogdmFsdWUgfSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpldmVudEJ1c0ludm9jYXRpb25gLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzSW52b2NhdGlvbihcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOnNvdXJjZWAuXG5cdCAqL1xuXHRzdGF0aWMgc291cmNlKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImV2ZW50czpzb3VyY2VcIjogdmFsdWVzIH0gfTtcblx0fVxufVxuIl19