@decaf-ts/integrations 0.14.3 → 0.15.3

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 (1165) hide show
  1. package/LICENSE.md +373 -21
  2. package/dist/integrations.cjs +2 -3317
  3. package/dist/integrations.cjs.map +1 -0
  4. package/dist/integrations.js +2 -3665
  5. package/dist/integrations.js.map +1 -0
  6. package/jest.config.cjs +0 -1
  7. package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs +2 -2
  8. package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs.map +1 -0
  9. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  10. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
  11. package/lib/cjs/blob/azure/index.cjs +2 -2
  12. package/lib/cjs/blob/azure/index.cjs.map +1 -0
  13. package/lib/cjs/blob/core/BlobEnvironment.cjs +2 -2
  14. package/lib/cjs/blob/core/BlobEnvironment.cjs.map +1 -0
  15. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  16. package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
  17. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  18. package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
  19. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  20. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
  21. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  22. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
  23. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  24. package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
  25. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  26. package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
  27. package/lib/cjs/blob/core/index.cjs +2 -2
  28. package/lib/cjs/blob/core/index.cjs.map +1 -0
  29. package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs +2 -2
  30. package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs.map +1 -0
  31. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  32. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
  33. package/lib/cjs/blob/gcp/index.cjs +2 -2
  34. package/lib/cjs/blob/gcp/index.cjs.map +1 -0
  35. package/lib/cjs/blob/index.cjs +2 -2
  36. package/lib/cjs/blob/index.cjs.map +1 -0
  37. package/lib/cjs/blob/local/LocalBlobEnvironment.cjs +2 -2
  38. package/lib/cjs/blob/local/LocalBlobEnvironment.cjs.map +1 -0
  39. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  40. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
  41. package/lib/cjs/blob/local/index.cjs +2 -2
  42. package/lib/cjs/blob/local/index.cjs.map +1 -0
  43. package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs +2 -2
  44. package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs.map +1 -0
  45. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  46. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
  47. package/lib/cjs/blob/memory/index.cjs +2 -2
  48. package/lib/cjs/blob/memory/index.cjs.map +1 -0
  49. package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs +2 -2
  50. package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs.map +1 -0
  51. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  52. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
  53. package/lib/cjs/blob/s3/R2BlobEnvironment.cjs +2 -2
  54. package/lib/cjs/blob/s3/R2BlobEnvironment.cjs.map +1 -0
  55. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  56. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
  57. package/lib/cjs/blob/s3/S3BlobEnvironment.cjs +2 -2
  58. package/lib/cjs/blob/s3/S3BlobEnvironment.cjs.map +1 -0
  59. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  60. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
  61. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +2 -2
  62. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -0
  63. package/lib/cjs/blob/s3/index.cjs +2 -2
  64. package/lib/cjs/blob/s3/index.cjs.map +1 -0
  65. package/lib/cjs/calendar/CalendarService.cjs +2 -2
  66. package/lib/cjs/calendar/CalendarService.cjs.map +1 -0
  67. package/lib/cjs/calendar/environment.cjs +2 -2
  68. package/lib/cjs/calendar/environment.cjs.map +1 -0
  69. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +2 -2
  70. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
  71. package/lib/cjs/calendar/google-calendar/index.cjs +2 -2
  72. package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
  73. package/lib/cjs/calendar/index.cjs +2 -2
  74. package/lib/cjs/calendar/index.cjs.map +1 -0
  75. package/lib/cjs/calendar/types.cjs +2 -2
  76. package/lib/cjs/calendar/types.cjs.map +1 -0
  77. package/lib/cjs/calendar/validators/cron.cjs +2 -2
  78. package/lib/cjs/calendar/validators/cron.cjs.map +1 -0
  79. package/lib/cjs/calendar/writers/CalendarFsWriter.cjs +2 -2
  80. package/lib/cjs/calendar/writers/CalendarFsWriter.cjs.map +1 -0
  81. package/lib/cjs/calendar/writers/CalenderDownloader.cjs +2 -2
  82. package/lib/cjs/calendar/writers/CalenderDownloader.cjs.map +1 -0
  83. package/lib/cjs/calendar/writers/ICalendarWriter.cjs +2 -2
  84. package/lib/cjs/calendar/writers/ICalendarWriter.cjs.map +1 -0
  85. package/lib/cjs/comms/discord/DiscordService.cjs +2 -2
  86. package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
  87. package/lib/cjs/comms/discord/index.cjs +2 -2
  88. package/lib/cjs/comms/discord/index.cjs.map +1 -0
  89. package/lib/cjs/comms/email/EmailService.cjs +2 -2
  90. package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
  91. package/lib/cjs/comms/email/index.cjs +2 -2
  92. package/lib/cjs/comms/email/index.cjs.map +1 -0
  93. package/lib/cjs/comms/email/mime.cjs +2 -2
  94. package/lib/cjs/comms/email/mime.cjs.map +1 -0
  95. package/lib/cjs/comms/email/smtp.cjs +2 -2
  96. package/lib/cjs/comms/email/smtp.cjs.map +1 -0
  97. package/lib/cjs/comms/environment.cjs +2 -2
  98. package/lib/cjs/comms/environment.cjs.map +1 -0
  99. package/lib/cjs/comms/gmail/GmailService.cjs +2 -2
  100. package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
  101. package/lib/cjs/comms/gmail/index.cjs +2 -2
  102. package/lib/cjs/comms/gmail/index.cjs.map +1 -0
  103. package/lib/cjs/comms/index.cjs +2 -2
  104. package/lib/cjs/comms/index.cjs.map +1 -0
  105. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +2 -2
  106. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
  107. package/lib/cjs/comms/outlook/index.cjs +2 -2
  108. package/lib/cjs/comms/outlook/index.cjs.map +1 -0
  109. package/lib/cjs/comms/slack/SlackService.cjs +2 -2
  110. package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
  111. package/lib/cjs/comms/slack/index.cjs +2 -2
  112. package/lib/cjs/comms/slack/index.cjs.map +1 -0
  113. package/lib/cjs/comms/teams/TeamsService.cjs +2 -2
  114. package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
  115. package/lib/cjs/comms/teams/index.cjs +2 -2
  116. package/lib/cjs/comms/teams/index.cjs.map +1 -0
  117. package/lib/cjs/comms/telegram/TelegramService.cjs +2 -2
  118. package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
  119. package/lib/cjs/comms/telegram/index.cjs +2 -2
  120. package/lib/cjs/comms/telegram/index.cjs.map +1 -0
  121. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +2 -2
  122. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
  123. package/lib/cjs/comms/whatsapp/index.cjs +2 -2
  124. package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
  125. package/lib/cjs/devops/environment.cjs +2 -2
  126. package/lib/cjs/devops/environment.cjs.map +1 -0
  127. package/lib/cjs/devops/github/GithubService.cjs +2 -2
  128. package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
  129. package/lib/cjs/devops/github/index.cjs +2 -2
  130. package/lib/cjs/devops/github/index.cjs.map +1 -0
  131. package/lib/cjs/devops/gitlab/GitlabService.cjs +2 -2
  132. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
  133. package/lib/cjs/devops/gitlab/index.cjs +2 -2
  134. package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
  135. package/lib/cjs/devops/index.cjs +2 -2
  136. package/lib/cjs/devops/index.cjs.map +1 -0
  137. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  138. package/lib/cjs/docker/DockerComposeService.cjs.map +1 -0
  139. package/lib/cjs/docker/index.cjs +2 -2
  140. package/lib/cjs/docker/index.cjs.map +1 -0
  141. package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs +2 -2
  142. package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs.map +1 -0
  143. package/lib/cjs/feature-flags/constants.cjs +2 -2
  144. package/lib/cjs/feature-flags/constants.cjs.map +1 -0
  145. package/lib/cjs/feature-flags/decorators.cjs +2 -2
  146. package/lib/cjs/feature-flags/decorators.cjs.map +1 -0
  147. package/lib/cjs/feature-flags/environment.cjs +2 -2
  148. package/lib/cjs/feature-flags/environment.cjs.map +1 -0
  149. package/lib/cjs/feature-flags/index.cjs +2 -2
  150. package/lib/cjs/feature-flags/index.cjs.map +1 -0
  151. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
  152. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -0
  153. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
  154. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -0
  155. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
  156. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +1 -0
  157. package/lib/cjs/feature-flags/readers/index.cjs +2 -2
  158. package/lib/cjs/feature-flags/readers/index.cjs.map +1 -0
  159. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +3 -2
  160. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +1 -0
  161. package/lib/cjs/feature-flags/types.cjs +2 -2
  162. package/lib/cjs/feature-flags/types.cjs.map +1 -0
  163. package/lib/cjs/feature-flags/utils.cjs +2 -2
  164. package/lib/cjs/feature-flags/utils.cjs.map +1 -0
  165. package/lib/cjs/index.cjs +5 -5
  166. package/lib/cjs/index.cjs.map +1 -0
  167. package/lib/cjs/io/airtable/AirtableService.cjs +2 -2
  168. package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
  169. package/lib/cjs/io/airtable/index.cjs +2 -2
  170. package/lib/cjs/io/airtable/index.cjs.map +1 -0
  171. package/lib/cjs/io/confluence/ConfluenceService.cjs +2 -2
  172. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
  173. package/lib/cjs/io/confluence/index.cjs +2 -2
  174. package/lib/cjs/io/confluence/index.cjs.map +1 -0
  175. package/lib/cjs/io/environment.cjs +2 -2
  176. package/lib/cjs/io/environment.cjs.map +1 -0
  177. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +2 -2
  178. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
  179. package/lib/cjs/io/google-docs/index.cjs +2 -2
  180. package/lib/cjs/io/google-docs/index.cjs.map +1 -0
  181. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +2 -2
  182. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
  183. package/lib/cjs/io/google-sheets/index.cjs +2 -2
  184. package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
  185. package/lib/cjs/io/graphql/GraphqlService.cjs +2 -2
  186. package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
  187. package/lib/cjs/io/graphql/index.cjs +2 -2
  188. package/lib/cjs/io/graphql/index.cjs.map +1 -0
  189. package/lib/cjs/io/index.cjs +2 -2
  190. package/lib/cjs/io/index.cjs.map +1 -0
  191. package/lib/cjs/io/jira/JiraService.cjs +2 -2
  192. package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
  193. package/lib/cjs/io/jira/index.cjs +2 -2
  194. package/lib/cjs/io/jira/index.cjs.map +1 -0
  195. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +2 -2
  196. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
  197. package/lib/cjs/io/microsoft-excel/index.cjs +2 -2
  198. package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
  199. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +2 -2
  200. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
  201. package/lib/cjs/io/microsoft-sharepoint/index.cjs +2 -2
  202. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
  203. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +2 -2
  204. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
  205. package/lib/cjs/io/spreadsheet/index.cjs +2 -2
  206. package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
  207. package/lib/cjs/keycloak/broker.cjs +2 -2
  208. package/lib/cjs/keycloak/broker.cjs.map +1 -0
  209. package/lib/cjs/keycloak/index.cjs +2 -2
  210. package/lib/cjs/keycloak/index.cjs.map +1 -0
  211. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  212. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -0
  213. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  214. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -0
  215. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  216. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -0
  217. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  218. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -0
  219. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  220. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -0
  221. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  222. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -0
  223. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  224. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -0
  225. package/lib/cjs/keycloak/services/index.cjs +2 -2
  226. package/lib/cjs/keycloak/services/index.cjs.map +1 -0
  227. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  228. package/lib/cjs/keycloak/services/runtime.cjs.map +1 -0
  229. package/lib/cjs/keycloak/types.cjs +2 -2
  230. package/lib/cjs/keycloak/types.cjs.map +1 -0
  231. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
  232. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +1 -0
  233. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
  234. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +1 -0
  235. package/lib/cjs/kibana/builders/index.cjs +2 -2
  236. package/lib/cjs/kibana/builders/index.cjs.map +1 -0
  237. package/lib/cjs/kibana/helpers.cjs +2 -2
  238. package/lib/cjs/kibana/helpers.cjs.map +1 -0
  239. package/lib/cjs/kibana/index.cjs +2 -2
  240. package/lib/cjs/kibana/index.cjs.map +1 -0
  241. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  242. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -0
  243. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  244. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -0
  245. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  246. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -0
  247. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  248. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -0
  249. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  250. package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -0
  251. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  252. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -0
  253. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  254. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -0
  255. package/lib/cjs/kibana/services/index.cjs +2 -2
  256. package/lib/cjs/kibana/services/index.cjs.map +1 -0
  257. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  258. package/lib/cjs/kibana/services/runtime.cjs.map +1 -0
  259. package/lib/cjs/kibana/types.cjs +2 -2
  260. package/lib/cjs/kibana/types.cjs.map +1 -0
  261. package/lib/cjs/loader/ObjectLoader.cjs +2 -2
  262. package/lib/cjs/loader/ObjectLoader.cjs.map +1 -0
  263. package/lib/cjs/loader/assets.cjs +2 -2
  264. package/lib/cjs/loader/assets.cjs.map +1 -0
  265. package/lib/cjs/loader/config.cjs +2 -2
  266. package/lib/cjs/loader/config.cjs.map +1 -0
  267. package/lib/cjs/loader/families.cjs +2 -2
  268. package/lib/cjs/loader/families.cjs.map +1 -0
  269. package/lib/cjs/loader/index.cjs +2 -2
  270. package/lib/cjs/loader/index.cjs.map +1 -0
  271. package/lib/cjs/loader/nest.cjs +2 -2
  272. package/lib/cjs/loader/nest.cjs.map +1 -0
  273. package/lib/cjs/loader/types.cjs +2 -2
  274. package/lib/cjs/loader/types.cjs.map +1 -0
  275. package/lib/cjs/namespaces/index.cjs +2 -2
  276. package/lib/cjs/namespaces/index.cjs.map +1 -0
  277. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  278. package/lib/cjs/namespaces/models/authorization-model.cjs.map +1 -0
  279. package/lib/cjs/namespaces/models/credential.model.cjs +2 -2
  280. package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
  281. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  282. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -0
  283. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  284. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -0
  285. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  286. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -0
  287. package/lib/cjs/namespaces/models/index.cjs +2 -2
  288. package/lib/cjs/namespaces/models/index.cjs.map +1 -0
  289. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  290. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -0
  291. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  292. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -0
  293. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  294. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -0
  295. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  296. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -0
  297. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  298. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -0
  299. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  300. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -0
  301. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  302. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -0
  303. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  304. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -0
  305. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  306. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -0
  307. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  308. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -0
  309. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  310. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -0
  311. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  312. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -0
  313. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  314. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -0
  315. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  316. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -0
  317. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  318. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -0
  319. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  320. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -0
  321. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  322. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -0
  323. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  324. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +1 -0
  325. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  326. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +1 -0
  327. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
  328. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +1 -0
  329. package/lib/cjs/namespaces/rls/index.cjs +2 -2
  330. package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
  331. package/lib/cjs/namespaces/rls/principal-resolver.cjs +2 -2
  332. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
  333. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +2 -2
  334. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
  335. package/lib/cjs/namespaces/rls/rls.constants.cjs +2 -2
  336. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
  337. package/lib/cjs/namespaces/rls/rls.template.cjs +2 -2
  338. package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
  339. package/lib/cjs/namespaces/rls/rls.types.cjs +2 -2
  340. package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
  341. package/lib/cjs/namespaces/rls/session-binding.cjs +2 -2
  342. package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
  343. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  344. package/lib/cjs/namespaces/services/authz.service.cjs.map +1 -0
  345. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  346. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +1 -0
  347. package/lib/cjs/namespaces/services/credential.service.cjs +2 -2
  348. package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
  349. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  350. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +1 -0
  351. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  352. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +1 -0
  353. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  354. package/lib/cjs/namespaces/services/group.service.cjs.map +1 -0
  355. package/lib/cjs/namespaces/services/index.cjs +2 -2
  356. package/lib/cjs/namespaces/services/index.cjs.map +1 -0
  357. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
  358. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +1 -0
  359. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
  360. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +1 -0
  361. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  362. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +1 -0
  363. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  364. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +1 -0
  365. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  366. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +1 -0
  367. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  368. package/lib/cjs/namespaces/services/permission.service.cjs.map +1 -0
  369. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  370. package/lib/cjs/namespaces/services/principal.service.cjs.map +1 -0
  371. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  372. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +1 -0
  373. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  374. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +1 -0
  375. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  376. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +1 -0
  377. package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
  378. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +1 -0
  379. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  380. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +1 -0
  381. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  382. package/lib/cjs/namespaces/services/role.service.cjs.map +1 -0
  383. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  384. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +1 -0
  385. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  386. package/lib/cjs/namespaces/services/system-management.service.cjs.map +1 -0
  387. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  388. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +1 -0
  389. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  390. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +1 -0
  391. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  392. package/lib/cjs/namespaces/services/tenant.service.cjs.map +1 -0
  393. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  394. package/lib/cjs/namespaces/services/user.service.cjs.map +1 -0
  395. package/lib/cjs/namespaces/types.cjs +2 -2
  396. package/lib/cjs/namespaces/types.cjs.map +1 -0
  397. package/lib/cjs/namespaces/utils.cjs +2 -2
  398. package/lib/cjs/namespaces/utils.cjs.map +1 -0
  399. package/lib/cjs/nest/decorators.cjs +2 -2
  400. package/lib/cjs/nest/decorators.cjs.map +1 -0
  401. package/lib/cjs/nest/index.cjs +2 -2
  402. package/lib/cjs/nest/index.cjs.map +1 -0
  403. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  404. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -0
  405. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  406. package/lib/cjs/nest/keycloakModule.cjs.map +1 -0
  407. package/lib/cjs/nest/logging.cjs +2 -2
  408. package/lib/cjs/nest/logging.cjs.map +1 -0
  409. package/lib/cjs/nest/types.cjs +2 -2
  410. package/lib/cjs/nest/types.cjs.map +1 -0
  411. package/lib/cjs/nest/utils.cjs +2 -2
  412. package/lib/cjs/nest/utils.cjs.map +1 -0
  413. package/lib/cjs/plugins/contract.cjs +2 -2
  414. package/lib/cjs/plugins/contract.cjs.map +1 -0
  415. package/lib/cjs/plugins/index.cjs +2 -2
  416. package/lib/cjs/plugins/index.cjs.map +1 -0
  417. package/lib/cjs/plugins/kibana/host.cjs +2 -2
  418. package/lib/cjs/plugins/kibana/host.cjs.map +1 -0
  419. package/lib/cjs/plugins/kibana/index.cjs +2 -2
  420. package/lib/cjs/plugins/kibana/index.cjs.map +1 -0
  421. package/lib/cjs/plugins/kibana/installer.cjs +2 -2
  422. package/lib/cjs/plugins/kibana/installer.cjs.map +1 -0
  423. package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
  424. package/lib/cjs/plugins/kibana/manifest.cjs.map +1 -0
  425. package/lib/cjs/plugins/kibana/templates.cjs +2 -2
  426. package/lib/cjs/plugins/kibana/templates.cjs.map +1 -0
  427. package/lib/cjs/plugins/kibana/types.cjs +2 -2
  428. package/lib/cjs/plugins/kibana/types.cjs.map +1 -0
  429. package/lib/cjs/plugins/superset/host.cjs +2 -2
  430. package/lib/cjs/plugins/superset/host.cjs.map +1 -0
  431. package/lib/cjs/plugins/superset/index.cjs +2 -2
  432. package/lib/cjs/plugins/superset/index.cjs.map +1 -0
  433. package/lib/cjs/plugins/superset/installer.cjs +2 -2
  434. package/lib/cjs/plugins/superset/installer.cjs.map +1 -0
  435. package/lib/cjs/plugins/superset/manifest.cjs +2 -2
  436. package/lib/cjs/plugins/superset/manifest.cjs.map +1 -0
  437. package/lib/cjs/plugins/superset/templates.cjs +2 -2
  438. package/lib/cjs/plugins/superset/templates.cjs.map +1 -0
  439. package/lib/cjs/plugins/superset/types.cjs +2 -2
  440. package/lib/cjs/plugins/superset/types.cjs.map +1 -0
  441. package/lib/cjs/redis/RedisContextLock.cjs +2 -2
  442. package/lib/cjs/redis/RedisContextLock.cjs.map +1 -0
  443. package/lib/cjs/redis/RedisDispatch.cjs +2 -2
  444. package/lib/cjs/redis/RedisDispatch.cjs.map +1 -0
  445. package/lib/cjs/redis/RedisPaginator.cjs +2 -2
  446. package/lib/cjs/redis/RedisPaginator.cjs.map +1 -0
  447. package/lib/cjs/redis/RedisStatement.cjs +2 -2
  448. package/lib/cjs/redis/RedisStatement.cjs.map +1 -0
  449. package/lib/cjs/redis/adapter.cjs +2 -2
  450. package/lib/cjs/redis/adapter.cjs.map +1 -0
  451. package/lib/cjs/redis/constants.cjs +2 -2
  452. package/lib/cjs/redis/constants.cjs.map +1 -0
  453. package/lib/cjs/redis/handlers.cjs +2 -2
  454. package/lib/cjs/redis/handlers.cjs.map +1 -0
  455. package/lib/cjs/redis/index.cjs +2 -2
  456. package/lib/cjs/redis/index.cjs.map +1 -0
  457. package/lib/cjs/redis/serialization.cjs +2 -2
  458. package/lib/cjs/redis/serialization.cjs.map +1 -0
  459. package/lib/cjs/redis/types.cjs +2 -2
  460. package/lib/cjs/redis/types.cjs.map +1 -0
  461. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +2 -2
  462. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
  463. package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs +2 -2
  464. package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs.map +1 -0
  465. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  466. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -0
  467. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  468. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +1 -0
  469. package/lib/cjs/secrets/aws/index.cjs +2 -2
  470. package/lib/cjs/secrets/aws/index.cjs.map +1 -0
  471. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  472. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -0
  473. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  474. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +1 -0
  475. package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs +2 -2
  476. package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs.map +1 -0
  477. package/lib/cjs/secrets/azure/index.cjs +2 -2
  478. package/lib/cjs/secrets/azure/index.cjs.map +1 -0
  479. package/lib/cjs/secrets/core/ClientBasedSecretService.cjs +2 -2
  480. package/lib/cjs/secrets/core/ClientBasedSecretService.cjs.map +1 -0
  481. package/lib/cjs/secrets/core/SecretEnvironment.cjs +2 -2
  482. package/lib/cjs/secrets/core/SecretEnvironment.cjs.map +1 -0
  483. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  484. package/lib/cjs/secrets/core/SecretErrors.cjs.map +1 -0
  485. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  486. package/lib/cjs/secrets/core/SecretName.cjs.map +1 -0
  487. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  488. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -0
  489. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  490. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +1 -0
  491. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  492. package/lib/cjs/secrets/core/SecretService.cjs.map +1 -0
  493. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  494. package/lib/cjs/secrets/core/SecretTypes.cjs.map +1 -0
  495. package/lib/cjs/secrets/core/index.cjs +2 -2
  496. package/lib/cjs/secrets/core/index.cjs.map +1 -0
  497. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +2 -2
  498. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
  499. package/lib/cjs/secrets/fs/FsSecretService.cjs +2 -2
  500. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
  501. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +2 -2
  502. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
  503. package/lib/cjs/secrets/fs/index.cjs +2 -2
  504. package/lib/cjs/secrets/fs/index.cjs.map +1 -0
  505. package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs +2 -2
  506. package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs.map +1 -0
  507. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  508. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -0
  509. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  510. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +1 -0
  511. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  512. package/lib/cjs/secrets/gcp/index.cjs.map +1 -0
  513. package/lib/cjs/secrets/index.cjs +2 -2
  514. package/lib/cjs/secrets/index.cjs.map +1 -0
  515. package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs +2 -2
  516. package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs.map +1 -0
  517. package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs +2 -2
  518. package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs.map +1 -0
  519. package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs +2 -2
  520. package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs.map +1 -0
  521. package/lib/cjs/secrets/kubernetes/index.cjs +2 -2
  522. package/lib/cjs/secrets/kubernetes/index.cjs.map +1 -0
  523. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  524. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +1 -0
  525. package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs +2 -2
  526. package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs.map +1 -0
  527. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  528. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -0
  529. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  530. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +1 -0
  531. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  532. package/lib/cjs/secrets/model/Secret.cjs.map +1 -0
  533. package/lib/cjs/secrets/model/index.cjs +2 -2
  534. package/lib/cjs/secrets/model/index.cjs.map +1 -0
  535. package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs +2 -2
  536. package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs.map +1 -0
  537. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  538. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -0
  539. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  540. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +1 -0
  541. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  542. package/lib/cjs/secrets/onepassword/index.cjs.map +1 -0
  543. package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs +2 -2
  544. package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs.map +1 -0
  545. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  546. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -0
  547. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  548. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +1 -0
  549. package/lib/cjs/secrets/vault/index.cjs +2 -2
  550. package/lib/cjs/secrets/vault/index.cjs.map +1 -0
  551. package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs +2 -2
  552. package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs.map +1 -0
  553. package/lib/cjs/sftp/aws/AwsSftpService.cjs +2 -2
  554. package/lib/cjs/sftp/aws/AwsSftpService.cjs.map +1 -0
  555. package/lib/cjs/sftp/aws/index.cjs +2 -2
  556. package/lib/cjs/sftp/aws/index.cjs.map +1 -0
  557. package/lib/cjs/sftp/core/SftpEnvironment.cjs +2 -2
  558. package/lib/cjs/sftp/core/SftpEnvironment.cjs.map +1 -0
  559. package/lib/cjs/sftp/core/SftpSource.cjs +2 -2
  560. package/lib/cjs/sftp/core/SftpSource.cjs.map +1 -0
  561. package/lib/cjs/sftp/core/index.cjs +2 -2
  562. package/lib/cjs/sftp/core/index.cjs.map +1 -0
  563. package/lib/cjs/sftp/index.cjs +2 -2
  564. package/lib/cjs/sftp/index.cjs.map +1 -0
  565. package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs +2 -2
  566. package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs.map +1 -0
  567. package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs +2 -2
  568. package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs.map +1 -0
  569. package/lib/cjs/sftp/ssh2/index.cjs +2 -2
  570. package/lib/cjs/sftp/ssh2/index.cjs.map +1 -0
  571. package/lib/cjs/shared/environmentValue.cjs +2 -2
  572. package/lib/cjs/shared/environmentValue.cjs.map +1 -0
  573. package/lib/cjs/shared/http/HttpApiService.cjs +2 -2
  574. package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
  575. package/lib/cjs/shared/http/hermeticBoot.cjs +2 -2
  576. package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
  577. package/lib/cjs/shared/http/index.cjs +2 -2
  578. package/lib/cjs/shared/http/index.cjs.map +1 -0
  579. package/lib/cjs/shared/runtime.cjs +2 -2
  580. package/lib/cjs/shared/runtime.cjs.map +1 -0
  581. package/lib/cjs/user-requests/index.cjs +2 -2
  582. package/lib/cjs/user-requests/index.cjs.map +1 -0
  583. package/lib/cjs/utils.cjs +2 -2
  584. package/lib/cjs/utils.cjs.map +1 -0
  585. package/lib/esm/blob/azure/AzureBlobEnvironment.js +1 -1
  586. package/lib/esm/blob/azure/AzureBlobEnvironment.js.map +1 -0
  587. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  588. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
  589. package/lib/esm/blob/azure/index.js +1 -1
  590. package/lib/esm/blob/azure/index.js.map +1 -0
  591. package/lib/esm/blob/core/BlobEnvironment.js +1 -1
  592. package/lib/esm/blob/core/BlobEnvironment.js.map +1 -0
  593. package/lib/esm/blob/core/BlobErrors.js +1 -1
  594. package/lib/esm/blob/core/BlobErrors.js.map +1 -0
  595. package/lib/esm/blob/core/BlobKey.js +1 -1
  596. package/lib/esm/blob/core/BlobKey.js.map +1 -0
  597. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  598. package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
  599. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  600. package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
  601. package/lib/esm/blob/core/BlobTypes.js +1 -1
  602. package/lib/esm/blob/core/BlobTypes.js.map +1 -0
  603. package/lib/esm/blob/core/BlobValue.js +1 -1
  604. package/lib/esm/blob/core/BlobValue.js.map +1 -0
  605. package/lib/esm/blob/core/index.js +1 -1
  606. package/lib/esm/blob/core/index.js.map +1 -0
  607. package/lib/esm/blob/gcp/GcsBlobEnvironment.js +1 -1
  608. package/lib/esm/blob/gcp/GcsBlobEnvironment.js.map +1 -0
  609. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  610. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
  611. package/lib/esm/blob/gcp/index.js +1 -1
  612. package/lib/esm/blob/gcp/index.js.map +1 -0
  613. package/lib/esm/blob/index.js +1 -1
  614. package/lib/esm/blob/index.js.map +1 -0
  615. package/lib/esm/blob/local/LocalBlobEnvironment.js +1 -1
  616. package/lib/esm/blob/local/LocalBlobEnvironment.js.map +1 -0
  617. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  618. package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
  619. package/lib/esm/blob/local/index.js +1 -1
  620. package/lib/esm/blob/local/index.js.map +1 -0
  621. package/lib/esm/blob/memory/MemoryBlobEnvironment.js +1 -1
  622. package/lib/esm/blob/memory/MemoryBlobEnvironment.js.map +1 -0
  623. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  624. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
  625. package/lib/esm/blob/memory/index.js +1 -1
  626. package/lib/esm/blob/memory/index.js.map +1 -0
  627. package/lib/esm/blob/s3/MinioBlobEnvironment.js +1 -1
  628. package/lib/esm/blob/s3/MinioBlobEnvironment.js.map +1 -0
  629. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  630. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
  631. package/lib/esm/blob/s3/R2BlobEnvironment.js +1 -1
  632. package/lib/esm/blob/s3/R2BlobEnvironment.js.map +1 -0
  633. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  634. package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
  635. package/lib/esm/blob/s3/S3BlobEnvironment.js +1 -1
  636. package/lib/esm/blob/s3/S3BlobEnvironment.js.map +1 -0
  637. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  638. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
  639. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +1 -1
  640. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -0
  641. package/lib/esm/blob/s3/index.js +1 -1
  642. package/lib/esm/blob/s3/index.js.map +1 -0
  643. package/lib/esm/calendar/CalendarService.js +1 -1
  644. package/lib/esm/calendar/CalendarService.js.map +1 -0
  645. package/lib/esm/calendar/environment.js +1 -1
  646. package/lib/esm/calendar/environment.js.map +1 -0
  647. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +1 -1
  648. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
  649. package/lib/esm/calendar/google-calendar/index.js +1 -1
  650. package/lib/esm/calendar/google-calendar/index.js.map +1 -0
  651. package/lib/esm/calendar/index.js +1 -1
  652. package/lib/esm/calendar/index.js.map +1 -0
  653. package/lib/esm/calendar/types.js +1 -1
  654. package/lib/esm/calendar/types.js.map +1 -0
  655. package/lib/esm/calendar/validators/cron.js +1 -1
  656. package/lib/esm/calendar/validators/cron.js.map +1 -0
  657. package/lib/esm/calendar/writers/CalendarFsWriter.js +1 -1
  658. package/lib/esm/calendar/writers/CalendarFsWriter.js.map +1 -0
  659. package/lib/esm/calendar/writers/CalenderDownloader.js +1 -1
  660. package/lib/esm/calendar/writers/CalenderDownloader.js.map +1 -0
  661. package/lib/esm/calendar/writers/ICalendarWriter.js +1 -1
  662. package/lib/esm/calendar/writers/ICalendarWriter.js.map +1 -0
  663. package/lib/esm/comms/discord/DiscordService.js +1 -1
  664. package/lib/esm/comms/discord/DiscordService.js.map +1 -0
  665. package/lib/esm/comms/discord/index.js +1 -1
  666. package/lib/esm/comms/discord/index.js.map +1 -0
  667. package/lib/esm/comms/email/EmailService.js +1 -1
  668. package/lib/esm/comms/email/EmailService.js.map +1 -0
  669. package/lib/esm/comms/email/index.js +1 -1
  670. package/lib/esm/comms/email/index.js.map +1 -0
  671. package/lib/esm/comms/email/mime.js +1 -1
  672. package/lib/esm/comms/email/mime.js.map +1 -0
  673. package/lib/esm/comms/email/smtp.js +1 -1
  674. package/lib/esm/comms/email/smtp.js.map +1 -0
  675. package/lib/esm/comms/environment.js +1 -1
  676. package/lib/esm/comms/environment.js.map +1 -0
  677. package/lib/esm/comms/gmail/GmailService.js +1 -1
  678. package/lib/esm/comms/gmail/GmailService.js.map +1 -0
  679. package/lib/esm/comms/gmail/index.js +1 -1
  680. package/lib/esm/comms/gmail/index.js.map +1 -0
  681. package/lib/esm/comms/index.js +1 -1
  682. package/lib/esm/comms/index.js.map +1 -0
  683. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +1 -1
  684. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
  685. package/lib/esm/comms/outlook/index.js +1 -1
  686. package/lib/esm/comms/outlook/index.js.map +1 -0
  687. package/lib/esm/comms/slack/SlackService.js +1 -1
  688. package/lib/esm/comms/slack/SlackService.js.map +1 -0
  689. package/lib/esm/comms/slack/index.js +1 -1
  690. package/lib/esm/comms/slack/index.js.map +1 -0
  691. package/lib/esm/comms/teams/TeamsService.js +1 -1
  692. package/lib/esm/comms/teams/TeamsService.js.map +1 -0
  693. package/lib/esm/comms/teams/index.js +1 -1
  694. package/lib/esm/comms/teams/index.js.map +1 -0
  695. package/lib/esm/comms/telegram/TelegramService.js +1 -1
  696. package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
  697. package/lib/esm/comms/telegram/index.js +1 -1
  698. package/lib/esm/comms/telegram/index.js.map +1 -0
  699. package/lib/esm/comms/whatsapp/WhatsAppService.js +1 -1
  700. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
  701. package/lib/esm/comms/whatsapp/index.js +1 -1
  702. package/lib/esm/comms/whatsapp/index.js.map +1 -0
  703. package/lib/esm/devops/environment.js +1 -1
  704. package/lib/esm/devops/environment.js.map +1 -0
  705. package/lib/esm/devops/github/GithubService.js +1 -1
  706. package/lib/esm/devops/github/GithubService.js.map +1 -0
  707. package/lib/esm/devops/github/index.js +1 -1
  708. package/lib/esm/devops/github/index.js.map +1 -0
  709. package/lib/esm/devops/gitlab/GitlabService.js +1 -1
  710. package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
  711. package/lib/esm/devops/gitlab/index.js +1 -1
  712. package/lib/esm/devops/gitlab/index.js.map +1 -0
  713. package/lib/esm/devops/index.js +1 -1
  714. package/lib/esm/devops/index.js.map +1 -0
  715. package/lib/esm/docker/DockerComposeService.js +1 -1
  716. package/lib/esm/docker/DockerComposeService.js.map +1 -0
  717. package/lib/esm/docker/index.js +1 -1
  718. package/lib/esm/docker/index.js.map +1 -0
  719. package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js +1 -1
  720. package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js.map +1 -0
  721. package/lib/esm/feature-flags/constants.js +1 -1
  722. package/lib/esm/feature-flags/constants.js.map +1 -0
  723. package/lib/esm/feature-flags/decorators.js +1 -1
  724. package/lib/esm/feature-flags/decorators.js.map +1 -0
  725. package/lib/esm/feature-flags/environment.js +1 -1
  726. package/lib/esm/feature-flags/environment.js.map +1 -0
  727. package/lib/esm/feature-flags/index.js +1 -1
  728. package/lib/esm/feature-flags/index.js.map +1 -0
  729. package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
  730. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -0
  731. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
  732. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -0
  733. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
  734. package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +1 -0
  735. package/lib/esm/feature-flags/readers/index.js +1 -1
  736. package/lib/esm/feature-flags/readers/index.js.map +1 -0
  737. package/lib/esm/feature-flags/services/FeatureFlag.service.js +2 -1
  738. package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +1 -0
  739. package/lib/esm/feature-flags/types.js +1 -1
  740. package/lib/esm/feature-flags/types.js.map +1 -0
  741. package/lib/esm/feature-flags/utils.js +1 -1
  742. package/lib/esm/feature-flags/utils.js.map +1 -0
  743. package/lib/esm/index.js +4 -4
  744. package/lib/esm/index.js.map +1 -0
  745. package/lib/esm/io/airtable/AirtableService.js +1 -1
  746. package/lib/esm/io/airtable/AirtableService.js.map +1 -0
  747. package/lib/esm/io/airtable/index.js +1 -1
  748. package/lib/esm/io/airtable/index.js.map +1 -0
  749. package/lib/esm/io/confluence/ConfluenceService.js +1 -1
  750. package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
  751. package/lib/esm/io/confluence/index.js +1 -1
  752. package/lib/esm/io/confluence/index.js.map +1 -0
  753. package/lib/esm/io/environment.js +1 -1
  754. package/lib/esm/io/environment.js.map +1 -0
  755. package/lib/esm/io/google-docs/GoogleDocsService.js +1 -1
  756. package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
  757. package/lib/esm/io/google-docs/index.js +1 -1
  758. package/lib/esm/io/google-docs/index.js.map +1 -0
  759. package/lib/esm/io/google-sheets/GoogleSheetsService.js +1 -1
  760. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
  761. package/lib/esm/io/google-sheets/index.js +1 -1
  762. package/lib/esm/io/google-sheets/index.js.map +1 -0
  763. package/lib/esm/io/graphql/GraphqlService.js +1 -1
  764. package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
  765. package/lib/esm/io/graphql/index.js +1 -1
  766. package/lib/esm/io/graphql/index.js.map +1 -0
  767. package/lib/esm/io/index.js +1 -1
  768. package/lib/esm/io/index.js.map +1 -0
  769. package/lib/esm/io/jira/JiraService.js +1 -1
  770. package/lib/esm/io/jira/JiraService.js.map +1 -0
  771. package/lib/esm/io/jira/index.js +1 -1
  772. package/lib/esm/io/jira/index.js.map +1 -0
  773. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +1 -1
  774. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
  775. package/lib/esm/io/microsoft-excel/index.js +1 -1
  776. package/lib/esm/io/microsoft-excel/index.js.map +1 -0
  777. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +1 -1
  778. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
  779. package/lib/esm/io/microsoft-sharepoint/index.js +1 -1
  780. package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
  781. package/lib/esm/io/spreadsheet/SpreadsheetService.js +1 -1
  782. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
  783. package/lib/esm/io/spreadsheet/index.js +1 -1
  784. package/lib/esm/io/spreadsheet/index.js.map +1 -0
  785. package/lib/esm/keycloak/broker.js +1 -1
  786. package/lib/esm/keycloak/broker.js.map +1 -0
  787. package/lib/esm/keycloak/index.js +1 -1
  788. package/lib/esm/keycloak/index.js.map +1 -0
  789. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  790. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -0
  791. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  792. package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -0
  793. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  794. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -0
  795. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  796. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -0
  797. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  798. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -0
  799. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  800. package/lib/esm/keycloak/services/KeycloakService.js.map +1 -0
  801. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  802. package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -0
  803. package/lib/esm/keycloak/services/index.js +1 -1
  804. package/lib/esm/keycloak/services/index.js.map +1 -0
  805. package/lib/esm/keycloak/services/runtime.js +1 -1
  806. package/lib/esm/keycloak/services/runtime.js.map +1 -0
  807. package/lib/esm/keycloak/types.js +1 -1
  808. package/lib/esm/keycloak/types.js.map +1 -0
  809. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
  810. package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +1 -0
  811. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
  812. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +1 -0
  813. package/lib/esm/kibana/builders/index.js +1 -1
  814. package/lib/esm/kibana/builders/index.js.map +1 -0
  815. package/lib/esm/kibana/helpers.js +1 -1
  816. package/lib/esm/kibana/helpers.js.map +1 -0
  817. package/lib/esm/kibana/index.js +1 -1
  818. package/lib/esm/kibana/index.js.map +1 -0
  819. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  820. package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -0
  821. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  822. package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -0
  823. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  824. package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -0
  825. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  826. package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -0
  827. package/lib/esm/kibana/services/KibanaService.js +1 -1
  828. package/lib/esm/kibana/services/KibanaService.js.map +1 -0
  829. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  830. package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -0
  831. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  832. package/lib/esm/kibana/services/KibanaUserService.js.map +1 -0
  833. package/lib/esm/kibana/services/index.js +1 -1
  834. package/lib/esm/kibana/services/index.js.map +1 -0
  835. package/lib/esm/kibana/services/runtime.js +1 -1
  836. package/lib/esm/kibana/services/runtime.js.map +1 -0
  837. package/lib/esm/kibana/types.js +1 -1
  838. package/lib/esm/kibana/types.js.map +1 -0
  839. package/lib/esm/loader/ObjectLoader.js +1 -1
  840. package/lib/esm/loader/ObjectLoader.js.map +1 -0
  841. package/lib/esm/loader/assets.js +1 -1
  842. package/lib/esm/loader/assets.js.map +1 -0
  843. package/lib/esm/loader/config.js +1 -1
  844. package/lib/esm/loader/config.js.map +1 -0
  845. package/lib/esm/loader/families.js +1 -1
  846. package/lib/esm/loader/families.js.map +1 -0
  847. package/lib/esm/loader/index.js +1 -1
  848. package/lib/esm/loader/index.js.map +1 -0
  849. package/lib/esm/loader/nest.js +1 -1
  850. package/lib/esm/loader/nest.js.map +1 -0
  851. package/lib/esm/loader/types.js +1 -1
  852. package/lib/esm/loader/types.js.map +1 -0
  853. package/lib/esm/namespaces/index.js +1 -1
  854. package/lib/esm/namespaces/index.js.map +1 -0
  855. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  856. package/lib/esm/namespaces/models/authorization-model.js.map +1 -0
  857. package/lib/esm/namespaces/models/credential.model.js +1 -1
  858. package/lib/esm/namespaces/models/credential.model.js.map +1 -0
  859. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  860. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -0
  861. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  862. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -0
  863. package/lib/esm/namespaces/models/group.model.js +1 -1
  864. package/lib/esm/namespaces/models/group.model.js.map +1 -0
  865. package/lib/esm/namespaces/models/index.js +1 -1
  866. package/lib/esm/namespaces/models/index.js.map +1 -0
  867. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  868. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -0
  869. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  870. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -0
  871. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  872. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -0
  873. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  874. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -0
  875. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  876. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -0
  877. package/lib/esm/namespaces/models/permission.model.js +1 -1
  878. package/lib/esm/namespaces/models/permission.model.js.map +1 -0
  879. package/lib/esm/namespaces/models/principal.model.js +1 -1
  880. package/lib/esm/namespaces/models/principal.model.js.map +1 -0
  881. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  882. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -0
  883. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  884. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -0
  885. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  886. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -0
  887. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  888. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -0
  889. package/lib/esm/namespaces/models/role.model.js +1 -1
  890. package/lib/esm/namespaces/models/role.model.js.map +1 -0
  891. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  892. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -0
  893. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  894. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -0
  895. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  896. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -0
  897. package/lib/esm/namespaces/models/tenant.model.js +1 -1
  898. package/lib/esm/namespaces/models/tenant.model.js.map +1 -0
  899. package/lib/esm/namespaces/models/user.model.js +1 -1
  900. package/lib/esm/namespaces/models/user.model.js.map +1 -0
  901. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  902. package/lib/esm/namespaces/org-based-authorization-system.js.map +1 -0
  903. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  904. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +1 -0
  905. package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
  906. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +1 -0
  907. package/lib/esm/namespaces/rls/index.js +1 -1
  908. package/lib/esm/namespaces/rls/index.js.map +1 -0
  909. package/lib/esm/namespaces/rls/principal-resolver.js +1 -1
  910. package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
  911. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +1 -1
  912. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
  913. package/lib/esm/namespaces/rls/rls.constants.js +1 -1
  914. package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
  915. package/lib/esm/namespaces/rls/rls.template.js +1 -1
  916. package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
  917. package/lib/esm/namespaces/rls/rls.types.js +1 -1
  918. package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
  919. package/lib/esm/namespaces/rls/session-binding.js +1 -1
  920. package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
  921. package/lib/esm/namespaces/services/authz.service.js +1 -1
  922. package/lib/esm/namespaces/services/authz.service.js.map +1 -0
  923. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  924. package/lib/esm/namespaces/services/bootstrap.service.js.map +1 -0
  925. package/lib/esm/namespaces/services/credential.service.js +1 -1
  926. package/lib/esm/namespaces/services/credential.service.js.map +1 -0
  927. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  928. package/lib/esm/namespaces/services/effective-permission.service.js.map +1 -0
  929. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  930. package/lib/esm/namespaces/services/group-membership.service.js.map +1 -0
  931. package/lib/esm/namespaces/services/group.service.js +1 -1
  932. package/lib/esm/namespaces/services/group.service.js.map +1 -0
  933. package/lib/esm/namespaces/services/index.js +1 -1
  934. package/lib/esm/namespaces/services/index.js.map +1 -0
  935. package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
  936. package/lib/esm/namespaces/services/inheritance-block.service.js.map +1 -0
  937. package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
  938. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +1 -0
  939. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  940. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +1 -0
  941. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  942. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +1 -0
  943. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  944. package/lib/esm/namespaces/services/org-unit.service.js.map +1 -0
  945. package/lib/esm/namespaces/services/permission.service.js +1 -1
  946. package/lib/esm/namespaces/services/permission.service.js.map +1 -0
  947. package/lib/esm/namespaces/services/principal.service.js +1 -1
  948. package/lib/esm/namespaces/services/principal.service.js.map +1 -0
  949. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  950. package/lib/esm/namespaces/services/protected-resource.service.js.map +1 -0
  951. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  952. package/lib/esm/namespaces/services/resource-grant.service.js.map +1 -0
  953. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  954. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +1 -0
  955. package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
  956. package/lib/esm/namespaces/services/role-assignment.service.js.map +1 -0
  957. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  958. package/lib/esm/namespaces/services/role-permission.service.js.map +1 -0
  959. package/lib/esm/namespaces/services/role.service.js +1 -1
  960. package/lib/esm/namespaces/services/role.service.js.map +1 -0
  961. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  962. package/lib/esm/namespaces/services/storage-binding.service.js.map +1 -0
  963. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  964. package/lib/esm/namespaces/services/system-management.service.js.map +1 -0
  965. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  966. package/lib/esm/namespaces/services/tenant-membership.service.js.map +1 -0
  967. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  968. package/lib/esm/namespaces/services/tenant-profile.service.js.map +1 -0
  969. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  970. package/lib/esm/namespaces/services/tenant.service.js.map +1 -0
  971. package/lib/esm/namespaces/services/user.service.js +1 -1
  972. package/lib/esm/namespaces/services/user.service.js.map +1 -0
  973. package/lib/esm/namespaces/types.js +1 -1
  974. package/lib/esm/namespaces/types.js.map +1 -0
  975. package/lib/esm/namespaces/utils.js +1 -1
  976. package/lib/esm/namespaces/utils.js.map +1 -0
  977. package/lib/esm/nest/decorators.js +1 -1
  978. package/lib/esm/nest/decorators.js.map +1 -0
  979. package/lib/esm/nest/index.js +1 -1
  980. package/lib/esm/nest/index.js.map +1 -0
  981. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  982. package/lib/esm/nest/keycloakAuthHandler.js.map +1 -0
  983. package/lib/esm/nest/keycloakModule.js +1 -1
  984. package/lib/esm/nest/keycloakModule.js.map +1 -0
  985. package/lib/esm/nest/logging.js +1 -1
  986. package/lib/esm/nest/logging.js.map +1 -0
  987. package/lib/esm/nest/types.js +1 -1
  988. package/lib/esm/nest/types.js.map +1 -0
  989. package/lib/esm/nest/utils.js +1 -1
  990. package/lib/esm/nest/utils.js.map +1 -0
  991. package/lib/esm/plugins/contract.js +1 -1
  992. package/lib/esm/plugins/contract.js.map +1 -0
  993. package/lib/esm/plugins/index.js +1 -1
  994. package/lib/esm/plugins/index.js.map +1 -0
  995. package/lib/esm/plugins/kibana/host.js +1 -1
  996. package/lib/esm/plugins/kibana/host.js.map +1 -0
  997. package/lib/esm/plugins/kibana/index.js +1 -1
  998. package/lib/esm/plugins/kibana/index.js.map +1 -0
  999. package/lib/esm/plugins/kibana/installer.js +1 -1
  1000. package/lib/esm/plugins/kibana/installer.js.map +1 -0
  1001. package/lib/esm/plugins/kibana/manifest.js +1 -1
  1002. package/lib/esm/plugins/kibana/manifest.js.map +1 -0
  1003. package/lib/esm/plugins/kibana/templates.js +1 -1
  1004. package/lib/esm/plugins/kibana/templates.js.map +1 -0
  1005. package/lib/esm/plugins/kibana/types.js +1 -1
  1006. package/lib/esm/plugins/kibana/types.js.map +1 -0
  1007. package/lib/esm/plugins/superset/host.js +1 -1
  1008. package/lib/esm/plugins/superset/host.js.map +1 -0
  1009. package/lib/esm/plugins/superset/index.js +1 -1
  1010. package/lib/esm/plugins/superset/index.js.map +1 -0
  1011. package/lib/esm/plugins/superset/installer.js +1 -1
  1012. package/lib/esm/plugins/superset/installer.js.map +1 -0
  1013. package/lib/esm/plugins/superset/manifest.js +1 -1
  1014. package/lib/esm/plugins/superset/manifest.js.map +1 -0
  1015. package/lib/esm/plugins/superset/templates.js +1 -1
  1016. package/lib/esm/plugins/superset/templates.js.map +1 -0
  1017. package/lib/esm/plugins/superset/types.js +1 -1
  1018. package/lib/esm/plugins/superset/types.js.map +1 -0
  1019. package/lib/esm/redis/RedisContextLock.js +1 -1
  1020. package/lib/esm/redis/RedisContextLock.js.map +1 -0
  1021. package/lib/esm/redis/RedisDispatch.js +1 -1
  1022. package/lib/esm/redis/RedisDispatch.js.map +1 -0
  1023. package/lib/esm/redis/RedisPaginator.js +1 -1
  1024. package/lib/esm/redis/RedisPaginator.js.map +1 -0
  1025. package/lib/esm/redis/RedisStatement.js +1 -1
  1026. package/lib/esm/redis/RedisStatement.js.map +1 -0
  1027. package/lib/esm/redis/adapter.js +1 -1
  1028. package/lib/esm/redis/adapter.js.map +1 -0
  1029. package/lib/esm/redis/constants.js +1 -1
  1030. package/lib/esm/redis/constants.js.map +1 -0
  1031. package/lib/esm/redis/handlers.js +1 -1
  1032. package/lib/esm/redis/handlers.js.map +1 -0
  1033. package/lib/esm/redis/index.js +1 -1
  1034. package/lib/esm/redis/index.js.map +1 -0
  1035. package/lib/esm/redis/serialization.js +1 -1
  1036. package/lib/esm/redis/serialization.js.map +1 -0
  1037. package/lib/esm/redis/types.js +1 -1
  1038. package/lib/esm/redis/types.js.map +1 -0
  1039. package/lib/esm/secrets/InfraCredentialBootstrap.js +1 -1
  1040. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
  1041. package/lib/esm/secrets/aws/AwsSecretEnvironment.js +1 -1
  1042. package/lib/esm/secrets/aws/AwsSecretEnvironment.js.map +1 -0
  1043. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  1044. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -0
  1045. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  1046. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +1 -0
  1047. package/lib/esm/secrets/aws/index.js +1 -1
  1048. package/lib/esm/secrets/aws/index.js.map +1 -0
  1049. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  1050. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -0
  1051. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  1052. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +1 -0
  1053. package/lib/esm/secrets/azure/AzureSecretEnvironment.js +1 -1
  1054. package/lib/esm/secrets/azure/AzureSecretEnvironment.js.map +1 -0
  1055. package/lib/esm/secrets/azure/index.js +1 -1
  1056. package/lib/esm/secrets/azure/index.js.map +1 -0
  1057. package/lib/esm/secrets/core/ClientBasedSecretService.js +1 -1
  1058. package/lib/esm/secrets/core/ClientBasedSecretService.js.map +1 -0
  1059. package/lib/esm/secrets/core/SecretEnvironment.js +1 -1
  1060. package/lib/esm/secrets/core/SecretEnvironment.js.map +1 -0
  1061. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  1062. package/lib/esm/secrets/core/SecretErrors.js.map +1 -0
  1063. package/lib/esm/secrets/core/SecretName.js +1 -1
  1064. package/lib/esm/secrets/core/SecretName.js.map +1 -0
  1065. package/lib/esm/secrets/core/SecretReference.js +1 -1
  1066. package/lib/esm/secrets/core/SecretReference.js.map +1 -0
  1067. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  1068. package/lib/esm/secrets/core/SecretSerialization.js.map +1 -0
  1069. package/lib/esm/secrets/core/SecretService.js +1 -1
  1070. package/lib/esm/secrets/core/SecretService.js.map +1 -0
  1071. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  1072. package/lib/esm/secrets/core/SecretTypes.js.map +1 -0
  1073. package/lib/esm/secrets/core/index.js +1 -1
  1074. package/lib/esm/secrets/core/index.js.map +1 -0
  1075. package/lib/esm/secrets/fs/FsSecretEnvironment.js +1 -1
  1076. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
  1077. package/lib/esm/secrets/fs/FsSecretService.js +1 -1
  1078. package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
  1079. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +1 -1
  1080. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
  1081. package/lib/esm/secrets/fs/index.js +1 -1
  1082. package/lib/esm/secrets/fs/index.js.map +1 -0
  1083. package/lib/esm/secrets/gcp/GcpSecretEnvironment.js +1 -1
  1084. package/lib/esm/secrets/gcp/GcpSecretEnvironment.js.map +1 -0
  1085. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  1086. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -0
  1087. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  1088. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +1 -0
  1089. package/lib/esm/secrets/gcp/index.js +1 -1
  1090. package/lib/esm/secrets/gcp/index.js.map +1 -0
  1091. package/lib/esm/secrets/index.js +1 -1
  1092. package/lib/esm/secrets/index.js.map +1 -0
  1093. package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js +1 -1
  1094. package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js.map +1 -0
  1095. package/lib/esm/secrets/kubernetes/KubernetesSecretService.js +1 -1
  1096. package/lib/esm/secrets/kubernetes/KubernetesSecretService.js.map +1 -0
  1097. package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js +1 -1
  1098. package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js.map +1 -0
  1099. package/lib/esm/secrets/kubernetes/index.js +1 -1
  1100. package/lib/esm/secrets/kubernetes/index.js.map +1 -0
  1101. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  1102. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +1 -0
  1103. package/lib/esm/secrets/model/ModelSecretEnvironment.js +1 -1
  1104. package/lib/esm/secrets/model/ModelSecretEnvironment.js.map +1 -0
  1105. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  1106. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -0
  1107. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  1108. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +1 -0
  1109. package/lib/esm/secrets/model/Secret.js +1 -1
  1110. package/lib/esm/secrets/model/Secret.js.map +1 -0
  1111. package/lib/esm/secrets/model/index.js +1 -1
  1112. package/lib/esm/secrets/model/index.js.map +1 -0
  1113. package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js +1 -1
  1114. package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js.map +1 -0
  1115. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  1116. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -0
  1117. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  1118. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +1 -0
  1119. package/lib/esm/secrets/onepassword/index.js +1 -1
  1120. package/lib/esm/secrets/onepassword/index.js.map +1 -0
  1121. package/lib/esm/secrets/vault/VaultSecretEnvironment.js +1 -1
  1122. package/lib/esm/secrets/vault/VaultSecretEnvironment.js.map +1 -0
  1123. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  1124. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -0
  1125. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  1126. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +1 -0
  1127. package/lib/esm/secrets/vault/index.js +1 -1
  1128. package/lib/esm/secrets/vault/index.js.map +1 -0
  1129. package/lib/esm/sftp/aws/AwsSftpEnvironment.js +1 -1
  1130. package/lib/esm/sftp/aws/AwsSftpEnvironment.js.map +1 -0
  1131. package/lib/esm/sftp/aws/AwsSftpService.js +1 -1
  1132. package/lib/esm/sftp/aws/AwsSftpService.js.map +1 -0
  1133. package/lib/esm/sftp/aws/index.js +1 -1
  1134. package/lib/esm/sftp/aws/index.js.map +1 -0
  1135. package/lib/esm/sftp/core/SftpEnvironment.js +1 -1
  1136. package/lib/esm/sftp/core/SftpEnvironment.js.map +1 -0
  1137. package/lib/esm/sftp/core/SftpSource.js +1 -1
  1138. package/lib/esm/sftp/core/SftpSource.js.map +1 -0
  1139. package/lib/esm/sftp/core/index.js +1 -1
  1140. package/lib/esm/sftp/core/index.js.map +1 -0
  1141. package/lib/esm/sftp/index.js +1 -1
  1142. package/lib/esm/sftp/index.js.map +1 -0
  1143. package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js +1 -1
  1144. package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js.map +1 -0
  1145. package/lib/esm/sftp/ssh2/Ssh2SftpService.js +1 -1
  1146. package/lib/esm/sftp/ssh2/Ssh2SftpService.js.map +1 -0
  1147. package/lib/esm/sftp/ssh2/index.js +1 -1
  1148. package/lib/esm/sftp/ssh2/index.js.map +1 -0
  1149. package/lib/esm/shared/environmentValue.js +1 -1
  1150. package/lib/esm/shared/environmentValue.js.map +1 -0
  1151. package/lib/esm/shared/http/HttpApiService.js +1 -1
  1152. package/lib/esm/shared/http/HttpApiService.js.map +1 -0
  1153. package/lib/esm/shared/http/hermeticBoot.js +1 -1
  1154. package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
  1155. package/lib/esm/shared/http/index.js +1 -1
  1156. package/lib/esm/shared/http/index.js.map +1 -0
  1157. package/lib/esm/shared/runtime.js +1 -1
  1158. package/lib/esm/shared/runtime.js.map +1 -0
  1159. package/lib/esm/user-requests/index.js +1 -1
  1160. package/lib/esm/user-requests/index.js.map +1 -0
  1161. package/lib/esm/utils.js +1 -1
  1162. package/lib/esm/utils.js.map +1 -0
  1163. package/lib/types/index.d.cts +2 -2
  1164. package/lib/types/index.d.mts +2 -2
  1165. package/package.json +74 -50
@@ -711,5 +711,5 @@ class RedisAdapter extends core_1.Adapter {
711
711
  exports.RedisAdapter = RedisAdapter;
712
712
  core_1.Adapter.setCurrent(constants_js_1.RedisFlavour);
713
713
  RedisAdapter.decoration();
714
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWRpcy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLE9BQU8sRUFFUCxlQUFlLEVBSWYsZUFBZSxFQUVmLFFBQVEsR0FDVCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQXdCLE1BQU0sT0FBTyxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsU0FBUyxFQUNULGFBQWEsRUFDYixNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsRUFDYixhQUFhLEVBQ2IsUUFBUSxFQUNSLGNBQWMsR0FHZixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RCxPQUFPLEVBRUwsVUFBVSxFQUNWLFFBQVEsRUFDUixZQUFZLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLHVCQUFvQjtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLDRCQUF5QjtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLDRCQUF5QjtBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLDJCQUF3QjtBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsOEJBQTJCO0FBQ3RELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxzQkFBbUI7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQXdCO0FBRXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUtqQztJQUdDLFlBQVksT0FBb0IsRUFBRSxFQUFFLEtBQWM7UUFDaEQsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUs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dXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIEFkYXB0ZXJGbGFncyxcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBDb250ZXh0TG9jayxcbiAgQ29udGV4dHVhbEFyZ3MsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSYXdSZXN1bHQsXG4gIFNlcXVlbmNlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUNsaWVudCwgdHlwZSBSZWRpc0NsaWVudFR5cGUgfSBmcm9tIFwicmVkaXNcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgREJLZXlzLFxuICBnZW5lcmF0ZWQsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIG9uQ3JlYXRlLFxuICBvbkNyZWF0ZVVwZGF0ZSxcbiAgT3BlcmF0aW9uS2V5cyxcbiAgUHJpbWFyeUtleVR5cGUsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgTWV0YWRhdGEsXG4gIHByb3BNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBSYXdSZWRpc1F1ZXJ5LCBSZWRpc0NvbmZpZywgUmVkaXNDb250ZXh0LCBSZWRpc0ZsYWdzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFJlZGlzRGVmYXVsdFByZWZpeCwgUmVkaXNGbGF2b3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZWRpc1N0YXRlbWVudCB9IGZyb20gXCIuL1JlZGlzU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBSZWRpc1BhZ2luYXRvciB9IGZyb20gXCIuL1JlZGlzUGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBSZWRpc0Rpc3BhdGNoIH0gZnJvbSBcIi4vUmVkaXNEaXNwYXRjaFwiO1xuaW1wb3J0IHsgUmVkaXNDb250ZXh0TG9jayB9IGZyb20gXCIuL1JlZGlzQ29udGV4dExvY2tcIjtcbmltcG9ydCB7IGNyZWF0ZWRCeU9uUmVkaXNDcmVhdGVVcGRhdGUgfSBmcm9tIFwiLi9oYW5kbGVyc1wiO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUsIHNlcmlhbGl6ZSB9IGZyb20gXCIuL3NlcmlhbGl6YXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVkaXMgYWRhcHRlciBmb3IgZGF0YSBwZXJzaXN0ZW5jZVxuICogQHN1bW1hcnkgVGhlIFJlZGlzQWRhcHRlciBpbXBsZW1lbnRzIHRoZSBwZXJzaXN0ZW5jZSBsYXllciBvbiB0b3Agb2YgUmVkaXNcbiAqIChvciBhbnkgUmVkaXMtY29tcGF0aWJsZSBzZXJ2ZXIgc3VjaCBhcyBEcmFnb25mbHlEQikuIEVhY2ggbW9kZWwgdGFibGUgaXNcbiAqIHN0b3JlZCBhcyBhIHNpbmdsZSBSZWRpcyBoYXNoIHdob3NlIGZpZWxkcyBhcmUgcmVjb3JkIGlkcyBhbmQgd2hvc2UgdmFsdWVzIGFyZVxuICogc2VyaWFsaXplZCByZWNvcmRzLiBUaGUgYWRhcHRlciBpcyBtb2RlbGxlZCBvbiB0aGUgY29yZSBSQU0gYWRhcHRlcjogcmF3IHF1ZXJpZXNcbiAqIGxvYWQgdGhlIG1hdGNoaW5nIHRhYmxlLCByZXZlcnQgZXZlcnkgcmVjb3JkIHRvIGEgbW9kZWwgYW5kIHRoZW4gYXBwbHkgdGhlIHNhbWVcbiAqIGZpbHRlcmluZywgc29ydGluZywgYWdncmVnYXRpb24gYW5kIHBhZ2luYXRpb24gbG9naWMgaW4gSmF2YVNjcmlwdC5cbiAqIGBAdHJhbnNhY3Rpb25hbCgpYCBpcyBiYWNrZWQgYnkge0BsaW5rIFJlZGlzQ29udGV4dExvY2t9LCB3aGljaCBidWZmZXJzIHdyaXRlc1xuICogb24gYSBkZWRpY2F0ZWQgY29ubmVjdGlvbiBhbmQgZmx1c2hlcyB0aGVtIGF0b21pY2FsbHkgd2l0aCBgTVVMVElgL2BFWEVDYC5cbiAqIEBjbGFzcyBSZWRpc0FkYXB0ZXJcbiAqIEBjYXRlZ29yeSBSZWRpc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgUmVkaXNBZGFwdGVyKHsgdXJsOiBcInJlZGlzOi8vbG9jYWxob3N0OjYzNzlcIiB9KTtcbiAqIGF3YWl0IGFkYXB0ZXIuaW5pdGlhbGl6ZSgpO1xuICogY29uc3QgcmVwbyA9IG5ldyAoYWRhcHRlci5yZXBvc2l0b3J5PFVzZXI+KCkpKFVzZXIsIGFkYXB0ZXIpO1xuICogYXdhaXQgcmVwby5jcmVhdGUobmV3IFVzZXIoeyBuYW1lOiBcIkpvaG5cIiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZGlzQWRhcHRlciBleHRlbmRzIEFkYXB0ZXI8XG4gIFJlZGlzQ29uZmlnLFxuICBSZWRpc0NsaWVudFR5cGUsXG4gIFJhd1JlZGlzUXVlcnksXG4gIFJlZGlzQ29udGV4dFxuPiB7XG4gIHByaXZhdGUgX3JlZGlzQ2xpZW50PzogUmVkaXNDbGllbnRUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmY6IFJlZGlzQ29uZmlnID0ge30sIGFsaWFzPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoY29uZiwgUmVkaXNGbGF2b3VyLCBhbGlhcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgb3BlcmF0aW9uIGZsYWdzIHdpdGggYSB1c2VyIGlkZW50aXR5XG4gICAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2UgZmxhZ3Mgd2l0aCBhIGBVVUlEYCB1c2VkIGJ5IHRoZSBgY3JlYXRlZEJ5YCBhbmRcbiAgICogYHVwZGF0ZWRCeWAgaGFuZGxlcnMuIERlZmF1bHRzIHRvIHRoZSBjb25maWd1cmVkIGB1c2VyYCBvciB0aGUgY3VycmVudCB0aW1lLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGZvciB0aGUgb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c30gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWRcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gbW9kZWwgLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtQYXJ0aWFsPFJlZGlzRmxhZ3M+fSBmbGFncyAtIFBhcnRpYWwgZmxhZ3MgdG8gZXh0ZW5kXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVkaXNGbGFncz59IFRoZSBjb21wbGV0ZSBmbGFncyB3aXRoIGEgVVVJRFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZmxhZ3M8TSBleHRlbmRzIE1vZGVsPGJvb2xlYW4+PihcbiAgICBvcGVyYXRpb246IE9wZXJhdGlvbktleXMsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+LFxuICAgIGZsYWdzOiBQYXJ0aWFsPFJlZGlzRmxhZ3M+XG4gICk6IFByb21pc2U8UmVkaXNGbGFncz4ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgYXdhaXQgc3VwZXIuZmxhZ3MoXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgVVVJRDogZmxhZ3MuVVVJRCB8fCB0aGlzLmNvbmZpZy51c2VyIHx8IFwiXCIgKyBEYXRlLm5vdygpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmxhZ3NcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkgYXMgUmVkaXNGbGFncztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyB0aGUgUmVkaXMgZXZlbnQgZGlzcGF0Y2hlclxuICAgKiBAcmV0dXJuIHtSZWRpc0Rpc3BhdGNofSBBIFJlZGlzLWF3YXJlIGRpc3BhdGNoIGluc3RhbmNlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgRGlzcGF0Y2goKTogUmVkaXNEaXNwYXRjaCB7XG4gICAgcmV0dXJuIG5ldyBSZWRpc0Rpc3BhdGNoKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIHRoZSBSZWRpcyB0cmFuc2FjdGlvbiBsb2NrIGltcGxlbWVudGF0aW9uXG4gICAqIEBzdW1tYXJ5IFJldHVybnMgYSBmcmVzaCB7QGxpbmsgUmVkaXNDb250ZXh0TG9ja30gcGVyIHRvcC1sZXZlbCB0cmFuc2FjdGlvblxuICAgKiBzbyBgQHRyYW5zYWN0aW9uYWwoKWAgY2FuIGJ1ZmZlciB3cml0ZXMgb24gYSBkZWRpY2F0ZWQgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3J3YXJkZWQgdG8gdGhlIGxvY2tcbiAgICogQHJldHVybiB7UmVkaXNDb250ZXh0TG9ja30gQSBmcmVzaCBSZWRpcyB0cmFuc2FjdGlvbiBsb2NrXG4gICAqL1xuICBvdmVycmlkZSB0cmFuc2FjdGlvbkxvY2soLi4uYXJnczogYW55W10pOiBSZWRpc0NvbnRleHRMb2NrPHRoaXM+IHtcbiAgICByZXR1cm4gbmV3IFJlZGlzQ29udGV4dExvY2sodGhpcywgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBhZGFwdGVyIGFuZCBvcGVucyB0aGUgUmVkaXMgY29ubmVjdGlvblxuICAgKiBAcGFyYW0gey4uLk1heWJlQ29udGV4dHVhbEFyZ30gYXJncyAtIEluaXRpYWxpemF0aW9uIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxSZWRpc0NvbnRleHQ+XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQZXJzaXN0ZW5jZUtleXMuSU5JVElBTElaQVRJT04sIHRydWUpXG4gICAgKS5mb3IodGhpcy5pbml0aWFsaXplKTtcbiAgICBjb25zdCBjbGllbnQgPSB0aGlzLmNsaWVudDtcbiAgICB0cnkge1xuICAgICAgaWYgKCFjbGllbnQuaXNPcGVuKSBhd2FpdCBjbGllbnQuY29ubmVjdCgpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG4gICAgdGhpcy5fcmVkaXNDbGllbnQgPSBjbGllbnQ7XG4gICAgYXdhaXQgc3VwZXIuaW5pdGlhbGl6ZSguLi5hcmdzKTtcbiAgICBsb2cudmVyYm9zZShgJHt0aGlzLnRvU3RyaW5nKCl9IGluaXRpYWxpemVkYCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNodXRzIGRvd24gdGhlIGFkYXB0ZXIgYW5kIGNsb3NlcyB0aGUgUmVkaXMgY29ubmVjdGlvblxuICAgKiBAcGFyYW0gey4uLk1heWJlQ29udGV4dHVhbEFyZ30gYXJncyAtIFNodXRkb3duIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIHNodXRkb3duIGlzIGNvbXBsZXRlXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBzaHV0ZG93bihcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8UmVkaXNDb250ZXh0PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5zaHV0ZG93biguLi5hcmdzKTtcbiAgICBjb25zdCBjbGllbnQgPSB0aGlzLl9yZWRpc0NsaWVudCA/PyB0aGlzLl9jbGllbnQ7XG4gICAgdGhpcy5fcmVkaXNDbGllbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY2xpZW50ID0gdW5kZWZpbmVkO1xuICAgIGlmICghY2xpZW50KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNsaWVudC5xdWl0KCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0cnkge1xuICAgICAgICBjbGllbnQuZGVzdHJveSgpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgY2xvc2VkOyBub3RoaW5nIGxlZnQgdG8gcmVsZWFzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnVpbGRzIHRoZSBuYW1lc3BhY2VkIFJlZGlzIGtleSBmb3IgYSB0YWJsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgdGFibGUgKG1vZGVsKSBuYW1lXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWVzcGFjZWQgUmVkaXMgaGFzaCBrZXlcbiAgICovXG4gIHJlY29yZEtleSh0YWJsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb25maWcucHJlZml4ID8/IFJlZGlzRGVmYXVsdFByZWZpeH06JHt0YWJsZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXNvbHZlcyB0aGUgYWN0aXZlIHRyYW5zYWN0aW9uIGxvY2sgZnJvbSBhIGNvbnRleHQsIHdoZW4gcHJlc2VudFxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSB7QGxpbmsgUmVkaXNDb250ZXh0TG9ja30gb25seSB3aGlsZSBhIHRyYW5zYWN0aW9uIGlzXG4gICAqIGFjdHVhbGx5IG9wZW4sIHNvIENSVUQgb3BlcmF0aW9ucyBidWZmZXIgdGhlaXIgd3JpdGVzIGR1cmluZyBhIHRyYW5zYWN0aW9uIGFuZFxuICAgKiBnbyBzdHJhaWdodCB0byBSZWRpcyBvdGhlcndpc2UuXG4gICAqIEBwYXJhbSB7UmVkaXNDb250ZXh0fSBbY3R4XSAtIFRoZSBvcGVyYXRpb24gY29udGV4dFxuICAgKiBAcmV0dXJuIHtSZWRpc0NvbnRleHRMb2NrIHwgdW5kZWZpbmVkfSBUaGUgYWN0aXZlIGxvY2ssIHdoZW4gb25lIGV4aXN0c1xuICAgKi9cbiAgcHJvdGVjdGVkIGFjdGl2ZUxvY2soY3R4PzogUmVkaXNDb250ZXh0KTogUmVkaXNDb250ZXh0TG9jayB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbG9jayA9IGN0eD8uZ2V0T3JVbmRlZmluZWQoXCJ0cmFuc2FjdGlvbkxvY2tcIikgYXNcbiAgICAgIHwgQ29udGV4dExvY2tcbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBsb2NrIGluc3RhbmNlb2YgUmVkaXNDb250ZXh0TG9jayAmJiBsb2NrLmFjdGl2ZSA/IGxvY2sgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIGEgbW9kZWwgZm9yIHN0b3JhZ2VcbiAgICogQHN1bW1hcnkgRGVsZWdhdGVzIHRvIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uLCB3aGljaCBleHRyYWN0cyB0aGUgcHJpbWFyeVxuICAgKiBrZXkgZnJvbSB0aGUgcmVjb3JkIGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8ge0BsaW5rIGNyZWF0ZX0uXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgYmVpbmcgcHJlcGFyZWRcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byBwcmVwYXJlXG4gICAqIEByZXR1cm4gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlY29yZCwgaWQgYW5kIHRyYW5zaWVudCBkYXRhXG4gICAqL1xuICBvdmVycmlkZSBwcmVwYXJlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgLi4uYXJnczogWy4uLmFueVtdLCBSZWRpc0NvbnRleHRdXG4gICk6IHtcbiAgICByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaWQ6IHN0cmluZztcbiAgICB0cmFuc2llbnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB9IHtcbiAgICBjb25zdCBjdHggPSBhcmdzLnBvcCgpO1xuICAgIHJldHVybiBzdXBlci5wcmVwYXJlKG1vZGVsLCAuLi5hcmdzLCBjdHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0b3JlZCByZWNvcmQgYmFjayB0byBhIG1vZGVsIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IERlbGVnYXRlcyB0byB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiwgcmVhdHRhY2hpbmcgdGhlIHByaW1hcnkga2V5XG4gICAqIGV4dHJhY3RlZCBmcm9tIHRoZSByZWNvcmQncyBSZWRpcyBoYXNoIGZpZWxkLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRvIHJldmVydCB0b1xuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9iaiAtIFRoZSBzdG9yZWQgcmVjb3JkXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UHJpbWFyeUtleVR5cGV9IGlkIC0gVGhlIHByaW1hcnkga2V5IHZhbHVlXG4gICAqIEByZXR1cm4ge019IFRoZSByZWNvbnN0cnVjdGVkIG1vZGVsIGluc3RhbmNlXG4gICAqL1xuICBvdmVycmlkZSByZXZlcnQ8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICB0cmFuc2llbnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IFsuLi5hbnlbXSwgUmVkaXNDb250ZXh0XVxuICApOiBNIHtcbiAgICByZXR1cm4gc3VwZXIucmV2ZXJ0KG9iaiwgY2xhenosIGlkLCB0cmFuc2llbnQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHJlY29yZCBpbiBSZWRpc1xuICAgKiBAc3VtbWFyeSBXcml0ZXMgdGhlIHNlcmlhbGl6ZWQgcmVjb3JkIHRvIHRoZSB0YWJsZSBoYXNoLiBJbnNpZGUgYVxuICAgKiB0cmFuc2FjdGlvbiB0aGUgd3JpdGUgaXMgYnVmZmVyZWQgKHJlYWQteW91ci13cml0ZXMpIGluc3RlYWQgb2YgaGl0dGluZ1xuICAgKiBSZWRpczsgb3RoZXJ3aXNlIGBIU0VUTlhgIGd1YXJhbnRlZXMgdGhlIHJlY29yZCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UHJpbWFyeUtleVR5cGV9IGlkIC0gVGhlIHVuaXF1ZSByZWNvcmQgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIHJlY29yZCB0byBzdG9yZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBUaGUgc3RvcmVkIHJlY29yZFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE0+LFxuICAgIGlkOiBQcmltYXJ5S2V5VHlwZSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxSZWRpc0NvbnRleHQ+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuY3JlYXRlKTtcbiAgICBjb25zdCB0YWJsZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgbG9nLmRlYnVnKGBjcmVhdGluZyByZWNvcmQgaW4gdGFibGUgJHt0YWJsZX0gd2l0aCBpZCAke2lkfWApO1xuICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGlkKTtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnJlY29yZEtleSh0YWJsZSk7XG4gICAgY29uc3QgbG9jayA9IHRoaXMuYWN0aXZlTG9jayhjdHgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUobW9kZWwpO1xuICAgIGlmIChsb2NrKSB7XG4gICAgICBjb25zdCBidWZmZXJlZCA9IGxvY2suZ2V0UmVjb3JkKHRhYmxlLCBmaWVsZCk7XG4gICAgICBjb25zdCBleGlzdHMgPVxuICAgICAgICBidWZmZXJlZC5mb3VuZCAmJiBidWZmZXJlZC52YWx1ZSAhPT0gbnVsbFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5jbGllbnQuaEV4aXN0cyhrZXksIGZpZWxkKTtcbiAgICAgIGlmIChleGlzdHMpXG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBhbHJlYWR5IGV4aXN0cyBpbiB0YWJsZSAke3RhYmxlfWBcbiAgICAgICAgKTtcbiAgICAgIGxvY2suc2V0UmVjb3JkKHRhYmxlLCBmaWVsZCwgc2VyaWFsaXplZCk7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB0aGlzLmNsaWVudC5oU2V0Tlgoa2V5LCBmaWVsZCwgc2VyaWFsaXplZCk7XG4gICAgaWYgKGNyZWF0ZWQgPT09IDApXG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RFcnJvcihcbiAgICAgICAgYFJlY29yZCB3aXRoIGlkICR7aWR9IGFscmVhZHkgZXhpc3RzIGluIHRhYmxlICR7dGFibGV9YFxuICAgICAgKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlYWRzIGEgcmVjb3JkIGZyb20gUmVkaXNcbiAgICogQHN1bW1hcnkgUmVhZHMgdGhlIHJlY29yZCBmcm9tIHRoZSB0YWJsZSBoYXNoLiBJbnNpZGUgYSB0cmFuc2FjdGlvbiB0aGVcbiAgICogYnVmZmVyZWQgdmFsdWUgd2lucyAocmVhZC15b3VyLXdyaXRlcyk7IGEgYnVmZmVyZWQgZGVsZXRlIGlzIHRyZWF0ZWQgYXMgYVxuICAgKiBtaXNzaW5nIHJlY29yZC5cbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1ByaW1hcnlLZXlUeXBlfSBpZCAtIFRoZSB1bmlxdWUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gVGhlIHN0b3JlZCByZWNvcmRcbiAgICovXG4gIGFzeW5jIHJlYWQ8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPFJlZGlzQ29udGV4dD5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZWFkKTtcbiAgICBjb25zdCB0YWJsZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgbG9nLmRlYnVnKGByZWFkaW5nIHJlY29yZCBpbiB0YWJsZSAke3RhYmxlfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgY29uc3QgZmllbGQgPSBTdHJpbmcoaWQpO1xuICAgIGNvbnN0IGxvY2sgPSB0aGlzLmFjdGl2ZUxvY2soY3R4KTtcbiAgICBpZiAobG9jaykge1xuICAgICAgY29uc3QgYnVmZmVyZWQgPSBsb2NrLmdldFJlY29yZCh0YWJsZSwgZmllbGQpO1xuICAgICAgaWYgKGJ1ZmZlcmVkLmZvdW5kKSB7XG4gICAgICAgIGlmIChidWZmZXJlZC52YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplKGJ1ZmZlcmVkLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgdGhpcy5jbGllbnQuaEdldCh0aGlzLnJlY29yZEtleSh0YWJsZSksIGZpZWxkKTtcbiAgICBpZiAocmF3ID09PSBudWxsIHx8IHJhdyA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZX1gXG4gICAgICApO1xuICAgIHJldHVybiBkZXNlcmlhbGl6ZShyYXcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIGFuIGV4aXN0aW5nIHJlY29yZCBpbiBSZWRpc1xuICAgKiBAc3VtbWFyeSBJbnNpZGUgYSB0cmFuc2FjdGlvbiB0aGUgd3JpdGUgaXMgYnVmZmVyZWQ7IG90aGVyd2lzZSB0aGUgcmVjb3JkXG4gICAqIGlzIG92ZXJ3cml0dGVuIGluIHBsYWNlLiBBIG1pc3NpbmcgcmVjb3JkIHJhaXNlcyBhIGBOb3RGb3VuZEVycm9yYC5cbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1ByaW1hcnlLZXlUeXBlfSBpZCAtIFRoZSB1bmlxdWUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBtb2RlbCAtIFRoZSBuZXcgcmVjb3JkIGRhdGFcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gVGhlIHVwZGF0ZWQgcmVjb3JkXG4gICAqL1xuICBhc3luYyB1cGRhdGU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TT4sXG4gICAgaWQ6IFByaW1hcnlLZXlUeXBlLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPFJlZGlzQ29udGV4dD5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGUpO1xuICAgIGNvbnN0IHRhYmxlID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICBsb2cuZGVidWcoYHVwZGF0aW5nIHJlY29yZCBpbiB0YWJsZSAke3RhYmxlfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgY29uc3QgZmllbGQgPSBTdHJpbmcoaWQpO1xuICAgIGNvbnN0IGtleSA9IHRoaXMucmVjb3JkS2V5KHRhYmxlKTtcbiAgICBjb25zdCBsb2NrID0gdGhpcy5hY3RpdmVMb2NrKGN0eCk7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZShtb2RlbCk7XG4gICAgaWYgKGxvY2spIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcmVkID0gbG9jay5nZXRSZWNvcmQodGFibGUsIGZpZWxkKTtcbiAgICAgIGNvbnN0IGRlbGV0ZWQgPSBidWZmZXJlZC5mb3VuZCAmJiBidWZmZXJlZC52YWx1ZSA9PT0gbnVsbDtcbiAgICAgIGNvbnN0IGV4aXN0cyA9XG4gICAgICAgIGRlbGV0ZWQgfHwgYnVmZmVyZWQuZm91bmRcbiAgICAgICAgICA/ICFkZWxldGVkXG4gICAgICAgICAgOiBhd2FpdCB0aGlzLmNsaWVudC5oRXhpc3RzKGtleSwgZmllbGQpO1xuICAgICAgaWYgKCFleGlzdHMpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZX1gXG4gICAgICAgICk7XG4gICAgICBsb2NrLnNldFJlY29yZCh0YWJsZSwgZmllbGQsIHNlcmlhbGl6ZWQpO1xuICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cbiAgICBjb25zdCBleGlzdHMgPSBhd2FpdCB0aGlzLmNsaWVudC5oRXhpc3RzKGtleSwgZmllbGQpO1xuICAgIGlmICghZXhpc3RzKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZX1gXG4gICAgICApO1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmhTZXQoa2V5LCBmaWVsZCwgc2VyaWFsaXplZCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgcmVjb3JkIGZyb20gUmVkaXNcbiAgICogQHN1bW1hcnkgSW5zaWRlIGEgdHJhbnNhY3Rpb24gdGhlIGRlbGV0ZSBpcyBidWZmZXJlZDsgb3RoZXJ3aXNlIHRoZSBmaWVsZFxuICAgKiBpcyByZW1vdmVkIGZyb20gdGhlIHRhYmxlIGhhc2ggaW1tZWRpYXRlbHkuIEEgbWlzc2luZyByZWNvcmQgcmFpc2VzIGFcbiAgICogYE5vdEZvdW5kRXJyb3JgLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UHJpbWFyeUtleVR5cGV9IGlkIC0gVGhlIHVuaXF1ZSByZWNvcmQgaWRlbnRpZmllclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBUaGUgZGVsZXRlZCByZWNvcmRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPixcbiAgICBpZDogUHJpbWFyeUtleVR5cGUsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8UmVkaXNDb250ZXh0PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4IH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmRlbGV0ZSk7XG4gICAgY29uc3QgdGFibGUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgIGxvZy5kZWJ1ZyhgZGVsZXRpbmcgcmVjb3JkIGZyb20gdGFibGUgJHt0YWJsZX0gd2l0aCBpZCAke2lkfWApO1xuICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGlkKTtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnJlY29yZEtleSh0YWJsZSk7XG4gICAgY29uc3QgbG9jayA9IHRoaXMuYWN0aXZlTG9jayhjdHgpO1xuICAgIGlmIChsb2NrKSB7XG4gICAgICBjb25zdCBidWZmZXJlZCA9IGxvY2suZ2V0UmVjb3JkKHRhYmxlLCBmaWVsZCk7XG4gICAgICBjb25zdCByYXcgPSBidWZmZXJlZC5mb3VuZFxuICAgICAgICA/IGJ1ZmZlcmVkLnZhbHVlXG4gICAgICAgIDogYXdhaXQgdGhpcy5jbGllbnQuaEdldChrZXksIGZpZWxkKTtcbiAgICAgIGlmIChyYXcgPT09IG51bGwgfHwgcmF3ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZX1gXG4gICAgICAgICk7XG4gICAgICBsb2NrLmRlbGV0ZVJlY29yZCh0YWJsZSwgZmllbGQpO1xuICAgICAgcmV0dXJuIGRlc2VyaWFsaXplKHJhdyk7XG4gICAgfVxuICAgIGNvbnN0IHJhdyA9IGF3YWl0IHRoaXMuY2xpZW50LmhHZXQoa2V5LCBmaWVsZCk7XG4gICAgaWYgKHJhdyA9PT0gbnVsbCB8fCByYXcgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGV9YFxuICAgICAgKTtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5oRGVsKGtleSwgZmllbGQpO1xuICAgIHJldHVybiBkZXNlcmlhbGl6ZShyYXcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2FkcyBldmVyeSByZWNvcmQgb2YgYSB0YWJsZSwgYXBwbHlpbmcgYnVmZmVyZWQgd3JpdGVzXG4gICAqIEBzdW1tYXJ5IFJlYWRzIHRoZSB0YWJsZSBoYXNoIGFuZCBtZXJnZXMgdGhlIHRyYW5zYWN0aW9uIGJ1ZmZlciBvbiB0b3Agc28gYVxuICAgKiBxdWVyeSBpbnNpZGUgYSB0cmFuc2FjdGlvbiBvYnNlcnZlcyB0aGUgdHJhbnNhY3Rpb24ncyBvd24gd3JpdGVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgdGFibGUgKG1vZGVsKSBuYW1lXG4gICAqIEBwYXJhbSB7UmVkaXNDb250ZXh0fSBbY3R4XSAtIFRoZSBvcGVyYXRpb24gY29udGV4dFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFtzdHJpbmcsIHN0cmluZ11bXT59IFRoZSByZWNvcmQgaWQvc2VyaWFsaXplZCBwYWlyc1xuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWRUYWJsZShcbiAgICB0YWJsZTogc3RyaW5nLFxuICAgIGN0eD86IFJlZGlzQ29udGV4dFxuICApOiBQcm9taXNlPFtzdHJpbmcsIHN0cmluZ11bXT4ge1xuICAgIGNvbnN0IHJhdyA9IGF3YWl0IHRoaXMuY2xpZW50LmhHZXRBbGwodGhpcy5yZWNvcmRLZXkodGFibGUpKTtcbiAgICBjb25zdCBtZXJnZWQgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihPYmplY3QuZW50cmllcyhyYXcpKTtcbiAgICBjb25zdCBsb2NrID0gdGhpcy5hY3RpdmVMb2NrKGN0eCk7XG4gICAgaWYgKGxvY2spIHtcbiAgICAgIGNvbnN0IGJ1ZmZlcmVkID0gbG9jay50YWJsZUVudHJpZXModGFibGUpO1xuICAgICAgaWYgKGJ1ZmZlcmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2lkLCB2YWx1ZV0gb2YgYnVmZmVyZWQpIHtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIG1lcmdlZC5kZWxldGUoaWQpO1xuICAgICAgICAgIGVsc2UgbWVyZ2VkLnNldChpZCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbLi4ubWVyZ2VkLmVudHJpZXMoKV07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgcmF3IHF1ZXJ5IGFnYWluc3QgUmVkaXNcbiAgICogQHN1bW1hcnkgTG9hZHMgdGhlIG1hdGNoaW5nIHRhYmxlLCByZXZlcnRzIGV2ZXJ5IHJlY29yZCB0byBhIG1vZGVsIGFuZFxuICAgKiBhcHBsaWVzIHRoZSBpbi1tZW1vcnkgZmlsdGVyaW5nLCBzb3J0aW5nLCBhZ2dyZWdhdGlvbiBhbmQgcGFnaW5hdGlvbiBsb2dpYy5cbiAgICogVGhpcyBtaXJyb3JzIHRoZSBjb3JlIFJBTSBhZGFwdGVyLCBzaW5jZSBSZWRpcyBoYXNoZXMgYXJlIG5vdCBxdWVyeWFibGUuXG4gICAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHF1ZXJ5IHJldHVybiB0eXBlXG4gICAqIEB0ZW1wbGF0ZSBEIC0gV2hldGhlciBvbmx5IGRvY3VtZW50cyBhcmUgcmV0dXJuZWRcbiAgICogQHBhcmFtIHtSYXdSZWRpc1F1ZXJ5PGFueT59IHJhd0lucHV0IC0gVGhlIHF1ZXJ5IHNwZWNpZmljYXRpb25cbiAgICogQHBhcmFtIHtEfSBkb2NzT25seSAtIFdoZXRoZXIgdG8gcmV0dXJuIG9ubHkgZG9jdW1lbnRzIChkZWZhdWx0IHRydWUpXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmF3UmVzdWx0PFIsIEQ+Pn0gVGhlIHF1ZXJ5IHJlc3VsdFxuICAgKi9cbiAgYXN5bmMgcmF3PFIsIEQgZXh0ZW5kcyBib29sZWFuPihcbiAgICByYXdJbnB1dDogUmF3UmVkaXNRdWVyeTxhbnk+LFxuICAgIGRvY3NPbmx5OiBEID0gdHJ1ZSBhcyBELFxuICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPFJlZGlzQ29udGV4dD5cbiAgKTogUHJvbWlzZTxSYXdSZXN1bHQ8UiwgRD4+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4IH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnJhdyk7XG4gICAgbG9nLmRlYnVnKGBwZXJmb3JtaW5nIHJhdyBxdWVyeTogJHtKU09OLnN0cmluZ2lmeShyYXdJbnB1dCl9YCk7XG5cbiAgICBjb25zdCB7XG4gICAgICB3aGVyZSxcbiAgICAgIHNvcnQsXG4gICAgICBsaW1pdCxcbiAgICAgIHNraXAsXG4gICAgICBmcm9tLFxuICAgICAgZ3JvdXBCeSxcbiAgICAgIGNvdW50OiBjb3VudEZpZWxkLFxuICAgICAgY291bnREaXN0aW5jdDogY291bnREaXN0aW5jdEZpZWxkLFxuICAgICAgbWluOiBtaW5GaWVsZCxcbiAgICAgIG1heDogbWF4RmllbGQsXG4gICAgICBzdW06IHN1bUZpZWxkLFxuICAgICAgYXZnOiBhdmdGaWVsZCxcbiAgICAgIGRpc3RpbmN0OiBkaXN0aW5jdEZpZWxkLFxuICAgIH0gPSByYXdJbnB1dDtcbiAgICBsZXQgeyBzZWxlY3QgfSA9IHJhd0lucHV0O1xuICAgIGNvbnN0IHRhYmxlID0gTW9kZWwudGFibGVOYW1lKGZyb20pO1xuICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCB0aGlzLmxvYWRUYWJsZSh0YWJsZSwgY3R4KTtcbiAgICBjb25zdCBjbGF6eiA9IGZyb207XG4gICAgY29uc3QgaWQgPSBNb2RlbC5wayhmcm9tKTtcbiAgICBjb25zdCBwcm9wcyA9IE1ldGFkYXRhLmdldChmcm9tLCBNZXRhZGF0YS5rZXkoREJLZXlzLklELCBpZCBhcyBzdHJpbmcpKTtcblxuICAgIGxldCByZXN1bHQ6IGFueVtdID0gZW50cmllcy5tYXAoKFtwaywgcl0pID0+XG4gICAgICB0aGlzLnJldmVydChcbiAgICAgICAgZGVzZXJpYWxpemUociksXG4gICAgICAgIGZyb20sXG4gICAgICAgIFNlcXVlbmNlLnBhcnNlVmFsdWUocHJvcHMudHlwZSBhcyBhbnksIHBrIGFzIHN0cmluZykgYXMgc3RyaW5nLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGN0eFxuICAgICAgKVxuICAgICk7XG4gICAgaWYgKHNvcnQpIHJlc3VsdCA9IHJlc3VsdC5zb3J0KHNvcnQpO1xuXG4gICAgcmVzdWx0ID0gd2hlcmUgPyByZXN1bHQuZmlsdGVyKHdoZXJlKSA6IHJlc3VsdDtcblxuICAgIGlmIChcImNvdW50XCIgaW4gcmF3SW5wdXQpIHtcbiAgICAgIGlmICghY291bnRGaWVsZCkgcmV0dXJuIHJlc3VsdC5sZW5ndGggYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBjb25zdCBjb3VudCA9IHJlc3VsdC5maWx0ZXIoXG4gICAgICAgIChyKSA9PlxuICAgICAgICAgIHJbY291bnRGaWVsZCBhcyBzdHJpbmddICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByW2NvdW50RmllbGQgYXMgc3RyaW5nXSAhPT0gbnVsbFxuICAgICAgKS5sZW5ndGg7XG4gICAgICByZXR1cm4gY291bnQgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgfVxuXG4gICAgaWYgKGNvdW50RGlzdGluY3RGaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bY291bnREaXN0aW5jdEZpZWxkIGFzIHN0cmluZ107XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuICAgICAgICAgIHNlZW4uYWRkKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2Vlbi5zaXplIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgIH1cblxuICAgIGlmIChtaW5GaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShcbiAgICAgICAgY2xhenosXG4gICAgICAgIG1pbkZpZWxkIGFzIHN0cmluZyxcbiAgICAgICAgXCJNSU4gb3BlcmF0aW9uXCIsXG4gICAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSkgfHwgdHlwZSA9PT0gXCJkYXRlXCIsXG4gICAgICAgIFwibnVtZXJpYyBvciBkYXRlXCJcbiAgICAgICk7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBjb25zdCB2YWx1ZXMgPSByZXN1bHRcbiAgICAgICAgLm1hcCgocikgPT4gclttaW5GaWVsZCBhcyBzdHJpbmddKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCk7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBsZXQgbWluVmFsdWUgPSB2YWx1ZXNbMF07XG4gICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmlzb24gPVxuICAgICAgICAgIHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICA/IHYuZ2V0VGltZSgpXG4gICAgICAgICAgICA6IHR5cGVvZiB2ID09PSBcImJpZ2ludFwiXG4gICAgICAgICAgICAgID8gTnVtYmVyKHYpXG4gICAgICAgICAgICAgIDogTnVtYmVyKHYpO1xuICAgICAgICBjb25zdCBtaW5Db21wYXJpc29uID1cbiAgICAgICAgICBtaW5WYWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgID8gbWluVmFsdWUuZ2V0VGltZSgpXG4gICAgICAgICAgICA6IHR5cGVvZiBtaW5WYWx1ZSA9PT0gXCJiaWdpbnRcIlxuICAgICAgICAgICAgICA/IE51bWJlcihtaW5WYWx1ZSlcbiAgICAgICAgICAgICAgOiBOdW1iZXIobWluVmFsdWUpO1xuICAgICAgICBpZiAoY29tcGFyaXNvbiA8IG1pbkNvbXBhcmlzb24pIG1pblZhbHVlID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtaW5WYWx1ZSBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgICB9XG5cbiAgICBpZiAobWF4RmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbnN1cmVGaWVsZFR5cGUoXG4gICAgICAgIGNsYXp6LFxuICAgICAgICBtYXhGaWVsZCBhcyBzdHJpbmcsXG4gICAgICAgIFwiTUFYIG9wZXJhdGlvblwiLFxuICAgICAgICAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpIHx8IHR5cGUgPT09IFwiZGF0ZVwiLFxuICAgICAgICBcIm51bWVyaWMgb3IgZGF0ZVwiXG4gICAgICApO1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0XG4gICAgICAgIC5tYXAoKHIpID0+IHJbbWF4RmllbGQgYXMgc3RyaW5nXSlcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgbGV0IG1heFZhbHVlID0gdmFsdWVzWzBdO1xuICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuICAgICAgICBjb25zdCBjb21wYXJpc29uID1cbiAgICAgICAgICB2IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgPyB2LmdldFRpbWUoKVxuICAgICAgICAgICAgOiB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIlxuICAgICAgICAgICAgICA/IE51bWJlcih2KVxuICAgICAgICAgICAgICA6IE51bWJlcih2KTtcbiAgICAgICAgY29uc3QgbWF4Q29tcGFyaXNvbiA9XG4gICAgICAgICAgbWF4VmFsdWUgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICA/IG1heFZhbHVlLmdldFRpbWUoKVxuICAgICAgICAgICAgOiB0eXBlb2YgbWF4VmFsdWUgPT09IFwiYmlnaW50XCJcbiAgICAgICAgICAgICAgPyBOdW1iZXIobWF4VmFsdWUpXG4gICAgICAgICAgICAgIDogTnVtYmVyKG1heFZhbHVlKTtcbiAgICAgICAgaWYgKGNvbXBhcmlzb24gPiBtYXhDb21wYXJpc29uKSBtYXhWYWx1ZSA9IHY7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF4VmFsdWUgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgfVxuXG4gICAgaWYgKHN1bUZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZW5zdXJlRmllbGRUeXBlKFxuICAgICAgICBjbGF6eixcbiAgICAgICAgc3VtRmllbGQgYXMgc3RyaW5nLFxuICAgICAgICBcIlNVTSBvcGVyYXRpb25cIixcbiAgICAgICAgKHR5cGUpID0+IHRoaXMuaXNOdW1lcmljVHlwZSh0eXBlKSxcbiAgICAgICAgXCJudW1lcmljXCJcbiAgICAgICk7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBjb25zdCB2YWx1ZXMgPSByZXN1bHRcbiAgICAgICAgLm1hcCgocikgPT4gcltzdW1GaWVsZCBhcyBzdHJpbmddKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCk7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBjb25zdCBzdW0gPSB2YWx1ZXMucmVkdWNlKFxuICAgICAgICAoYWNjLCB2KSA9PlxuICAgICAgICAgIGFjYyArIHRoaXMudG9OdW1lcmljVmFsdWUodiwgc3VtRmllbGQgYXMgc3RyaW5nLCBcIlNVTSBvcGVyYXRpb25cIiksXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgICByZXR1cm4gc3VtIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgIH1cblxuICAgIGlmIChhdmdGaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLnJlc29sdmVGaWVsZFR5cGUoY2xhenosIGF2Z0ZpZWxkIGFzIHN0cmluZyk7XG4gICAgICBjb25zdCBpc0RhdGVGaWVsZCA9IGZpZWxkVHlwZSA9PT0gXCJkYXRlXCI7XG4gICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShcbiAgICAgICAgY2xhenosXG4gICAgICAgIGF2Z0ZpZWxkIGFzIHN0cmluZyxcbiAgICAgICAgXCJBVkcgb3BlcmF0aW9uXCIsXG4gICAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSkgfHwgdHlwZSA9PT0gXCJkYXRlXCIsXG4gICAgICAgIFwibnVtZXJpYyBvciBkYXRlXCJcbiAgICAgICk7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBjb25zdCB2YWx1ZXMgPSByZXN1bHRcbiAgICAgICAgLm1hcCgocikgPT4gclthdmdGaWVsZCBhcyBzdHJpbmddKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCk7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgICBpZiAoaXNEYXRlRmllbGQpIHtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wcyA9IHZhbHVlcy5tYXAoKHYpID0+XG4gICAgICAgICAgdiBpbnN0YW5jZW9mIERhdGUgPyB2LmdldFRpbWUoKSA6IG5ldyBEYXRlKHYpLmdldFRpbWUoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBhdmdUaW1lc3RhbXAgPVxuICAgICAgICAgIHRpbWVzdGFtcHMucmVkdWNlKChhY2MsIHQpID0+IGFjYyArIHQsIDApIC8gdGltZXN0YW1wcy5sZW5ndGg7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShhdmdUaW1lc3RhbXApIGFzIHVua25vd24gYXMgUmF3UmVzdWx0PFIsIEQ+O1xuICAgICAgfVxuICAgICAgY29uc3QgdG90YWwgPSB2YWx1ZXMucmVkdWNlKFxuICAgICAgICAoYWNjLCB2KSA9PlxuICAgICAgICAgIGFjYyArIHRoaXMudG9OdW1lcmljVmFsdWUodiwgYXZnRmllbGQgYXMgc3RyaW5nLCBcIkFWRyBvcGVyYXRpb25cIiksXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgICByZXR1cm4gKHRvdGFsIC8gdmFsdWVzLmxlbmd0aCkgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgfVxuXG4gICAgaWYgKGRpc3RpbmN0RmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKTtcbiAgICAgIGNvbnN0IGRpc3RpbmN0UmVzdWx0czogYW55W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiByZXN1bHQpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtW2Rpc3RpbmN0RmllbGQgYXMgc3RyaW5nXTtcbiAgICAgICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICBpZiAoIXNlZW4uaGFzKGtleSkpIHtcbiAgICAgICAgICBzZWVuLmFkZChrZXkpO1xuICAgICAgICAgIGRpc3RpbmN0UmVzdWx0cy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRpc3RpbmN0UmVzdWx0cyBhcyB1bmtub3duIGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgICB9XG5cbiAgICBsZXQgY291bnQ6IG51bWJlcjtcbiAgICBsZXQgb3V0cHV0OiBhbnlbXSB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaWYgKGdyb3VwQnkgJiYgZ3JvdXBCeS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGdyb3VwZWQgPSB0aGlzLmdyb3VwUmVjb3JkcyhyZXN1bHQsIGdyb3VwQnkgYXMgKGtleW9mIE1vZGVsKVtdKTtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhncm91cGVkKTtcbiAgICAgIGNvdW50ID0ga2V5cy5sZW5ndGg7XG4gICAgICBvdXRwdXQgPSB0aGlzLmFwcGx5R3JvdXBQYWdpbmF0aW9uKGdyb3VwZWQsIHNraXAsIGxpbWl0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSByZXN1bHQubGVuZ3RoO1xuICAgICAgbGV0IHBhZ2VkID0gcmVzdWx0O1xuICAgICAgaWYgKHNraXApIHBhZ2VkID0gcGFnZWQuc2xpY2Uoc2tpcCk7XG4gICAgICBpZiAobGltaXQpIHBhZ2VkID0gcGFnZWQuc2xpY2UoMCwgbGltaXQpO1xuICAgICAgb3V0cHV0ID0gcGFnZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdCAmJiAhKGdyb3VwQnkgJiYgZ3JvdXBCeS5sZW5ndGgpKSB7XG4gICAgICBzZWxlY3QgPSBBcnJheS5pc0FycmF5KHNlbGVjdCkgPyBzZWxlY3QgOiBbc2VsZWN0XTtcbiAgICAgIG91dHB1dCA9IChvdXRwdXQgYXMgYW55W10pLm1hcCgocm93KSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhyb3cpLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgaWYgKChzZWxlY3QgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGtleSkpIGFjY1trZXldID0gdmFsO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jc09ubHkpIHJldHVybiBvdXRwdXQgYXMgdW5rbm93biBhcyBSYXdSZXN1bHQ8UiwgRD47XG4gICAgcmV0dXJuIHsgZGF0YTogb3V0cHV0LCBjb3VudCB9IGFzIFJhd1Jlc3VsdDxSLCBEPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR3JvdXBzIHJlY29yZHMgYnkgb25lIG9yIG1vcmUgYXR0cmlidXRlc1xuICAgKiBAc3VtbWFyeSBSZWN1cnNpdmVseSBuZXN0cyBncm91cHMgd2hlbiBtdWx0aXBsZSBzZWxlY3RvcnMgYXJlIHByb3ZpZGVkOyB0aGVcbiAgICogdG9wLWxldmVsIHJlc3VsdCBtYXBzIGVhY2ggZ3JvdXAga2V5IHRvIHRoZSBtYXRjaGluZyByZWNvcmRzIChvciBuZXN0ZWQgZ3JvdXBzKS5cbiAgICogQHBhcmFtIHthbnlbXX0gcmVjb3JkcyAtIFRoZSByZWNvcmRzIHRvIGdyb3VwXG4gICAqIEBwYXJhbSB7KGtleW9mIE1vZGVsKVtdfSBzZWxlY3RvcnMgLSBUaGUgYXR0cmlidXRlcyB0byBncm91cCBieVxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBUaGUgZ3JvdXBlZCByZWNvcmRzIGtleWVkIGJ5IG5vcm1hbGl6ZWQgZ3JvdXAga2V5c1xuICAgKi9cbiAgcHJpdmF0ZSBncm91cFJlY29yZHMoXG4gICAgcmVjb3JkczogYW55W10sXG4gICAgc2VsZWN0b3JzOiAoa2V5b2YgTW9kZWwpW11cbiAgKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgaWYgKCFzZWxlY3RvcnMubGVuZ3RoKSByZXR1cm4gcmVjb3JkcyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0IFtjdXJyZW50LCAuLi5yZXN0XSA9IHNlbGVjdG9ycztcbiAgICBjb25zdCBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLm5vcm1hbGl6ZUdyb3VwS2V5KHJlY29yZFtjdXJyZW50IGFzIHN0cmluZ10pO1xuICAgICAgaWYgKCFncm91cGVkW2tleV0pIGdyb3VwZWRba2V5XSA9IFtdO1xuICAgICAgZ3JvdXBlZFtrZXldLnB1c2gocmVjb3JkKTtcbiAgICB9XG4gICAgaWYgKCFyZXN0Lmxlbmd0aCkgcmV0dXJuIGdyb3VwZWQ7XG4gICAgY29uc3QgbmVzdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZXNdIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwZWQpKSB7XG4gICAgICBuZXN0ZWRba2V5XSA9IHRoaXMuZ3JvdXBSZWNvcmRzKHZhbHVlcywgcmVzdCk7XG4gICAgfVxuICAgIHJldHVybiBuZXN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5vcm1hbGl6ZXMgYSBncm91cCBrZXkgdG8gYSBzdHJpbmdcbiAgICogQHN1bW1hcnkgUHJvZHVjZXMgYSBzdGFibGUgc3RyaW5nIGtleSBmb3IgYHVuZGVmaW5lZGAsIGBudWxsYCwgc3ltYm9scyxcbiAgICogb2JqZWN0cyAodmlhIEpTT04pIGFuZCBwcmltaXRpdmVzLlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBUaGUgcmF3IGdyb3VwIGtleSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIGtleVxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVHcm91cEtleSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwidW5kZWZpbmVkXCI7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gXCJudWxsXCI7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFwcGxpZXMgc2tpcC9saW1pdCBwYWdpbmF0aW9uIG92ZXIgZ3JvdXBlZCByZXN1bHRzXG4gICAqIEBzdW1tYXJ5IFBhZ2VzIHRoZSBncm91cCBrZXlzIHdoaWxlIHByZXNlcnZpbmcgdGhlaXIgYXNzb2NpYXRlZCByZWNvcmRzLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGdyb3VwZWQgLSBUaGUgZ3JvdXBlZCByZWNvcmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2tpcF0gLSBUaGUgbnVtYmVyIG9mIGdyb3VwcyB0byBza2lwXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGdyb3VwcyB0byByZXR1cm5cbiAgICogQHJldHVybiB7UmVjb3JkPHN0cmluZywgYW55Pn0gVGhlIHBhZ2VkIGdyb3Vwc1xuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUdyb3VwUGFnaW5hdGlvbihcbiAgICBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHNraXA/OiBudW1iZXIsXG4gICAgbGltaXQ/OiBudW1iZXJcbiAgKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHR5cGVvZiBza2lwID09PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBsaW1pdCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIHJldHVybiBncm91cGVkO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhncm91cGVkKTtcbiAgICBjb25zdCBzdGFydCA9IHNraXAgPz8gMDtcbiAgICBjb25zdCBlbmQgPSB0eXBlb2YgbGltaXQgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBzdGFydCArIGxpbWl0O1xuICAgIGNvbnN0IHBhZ2VkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cy5zbGljZShzdGFydCwgZW5kKSkge1xuICAgICAgcGFnZWRba2V5XSA9IGdyb3VwZWRba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIHBhZ2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYW5kIGNvbnZlcnRzIGVycm9ycyB0byBhcHByb3ByaWF0ZSB0eXBlc1xuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGBCYXNlRXJyb3JgIGluc3RhbmNlcyB1bmNoYW5nZWQsIG1hcHMgY29ubmVjdGlvblxuICAgKiBmYWlsdXJlcyB0byBgQ29ubmVjdGlvbkVycm9yYCBhbmQgd3JhcHMgZXZlcnl0aGluZyBlbHNlIGluIGFuXG4gICAqIGBJbnRlcm5hbEVycm9yYC5cbiAgICogQHRlbXBsYXRlIFYgLSBUaGUgZXhwZWN0ZWQgZXJyb3IgdHlwZVxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnIgLSBUaGUgZXJyb3IgdG8gcGFyc2VcbiAgICogQHJldHVybiB7Vn0gVGhlIHBhcnNlZCBlcnJvclxuICAgKi9cbiAgcGFyc2VFcnJvcjxWIGV4dGVuZHMgQmFzZUVycm9yPihlcnI6IEVycm9yKTogViB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhc2VFcnJvcikgcmV0dXJuIGVyciBhcyBWO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyIGFzIGFueSk/Lm1lc3NhZ2UgPz8gU3RyaW5nKGVycik7XG4gICAgaWYgKFxuICAgICAgL0VDT05OUkVGVVNFRHxFTk9URk9VTkR8RVRJTUVET1VUfENvbm5lY3Rpb24gaXMgY2xvc2VkfFNvY2tldCBjbG9zZWR8V1JPTkdQQVNTfE5PQVVUSC9pLnRlc3QoXG4gICAgICAgIG1lc3NhZ2VcbiAgICAgIClcbiAgICApXG4gICAgICByZXR1cm4gbmV3IENvbm5lY3Rpb25FcnJvcihlcnIpIGFzIFY7XG4gICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKGVycikgYXMgVjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBzdGF0ZW1lbnQgYnVpbGRlciBmb3IgcXVlcmllc1xuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGZvciB0aGUgc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7UGFydGlhbDxBZGFwdGVyRmxhZ3M+fSBbb3ZlcnJpZGVzXSAtIE9wdGlvbmFsIGFkYXB0ZXIgZmxhZyBvdmVycmlkZXNcbiAgICogQHJldHVybiB7UmVkaXNTdGF0ZW1lbnQ8TSwgYW55LCBBZGFwdGVyPC4uLj4+fSBBIG5ldyBzdGF0ZW1lbnQgYnVpbGRlclxuICAgKi9cbiAgU3RhdGVtZW50PE0gZXh0ZW5kcyBNb2RlbDxib29sZWFuPj4oXG4gICAgb3ZlcnJpZGVzPzogUGFydGlhbDxBZGFwdGVyRmxhZ3M+XG4gICk6IFJlZGlzU3RhdGVtZW50PE0sIGFueSwgQWRhcHRlcjxhbnksIGFueSwgUmF3UmVkaXNRdWVyeTxNPiwgUmVkaXNDb250ZXh0Pj4ge1xuICAgIHJldHVybiBuZXcgUmVkaXNTdGF0ZW1lbnQ8XG4gICAgICBNLFxuICAgICAgYW55LFxuICAgICAgQWRhcHRlcjxhbnksIGFueSwgUmF3UmVkaXNRdWVyeTxNPiwgUmVkaXNDb250ZXh0PlxuICAgID4odGhpcyBhcyBhbnksIG92ZXJyaWRlcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgcGFnaW5hdG9yIGZvciBxdWVyaWVzXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZm9yIHRoZSBwYWdpbmF0b3JcbiAgICogQHBhcmFtIHtSYXdSZWRpc1F1ZXJ5fSBxdWVyeSAtIFRoZSBxdWVyeSB0byBwYWdpbmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAtIFRoZSBwYWdlIHNpemVcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICogQHJldHVybiB7UmVkaXNQYWdpbmF0b3I8TT59IEEgbmV3IHBhZ2luYXRvclxuICAgKi9cbiAgUGFnaW5hdG9yPE0gZXh0ZW5kcyBNb2RlbDxib29sZWFuPj4oXG4gICAgcXVlcnk6IFJhd1JlZGlzUXVlcnksXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPlxuICApOiBSZWRpc1BhZ2luYXRvcjxNPiB7XG4gICAgcmV0dXJuIG5ldyBSZWRpc1BhZ2luYXRvcih0aGlzLCBxdWVyeSwgc2l6ZSwgY2xhenopO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhhdCBhbiBhZ2dyZWdhdGlvbiB0YXJnZXRzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgZXhwZWN0ZWQga2luZFxuICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0aGUgYXR0cmlidXRlIHR5cGUgZnJvbSB0aGUgbW9kZWwgbWV0YWRhdGEgYW5kIHJhaXNlcyBhXG4gICAqIGBRdWVyeUVycm9yYCB3aGVuIHRoZSB0eXBlIGRvZXMgbm90IHNhdGlzZnkgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCAtIFRoZSBhdHRyaWJ1dGUgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBhZ2dyZWdhdGlvbiBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpOiBib29sZWFufSBwcmVkaWNhdGUgLSBUeXBlIGFjY2VwdGFuY2UgcHJlZGljYXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiAtIEh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBhY2NlcHRlZCB0eXBlc1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVGaWVsZFR5cGUoXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE1vZGVsPixcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGNvbnRleHQ6IHN0cmluZyxcbiAgICBwcmVkaWNhdGU6ICh0eXBlOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4gICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5yZXNvbHZlRmllbGRUeXBlKGNsYXp6LCBmaWVsZCk7XG4gICAgaWYgKCF0eXBlIHx8ICFwcmVkaWNhdGUodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBgJHtjb250ZXh0fSByZXF1aXJlcyAke2Rlc2NyaXB0aW9ufSBhdHRyaWJ1dGUsIGJ1dCBcIiR7ZmllbGR9XCIgaXMgJHtcbiAgICAgICAgICB0eXBlIHx8IFwidW5rbm93blwiXG4gICAgICAgIH1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgdGhlIGF0dHJpYnV0ZSB0eXBlIGZyb20gdGhlIG1vZGVsIG1ldGFkYXRhXG4gICAqIEBzdW1tYXJ5IFJlYWRzIHRoZSBtZXRhZGF0YSBvciBkZXNpZ24gdHlwZSBvZiB0aGUgYXR0cmlidXRlIGFuZCBub3JtYWxpemVzIGl0XG4gICAqIHRvIGEgbG93ZXJjYXNlIHR5cGUgbmFtZS5cbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCAtIFRoZSBhdHRyaWJ1dGUgbmFtZVxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlLCB3aGVuIHJlc29sdmFibGVcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUZpZWxkVHlwZShcbiAgICBjbGF6ejogQ29uc3RydWN0b3I8TW9kZWw+LFxuICAgIGZpZWxkOiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwcm9wS2V5ID0gZmllbGQgYXMga2V5b2YgTW9kZWw8ZmFsc2U+O1xuICAgIGNvbnN0IG1ldGFUeXBlID1cbiAgICAgIE1ldGFkYXRhLnR5cGUoY2xhenosIHByb3BLZXkpID8/XG4gICAgICBNZXRhZGF0YS5nZXRQcm9wRGVzaWduVHlwZXMoY2xhenosIHByb3BLZXkpPy5kZXNpZ25UeXBlO1xuICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm9ybWFsaXplcyBhIHJhdyBtZXRhZGF0YSB0eXBlIHRvIGEgbG93ZXJjYXNlIHR5cGUgbmFtZVxuICAgKiBAcGFyYW0ge2FueX0gbWV0YVR5cGUgLSBUaGUgcmF3IG1ldGFkYXRhIHR5cGUgdmFsdWVcbiAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbm9ybWFsaXplZCB0eXBlIG5hbWUsIHdoZW4gcmVzb2x2YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVNZXRhVHlwZShtZXRhVHlwZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW1ldGFUeXBlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgbWV0YVR5cGUgPT09IFwic3RyaW5nXCIpIHJldHVybiBtZXRhVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0eXBlb2YgbWV0YVR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBtZXRhVHlwZS5uYW1lKVxuICAgICAgcmV0dXJuIG1ldGFUeXBlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBnaXZlbiB0eXBlIG5hbWUgaXMgYSBudW1lcmljIHR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSAtIFRoZSBub3JtYWxpemVkIHR5cGUgbmFtZVxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGZvciBcIm51bWJlclwiIGFuZCBcImJpZ2ludFwiXG4gICAqL1xuICBwcml2YXRlIGlzTnVtZXJpY1R5cGUodHlwZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwiYmlnaW50XCI7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgdmFsdWUgdG8gYSBudW1lcmljIHZhbHVlIGZvciBhZ2dyZWdhdGlvblxuICAgKiBAc3VtbWFyeSBBY2NlcHRzIG51bWJlcnMgYW5kIGJpZ2ludHMgKGNvbnZlcnRlZCB0byBgTnVtYmVyYCkgYW5kIHJhaXNlcyBhXG4gICAqIGBRdWVyeUVycm9yYCBmb3IgYW55IG90aGVyIHZhbHVlIGtpbmQuXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCAtIFRoZSBhdHRyaWJ1dGUgbmFtZSB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHRvTnVtZXJpY1ZhbHVlKHZhbHVlOiBhbnksIGZpZWxkOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgYCR7Y29udGV4dH0gb24gXCIke2ZpZWxkfVwiIHJlcXVpcmVzIG51bWVyaWMgdmFsdWVzLCBidXQgZ290ICR7dHlwZW9mIHZhbHVlfWBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIHRoZSB1bmRlcmx5aW5nIFJlZGlzIGNsaWVudFxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBhbHJlYWR5IGNvbm5lY3RlZCBjbGllbnQgd2hlbiBvbmUgZXhpc3RzIChpbmNsdWRpbmdcbiAgICogdGhyb3VnaCBhIGBmb3IoKWAgY29uZmlndXJhdGlvbi1zY29wZWQgcHJveHksIHdob3NlIG93biBgX2NsaWVudGAgc2xvdCB3b3VsZFxuICAgKiBvdGhlcndpc2UgYmUgZW1wdHkgYW5kIGJ1aWxkIGEgZnJlc2ggdW5jb25uZWN0ZWQgY2xpZW50KS4gT3RoZXJ3aXNlIGJ1aWxkcyBhXG4gICAqIG5vZGUtcmVkaXMgY2xpZW50IGZyb20gdGhlIGNvbmZpZ3VyZWQgVVJMIG9yIGRpc2NyZXRlIGhvc3QvcG9ydC9jcmVkZW50aWFscy5cbiAgICogV2hlbiBgdGxzYCBpcyBzZXQsIGB0bHM6IHRydWVgIHBsdXMgYW55IHN1cHBsaWVkIGB0bHMuY29ubmVjdGAgb3B0aW9ucyBhcmVcbiAgICogbWVyZ2VkIGludG8gdGhlIHNvY2tldCBvcHRpb25zIChhIGByZWRpc3M6Ly9gIFVSTCBpcyBwYXNzZWQgdGhyb3VnaCBhcy1pcykuXG4gICAqIFRoZSBjbGllbnQgaXMgY3JlYXRlZCBsYXppbHkgYW5kIGNvbm5lY3RlZCBieSB7QGxpbmsgaW5pdGlhbGl6ZX0uXG4gICAqIEByZXR1cm4ge1JlZGlzQ2xpZW50VHlwZX0gVGhlIFJlZGlzIGNsaWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENsaWVudCgpOiBSZWRpc0NsaWVudFR5cGUge1xuICAgIGlmICh0aGlzLl9yZWRpc0NsaWVudCkgcmV0dXJuIHRoaXMuX3JlZGlzQ2xpZW50O1xuICAgIGNvbnN0IHsgdXJsLCBob3N0LCBwb3J0LCB1c2VybmFtZSwgcGFzc3dvcmQsIGRhdGFiYXNlLCB0bHMgfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB1cmxcbiAgICAgID8geyB1cmwgfVxuICAgICAgOiB7IHNvY2tldDogeyBob3N0OiBob3N0ID8/IFwibG9jYWxob3N0XCIsIHBvcnQ6IHBvcnQgPz8gNjM3OSB9IH07XG4gICAgaWYgKHRscykge1xuICAgICAgY29uc3QgdGxzT3B0aW9ucyA9IHR5cGVvZiB0bHMgPT09IFwib2JqZWN0XCIgPyB0bHMgOiB7fTtcbiAgICAgIG9wdGlvbnMuc29ja2V0ID0geyAuLi4ob3B0aW9ucy5zb2NrZXQgPz8ge30pLCB0bHM6IHRydWUsIC4uLnRsc09wdGlvbnMgfTtcbiAgICB9XG4gICAgaWYgKHVzZXJuYW1lKSBvcHRpb25zLnVzZXJuYW1lID0gdXNlcm5hbWU7XG4gICAgaWYgKHBhc3N3b3JkKSBvcHRpb25zLnBhc3N3b3JkID0gcGFzc3dvcmQ7XG4gICAgaWYgKHR5cGVvZiBkYXRhYmFzZSA9PT0gXCJudW1iZXJcIikgb3B0aW9ucy5kYXRhYmFzZSA9IGRhdGFiYXNlO1xuICAgIHJldHVybiBjcmVhdGVDbGllbnQob3B0aW9ucykgYXMgdW5rbm93biBhcyBSZWRpc0NsaWVudFR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBSZWRpcy1zcGVjaWZpYyBkZWNvcmF0aW9ucyBmb3IgbW9kZWwgcHJvcGVydGllc1xuICAgKiBAc3VtbWFyeSBDb25maWd1cmVzIGBjcmVhdGVkQnlgIGFuZCBgdXBkYXRlZEJ5YCBoYW5kbGVycyBmb3IgdGhlIFJlZGlzXG4gICAqIGZsYXZvdXIgc28gdGhvc2UgZmllbGRzIGFyZSBwb3B1bGF0ZWQgZnJvbSB0aGUgY29udGV4dCBVVUlELlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGRlY29yYXRpb24oKTogdm9pZCB7XG4gICAgc3VwZXIuZGVjb3JhdGlvbigpO1xuICAgIGNvbnN0IGNyZWF0ZWRCeUtleSA9IFBlcnNpc3RlbmNlS2V5cy5DUkVBVEVEX0JZO1xuICAgIGNvbnN0IHVwZGF0ZWRCeUtleSA9IFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZO1xuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoUmVkaXNGbGF2b3VyKVxuICAgICAgLmZvcihjcmVhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPblJlZGlzQ3JlYXRlVXBkYXRlKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKGNyZWF0ZWRCeUtleSwge30pLFxuICAgICAgICBnZW5lcmF0ZWQoY3JlYXRlZEJ5S2V5KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhSZWRpc0ZsYXZvdXIpXG4gICAgICAuZm9yKHVwZGF0ZWRCeUtleSlcbiAgICAgIC5kZWZpbmUoXG4gICAgICAgIG9uQ3JlYXRlVXBkYXRlKGNyZWF0ZWRCeU9uUmVkaXNDcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEodXBkYXRlZEJ5S2V5LCB7fSksXG4gICAgICAgIGdlbmVyYXRlZCh1cGRhdGVkQnlLZXkpXG4gICAgICApXG4gICAgICAuYXBwbHkoKTtcbiAgfVxufVxuXG5BZGFwdGVyLnNldEN1cnJlbnQoUmVkaXNGbGF2b3VyKTtcblJlZGlzQWRhcHRlci5kZWNvcmF0aW9uKCk7XG4iXX0=
715
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFkYXB0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNEJBQTBCO0FBQzFCLHlDQUFzRjtBQUN0RixpQ0FBcUM7QUFDckMseUNBQTRDO0FBQzVDLDJEQUErSTtBQUMvSSx5RUFBdUQ7QUFDdkQscURBQTJFO0FBQzNFLGlEQUFrRTtBQUNsRSwyREFBcUQ7QUFDckQsMkRBQXFEO0FBQ3JELHlEQUFtRDtBQUNuRCwrREFBeUQ7QUFDekQsK0NBQTZEO0FBQzdELHlEQUE0RDtBQUM1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsWUFBYSxTQUFRLGNBQU87SUFDckMsWUFBWSxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUs7UUFDeEIsS0FBSyxDQUFDLElBQUksRUFBRSwyQkFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSztRQUMvQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtTQUMxRCxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsUUFBUTtRQUNKLE9BQU8sSUFBSSxnQ0FBYSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILGVBQWUsQ0FBQyxHQUFHLElBQUk7UUFDbkIsT0FBTyxJQUFJLHNDQUFnQixDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxD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LElBQUEseUJBQVksRUFBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBQSx5QkFBUyxFQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZHLEtBQUssRUFBRSxDQUFDO1FBQ2IsdUJBQVUsQ0FBQyxXQUFXLENBQUMsMkJBQVksQ0FBQzthQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLE1BQU0sQ0FBQyxJQUFBLDhCQUFjLEVBQUMsMENBQTRCLENBQUMsRUFBRSxJQUFBLHlCQUFZLEVBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUEseUJBQVMsRUFBQyxZQUFZLENBQUMsQ0FBQzthQUM3RyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0o7QUFocUJELG9DQWdxQkM7QUFDRCxjQUFPLENBQUMsVUFBVSxDQUFDLDJCQUFZLENBQUMsQ0FBQztBQUNqQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUIsc2x2RUFBc2x2RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7IEFkYXB0ZXIsIENvbm5lY3Rpb25FcnJvciwgUGVyc2lzdGVuY2VLZXlzLCBTZXF1ZW5jZSwgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUNsaWVudCB9IGZyb20gXCJyZWRpc1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQmFzZUVycm9yLCBDb25mbGljdEVycm9yLCBEQktleXMsIGdlbmVyYXRlZCwgSW50ZXJuYWxFcnJvciwgTm90Rm91bmRFcnJvciwgb25DcmVhdGUsIG9uQ3JlYXRlVXBkYXRlLCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uLCBNZXRhZGF0YSwgcHJvcE1ldGFkYXRhLCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgUmVkaXNEZWZhdWx0UHJlZml4LCBSZWRpc0ZsYXZvdXIgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFJlZGlzU3RhdGVtZW50IH0gZnJvbSBcIi4vUmVkaXNTdGF0ZW1lbnQuanNcIjtcbmltcG9ydCB7IFJlZGlzUGFnaW5hdG9yIH0gZnJvbSBcIi4vUmVkaXNQYWdpbmF0b3IuanNcIjtcbmltcG9ydCB7IFJlZGlzRGlzcGF0Y2ggfSBmcm9tIFwiLi9SZWRpc0Rpc3BhdGNoLmpzXCI7XG5pbXBvcnQgeyBSZWRpc0NvbnRleHRMb2NrIH0gZnJvbSBcIi4vUmVkaXNDb250ZXh0TG9jay5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlZEJ5T25SZWRpc0NyZWF0ZVVwZGF0ZSB9IGZyb20gXCIuL2hhbmRsZXJzLmpzXCI7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZSwgc2VyaWFsaXplIH0gZnJvbSBcIi4vc2VyaWFsaXphdGlvbi5qc1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVkaXMgYWRhcHRlciBmb3IgZGF0YSBwZXJzaXN0ZW5jZVxuICogQHN1bW1hcnkgVGhlIFJlZGlzQWRhcHRlciBpbXBsZW1lbnRzIHRoZSBwZXJzaXN0ZW5jZSBsYXllciBvbiB0b3Agb2YgUmVkaXNcbiAqIChvciBhbnkgUmVkaXMtY29tcGF0aWJsZSBzZXJ2ZXIgc3VjaCBhcyBEcmFnb25mbHlEQikuIEVhY2ggbW9kZWwgdGFibGUgaXNcbiAqIHN0b3JlZCBhcyBhIHNpbmdsZSBSZWRpcyBoYXNoIHdob3NlIGZpZWxkcyBhcmUgcmVjb3JkIGlkcyBhbmQgd2hvc2UgdmFsdWVzIGFyZVxuICogc2VyaWFsaXplZCByZWNvcmRzLiBUaGUgYWRhcHRlciBpcyBtb2RlbGxlZCBvbiB0aGUgY29yZSBSQU0gYWRhcHRlcjogcmF3IHF1ZXJpZXNcbiAqIGxvYWQgdGhlIG1hdGNoaW5nIHRhYmxlLCByZXZlcnQgZXZlcnkgcmVjb3JkIHRvIGEgbW9kZWwgYW5kIHRoZW4gYXBwbHkgdGhlIHNhbWVcbiAqIGZpbHRlcmluZywgc29ydGluZywgYWdncmVnYXRpb24gYW5kIHBhZ2luYXRpb24gbG9naWMgaW4gSmF2YVNjcmlwdC5cbiAqIGBAdHJhbnNhY3Rpb25hbCgpYCBpcyBiYWNrZWQgYnkge0BsaW5rIFJlZGlzQ29udGV4dExvY2t9LCB3aGljaCBidWZmZXJzIHdyaXRlc1xuICogb24gYSBkZWRpY2F0ZWQgY29ubmVjdGlvbiBhbmQgZmx1c2hlcyB0aGVtIGF0b21pY2FsbHkgd2l0aCBgTVVMVElgL2BFWEVDYC5cbiAqIEBjbGFzcyBSZWRpc0FkYXB0ZXJcbiAqIEBjYXRlZ29yeSBSZWRpc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgUmVkaXNBZGFwdGVyKHsgdXJsOiBcInJlZGlzOi8vbG9jYWxob3N0OjYzNzlcIiB9KTtcbiAqIGF3YWl0IGFkYXB0ZXIuaW5pdGlhbGl6ZSgpO1xuICogY29uc3QgcmVwbyA9IG5ldyAoYWRhcHRlci5yZXBvc2l0b3J5PFVzZXI+KCkpKFVzZXIsIGFkYXB0ZXIpO1xuICogYXdhaXQgcmVwby5jcmVhdGUobmV3IFVzZXIoeyBuYW1lOiBcIkpvaG5cIiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZGlzQWRhcHRlciBleHRlbmRzIEFkYXB0ZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbmYgPSB7fSwgYWxpYXMpIHtcbiAgICAgICAgc3VwZXIoY29uZiwgUmVkaXNGbGF2b3VyLCBhbGlhcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG9wZXJhdGlvbiBmbGFncyB3aXRoIGEgdXNlciBpZGVudGl0eVxuICAgICAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2UgZmxhZ3Mgd2l0aCBhIGBVVUlEYCB1c2VkIGJ5IHRoZSBgY3JlYXRlZEJ5YCBhbmRcbiAgICAgKiBgdXBkYXRlZEJ5YCBoYW5kbGVycy4gRGVmYXVsdHMgdG8gdGhlIGNvbmZpZ3VyZWQgYHVzZXJgIG9yIHRoZSBjdXJyZW50IHRpbWUuXG4gICAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBmb3IgdGhlIG9wZXJhdGlvblxuICAgICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c30gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWRcbiAgICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBtb2RlbCAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7UGFydGlhbDxSZWRpc0ZsYWdzPn0gZmxhZ3MgLSBQYXJ0aWFsIGZsYWdzIHRvIGV4dGVuZFxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVkaXNGbGFncz59IFRoZSBjb21wbGV0ZSBmbGFncyB3aXRoIGEgVVVJRFxuICAgICAqL1xuICAgIGFzeW5jIGZsYWdzKG9wZXJhdGlvbiwgbW9kZWwsIGZsYWdzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGF3YWl0IHN1cGVyLmZsYWdzKG9wZXJhdGlvbiwgbW9kZWwsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgVVVJRDogZmxhZ3MuVVVJRCB8fCB0aGlzLmNvbmZpZy51c2VyIHx8IFwiXCIgKyBEYXRlLm5vdygpLFxuICAgICAgICB9LCBmbGFncykpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgdGhlIFJlZGlzIGV2ZW50IGRpc3BhdGNoZXJcbiAgICAgKiBAcmV0dXJuIHtSZWRpc0Rpc3BhdGNofSBBIFJlZGlzLWF3YXJlIGRpc3BhdGNoIGluc3RhbmNlXG4gICAgICovXG4gICAgRGlzcGF0Y2goKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVkaXNEaXNwYXRjaCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgdGhlIFJlZGlzIHRyYW5zYWN0aW9uIGxvY2sgaW1wbGVtZW50YXRpb25cbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgZnJlc2gge0BsaW5rIFJlZGlzQ29udGV4dExvY2t9IHBlciB0b3AtbGV2ZWwgdHJhbnNhY3Rpb25cbiAgICAgKiBzbyBgQHRyYW5zYWN0aW9uYWwoKWAgY2FuIGJ1ZmZlciB3cml0ZXMgb24gYSBkZWRpY2F0ZWQgY29ubmVjdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gT3B0aW9uYWwgYXJndW1lbnRzIGZvcndhcmRlZCB0byB0aGUgbG9ja1xuICAgICAqIEByZXR1cm4ge1JlZGlzQ29udGV4dExvY2t9IEEgZnJlc2ggUmVkaXMgdHJhbnNhY3Rpb24gbG9ja1xuICAgICAqL1xuICAgIHRyYW5zYWN0aW9uTG9jayguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVkaXNDb250ZXh0TG9jayh0aGlzLCAuLi5hcmdzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBhZGFwdGVyIGFuZCBvcGVucyB0aGUgUmVkaXMgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7Li4uTWF5YmVDb250ZXh0dWFsQXJnfSBhcmdzIC0gSW5pdGlhbGl6YXRpb24gYXJndW1lbnRzXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZVxuICAgICAqL1xuICAgIGFzeW5jIGluaXRpYWxpemUoLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFBlcnNpc3RlbmNlS2V5cy5JTklUSUFMSVpBVElPTiwgdHJ1ZSkpLmZvcih0aGlzLmluaXRpYWxpemUpO1xuICAgICAgICBjb25zdCBjbGllbnQgPSB0aGlzLmNsaWVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghY2xpZW50LmlzT3BlbilcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQuY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVkaXNDbGllbnQgPSBjbGllbnQ7XG4gICAgICAgIGF3YWl0IHN1cGVyLmluaXRpYWxpemUoLi4uYXJncyk7XG4gICAgICAgIGxvZy52ZXJib3NlKGAke3RoaXMudG9TdHJpbmcoKX0gaW5pdGlhbGl6ZWRgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNodXRzIGRvd24gdGhlIGFkYXB0ZXIgYW5kIGNsb3NlcyB0aGUgUmVkaXMgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7Li4uTWF5YmVDb250ZXh0dWFsQXJnfSBhcmdzIC0gU2h1dGRvd24gYXJndW1lbnRzXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSBzaHV0ZG93biBpcyBjb21wbGV0ZVxuICAgICAqL1xuICAgIGFzeW5jIHNodXRkb3duKC4uLmFyZ3MpIHtcbiAgICAgICAgYXdhaXQgc3VwZXIuc2h1dGRvd24oLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuX3JlZGlzQ2xpZW50ID8/IHRoaXMuX2NsaWVudDtcbiAgICAgICAgdGhpcy5fcmVkaXNDbGllbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2NsaWVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFjbGllbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBjbGllbnQucXVpdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2xpZW50LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGNsb3NlZDsgbm90aGluZyBsZWZ0IHRvIHJlbGVhc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQnVpbGRzIHRoZSBuYW1lc3BhY2VkIFJlZGlzIGtleSBmb3IgYSB0YWJsZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZSAtIFRoZSB0YWJsZSAobW9kZWwpIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lc3BhY2VkIFJlZGlzIGhhc2gga2V5XG4gICAgICovXG4gICAgcmVjb3JkS2V5KHRhYmxlKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5wcmVmaXggPz8gUmVkaXNEZWZhdWx0UHJlZml4fToke3RhYmxlfWA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNvbHZlcyB0aGUgYWN0aXZlIHRyYW5zYWN0aW9uIGxvY2sgZnJvbSBhIGNvbnRleHQsIHdoZW4gcHJlc2VudFxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIHtAbGluayBSZWRpc0NvbnRleHRMb2NrfSBvbmx5IHdoaWxlIGEgdHJhbnNhY3Rpb24gaXNcbiAgICAgKiBhY3R1YWxseSBvcGVuLCBzbyBDUlVEIG9wZXJhdGlvbnMgYnVmZmVyIHRoZWlyIHdyaXRlcyBkdXJpbmcgYSB0cmFuc2FjdGlvbiBhbmRcbiAgICAgKiBnbyBzdHJhaWdodCB0byBSZWRpcyBvdGhlcndpc2UuXG4gICAgICogQHBhcmFtIHtSZWRpc0NvbnRleHR9IFtjdHhdIC0gVGhlIG9wZXJhdGlvbiBjb250ZXh0XG4gICAgICogQHJldHVybiB7UmVkaXNDb250ZXh0TG9jayB8IHVuZGVmaW5lZH0gVGhlIGFjdGl2ZSBsb2NrLCB3aGVuIG9uZSBleGlzdHNcbiAgICAgKi9cbiAgICBhY3RpdmVMb2NrKGN0eCkge1xuICAgICAgICBjb25zdCBsb2NrID0gY3R4Py5nZXRPclVuZGVmaW5lZChcInRyYW5zYWN0aW9uTG9ja1wiKTtcbiAgICAgICAgcmV0dXJuIGxvY2sgaW5zdGFuY2VvZiBSZWRpc0NvbnRleHRMb2NrICYmIGxvY2suYWN0aXZlID8gbG9jayA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIGEgbW9kZWwgZm9yIHN0b3JhZ2VcbiAgICAgKiBAc3VtbWFyeSBEZWxlZ2F0ZXMgdG8gdGhlIGJhc2UgaW1wbGVtZW50YXRpb24sIHdoaWNoIGV4dHJhY3RzIHRoZSBwcmltYXJ5XG4gICAgICoga2V5IGZyb20gdGhlIHJlY29yZCBiZWZvcmUgaXQgaXMgaGFuZGVkIHRvIHtAbGluayBjcmVhdGV9LlxuICAgICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgYmVpbmcgcHJlcGFyZWRcbiAgICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHByZXBhcmVcbiAgICAgKiBAcmV0dXJuIE9iamVjdCBjb250YWluaW5nIHRoZSByZWNvcmQsIGlkIGFuZCB0cmFuc2llbnQgZGF0YVxuICAgICAqL1xuICAgIHByZXBhcmUobW9kZWwsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgY3R4ID0gYXJncy5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnByZXBhcmUobW9kZWwsIC4uLmFyZ3MsIGN0eCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0b3JlZCByZWNvcmQgYmFjayB0byBhIG1vZGVsIGluc3RhbmNlXG4gICAgICogQHN1bW1hcnkgRGVsZWdhdGVzIHRvIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uLCByZWF0dGFjaGluZyB0aGUgcHJpbWFyeSBrZXlcbiAgICAgKiBleHRyYWN0ZWQgZnJvbSB0aGUgcmVjb3JkJ3MgUmVkaXMgaGFzaCBmaWVsZC5cbiAgICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRvIHJldmVydCB0b1xuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqIC0gVGhlIHN0b3JlZCByZWNvcmRcbiAgICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7UHJpbWFyeUtleVR5cGV9IGlkIC0gVGhlIHByaW1hcnkga2V5IHZhbHVlXG4gICAgICogQHJldHVybiB7TX0gVGhlIHJlY29uc3RydWN0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKi9cbiAgICByZXZlcnQob2JqLCBjbGF6eiwgaWQsIHRyYW5zaWVudCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gc3VwZXIucmV2ZXJ0KG9iaiwgY2xhenosIGlkLCB0cmFuc2llbnQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyByZWNvcmQgaW4gUmVkaXNcbiAgICAgKiBAc3VtbWFyeSBXcml0ZXMgdGhlIHNlcmlhbGl6ZWQgcmVjb3JkIHRvIHRoZSB0YWJsZSBoYXNoLiBJbnNpZGUgYVxuICAgICAqIHRyYW5zYWN0aW9uIHRoZSB3cml0ZSBpcyBidWZmZXJlZCAocmVhZC15b3VyLXdyaXRlcykgaW5zdGVhZCBvZiBoaXR0aW5nXG4gICAgICogUmVkaXM7IG90aGVyd2lzZSBgSFNFVE5YYCBndWFyYW50ZWVzIHRoZSByZWNvcmQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC5cbiAgICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge1ByaW1hcnlLZXlUeXBlfSBpZCAtIFRoZSB1bmlxdWUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIHJlY29yZCB0byBzdG9yZVxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFRoZSBzdG9yZWQgcmVjb3JkXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlKGNsYXp6LCBpZCwgbW9kZWwsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGUpO1xuICAgICAgICBjb25zdCB0YWJsZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgICAgIGxvZy5kZWJ1ZyhgY3JlYXRpbmcgcmVjb3JkIGluIHRhYmxlICR7dGFibGV9IHdpdGggaWQgJHtpZH1gKTtcbiAgICAgICAgY29uc3QgZmllbGQgPSBTdHJpbmcoaWQpO1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnJlY29yZEtleSh0YWJsZSk7XG4gICAgICAgIGNvbnN0IGxvY2sgPSB0aGlzLmFjdGl2ZUxvY2soY3R4KTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZShtb2RlbCk7XG4gICAgICAgIGlmIChsb2NrKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXJlZCA9IGxvY2suZ2V0UmVjb3JkKHRhYmxlLCBmaWVsZCk7XG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBidWZmZXJlZC5mb3VuZCAmJiBidWZmZXJlZC52YWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogYXdhaXQgdGhpcy5jbGllbnQuaEV4aXN0cyhrZXksIGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChleGlzdHMpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0RXJyb3IoYFJlY29yZCB3aXRoIGlkICR7aWR9IGFscmVhZHkgZXhpc3RzIGluIHRhYmxlICR7dGFibGV9YCk7XG4gICAgICAgICAgICBsb2NrLnNldFJlY29yZCh0YWJsZSwgZmllbGQsIHNlcmlhbGl6ZWQpO1xuICAgICAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB0aGlzLmNsaWVudC5oU2V0Tlgoa2V5LCBmaWVsZCwgc2VyaWFsaXplZCk7XG4gICAgICAgIGlmIChjcmVhdGVkID09PSAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0RXJyb3IoYFJlY29yZCB3aXRoIGlkICR7aWR9IGFscmVhZHkgZXhpc3RzIGluIHRhYmxlICR7dGFibGV9YCk7XG4gICAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlYWRzIGEgcmVjb3JkIGZyb20gUmVkaXNcbiAgICAgKiBAc3VtbWFyeSBSZWFkcyB0aGUgcmVjb3JkIGZyb20gdGhlIHRhYmxlIGhhc2guIEluc2lkZSBhIHRyYW5zYWN0aW9uIHRoZVxuICAgICAqIGJ1ZmZlcmVkIHZhbHVlIHdpbnMgKHJlYWQteW91ci13cml0ZXMpOyBhIGJ1ZmZlcmVkIGRlbGV0ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgKiBtaXNzaW5nIHJlY29yZC5cbiAgICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge1ByaW1hcnlLZXlUeXBlfSBpZCAtIFRoZSB1bmlxdWUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBUaGUgc3RvcmVkIHJlY29yZFxuICAgICAqL1xuICAgIGFzeW5jIHJlYWQoY2xhenosIGlkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZCk7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICAgICAgbG9nLmRlYnVnKGByZWFkaW5nIHJlY29yZCBpbiB0YWJsZSAke3RhYmxlfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGlkKTtcbiAgICAgICAgY29uc3QgbG9jayA9IHRoaXMuYWN0aXZlTG9jayhjdHgpO1xuICAgICAgICBpZiAobG9jaykge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyZWQgPSBsb2NrLmdldFJlY29yZCh0YWJsZSwgZmllbGQpO1xuICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkLmZvdW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkLnZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGV9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplKGJ1ZmZlcmVkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYXcgPSBhd2FpdCB0aGlzLmNsaWVudC5oR2V0KHRoaXMucmVjb3JkS2V5KHRhYmxlKSwgZmllbGQpO1xuICAgICAgICBpZiAocmF3ID09PSBudWxsIHx8IHJhdyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFJlY29yZCB3aXRoIGlkICR7aWR9IG5vdCBmb3VuZCBpbiB0YWJsZSAke3RhYmxlfWApO1xuICAgICAgICByZXR1cm4gZGVzZXJpYWxpemUocmF3KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYW4gZXhpc3RpbmcgcmVjb3JkIGluIFJlZGlzXG4gICAgICogQHN1bW1hcnkgSW5zaWRlIGEgdHJhbnNhY3Rpb24gdGhlIHdyaXRlIGlzIGJ1ZmZlcmVkOyBvdGhlcndpc2UgdGhlIHJlY29yZFxuICAgICAqIGlzIG92ZXJ3cml0dGVuIGluIHBsYWNlLiBBIG1pc3NpbmcgcmVjb3JkIHJhaXNlcyBhIGBOb3RGb3VuZEVycm9yYC5cbiAgICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge1ByaW1hcnlLZXlUeXBlfSBpZCAtIFRoZSB1bmlxdWUgcmVjb3JkIGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIG5ldyByZWNvcmQgZGF0YVxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFRoZSB1cGRhdGVkIHJlY29yZFxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZShjbGF6eiwgaWQsIG1vZGVsLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMudXBkYXRlKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgICAgICBsb2cuZGVidWcoYHVwZGF0aW5nIHJlY29yZCBpbiB0YWJsZSAke3RhYmxlfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGlkKTtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5yZWNvcmRLZXkodGFibGUpO1xuICAgICAgICBjb25zdCBsb2NrID0gdGhpcy5hY3RpdmVMb2NrKGN0eCk7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUobW9kZWwpO1xuICAgICAgICBpZiAobG9jaykge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyZWQgPSBsb2NrLmdldFJlY29yZCh0YWJsZSwgZmllbGQpO1xuICAgICAgICAgICAgY29uc3QgZGVsZXRlZCA9IGJ1ZmZlcmVkLmZvdW5kICYmIGJ1ZmZlcmVkLnZhbHVlID09PSBudWxsO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gZGVsZXRlZCB8fCBidWZmZXJlZC5mb3VuZFxuICAgICAgICAgICAgICAgID8gIWRlbGV0ZWRcbiAgICAgICAgICAgICAgICA6IGF3YWl0IHRoaXMuY2xpZW50LmhFeGlzdHMoa2V5LCBmaWVsZCk7XG4gICAgICAgICAgICBpZiAoIWV4aXN0cylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGV9YCk7XG4gICAgICAgICAgICBsb2NrLnNldFJlY29yZCh0YWJsZSwgZmllbGQsIHNlcmlhbGl6ZWQpO1xuICAgICAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IGF3YWl0IHRoaXMuY2xpZW50LmhFeGlzdHMoa2V5LCBmaWVsZCk7XG4gICAgICAgIGlmICghZXhpc3RzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFJlY29yZCB3aXRoIGlkICR7aWR9IG5vdCBmb3VuZCBpbiB0YWJsZSAke3RhYmxlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmNsaWVudC5oU2V0KGtleSwgZmllbGQsIHNlcmlhbGl6ZWQpO1xuICAgICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgcmVjb3JkIGZyb20gUmVkaXNcbiAgICAgKiBAc3VtbWFyeSBJbnNpZGUgYSB0cmFuc2FjdGlvbiB0aGUgZGVsZXRlIGlzIGJ1ZmZlcmVkOyBvdGhlcndpc2UgdGhlIGZpZWxkXG4gICAgICogaXMgcmVtb3ZlZCBmcm9tIHRoZSB0YWJsZSBoYXNoIGltbWVkaWF0ZWx5LiBBIG1pc3NpbmcgcmVjb3JkIHJhaXNlcyBhXG4gICAgICogYE5vdEZvdW5kRXJyb3JgLlxuICAgICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7UHJpbWFyeUtleVR5cGV9IGlkIC0gVGhlIHVuaXF1ZSByZWNvcmQgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IFRoZSBkZWxldGVkIHJlY29yZFxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZShjbGF6eiwgaWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5kZWxldGUpO1xuICAgICAgICBjb25zdCB0YWJsZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgICAgIGxvZy5kZWJ1ZyhgZGVsZXRpbmcgcmVjb3JkIGZyb20gdGFibGUgJHt0YWJsZX0gd2l0aCBpZCAke2lkfWApO1xuICAgICAgICBjb25zdCBmaWVsZCA9IFN0cmluZyhpZCk7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMucmVjb3JkS2V5KHRhYmxlKTtcbiAgICAgICAgY29uc3QgbG9jayA9IHRoaXMuYWN0aXZlTG9jayhjdHgpO1xuICAgICAgICBpZiAobG9jaykge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyZWQgPSBsb2NrLmdldFJlY29yZCh0YWJsZSwgZmllbGQpO1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gYnVmZmVyZWQuZm91bmRcbiAgICAgICAgICAgICAgICA/IGJ1ZmZlcmVkLnZhbHVlXG4gICAgICAgICAgICAgICAgOiBhd2FpdCB0aGlzLmNsaWVudC5oR2V0KGtleSwgZmllbGQpO1xuICAgICAgICAgICAgaWYgKHJhdyA9PT0gbnVsbCB8fCByYXcgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGV9YCk7XG4gICAgICAgICAgICBsb2NrLmRlbGV0ZVJlY29yZCh0YWJsZSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplKHJhdyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgdGhpcy5jbGllbnQuaEdldChrZXksIGZpZWxkKTtcbiAgICAgICAgaWYgKHJhdyA9PT0gbnVsbCB8fCByYXcgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZX1gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jbGllbnQuaERlbChrZXksIGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplKHJhdyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMb2FkcyBldmVyeSByZWNvcmQgb2YgYSB0YWJsZSwgYXBwbHlpbmcgYnVmZmVyZWQgd3JpdGVzXG4gICAgICogQHN1bW1hcnkgUmVhZHMgdGhlIHRhYmxlIGhhc2ggYW5kIG1lcmdlcyB0aGUgdHJhbnNhY3Rpb24gYnVmZmVyIG9uIHRvcCBzbyBhXG4gICAgICogcXVlcnkgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb2JzZXJ2ZXMgdGhlIHRyYW5zYWN0aW9uJ3Mgb3duIHdyaXRlcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgdGFibGUgKG1vZGVsKSBuYW1lXG4gICAgICogQHBhcmFtIHtSZWRpc0NvbnRleHR9IFtjdHhdIC0gVGhlIG9wZXJhdGlvbiBjb250ZXh0XG4gICAgICogQHJldHVybiB7UHJvbWlzZTxbc3RyaW5nLCBzdHJpbmddW10+fSBUaGUgcmVjb3JkIGlkL3NlcmlhbGl6ZWQgcGFpcnNcbiAgICAgKi9cbiAgICBhc3luYyBsb2FkVGFibGUodGFibGUsIGN0eCkge1xuICAgICAgICBjb25zdCByYXcgPSBhd2FpdCB0aGlzLmNsaWVudC5oR2V0QWxsKHRoaXMucmVjb3JkS2V5KHRhYmxlKSk7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMocmF3KSk7XG4gICAgICAgIGNvbnN0IGxvY2sgPSB0aGlzLmFjdGl2ZUxvY2soY3R4KTtcbiAgICAgICAgaWYgKGxvY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlcmVkID0gbG9jay50YWJsZUVudHJpZXModGFibGUpO1xuICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbaWQsIHZhbHVlXSBvZiBidWZmZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWQuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkLnNldChpZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLm1lcmdlZC5lbnRyaWVzKCldO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSByYXcgcXVlcnkgYWdhaW5zdCBSZWRpc1xuICAgICAqIEBzdW1tYXJ5IExvYWRzIHRoZSBtYXRjaGluZyB0YWJsZSwgcmV2ZXJ0cyBldmVyeSByZWNvcmQgdG8gYSBtb2RlbCBhbmRcbiAgICAgKiBhcHBsaWVzIHRoZSBpbi1tZW1vcnkgZmlsdGVyaW5nLCBzb3J0aW5nLCBhZ2dyZWdhdGlvbiBhbmQgcGFnaW5hdGlvbiBsb2dpYy5cbiAgICAgKiBUaGlzIG1pcnJvcnMgdGhlIGNvcmUgUkFNIGFkYXB0ZXIsIHNpbmNlIFJlZGlzIGhhc2hlcyBhcmUgbm90IHF1ZXJ5YWJsZS5cbiAgICAgKiBAdGVtcGxhdGUgUiAtIFRoZSBxdWVyeSByZXR1cm4gdHlwZVxuICAgICAqIEB0ZW1wbGF0ZSBEIC0gV2hldGhlciBvbmx5IGRvY3VtZW50cyBhcmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0ge1Jhd1JlZGlzUXVlcnk8YW55Pn0gcmF3SW5wdXQgLSBUaGUgcXVlcnkgc3BlY2lmaWNhdGlvblxuICAgICAqIEBwYXJhbSB7RH0gZG9jc09ubHkgLSBXaGV0aGVyIHRvIHJldHVybiBvbmx5IGRvY3VtZW50cyAoZGVmYXVsdCB0cnVlKVxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmF3UmVzdWx0PFIsIEQ+Pn0gVGhlIHF1ZXJ5IHJlc3VsdFxuICAgICAqL1xuICAgIGFzeW5jIHJhdyhyYXdJbnB1dCwgZG9jc09ubHkgPSB0cnVlLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmF3KTtcbiAgICAgICAgbG9nLmRlYnVnKGBwZXJmb3JtaW5nIHJhdyBxdWVyeTogJHtKU09OLnN0cmluZ2lmeShyYXdJbnB1dCl9YCk7XG4gICAgICAgIGNvbnN0IHsgd2hlcmUsIHNvcnQsIGxpbWl0LCBza2lwLCBmcm9tLCBncm91cEJ5LCBjb3VudDogY291bnRGaWVsZCwgY291bnREaXN0aW5jdDogY291bnREaXN0aW5jdEZpZWxkLCBtaW46IG1pbkZpZWxkLCBtYXg6IG1heEZpZWxkLCBzdW06IHN1bUZpZWxkLCBhdmc6IGF2Z0ZpZWxkLCBkaXN0aW5jdDogZGlzdGluY3RGaWVsZCwgfSA9IHJhd0lucHV0O1xuICAgICAgICBsZXQgeyBzZWxlY3QgfSA9IHJhd0lucHV0O1xuICAgICAgICBjb25zdCB0YWJsZSA9IE1vZGVsLnRhYmxlTmFtZShmcm9tKTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IHRoaXMubG9hZFRhYmxlKHRhYmxlLCBjdHgpO1xuICAgICAgICBjb25zdCBjbGF6eiA9IGZyb207XG4gICAgICAgIGNvbnN0IGlkID0gTW9kZWwucGsoZnJvbSk7XG4gICAgICAgIGNvbnN0IHByb3BzID0gTWV0YWRhdGEuZ2V0KGZyb20sIE1ldGFkYXRhLmtleShEQktleXMuSUQsIGlkKSk7XG4gICAgICAgIGxldCByZXN1bHQgPSBlbnRyaWVzLm1hcCgoW3BrLCByXSkgPT4gdGhpcy5yZXZlcnQoZGVzZXJpYWxpemUociksIGZyb20sIFNlcXVlbmNlLnBhcnNlVmFsdWUocHJvcHMudHlwZSwgcGspLCB1bmRlZmluZWQsIGN0eCkpO1xuICAgICAgICBpZiAoc29ydClcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zb3J0KHNvcnQpO1xuICAgICAgICByZXN1bHQgPSB3aGVyZSA/IHJlc3VsdC5maWx0ZXIod2hlcmUpIDogcmVzdWx0O1xuICAgICAgICBpZiAoXCJjb3VudFwiIGluIHJhd0lucHV0KSB7XG4gICAgICAgICAgICBpZiAoIWNvdW50RmllbGQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IHJlc3VsdC5maWx0ZXIoKHIpID0+IHJbY291bnRGaWVsZF0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHJbY291bnRGaWVsZF0gIT09IG51bGwpLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY291bnREaXN0aW5jdEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtW2NvdW50RGlzdGluY3RGaWVsZF07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIHNlZW4uYWRkKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2Vlbi5zaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5GaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShjbGF6eiwgbWluRmllbGQsIFwiTUlOIG9wZXJhdGlvblwiLCAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpIHx8IHR5cGUgPT09IFwiZGF0ZVwiLCBcIm51bWVyaWMgb3IgZGF0ZVwiKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0XG4gICAgICAgICAgICAgICAgLm1hcCgocikgPT4gclttaW5GaWVsZF0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgbWluVmFsdWUgPSB2YWx1ZXNbMF07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgICAgICAgID8gdi5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBOdW1iZXIodilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTnVtYmVyKHYpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbkNvbXBhcmlzb24gPSBtaW5WYWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgICAgICAgICAgPyBtaW5WYWx1ZS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgbWluVmFsdWUgPT09IFwiYmlnaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTnVtYmVyKG1pblZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOdW1iZXIobWluVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXJpc29uIDwgbWluQ29tcGFyaXNvbilcbiAgICAgICAgICAgICAgICAgICAgbWluVmFsdWUgPSB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1pblZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXhGaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShjbGF6eiwgbWF4RmllbGQsIFwiTUFYIG9wZXJhdGlvblwiLCAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpIHx8IHR5cGUgPT09IFwiZGF0ZVwiLCBcIm51bWVyaWMgb3IgZGF0ZVwiKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0XG4gICAgICAgICAgICAgICAgLm1hcCgocikgPT4gclttYXhGaWVsZF0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgbWF4VmFsdWUgPSB2YWx1ZXNbMF07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgICAgICAgID8gdi5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBOdW1iZXIodilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTnVtYmVyKHYpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heENvbXBhcmlzb24gPSBtYXhWYWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgICAgICAgICAgPyBtYXhWYWx1ZS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgbWF4VmFsdWUgPT09IFwiYmlnaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTnVtYmVyKG1heFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOdW1iZXIobWF4VmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXJpc29uID4gbWF4Q29tcGFyaXNvbilcbiAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWUgPSB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdW1GaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShjbGF6eiwgc3VtRmllbGQsIFwiU1VNIG9wZXJhdGlvblwiLCAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpLCBcIm51bWVyaWNcIik7XG4gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIC5tYXAoKHIpID0+IHJbc3VtRmllbGRdKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHYpID0+IHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3Qgc3VtID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB0aGlzLnRvTnVtZXJpY1ZhbHVlKHYsIHN1bUZpZWxkLCBcIlNVTSBvcGVyYXRpb25cIiksIDApO1xuICAgICAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXZnRmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRUeXBlID0gdGhpcy5yZXNvbHZlRmllbGRUeXBlKGNsYXp6LCBhdmdGaWVsZCk7XG4gICAgICAgICAgICBjb25zdCBpc0RhdGVGaWVsZCA9IGZpZWxkVHlwZSA9PT0gXCJkYXRlXCI7XG4gICAgICAgICAgICB0aGlzLmVuc3VyZUZpZWxkVHlwZShjbGF6eiwgYXZnRmllbGQsIFwiQVZHIG9wZXJhdGlvblwiLCAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpIHx8IHR5cGUgPT09IFwiZGF0ZVwiLCBcIm51bWVyaWMgb3IgZGF0ZVwiKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcmVzdWx0XG4gICAgICAgICAgICAgICAgLm1hcCgocikgPT4gclthdmdGaWVsZF0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpO1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAoaXNEYXRlRmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXBzID0gdmFsdWVzLm1hcCgodikgPT4gdiBpbnN0YW5jZW9mIERhdGUgPyB2LmdldFRpbWUoKSA6IG5ldyBEYXRlKHYpLmdldFRpbWUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXZnVGltZXN0YW1wID0gdGltZXN0YW1wcy5yZWR1Y2UoKGFjYywgdCkgPT4gYWNjICsgdCwgMCkgLyB0aW1lc3RhbXBzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYXZnVGltZXN0YW1wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB0aGlzLnRvTnVtZXJpY1ZhbHVlKHYsIGF2Z0ZpZWxkLCBcIkFWRyBvcGVyYXRpb25cIiksIDApO1xuICAgICAgICAgICAgcmV0dXJuICh0b3RhbCAvIHZhbHVlcy5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0aW5jdEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBjb25zdCBkaXN0aW5jdFJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bZGlzdGluY3RGaWVsZF07XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICghc2Vlbi5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFJlc3VsdHMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRpc3RpbmN0UmVzdWx0cztcbiAgICAgICAgfVxuICAgICAgICBsZXQgY291bnQ7XG4gICAgICAgIGxldCBvdXRwdXQ7XG4gICAgICAgIGlmIChncm91cEJ5ICYmIGdyb3VwQnkubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5ncm91cFJlY29yZHMocmVzdWx0LCBncm91cEJ5KTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhncm91cGVkKTtcbiAgICAgICAgICAgIGNvdW50ID0ga2V5cy5sZW5ndGg7XG4gICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmFwcGx5R3JvdXBQYWdpbmF0aW9uKGdyb3VwZWQsIHNraXAsIGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0Lmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBwYWdlZCA9IHJlc3VsdDtcbiAgICAgICAgICAgIGlmIChza2lwKVxuICAgICAgICAgICAgICAgIHBhZ2VkID0gcGFnZWQuc2xpY2Uoc2tpcCk7XG4gICAgICAgICAgICBpZiAobGltaXQpXG4gICAgICAgICAgICAgICAgcGFnZWQgPSBwYWdlZC5zbGljZSgwLCBsaW1pdCk7XG4gICAgICAgICAgICBvdXRwdXQgPSBwYWdlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ICYmICEoZ3JvdXBCeSAmJiBncm91cEJ5Lmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHNlbGVjdCA9IEFycmF5LmlzQXJyYXkoc2VsZWN0KSA/IHNlbGVjdCA6IFtzZWxlY3RdO1xuICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0Lm1hcCgocm93KSA9PiBPYmplY3QuZW50cmllcyhyb3cpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdC5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9jc09ubHkpXG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICByZXR1cm4geyBkYXRhOiBvdXRwdXQsIGNvdW50IH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHcm91cHMgcmVjb3JkcyBieSBvbmUgb3IgbW9yZSBhdHRyaWJ1dGVzXG4gICAgICogQHN1bW1hcnkgUmVjdXJzaXZlbHkgbmVzdHMgZ3JvdXBzIHdoZW4gbXVsdGlwbGUgc2VsZWN0b3JzIGFyZSBwcm92aWRlZDsgdGhlXG4gICAgICogdG9wLWxldmVsIHJlc3VsdCBtYXBzIGVhY2ggZ3JvdXAga2V5IHRvIHRoZSBtYXRjaGluZyByZWNvcmRzIChvciBuZXN0ZWQgZ3JvdXBzKS5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSByZWNvcmRzIC0gVGhlIHJlY29yZHMgdG8gZ3JvdXBcbiAgICAgKiBAcGFyYW0geyhrZXlvZiBNb2RlbClbXX0gc2VsZWN0b3JzIC0gVGhlIGF0dHJpYnV0ZXMgdG8gZ3JvdXAgYnlcbiAgICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBUaGUgZ3JvdXBlZCByZWNvcmRzIGtleWVkIGJ5IG5vcm1hbGl6ZWQgZ3JvdXAga2V5c1xuICAgICAqL1xuICAgIGdyb3VwUmVjb3JkcyhyZWNvcmRzLCBzZWxlY3RvcnMpIHtcbiAgICAgICAgaWYgKCFzZWxlY3RvcnMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgICAgIGNvbnN0IFtjdXJyZW50LCAuLi5yZXN0XSA9IHNlbGVjdG9ycztcbiAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLm5vcm1hbGl6ZUdyb3VwS2V5KHJlY29yZFtjdXJyZW50XSk7XG4gICAgICAgICAgICBpZiAoIWdyb3VwZWRba2V5XSlcbiAgICAgICAgICAgICAgICBncm91cGVkW2tleV0gPSBbXTtcbiAgICAgICAgICAgIGdyb3VwZWRba2V5XS5wdXNoKHJlY29yZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBncm91cGVkO1xuICAgICAgICBjb25zdCBuZXN0ZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZXNdIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwZWQpKSB7XG4gICAgICAgICAgICBuZXN0ZWRba2V5XSA9IHRoaXMuZ3JvdXBSZWNvcmRzKHZhbHVlcywgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5lc3RlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5vcm1hbGl6ZXMgYSBncm91cCBrZXkgdG8gYSBzdHJpbmdcbiAgICAgKiBAc3VtbWFyeSBQcm9kdWNlcyBhIHN0YWJsZSBzdHJpbmcga2V5IGZvciBgdW5kZWZpbmVkYCwgYG51bGxgLCBzeW1ib2xzLFxuICAgICAqIG9iamVjdHMgKHZpYSBKU09OKSBhbmQgcHJpbWl0aXZlcy5cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBUaGUgcmF3IGdyb3VwIGtleSB2YWx1ZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5vcm1hbGl6ZWQga2V5XG4gICAgICovXG4gICAgbm9ybWFsaXplR3JvdXBLZXkodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIjtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN5bWJvbFwiKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFwcGxpZXMgc2tpcC9saW1pdCBwYWdpbmF0aW9uIG92ZXIgZ3JvdXBlZCByZXN1bHRzXG4gICAgICogQHN1bW1hcnkgUGFnZXMgdGhlIGdyb3VwIGtleXMgd2hpbGUgcHJlc2VydmluZyB0aGVpciBhc3NvY2lhdGVkIHJlY29yZHMuXG4gICAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBncm91cGVkIC0gVGhlIGdyb3VwZWQgcmVjb3Jkc1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2tpcF0gLSBUaGUgbnVtYmVyIG9mIGdyb3VwcyB0byBza2lwXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW1pdF0gLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgZ3JvdXBzIHRvIHJldHVyblxuICAgICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIGFueT59IFRoZSBwYWdlZCBncm91cHNcbiAgICAgKi9cbiAgICBhcHBseUdyb3VwUGFnaW5hdGlvbihncm91cGVkLCBza2lwLCBsaW1pdCkge1xuICAgICAgICBpZiAodHlwZW9mIHNraXAgPT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGxpbWl0ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWQ7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhncm91cGVkKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBza2lwID8/IDA7XG4gICAgICAgIGNvbnN0IGVuZCA9IHR5cGVvZiBsaW1pdCA9PT0gXCJ1bmRlZmluZWRcIiA/IHVuZGVmaW5lZCA6IHN0YXJ0ICsgbGltaXQ7XG4gICAgICAgIGNvbnN0IHBhZ2VkID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMuc2xpY2Uoc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgICAgIHBhZ2VkW2tleV0gPSBncm91cGVkW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhZ2VkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGFuZCBjb252ZXJ0cyBlcnJvcnMgdG8gYXBwcm9wcmlhdGUgdHlwZXNcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGBCYXNlRXJyb3JgIGluc3RhbmNlcyB1bmNoYW5nZWQsIG1hcHMgY29ubmVjdGlvblxuICAgICAqIGZhaWx1cmVzIHRvIGBDb25uZWN0aW9uRXJyb3JgIGFuZCB3cmFwcyBldmVyeXRoaW5nIGVsc2UgaW4gYW5cbiAgICAgKiBgSW50ZXJuYWxFcnJvcmAuXG4gICAgICogQHRlbXBsYXRlIFYgLSBUaGUgZXhwZWN0ZWQgZXJyb3IgdHlwZVxuICAgICAqIEBwYXJhbSB7RXJyb3J9IGVyciAtIFRoZSBlcnJvciB0byBwYXJzZVxuICAgICAqIEByZXR1cm4ge1Z9IFRoZSBwYXJzZWQgZXJyb3JcbiAgICAgKi9cbiAgICBwYXJzZUVycm9yKGVycikge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgQmFzZUVycm9yKVxuICAgICAgICAgICAgcmV0dXJuIGVycjtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycj8ubWVzc2FnZSA/PyBTdHJpbmcoZXJyKTtcbiAgICAgICAgaWYgKC9FQ09OTlJFRlVTRUR8RU5PVEZPVU5EfEVUSU1FRE9VVHxDb25uZWN0aW9uIGlzIGNsb3NlZHxTb2NrZXQgY2xvc2VkfFdST05HUEFTU3xOT0FVVEgvaS50ZXN0KG1lc3NhZ2UpKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb25uZWN0aW9uRXJyb3IoZXJyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKGVycik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHN0YXRlbWVudCBidWlsZGVyIGZvciBxdWVyaWVzXG4gICAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBmb3IgdGhlIHN0YXRlbWVudFxuICAgICAqIEBwYXJhbSB7UGFydGlhbDxBZGFwdGVyRmxhZ3M+fSBbb3ZlcnJpZGVzXSAtIE9wdGlvbmFsIGFkYXB0ZXIgZmxhZyBvdmVycmlkZXNcbiAgICAgKiBAcmV0dXJuIHtSZWRpc1N0YXRlbWVudDxNLCBhbnksIEFkYXB0ZXI8Li4uPj59IEEgbmV3IHN0YXRlbWVudCBidWlsZGVyXG4gICAgICovXG4gICAgU3RhdGVtZW50KG92ZXJyaWRlcykge1xuICAgICAgICByZXR1cm4gbmV3IFJlZGlzU3RhdGVtZW50KHRoaXMsIG92ZXJyaWRlcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHBhZ2luYXRvciBmb3IgcXVlcmllc1xuICAgICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZm9yIHRoZSBwYWdpbmF0b3JcbiAgICAgKiBAcGFyYW0ge1Jhd1JlZGlzUXVlcnl9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIHBhZ2luYXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUgLSBUaGUgcGFnZSBzaXplXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgbW9kZWwgY29uc3RydWN0b3JcbiAgICAgKiBAcmV0dXJuIHtSZWRpc1BhZ2luYXRvcjxNPn0gQSBuZXcgcGFnaW5hdG9yXG4gICAgICovXG4gICAgUGFnaW5hdG9yKHF1ZXJ5LCBzaXplLCBjbGF6eikge1xuICAgICAgICByZXR1cm4gbmV3IFJlZGlzUGFnaW5hdG9yKHRoaXMsIHF1ZXJ5LCBzaXplLCBjbGF6eik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhhdCBhbiBhZ2dyZWdhdGlvbiB0YXJnZXRzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgZXhwZWN0ZWQga2luZFxuICAgICAqIEBzdW1tYXJ5IFJlc29sdmVzIHRoZSBhdHRyaWJ1dGUgdHlwZSBmcm9tIHRoZSBtb2RlbCBtZXRhZGF0YSBhbmQgcmFpc2VzIGFcbiAgICAgKiBgUXVlcnlFcnJvcmAgd2hlbiB0aGUgdHlwZSBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBnaXZlbiBwcmVkaWNhdGUuXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIHRvIHZhbGlkYXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRleHQgLSBUaGUgYWdncmVnYXRpb24gY29udGV4dCB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpOiBib29sZWFufSBwcmVkaWNhdGUgLSBUeXBlIGFjY2VwdGFuY2UgcHJlZGljYXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIC0gSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGFjY2VwdGVkIHR5cGVzXG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBlbnN1cmVGaWVsZFR5cGUoY2xhenosIGZpZWxkLCBjb250ZXh0LCBwcmVkaWNhdGUsIGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnJlc29sdmVGaWVsZFR5cGUoY2xhenosIGZpZWxkKTtcbiAgICAgICAgaWYgKCF0eXBlIHx8ICFwcmVkaWNhdGUodHlwZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGAke2NvbnRleHR9IHJlcXVpcmVzICR7ZGVzY3JpcHRpb259IGF0dHJpYnV0ZSwgYnV0IFwiJHtmaWVsZH1cIiBpcyAke3R5cGUgfHwgXCJ1bmtub3duXCJ9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc29sdmVzIHRoZSBhdHRyaWJ1dGUgdHlwZSBmcm9tIHRoZSBtb2RlbCBtZXRhZGF0YVxuICAgICAqIEBzdW1tYXJ5IFJlYWRzIHRoZSBtZXRhZGF0YSBvciBkZXNpZ24gdHlwZSBvZiB0aGUgYXR0cmlidXRlIGFuZCBub3JtYWxpemVzIGl0XG4gICAgICogdG8gYSBsb3dlcmNhc2UgdHlwZSBuYW1lLlxuICAgICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TW9kZWw+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCAtIFRoZSBhdHRyaWJ1dGUgbmFtZVxuICAgICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5vcm1hbGl6ZWQgYXR0cmlidXRlIHR5cGUsIHdoZW4gcmVzb2x2YWJsZVxuICAgICAqL1xuICAgIHJlc29sdmVGaWVsZFR5cGUoY2xhenosIGZpZWxkKSB7XG4gICAgICAgIGNvbnN0IHByb3BLZXkgPSBmaWVsZDtcbiAgICAgICAgY29uc3QgbWV0YVR5cGUgPSBNZXRhZGF0YS50eXBlKGNsYXp6LCBwcm9wS2V5KSA/P1xuICAgICAgICAgICAgTWV0YWRhdGEuZ2V0UHJvcERlc2lnblR5cGVzKGNsYXp6LCBwcm9wS2V5KT8uZGVzaWduVHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplTWV0YVR5cGUobWV0YVR5cGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTm9ybWFsaXplcyBhIHJhdyBtZXRhZGF0YSB0eXBlIHRvIGEgbG93ZXJjYXNlIHR5cGUgbmFtZVxuICAgICAqIEBwYXJhbSB7YW55fSBtZXRhVHlwZSAtIFRoZSByYXcgbWV0YWRhdGEgdHlwZSB2YWx1ZVxuICAgICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5vcm1hbGl6ZWQgdHlwZSBuYW1lLCB3aGVuIHJlc29sdmFibGVcbiAgICAgKi9cbiAgICBub3JtYWxpemVNZXRhVHlwZShtZXRhVHlwZSkge1xuICAgICAgICBpZiAoIW1ldGFUeXBlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRhVHlwZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgIHJldHVybiBtZXRhVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGFUeXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbWV0YVR5cGUubmFtZSlcbiAgICAgICAgICAgIHJldHVybiBtZXRhVHlwZS5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBnaXZlbiB0eXBlIG5hbWUgaXMgYSBudW1lcmljIHR5cGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3R5cGVdIC0gVGhlIG5vcm1hbGl6ZWQgdHlwZSBuYW1lXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBmb3IgXCJudW1iZXJcIiBhbmQgXCJiaWdpbnRcIlxuICAgICAqL1xuICAgIGlzTnVtZXJpY1R5cGUodHlwZSkge1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlID09PSBcImJpZ2ludFwiO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSB2YWx1ZSB0byBhIG51bWVyaWMgdmFsdWUgZm9yIGFnZ3JlZ2F0aW9uXG4gICAgICogQHN1bW1hcnkgQWNjZXB0cyBudW1iZXJzIGFuZCBiaWdpbnRzIChjb252ZXJ0ZWQgdG8gYE51bWJlcmApIGFuZCByYWlzZXMgYVxuICAgICAqIGBRdWVyeUVycm9yYCBmb3IgYW55IG90aGVyIHZhbHVlIGtpbmQuXG4gICAgICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGQgLSBUaGUgYXR0cmlidXRlIG5hbWUgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWVyaWMgdmFsdWVcbiAgICAgKi9cbiAgICB0b051bWVyaWNWYWx1ZSh2YWx1ZSwgZmllbGQsIGNvbnRleHQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSBvbiBcIiR7ZmllbGR9XCIgcmVxdWlyZXMgbnVtZXJpYyB2YWx1ZXMsIGJ1dCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIHRoZSB1bmRlcmx5aW5nIFJlZGlzIGNsaWVudFxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGFscmVhZHkgY29ubmVjdGVkIGNsaWVudCB3aGVuIG9uZSBleGlzdHMgKGluY2x1ZGluZ1xuICAgICAqIHRocm91Z2ggYSBgZm9yKClgIGNvbmZpZ3VyYXRpb24tc2NvcGVkIHByb3h5LCB3aG9zZSBvd24gYF9jbGllbnRgIHNsb3Qgd291bGRcbiAgICAgKiBvdGhlcndpc2UgYmUgZW1wdHkgYW5kIGJ1aWxkIGEgZnJlc2ggdW5jb25uZWN0ZWQgY2xpZW50KS4gT3RoZXJ3aXNlIGJ1aWxkcyBhXG4gICAgICogbm9kZS1yZWRpcyBjbGllbnQgZnJvbSB0aGUgY29uZmlndXJlZCBVUkwgb3IgZGlzY3JldGUgaG9zdC9wb3J0L2NyZWRlbnRpYWxzLlxuICAgICAqIFdoZW4gYHRsc2AgaXMgc2V0LCBgdGxzOiB0cnVlYCBwbHVzIGFueSBzdXBwbGllZCBgdGxzLmNvbm5lY3RgIG9wdGlvbnMgYXJlXG4gICAgICogbWVyZ2VkIGludG8gdGhlIHNvY2tldCBvcHRpb25zIChhIGByZWRpc3M6Ly9gIFVSTCBpcyBwYXNzZWQgdGhyb3VnaCBhcy1pcykuXG4gICAgICogVGhlIGNsaWVudCBpcyBjcmVhdGVkIGxhemlseSBhbmQgY29ubmVjdGVkIGJ5IHtAbGluayBpbml0aWFsaXplfS5cbiAgICAgKiBAcmV0dXJuIHtSZWRpc0NsaWVudFR5cGV9IFRoZSBSZWRpcyBjbGllbnRcbiAgICAgKi9cbiAgICBnZXRDbGllbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9yZWRpc0NsaWVudClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWRpc0NsaWVudDtcbiAgICAgICAgY29uc3QgeyB1cmwsIGhvc3QsIHBvcnQsIHVzZXJuYW1lLCBwYXNzd29yZCwgZGF0YWJhc2UsIHRscyB9ID0gdGhpcy5jb25maWc7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB1cmxcbiAgICAgICAgICAgID8geyB1cmwgfVxuICAgICAgICAgICAgOiB7IHNvY2tldDogeyBob3N0OiBob3N0ID8/IFwibG9jYWxob3N0XCIsIHBvcnQ6IHBvcnQgPz8gNjM3OSB9IH07XG4gICAgICAgIGlmICh0bHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRsc09wdGlvbnMgPSB0eXBlb2YgdGxzID09PSBcIm9iamVjdFwiID8gdGxzIDoge307XG4gICAgICAgICAgICBvcHRpb25zLnNvY2tldCA9IHsgLi4uKG9wdGlvbnMuc29ja2V0ID8/IHt9KSwgdGxzOiB0cnVlLCAuLi50bHNPcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJuYW1lKVxuICAgICAgICAgICAgb3B0aW9ucy51c2VybmFtZSA9IHVzZXJuYW1lO1xuICAgICAgICBpZiAocGFzc3dvcmQpXG4gICAgICAgICAgICBvcHRpb25zLnBhc3N3b3JkID0gcGFzc3dvcmQ7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YWJhc2UgPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICBvcHRpb25zLmRhdGFiYXNlID0gZGF0YWJhc2U7XG4gICAgICAgIHJldHVybiBjcmVhdGVDbGllbnQob3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgUmVkaXMtc3BlY2lmaWMgZGVjb3JhdGlvbnMgZm9yIG1vZGVsIHByb3BlcnRpZXNcbiAgICAgKiBAc3VtbWFyeSBDb25maWd1cmVzIGBjcmVhdGVkQnlgIGFuZCBgdXBkYXRlZEJ5YCBoYW5kbGVycyBmb3IgdGhlIFJlZGlzXG4gICAgICogZmxhdm91ciBzbyB0aG9zZSBmaWVsZHMgYXJlIHBvcHVsYXRlZCBmcm9tIHRoZSBjb250ZXh0IFVVSUQuXG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBzdGF0aWMgZGVjb3JhdGlvbigpIHtcbiAgICAgICAgc3VwZXIuZGVjb3JhdGlvbigpO1xuICAgICAgICBjb25zdCBjcmVhdGVkQnlLZXkgPSBQZXJzaXN0ZW5jZUtleXMuQ1JFQVRFRF9CWTtcbiAgICAgICAgY29uc3QgdXBkYXRlZEJ5S2V5ID0gUGVyc2lzdGVuY2VLZXlzLlVQREFURURfQlk7XG4gICAgICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoUmVkaXNGbGF2b3VyKVxuICAgICAgICAgICAgLmZvcihjcmVhdGVkQnlLZXkpXG4gICAgICAgICAgICAuZGVmaW5lKG9uQ3JlYXRlKGNyZWF0ZWRCeU9uUmVkaXNDcmVhdGVVcGRhdGUpLCBwcm9wTWV0YWRhdGEoY3JlYXRlZEJ5S2V5LCB7fSksIGdlbmVyYXRlZChjcmVhdGVkQnlLZXkpKVxuICAgICAgICAgICAgLmFwcGx5KCk7XG4gICAgICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoUmVkaXNGbGF2b3VyKVxuICAgICAgICAgICAgLmZvcih1cGRhdGVkQnlLZXkpXG4gICAgICAgICAgICAuZGVmaW5lKG9uQ3JlYXRlVXBkYXRlKGNyZWF0ZWRCeU9uUmVkaXNDcmVhdGVVcGRhdGUpLCBwcm9wTWV0YWRhdGEodXBkYXRlZEJ5S2V5LCB7fSksIGdlbmVyYXRlZCh1cGRhdGVkQnlLZXkpKVxuICAgICAgICAgICAgLmFwcGx5KCk7XG4gICAgfVxufVxuQWRhcHRlci5zZXRDdXJyZW50KFJlZGlzRmxhdm91cik7XG5SZWRpc0FkYXB0ZXIuZGVjb3JhdGlvbigpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWVdSaGNIUmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwzTnlZeTl5WldScGN5OWhaR0Z3ZEdWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU03UVVGRE1VSXNUMEZCVHl4RlFVTk1MRTlCUVU4c1JVRkZVQ3hsUVVGbExFVkJTV1lzWlVGQlpTeEZRVVZtTEZGQlFWRXNSMEZEVkN4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlEzaENMRTlCUVU4c1JVRkJSU3haUVVGWkxFVkJRWGRDTEUxQlFVMHNUMEZCVHl4RFFVRkRPMEZCUXpORUxFOUJRVThzUlVGQlJTeFZRVUZWTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU0xUXl4UFFVRlBMRVZCUTB3c1UwRkJVeXhGUVVOVUxHRkJRV0VzUlVGRFlpeE5RVUZOTEVWQlEwNHNVMEZCVXl4RlFVTlVMR0ZCUVdFc1JVRkRZaXhoUVVGaExFVkJRMklzVVVGQlVTeEZRVU5TTEdOQlFXTXNSMEZIWml4TlFVRk5MSGxDUVVGNVFpeERRVUZETzBGQlEycERMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeG5RMEZCWjBNc1EwRkJRenRCUVVOMlJDeFBRVUZQTEVWQlJVd3NWVUZCVlN4RlFVTldMRkZCUVZFc1JVRkRVaXhaUVVGWkxFZEJRMklzVFVGQlRTeHpRa0ZCYzBJc1EwRkJRenRCUVVVNVFpeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzV1VGQldTeEZRVUZGTEhWQ1FVRnZRanRCUVVNdlJDeFBRVUZQTEVWQlFVVXNZMEZCWXl4RlFVRkZMRFJDUVVGNVFqdEJRVU5zUkN4UFFVRlBMRVZCUVVVc1kwRkJZeXhGUVVGRkxEUkNRVUY1UWp0QlFVTnNSQ3hQUVVGUExFVkJRVVVzWVVGQllTeEZRVUZGTERKQ1FVRjNRanRCUVVOb1JDeFBRVUZQTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzT0VKQlFUSkNPMEZCUTNSRUxFOUJRVThzUlVGQlJTdzBRa0ZCTkVJc1JVRkJSU3h6UWtGQmJVSTdRVUZETVVRc1QwRkJUeXhGUVVGRkxGZEJRVmNzUlVGQlJTeFRRVUZUTEVWQlFVVXNNa0pCUVhkQ08wRkJSWHBFT3pzN096czdPenM3T3pzN096czdPenM3TzBkQmJVSkhPMEZCUTBnc1RVRkJUU3hQUVVGUExGbEJRV0VzVTBGQlVTeFBRVXRxUXp0SlFVZERMRmxCUVZrc1QwRkJiMElzUlVGQlJTeEZRVUZGTEV0QlFXTTdVVUZEYUVRc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeFpRVUZaTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRia01zUTBGQlF6dEpRVVZFT3pzN096czdPenM3VDBGVFJ6dEpRVU5OTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUTJ4Q0xGTkJRWGRDTEVWQlEzaENMRXRCUVhGQ0xFVkJRM0pDTEV0QlFUQkNPMUZCUlRGQ0xFOUJRVThzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZEYkVJc1RVRkJUU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVU5tTEZOQlFWTXNSVUZEVkN4TFFVRkxMRVZCUTB3c1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGRFdEdFpRVU5GTEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTzFOQlEzaEVMRVZCUTBRc1MwRkJTeXhEUVVOT0xFTkJRMFlzUTBGRFdTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSRHM3TzA5QlIwYzdTVUZEWjBJc1VVRkJVVHRSUVVONlFpeFBRVUZQTEVsQlFVa3NZVUZCWVN4RlFVRkZMRU5CUVVNN1NVRkROMElzUTBGQlF6dEpRVVZFT3pzN096czdUMEZOUnp0SlFVTk5MR1ZCUVdVc1EwRkJReXhIUVVGSExFbEJRVmM3VVVGRGNrTXNUMEZCVHl4SlFVRkpMR2RDUVVGblFpeERRVUZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemRETEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwMHNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkRka0lzUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZEWkN4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEdWQlFXVXNRMEZCUXl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRemxFTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU4yUWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6TkNMRWxCUVVrc1EwRkJRenRaUVVOSUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFR0blFrRkJSU3hOUVVGTkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0UlFVTTNReXhEUVVGRE8xRkJRVU1zVDBGQlR5eERRVUZWTEVWQlFVVXNRMEZCUXp0WlFVTndRaXhOUVVGTkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCVlN4RFFVRkRMRU5CUVVNN1VVRkRjRU1zUTBGQlF6dFJRVU5FTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRek5DTEUxQlFVMHNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEyaERMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwMHNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkRja0lzUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNNVFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEYWtRc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eFRRVUZUTEVOQlFVTTdVVUZET1VJc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTTdVVUZEZWtJc1NVRkJTU3hEUVVGRExFMUJRVTA3V1VGQlJTeFBRVUZQTzFGQlEzQkNMRWxCUVVrc1EwRkJRenRaUVVOSUxFMUJRVTBzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMUZCUTNSQ0xFTkJRVU03VVVGQlF5eE5RVUZOTEVOQlFVTTdXVUZEVUN4SlFVRkpMRU5CUVVNN1owSkJRMGdzVFVGQlRTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTI1Q0xFTkJRVU03V1VGQlF5eE5RVUZOTEVOQlFVTTdaMEpCUTFBc05FUkJRVFJFTzFsQlF6bEVMRU5CUVVNN1VVRkRTQ3hEUVVGRE8wbEJRMGdzUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFNDeFRRVUZUTEVOQlFVTXNTMEZCWVR0UlFVTnlRaXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWxCUVVrc2EwSkJRV3RDTEVsQlFVa3NTMEZCU3l4RlFVRkZMRU5CUVVNN1NVRkRhRVVzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRUeXhWUVVGVkxFTkJRVU1zUjBGQmEwSTdVVUZEY2tNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEdOQlFXTXNRMEZCUXl4cFFrRkJhVUlzUTBGRmNrTXNRMEZCUXp0UlFVTmtMRTlCUVU4c1NVRkJTU3haUVVGWkxHZENRVUZuUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRelZGTEVOQlFVTTdTVUZGUkRzN096czdPenRQUVU5SE8wbEJRMDBzVDBGQlR5eERRVU5rTEV0QlFWRXNSVUZEVWl4SFFVRkhMRWxCUVRoQ08xRkJUV3BETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU4yUWl4UFFVRlBMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRelZETEVOQlFVTTdTVUZGUkRzN096czdPenM3TzA5QlUwYzdTVUZEVFN4TlFVRk5MRU5CUTJJc1IwRkJkMElzUlVGRGVFSXNTMEZCY1VJc1JVRkRja0lzUlVGQmEwSXNSVUZEYkVJc1UwRkJLMElzUlVGREwwSXNSMEZCUnl4SlFVRTRRanRSUVVWcVF5eFBRVUZQTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE1VUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPMDlCVlVjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVU5XTEV0QlFYRkNMRVZCUTNKQ0xFVkJRV3RDTEVWQlEyeENMRXRCUVRCQ0xFVkJRekZDTEVkQlFVY3NTVUZCYTBNN1VVRkZja01zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGNFUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETERSQ1FVRTBRaXhMUVVGTExGbEJRVmtzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTNSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRla0lzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU5zUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJ4RExFMUJRVTBzVlVGQlZTeEhRVUZITEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOd1F5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUTFRc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRE9VTXNUVUZCVFN4TlFVRk5MRWRCUTFZc1VVRkJVU3hEUVVGRExFdEJRVXNzU1VGQlNTeFJRVUZSTEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrN1owSkJRM1pETEVOQlFVTXNRMEZCUXl4SlFVRkpPMmRDUVVOT0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTTFReXhKUVVGSkxFMUJRVTA3WjBKQlExSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYTBKQlFXdENMRVZCUVVVc05FSkJRVFJDTEV0QlFVc3NSVUZCUlN4RFFVTjRSQ3hEUVVGRE8xbEJRMG9zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzFsQlEzcERMRTlCUVU4c1MwRkJTeXhEUVVGRE8xRkJRMllzUTBGQlF6dFJRVU5FTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU5xUlN4SlFVRkpMRTlCUVU4c1MwRkJTeXhEUVVGRE8xbEJRMllzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc2EwSkJRV3RDTEVWQlFVVXNORUpCUVRSQ0xFdEJRVXNzUlVGQlJTeERRVU40UkN4RFFVRkRPMUZCUTBvc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRFppeERRVUZETzBsQlJVUTdPenM3T3pzN096dFBRVk5ITzBsQlEwZ3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkRVaXhMUVVGeFFpeEZRVU55UWl4RlFVRnJRaXhGUVVOc1FpeEhRVUZITEVsQlFXdERPMUZCUlhKRExFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMnhFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEY2tNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5d3lRa0ZCTWtJc1MwRkJTeXhaUVVGWkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZETlVRc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNwQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOVUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bERMRWxCUVVrc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzJkQ1FVTnVRaXhKUVVGSkxGRkJRVkVzUTBGQlF5eExRVUZMTEV0QlFVc3NTVUZCU1R0dlFrRkRla0lzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc2EwSkJRV3RDTEVWQlFVVXNkVUpCUVhWQ0xFdEJRVXNzUlVGQlJTeERRVU51UkN4RFFVRkRPMmRDUVVOS0xFOUJRVThzVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOeVF5eERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVTkVMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOcVJTeEpRVUZKTEVkQlFVY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExGTkJRVk03V1VGRGJrTXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYTBKQlFXdENMRVZCUVVVc2RVSkJRWFZDTEV0QlFVc3NSVUZCUlN4RFFVTnVSQ3hEUVVGRE8xRkJRMG9zVDBGQlR5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6dEpRVVZFT3pzN096czdPenM3VDBGVFJ6dEpRVU5JTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUTFZc1MwRkJjVUlzUlVGRGNrSXNSVUZCYTBJc1JVRkRiRUlzUzBGQk1FSXNSVUZETVVJc1IwRkJSeXhKUVVGclF6dFJRVVZ5UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTndSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRM0pETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc05FSkJRVFJDTEV0QlFVc3NXVUZCV1N4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRemRFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU42UWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTJ4RExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFTXNUVUZCVFN4VlFVRlZMRWRCUVVjc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzQkRMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRFZDeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTTVReXhOUVVGTkxFOUJRVThzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4SlFVRkpMRkZCUVZFc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNTeERRVUZETzFsQlF6RkVMRTFCUVUwc1RVRkJUU3hIUVVOV0xFOUJRVThzU1VGQlNTeFJRVUZSTEVOQlFVTXNTMEZCU3p0blFrRkRka0lzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHp0blFrRkRWaXhEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZETlVNc1NVRkJTU3hEUVVGRExFMUJRVTA3WjBKQlExUXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYTBKQlFXdENMRVZCUVVVc2RVSkJRWFZDTEV0QlFVc3NSVUZCUlN4RFFVTnVSQ3hEUVVGRE8xbEJRMG9zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzFsQlEzcERMRTlCUVU4c1MwRkJTeXhEUVVGRE8xRkJRMllzUTBGQlF6dFJRVU5FTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRM0pFTEVsQlFVa3NRMEZCUXl4TlFVRk5PMWxCUTFRc1RVRkJUU3hKUVVGSkxHRkJRV0VzUTBGRGNrSXNhMEpCUVd0Q0xFVkJRVVVzZFVKQlFYVkNMRXRCUVVzc1JVRkJSU3hEUVVOdVJDeERRVUZETzFGQlEwb3NUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJReTlETEU5QlFVOHNTMEZCU3l4RFFVRkRPMGxCUTJZc1EwRkJRenRKUVVWRU96czdPenM3T3pzN1QwRlRSenRKUVVOSUxFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlExWXNTMEZCY1VJc1JVRkRja0lzUlVGQmEwSXNSVUZEYkVJc1IwRkJSeXhKUVVGclF6dFJRVVZ5UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTndSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRM0pETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc09FSkJRVGhDTEV0QlFVc3NXVUZCV1N4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJReTlFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU42UWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTJ4RExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOVUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bERMRTFCUVUwc1IwRkJSeXhIUVVGSExGRkJRVkVzUTBGQlF5eExRVUZMTzJkQ1FVTjRRaXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVczdaMEpCUTJoQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTjJReXhKUVVGSkxFZEJRVWNzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRk5CUVZNN1owSkJRMjVETEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xHdENRVUZyUWl4RlFVRkZMSFZDUVVGMVFpeExRVUZMTEVWQlFVVXNRMEZEYmtRc1EwRkJRenRaUVVOS0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRMmhETEU5QlFVOHNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRekZDTEVOQlFVTTdVVUZEUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU12UXl4SlFVRkpMRWRCUVVjc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEZOQlFWTTdXVUZEYmtNc1RVRkJUU3hKUVVGSkxHRkJRV0VzUTBGRGNrSXNhMEpCUVd0Q0xFVkJRVVVzZFVKQlFYVkNMRXRCUVVzc1JVRkJSU3hEUVVOdVJDeERRVUZETzFGQlEwb3NUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRia01zVDBGQlR5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRUeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVU4yUWl4TFFVRmhMRVZCUTJJc1IwRkJhMEk3VVVGRmJFSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETjBRc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFXbENMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTFSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMnhETEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNN1dVRkRWQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRekZETEVsQlFVa3NVVUZCVVN4RlFVRkZMRU5CUVVNN1owSkJRMklzUzBGQlN5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxGRkJRVkVzUlVGQlJTeERRVUZETzI5Q1FVTnVReXhKUVVGSkxFdEJRVXNzUzBGQlN5eEpRVUZKTzNkQ1FVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdPM2RDUVVOcVF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBJc1EwRkJRenRaUVVOSUxFTkJRVU03VVVGRFNDeERRVUZETzFGQlEwUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETDBJc1EwRkJRenRKUVVWRU96czdPenM3T3pzN08wOUJWVWM3U1VGRFNDeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVTlFMRkZCUVRSQ0xFVkJRelZDTEZkQlFXTXNTVUZCVXl4RlFVTjJRaXhIUVVGSExFbEJRV3RETzFGQlJYSkRMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJwRUxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSUzlFTEUxQlFVMHNSVUZEU2l4TFFVRkxMRVZCUTB3c1NVRkJTU3hGUVVOS0xFdEJRVXNzUlVGRFRDeEpRVUZKTEVWQlEwb3NTVUZCU1N4RlFVTktMRTlCUVU4c1JVRkRVQ3hMUVVGTExFVkJRVVVzVlVGQlZTeEZRVU5xUWl4aFFVRmhMRVZCUVVVc2EwSkJRV3RDTEVWQlEycERMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRMklzUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZEWWl4SFFVRkhMRVZCUVVVc1VVRkJVU3hGUVVOaUxFZEJRVWNzUlVGQlJTeFJRVUZSTEVWQlEySXNVVUZCVVN4RlFVRkZMR0ZCUVdFc1IwRkRlRUlzUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEWWl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETzFGQlF6RkNMRTFCUVUwc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRjRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEYmtJc1RVRkJUU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQldTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVjRSU3hKUVVGSkxFMUJRVTBzUjBGQlZTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVTXhReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVU5VTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRaQ3hKUVVGSkxFVkJRMG9zVVVGQlVTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJWeXhGUVVGRkxFVkJRVmtzUTBGQlZ5eEZRVU01UkN4VFFVRlRMRVZCUTFRc1IwRkJSeXhEUVVOS0xFTkJRMFlzUTBGQlF6dFJRVU5HTEVsQlFVa3NTVUZCU1R0WlFVRkZMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlhKRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVVdlF5eEpRVUZKTEU5QlFVOHNTVUZCU1N4UlFVRlJMRVZCUVVVc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNWVUZCVlR0blFrRkJSU3hQUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZ2UXl4RFFVRkRPMWxCUTNCRkxFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUTNwQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZEU2l4RFFVRkRMRU5CUVVNc1ZVRkJiMElzUTBGQlF5eExRVUZMTEZOQlFWTTdaMEpCUTNKRExFTkJRVU1zUTBGQlF5eFZRVUZ2UWl4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVOdVF5eERRVUZETEUxQlFVMHNRMEZCUXp0WlFVTlVMRTlCUVU4c1MwRkJiVU1zUTBGQlF6dFJRVU0zUXl4RFFVRkRPMUZCUlVRc1NVRkJTU3hyUWtGQmEwSXNTMEZCU3l4VFFVRlRMRVZCUVVVc1EwRkJRenRaUVVOeVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xbEJRM1pDTEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1RVRkJUU3hGUVVGRkxFTkJRVU03WjBKQlF6RkNMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eHJRa0ZCTkVJc1EwRkJReXhEUVVGRE8yZENRVU5xUkN4SlFVRkpMRXRCUVVzc1MwRkJTeXhUUVVGVExFbEJRVWtzUzBGQlN5eExRVUZMTEVsQlFVazdiMEpCUTNaRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkRMRU5CUVVNN1dVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZyUXl4RFFVRkRPMUZCUTJwRUxFTkJRVU03VVVGRlJDeEpRVUZKTEZGQlFWRXNTMEZCU3l4VFFVRlRMRVZCUVVVc1EwRkJRenRaUVVNelFpeEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVTnNRaXhMUVVGTExFVkJRMHdzVVVGQmEwSXNSVUZEYkVJc1pVRkJaU3hGUVVObUxFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NTMEZCU3l4TlFVRk5MRVZCUTNKRUxHbENRVUZwUWl4RFFVTnNRaXhEUVVGRE8xbEJRMFlzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNN1owSkJRVVVzVDBGQlR5eEpRVUZyUXl4RFFVRkRPMWxCUTI1RkxFMUJRVTBzVFVGQlRTeEhRVUZITEUxQlFVMDdhVUpCUTJ4Q0xFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRV3RDTEVOQlFVTXNRMEZCUXp0cFFrRkRha01zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzVTBGQlV5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOb1JDeEpRVUZKTEUxQlFVMHNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJRenRuUWtGQlJTeFBRVUZQTEVsQlFXdERMRU5CUVVNN1dVRkRia1VzU1VGQlNTeFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BDTEV0QlFVc3NUVUZCVFN4RFFVRkRMRWxCUVVrc1RVRkJUU3hGUVVGRkxFTkJRVU03WjBKQlEzWkNMRTFCUVUwc1ZVRkJWU3hIUVVOa0xFTkJRVU1zV1VGQldTeEpRVUZKTzI5Q1FVTm1MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTzI5Q1FVTmlMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eFJRVUZSTzNkQ1FVTnlRaXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRXQ3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTEdGQlFXRXNSMEZEYWtJc1VVRkJVU3haUVVGWkxFbEJRVWs3YjBKQlEzUkNMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTzI5Q1FVTndRaXhEUVVGRExFTkJRVU1zVDBGQlR5eFJRVUZSTEV0QlFVc3NVVUZCVVR0M1FrRkROVUlzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNN2QwSkJRMnhDTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03WjBKQlEzcENMRWxCUVVrc1ZVRkJWU3hIUVVGSExHRkJRV0U3YjBKQlFVVXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVNdlF5eERRVUZETzFsQlEwUXNUMEZCVHl4UlFVRnpReXhEUVVGRE8xRkJRMmhFTEVOQlFVTTdVVUZGUkN4SlFVRkpMRkZCUVZFc1MwRkJTeXhUUVVGVExFVkJRVVVzUTBGQlF6dFpRVU16UWl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVOc1FpeExRVUZMTEVWQlEwd3NVVUZCYTBJc1JVRkRiRUlzWlVGQlpTeEZRVU5tTEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1MwRkJTeXhOUVVGTkxFVkJRM0pFTEdsQ1FVRnBRaXhEUVVOc1FpeERRVUZETzFsQlEwWXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU03WjBKQlFVVXNUMEZCVHl4SlFVRnJReXhEUVVGRE8xbEJRMjVGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwN2FVSkJRMnhDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFXdENMRU5CUVVNc1EwRkJRenRwUWtGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NVMEZCVXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5vUkN4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF6dG5Ra0ZCUlN4UFFVRlBMRWxCUVd0RExFTkJRVU03V1VGRGJrVXNTVUZCU1N4UlFVRlJMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzcENMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdaMEpCUTNaQ0xFMUJRVTBzVlVGQlZTeEhRVU5rTEVOQlFVTXNXVUZCV1N4SlFVRkpPMjlDUVVObUxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZPMjlDUVVOaUxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4UlFVRlJPM2RDUVVOeVFpeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenQzUWtGRFdDeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5MR0ZCUVdFc1IwRkRha0lzVVVGQlVTeFpRVUZaTEVsQlFVazdiMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RlFVRkZPMjlDUVVOd1FpeERRVUZETEVOQlFVTXNUMEZCVHl4UlFVRlJMRXRCUVVzc1VVRkJVVHQzUWtGRE5VSXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU03ZDBKQlEyeENMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdaMEpCUTNwQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEdGQlFXRTdiMEpCUVVVc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU12UXl4RFFVRkRPMWxCUTBRc1QwRkJUeXhSUVVGelF5eERRVUZETzFGQlEyaEVMRU5CUVVNN1VVRkZSQ3hKUVVGSkxGRkJRVkVzUzBGQlN5eFRRVUZUTEVWQlFVVXNRMEZCUXp0WlFVTXpRaXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVU5zUWl4TFFVRkxMRVZCUTB3c1VVRkJhMElzUlVGRGJFSXNaVUZCWlN4RlFVTm1MRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVOc1F5eFRRVUZUTEVOQlExWXNRMEZCUXp0WlFVTkdMRWxCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETzJkQ1FVRkZMRTlCUVU4c1NVRkJhME1zUTBGQlF6dFpRVU51UlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhOUVVGTk8ybENRVU5zUWl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRnJRaXhEUVVGRExFTkJRVU03YVVKQlEycERMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRk5CUVZNc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZEYUVRc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeExRVUZMTEVOQlFVTTdaMEpCUVVVc1QwRkJUeXhKUVVGclF5eERRVUZETzFsQlEyNUZMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlEzWkNMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlExUXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF5eEZRVUZGTEZGQlFXdENMRVZCUVVVc1pVRkJaU3hEUVVGRExFVkJRMjVGTEVOQlFVTXNRMEZEUml4RFFVRkRPMWxCUTBZc1QwRkJUeXhIUVVGcFF5eERRVUZETzFGQlF6TkRMRU5CUVVNN1VVRkZSQ3hKUVVGSkxGRkJRVkVzUzBGQlN5eFRRVUZUTEVWQlFVVXNRMEZCUXp0WlFVTXpRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eEZRVUZGTEZGQlFXdENMRU5CUVVNc1EwRkJRenRaUVVOdVJTeE5RVUZOTEZkQlFWY3NSMEZCUnl4VFFVRlRMRXRCUVVzc1RVRkJUU3hEUVVGRE8xbEJRM3BETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUTJ4Q0xFdEJRVXNzUlVGRFRDeFJRVUZyUWl4RlFVTnNRaXhsUVVGbExFVkJRMllzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4TFFVRkxMRTFCUVUwc1JVRkRja1FzYVVKQlFXbENMRU5CUTJ4Q0xFTkJRVU03V1VGRFJpeEpRVUZKTEUxQlFVMHNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJRenRuUWtGQlJTeFBRVUZQTEVsQlFXdERMRU5CUVVNN1dVRkRia1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NUVUZCVFR0cFFrRkRiRUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQmEwSXNRMEZCUXl4RFFVRkRPMmxDUVVOcVF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eFRRVUZUTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRMmhFTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8yZENRVUZGTEU5QlFVOHNTVUZCYTBNc1EwRkJRenRaUVVOdVJTeEpRVUZKTEZkQlFWY3NSVUZCUlN4RFFVRkRPMmRDUVVOb1FpeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZEYkVNc1EwRkJReXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGRGVFUXNRMEZCUXp0blFrRkRSaXhOUVVGTkxGbEJRVmtzUjBGRGFFSXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJRenRuUWtGRGFFVXNUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRU3RDTEVOQlFVTTdXVUZET1VRc1EwRkJRenRaUVVORUxFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUTNwQ0xFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUTFRc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RlFVRkZMRkZCUVd0Q0xFVkJRVVVzWlVGQlpTeERRVUZETEVWQlEyNUZMRU5CUVVNc1EwRkRSaXhEUVVGRE8xbEJRMFlzVDBGQlR5eERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVFclFpeERRVUZETzFGQlF5OUVMRU5CUVVNN1VVRkZSQ3hKUVVGSkxHRkJRV0VzUzBGQlN5eFRRVUZUTEVWQlFVVXNRMEZCUXp0WlFVTm9ReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTNaQ0xFMUJRVTBzWlVGQlpTeEhRVUZWTEVWQlFVVXNRMEZCUXp0WlFVTnNReXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEUxQlFVMHNSVUZCUlN4RFFVRkRPMmRDUVVNeFFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJkVUlzUTBGQlF5eERRVUZETzJkQ1FVTTFReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yZENRVU5zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRPMjlDUVVOdVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5rTEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03WjBKQlF6bENMRU5CUVVNN1dVRkRTQ3hEUVVGRE8xbEJRMFFzVDBGQlR5eGxRVUUyUXl4RFFVRkRPMUZCUTNaRUxFTkJRVU03VVVGRlJDeEpRVUZKTEV0QlFXRXNRMEZCUXp0UlFVTnNRaXhKUVVGSkxFMUJRVzFETEVOQlFVTTdVVUZEZUVNc1NVRkJTU3hQUVVGUExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMWxCUXpsQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFOUJRVEJDTEVOQlFVTXNRMEZCUXp0WlFVTjBSU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRMnhETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRM0JDTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU16UkN4RFFVRkRPMkZCUVUwc1EwRkJRenRaUVVOT0xFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVTnVRaXhKUVVGSkxFbEJRVWs3WjBKQlFVVXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZEY0VNc1NVRkJTU3hMUVVGTE8yZENRVUZGTEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTjZReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEycENMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF6TkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRia1FzVFVGQlRTeEhRVUZKTEUxQlFXZENMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZEY2tNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGM1FpeEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEyeEZMRWxCUVVzc1RVRkJiVUlzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRPMjlDUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1owSkJRM1pFTEU5QlFVOHNSMEZCUnl4RFFVRkRPMWxCUTJJc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVU5RTEVOQlFVTTdVVUZEU2l4RFFVRkRPMUZCUlVRc1NVRkJTU3hSUVVGUk8xbEJRVVVzVDBGQlR5eE5RVUZ2UXl4RFFVRkRPMUZCUXpGRUxFOUJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJjVUlzUTBGQlF6dEpRVU53UkN4RFFVRkRPMGxCUlVRN096czdPenM3VDBGUFJ6dEpRVU5MTEZsQlFWa3NRMEZEYkVJc1QwRkJZeXhGUVVOa0xGTkJRVEJDTzFGQlJURkNMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRUdFpRVUZGTEU5QlFVOHNUMEZCT0VJc1EwRkJRenRSUVVNM1JDeE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETzFGQlEzSkRMRTFCUVUwc1QwRkJUeXhIUVVFd1FpeEZRVUZGTEVOQlFVTTdVVUZETVVNc1MwRkJTeXhOUVVGTkxFMUJRVTBzU1VGQlNTeFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTTNRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRE8yZENRVUZGTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03V1VGRGNrTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTTFRaXhEUVVGRE8xRkJRMFFzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMWxCUVVVc1QwRkJUeXhQUVVGUExFTkJRVU03VVVGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVhkQ0xFVkJRVVVzUTBGQlF6dFJRVU4yUXl4TFFVRkxMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzVFVGQlRTeERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzQkVMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5vUkN4RFFVRkRPMUZCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVkVPenM3T3pzN1QwRk5SenRKUVVOTExHbENRVUZwUWl4RFFVRkRMRXRCUVZVN1VVRkRiRU1zU1VGQlNTeExRVUZMTEV0QlFVc3NVMEZCVXp0WlFVRkZMRTlCUVU4c1YwRkJWeXhEUVVGRE8xRkJRelZETEVsQlFVa3NTMEZCU3l4TFFVRkxMRWxCUVVrN1dVRkJSU3hQUVVGUExFMUJRVTBzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRTlCUVU4c1MwRkJTeXhMUVVGTExGRkJRVkU3V1VGQlJTeFBRVUZQTEV0QlFVc3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRSUVVOMlJDeEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRemxDTEVsQlFVa3NRMEZCUXp0blFrRkRTQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRMMElzUTBGQlF6dFpRVUZETEUxQlFVMHNRMEZCUXp0blFrRkRVQ3hQUVVGUExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTjJRaXhEUVVGRE8xRkJRMGdzUTBGQlF6dFJRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRM1pDTEVOQlFVTTdTVUZGUkRzN096czdPenRQUVU5SE8wbEJRMHNzYjBKQlFXOUNMRU5CUXpGQ0xFOUJRVFJDTEVWQlF6VkNMRWxCUVdFc1JVRkRZaXhMUVVGak8xRkJSV1FzU1VGQlNTeFBRVUZQTEVsQlFVa3NTMEZCU3l4WFFVRlhMRWxCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVjBGQlZ6dFpRVU0zUkN4UFFVRlBMRTlCUVU4c1EwRkJRenRSUVVOcVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyeERMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEZUVJc1RVRkJUU3hIUVVGSExFZEJRVWNzVDBGQlR5eExRVUZMTEV0QlFVc3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRja1VzVFVGQlRTeExRVUZMTEVkQlFYZENMRVZCUVVVc1EwRkJRenRSUVVOMFF5eExRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRla01zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU0xUWl4RFFVRkRPMUZCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRFppeERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFNDeFZRVUZWTEVOQlFYTkNMRWRCUVZVN1VVRkRlRU1zU1VGQlNTeEhRVUZITEZsQlFWa3NVMEZCVXp0WlFVRkZMRTlCUVU4c1IwRkJVU3hEUVVGRE8xRkJRemxETEUxQlFVMHNUMEZCVHl4SFFVRkpMRWRCUVZjc1JVRkJSU3hQUVVGUExFbEJRVWtzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNKRUxFbEJRMFVzZFVaQlFYVkdMRU5CUVVNc1NVRkJTU3hEUVVNeFJpeFBRVUZQTEVOQlExSTdXVUZGUkN4UFFVRlBMRWxCUVVrc1pVRkJaU3hEUVVGRExFZEJRVWNzUTBGQlRTeERRVUZETzFGQlEzWkRMRTlCUVU4c1NVRkJTU3hoUVVGaExFTkJRVU1zUjBGQlJ5eERRVUZOTEVOQlFVTTdTVUZEY2tNc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMGdzVTBGQlV5eERRVU5RTEZOQlFXbERPMUZCUldwRExFOUJRVThzU1VGQlNTeGpRVUZqTEVOQlNYWkNMRWxCUVZjc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dEpRVU0xUWl4RFFVRkRPMGxCUlVRN096czdPenM3VDBGUFJ6dEpRVU5JTEZOQlFWTXNRMEZEVUN4TFFVRnZRaXhGUVVOd1FpeEpRVUZaTEVWQlExb3NTMEZCY1VJN1VVRkZja0lzVDBGQlR5eEpRVUZKTEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTjBSQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3VDBGVlJ6dEpRVU5MTEdWQlFXVXNRMEZEY2tJc1MwRkJlVUlzUlVGRGVrSXNTMEZCWVN4RlFVTmlMRTlCUVdVc1JVRkRaaXhUUVVGdlF5eEZRVU53UXl4WFFVRnRRanRSUVVWdVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRMnBFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTTVRaXhOUVVGTkxFbEJRVWtzVlVGQlZTeERRVU5zUWl4SFFVRkhMRTlCUVU4c1lVRkJZU3hYUVVGWExHOUNRVUZ2UWl4TFFVRkxMRkZCUTNwRUxFbEJRVWtzU1VGQlNTeFRRVU5XTEVWQlFVVXNRMEZEU0N4RFFVRkRPMUZCUTBvc1EwRkJRenRKUVVOSUxFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTBzc1owSkJRV2RDTEVOQlEzUkNMRXRCUVhsQ0xFVkJRM3BDTEV0QlFXRTdVVUZGWWl4TlFVRk5MRTlCUVU4c1IwRkJSeXhMUVVFeVFpeERRVUZETzFGQlF6VkRMRTFCUVUwc1VVRkJVU3hIUVVOYUxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1EwRkJRenRaUVVNM1FpeFJRVUZSTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RlFVRkZMRlZCUVZVc1EwRkJRenRSUVVNeFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOTExHbENRVUZwUWl4RFFVRkRMRkZCUVdFN1VVRkRja01zU1VGQlNTeERRVUZETEZGQlFWRTdXVUZCUlN4UFFVRlBMRk5CUVZNc1EwRkJRenRSUVVOb1F5eEpRVUZKTEU5QlFVOHNVVUZCVVN4TFFVRkxMRkZCUVZFN1dVRkJSU3hQUVVGUExGRkJRVkVzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVTm9SU3hKUVVGSkxFOUJRVThzVVVGQlVTeExRVUZMTEZWQlFWVXNTVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTVHRaUVVOcVJDeFBRVUZQTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRGNrTXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFN5eGhRVUZoTEVOQlFVTXNTVUZCWVR0UlFVTnFReXhQUVVGUExFbEJRVWtzUzBGQlN5eFJRVUZSTEVsQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1EwRkJRenRKUVVOb1JDeERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFN5eGpRVUZqTEVOQlFVTXNTMEZCVlN4RlFVRkZMRXRCUVdFc1JVRkJSU3hQUVVGbE8xRkJReTlFTEVsQlFVa3NUMEZCVHl4TFFVRkxMRXRCUVVzc1VVRkJVVHRaUVVGRkxFOUJRVThzUzBGQlN5eERRVUZETzFGQlF6VkRMRWxCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVVVGQlVUdFpRVUZGTEU5QlFVOHNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRM0JFTEUxQlFVMHNTVUZCU1N4VlFVRlZMRU5CUTJ4Q0xFZEJRVWNzVDBGQlR5eFJRVUZSTEV0QlFVc3NjME5CUVhORExFOUJRVThzUzBGQlN5eEZRVUZGTEVOQlF6VkZMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVE3T3pzN096czdPenM3VDBGVlJ6dEpRVU5QTEZOQlFWTTdVVUZEYWtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldUdFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVOb1JDeE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTXpSU3hOUVVGTkxFOUJRVThzUjBGQmQwSXNSMEZCUnp0WlFVTjBReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVTdXVUZEVkN4RFFVRkRMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4SlFVRkpMRmRCUVZjc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRiRVVzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTlNMRTFCUVUwc1ZVRkJWU3hIUVVGSExFOUJRVThzUjBGQlJ5eExRVUZMTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZEZEVRc1QwRkJUeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU16UlN4RFFVRkRPMUZCUTBRc1NVRkJTU3hSUVVGUk8xbEJRVVVzVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRNVU1zU1VGQlNTeFJRVUZSTzFsQlFVVXNUMEZCVHl4RFFVRkRMRkZCUVZFc1IwRkJSeXhSUVVGUkxFTkJRVU03VVVGRE1VTXNTVUZCU1N4UFFVRlBMRkZCUVZFc1MwRkJTeXhSUVVGUk8xbEJRVVVzVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRPVVFzVDBGQlR5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRXJRaXhEUVVGRE8wbEJRemRFTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTklMRTFCUVUwc1EwRkJWU3hWUVVGVk8xRkJRM2hDTEV0QlFVc3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVOdVFpeE5RVUZOTEZsQlFWa3NSMEZCUnl4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMmhFTEUxQlFVMHNXVUZCV1N4SFFVRkhMR1ZCUVdVc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRGFFUXNWVUZCVlN4RFFVRkRMRmRCUVZjc1EwRkJReXhaUVVGWkxFTkJRVU03WVVGRGFrTXNSMEZCUnl4RFFVRkRMRmxCUVZrc1EwRkJRenRoUVVOcVFpeE5RVUZOTEVOQlEwd3NVVUZCVVN4RFFVRkRMRFJDUVVFMFFpeERRVUZETEVWQlEzUkRMRmxCUVZrc1EwRkJReXhaUVVGWkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlF6bENMRk5CUVZNc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGRGVFSTdZVUZEUVN4TFFVRkxMRVZCUVVVc1EwRkJRenRSUVVOWUxGVkJRVlVzUTBGQlF5eFhRVUZYTEVOQlFVTXNXVUZCV1N4RFFVRkRPMkZCUTJwRExFZEJRVWNzUTBGQlF5eFpRVUZaTEVOQlFVTTdZVUZEYWtJc1RVRkJUU3hEUVVOTUxHTkJRV01zUTBGQlF5dzBRa0ZCTkVJc1EwRkJReXhGUVVNMVF5eFpRVUZaTEVOQlFVTXNXVUZCV1N4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVNNVFpeFRRVUZUTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUTNoQ08yRkJRMEVzUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEWWl4RFFVRkRPME5CUTBZN1FVRkZSQ3hQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMEZCUTJwRExGbEJRVmtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCY0luSmxabXhsWTNRdGJXVjBZV1JoZEdGY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUVGa1lYQjBaWElzWEc0Z0lFRmtZWEIwWlhKR2JHRm5jeXhjYmlBZ1EyOXVibVZqZEdsdmJrVnljbTl5TEZ4dUlDQkRiMjUwWlhoMFRHOWpheXhjYmlBZ1EyOXVkR1Y0ZEhWaGJFRnlaM01zWEc0Z0lFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp5eGNiaUFnVUdWeWMybHpkR1Z1WTJWTFpYbHpMRnh1SUNCU1lYZFNaWE4xYkhRc1hHNGdJRk5sY1hWbGJtTmxMRnh1ZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJOdmNtVmNJanRjYm1sdGNHOXlkQ0I3SUdOeVpXRjBaVU5zYVdWdWRDd2dkSGx3WlNCU1pXUnBjME5zYVdWdWRGUjVjR1VnZlNCbWNtOXRJRndpY21Wa2FYTmNJanRjYm1sdGNHOXlkQ0I3SUZGMVpYSjVSWEp5YjNJZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyTnZjbVZjSWp0Y2JtbHRjRzl5ZENCN1hHNGdJRUpoYzJWRmNuSnZjaXhjYmlBZ1EyOXVabXhwWTNSRmNuSnZjaXhjYmlBZ1JFSkxaWGx6TEZ4dUlDQm5aVzVsY21GMFpXUXNYRzRnSUVsdWRHVnlibUZzUlhKeWIzSXNYRzRnSUU1dmRFWnZkVzVrUlhKeWIzSXNYRzRnSUc5dVEzSmxZWFJsTEZ4dUlDQnZia055WldGMFpWVndaR0YwWlN4Y2JpQWdUM0JsY21GMGFXOXVTMlY1Y3l4Y2JpQWdVSEpwYldGeWVVdGxlVlI1Y0dVc1hHNTlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR0l0WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIc2dUVzlrWld3Z2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmxZMjl5WVhSdmNpMTJZV3hwWkdGMGFXOXVYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQkRiMjV6ZEhKMVkzUnZjaXhjYmlBZ1JHVmpiM0poZEdsdmJpeGNiaUFnVFdWMFlXUmhkR0VzWEc0Z0lIQnliM0JOWlhSaFpHRjBZU3hjYm4wZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1pXTnZjbUYwYVc5dVhDSTdYRzVwYlhCdmNuUWdleUJTWVhkU1pXUnBjMUYxWlhKNUxDQlNaV1JwYzBOdmJtWnBaeXdnVW1Wa2FYTkRiMjUwWlhoMExDQlNaV1JwYzBac1lXZHpJSDBnWm5KdmJTQmNJaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUZKbFpHbHpSR1ZtWVhWc2RGQnlaV1pwZUN3Z1VtVmthWE5HYkdGMmIzVnlJSDBnWm5KdmJTQmNJaTR2WTI5dWMzUmhiblJ6WENJN1hHNXBiWEJ2Y25RZ2V5QlNaV1JwYzFOMFlYUmxiV1Z1ZENCOUlHWnliMjBnWENJdUwxSmxaR2x6VTNSaGRHVnRaVzUwWENJN1hHNXBiWEJ2Y25RZ2V5QlNaV1JwYzFCaFoybHVZWFJ2Y2lCOUlHWnliMjBnWENJdUwxSmxaR2x6VUdGbmFXNWhkRzl5WENJN1hHNXBiWEJ2Y25RZ2V5QlNaV1JwYzBScGMzQmhkR05vSUgwZ1puSnZiU0JjSWk0dlVtVmthWE5FYVhOd1lYUmphRndpTzF4dWFXMXdiM0owSUhzZ1VtVmthWE5EYjI1MFpYaDBURzlqYXlCOUlHWnliMjBnWENJdUwxSmxaR2x6UTI5dWRHVjRkRXh2WTJ0Y0lqdGNibWx0Y0c5eWRDQjdJR055WldGMFpXUkNlVTl1VW1Wa2FYTkRjbVZoZEdWVmNHUmhkR1VnZlNCbWNtOXRJRndpTGk5b1lXNWtiR1Z5YzF3aU8xeHVhVzF3YjNKMElIc2daR1Z6WlhKcFlXeHBlbVVzSUhObGNtbGhiR2w2WlNCOUlHWnliMjBnWENJdUwzTmxjbWxoYkdsNllYUnBiMjVjSWp0Y2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVW1Wa2FYTWdZV1JoY0hSbGNpQm1iM0lnWkdGMFlTQndaWEp6YVhOMFpXNWpaVnh1SUNvZ1FITjFiVzFoY25rZ1ZHaGxJRkpsWkdselFXUmhjSFJsY2lCcGJYQnNaVzFsYm5SeklIUm9aU0J3WlhKemFYTjBaVzVqWlNCc1lYbGxjaUJ2YmlCMGIzQWdiMllnVW1Wa2FYTmNiaUFxSUNodmNpQmhibmtnVW1Wa2FYTXRZMjl0Y0dGMGFXSnNaU0J6WlhKMlpYSWdjM1ZqYUNCaGN5QkVjbUZuYjI1bWJIbEVRaWt1SUVWaFkyZ2diVzlrWld3Z2RHRmliR1VnYVhOY2JpQXFJSE4wYjNKbFpDQmhjeUJoSUhOcGJtZHNaU0JTWldScGN5Qm9ZWE5vSUhkb2IzTmxJR1pwWld4a2N5QmhjbVVnY21WamIzSmtJR2xrY3lCaGJtUWdkMmh2YzJVZ2RtRnNkV1Z6SUdGeVpWeHVJQ29nYzJWeWFXRnNhWHBsWkNCeVpXTnZjbVJ6TGlCVWFHVWdZV1JoY0hSbGNpQnBjeUJ0YjJSbGJHeGxaQ0J2YmlCMGFHVWdZMjl5WlNCU1FVMGdZV1JoY0hSbGNqb2djbUYzSUhGMVpYSnBaWE5jYmlBcUlHeHZZV1FnZEdobElHMWhkR05vYVc1bklIUmhZbXhsTENCeVpYWmxjblFnWlhabGNua2djbVZqYjNKa0lIUnZJR0VnYlc5a1pXd2dZVzVrSUhSb1pXNGdZWEJ3YkhrZ2RHaGxJSE5oYldWY2JpQXFJR1pwYkhSbGNtbHVaeXdnYzI5eWRHbHVaeXdnWVdkbmNtVm5ZWFJwYjI0Z1lXNWtJSEJoWjJsdVlYUnBiMjRnYkc5bmFXTWdhVzRnU21GMllWTmpjbWx3ZEM1Y2JpQXFJR0JBZEhKaGJuTmhZM1JwYjI1aGJDZ3BZQ0JwY3lCaVlXTnJaV1FnWW5rZ2UwQnNhVzVySUZKbFpHbHpRMjl1ZEdWNGRFeHZZMnQ5TENCM2FHbGphQ0JpZFdabVpYSnpJSGR5YVhSbGMxeHVJQ29nYjI0Z1lTQmtaV1JwWTJGMFpXUWdZMjl1Ym1WamRHbHZiaUJoYm1RZ1pteDFjMmhsY3lCMGFHVnRJR0YwYjIxcFkyRnNiSGtnZDJsMGFDQmdUVlZNVkVsZ0wyQkZXRVZEWUM1Y2JpQXFJRUJqYkdGemN5QlNaV1JwYzBGa1lYQjBaWEpjYmlBcUlFQmpZWFJsWjI5eWVTQlNaV1JwYzF4dUlDb2dRR1Y0WVcxd2JHVmNiaUFxSUdCZ1lIUjVjR1Z6WTNKcGNIUmNiaUFxSUdOdmJuTjBJR0ZrWVhCMFpYSWdQU0J1WlhjZ1VtVmthWE5CWkdGd2RHVnlLSHNnZFhKc09pQmNJbkpsWkdsek9pOHZiRzlqWVd4b2IzTjBPall6TnpsY0lpQjlLVHRjYmlBcUlHRjNZV2wwSUdGa1lYQjBaWEl1YVc1cGRHbGhiR2w2WlNncE8xeHVJQ29nWTI5dWMzUWdjbVZ3YnlBOUlHNWxkeUFvWVdSaGNIUmxjaTV5WlhCdmMybDBiM0o1UEZWelpYSStLQ2twS0ZWelpYSXNJR0ZrWVhCMFpYSXBPMXh1SUNvZ1lYZGhhWFFnY21Wd2J5NWpjbVZoZEdVb2JtVjNJRlZ6WlhJb2V5QnVZVzFsT2lCY0lrcHZhRzVjSWlCOUtTazdYRzRnS2lCZ1lHQmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRkpsWkdselFXUmhjSFJsY2lCbGVIUmxibVJ6SUVGa1lYQjBaWEk4WEc0Z0lGSmxaR2x6UTI5dVptbG5MRnh1SUNCU1pXUnBjME5zYVdWdWRGUjVjR1VzWEc0Z0lGSmhkMUpsWkdselVYVmxjbmtzWEc0Z0lGSmxaR2x6UTI5dWRHVjRkRnh1UGlCN1hHNGdJSEJ5YVhaaGRHVWdYM0psWkdselEyeHBaVzUwUHpvZ1VtVmthWE5EYkdsbGJuUlVlWEJsTzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0dOdmJtWTZJRkpsWkdselEyOXVabWxuSUQwZ2UzMHNJR0ZzYVdGelB6b2djM1J5YVc1bktTQjdYRzRnSUNBZ2MzVndaWElvWTI5dVppd2dVbVZrYVhOR2JHRjJiM1Z5TENCaGJHbGhjeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU55WldGMFpYTWdiM0JsY21GMGFXOXVJR1pzWVdkeklIZHBkR2dnWVNCMWMyVnlJR2xrWlc1MGFYUjVYRzRnSUNBcUlFQnpkVzF0WVhKNUlFVjRkR1Z1WkhNZ2RHaGxJR0poYzJVZ1pteGhaM01nZDJsMGFDQmhJR0JWVlVsRVlDQjFjMlZrSUdKNUlIUm9aU0JnWTNKbFlYUmxaRUo1WUNCaGJtUmNiaUFnSUNvZ1lIVndaR0YwWldSQ2VXQWdhR0Z1Wkd4bGNuTXVJRVJsWm1GMWJIUnpJSFJ2SUhSb1pTQmpiMjVtYVdkMWNtVmtJR0IxYzJWeVlDQnZjaUIwYUdVZ1kzVnljbVZ1ZENCMGFXMWxMbHh1SUNBZ0tpQkFkR1Z0Y0d4aGRHVWdUU0F0SUZSb1pTQnRiMlJsYkNCMGVYQmxJR1p2Y2lCMGFHVWdiM0JsY21GMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN1QzQmxjbUYwYVc5dVMyVjVjMzBnYjNCbGNtRjBhVzl1SUMwZ1ZHaGxJRzl3WlhKaGRHbHZiaUJpWldsdVp5QndaWEptYjNKdFpXUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0RGIyNXpkSEoxWTNSdmNqeE5QbjBnYlc5a1pXd2dMU0JVYUdVZ2JXOWtaV3dnWTI5dWMzUnlkV04wYjNKY2JpQWdJQ29nUUhCaGNtRnRJSHRRWVhKMGFXRnNQRkpsWkdselJteGhaM00rZlNCbWJHRm5jeUF0SUZCaGNuUnBZV3dnWm14aFozTWdkRzhnWlhoMFpXNWtYRzRnSUNBcUlFQnlaWFIxY200Z2UxQnliMjFwYzJVOFVtVmthWE5HYkdGbmN6NTlJRlJvWlNCamIyMXdiR1YwWlNCbWJHRm5jeUIzYVhSb0lHRWdWVlZKUkZ4dUlDQWdLaTljYmlBZ2IzWmxjbkpwWkdVZ1lYTjVibU1nWm14aFozTThUU0JsZUhSbGJtUnpJRTF2WkdWc1BHSnZiMnhsWVc0K1BpaGNiaUFnSUNCdmNHVnlZWFJwYjI0NklFOXdaWEpoZEdsdmJrdGxlWE1zWEc0Z0lDQWdiVzlrWld3NklFTnZibk4wY25WamRHOXlQRTArTEZ4dUlDQWdJR1pzWVdkek9pQlFZWEowYVdGc1BGSmxaR2x6Um14aFozTStYRzRnSUNrNklGQnliMjFwYzJVOFVtVmthWE5HYkdGbmN6NGdlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1WVhOemFXZHVLRnh1SUNBZ0lDQWdZWGRoYVhRZ2MzVndaWEl1Wm14aFozTW9YRzRnSUNBZ0lDQWdJRzl3WlhKaGRHbHZiaXhjYmlBZ0lDQWdJQ0FnYlc5a1pXd3NYRzRnSUNBZ0lDQWdJRTlpYW1WamRDNWhjM05wWjI0b1hHNGdJQ0FnSUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ZWVkpSRG9nWm14aFozTXVWVlZKUkNCOGZDQjBhR2x6TG1OdmJtWnBaeTUxYzJWeUlIeDhJRndpWENJZ0t5QkVZWFJsTG01dmR5Z3BMRnh1SUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdabXhoWjNOY2JpQWdJQ0FnSUNBZ0tWeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrZ1lYTWdVbVZrYVhOR2JHRm5jenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdRM0psWVhSbGN5QjBhR1VnVW1Wa2FYTWdaWFpsYm5RZ1pHbHpjR0YwWTJobGNseHVJQ0FnS2lCQWNtVjBkWEp1SUh0U1pXUnBjMFJwYzNCaGRHTm9mU0JCSUZKbFpHbHpMV0YzWVhKbElHUnBjM0JoZEdOb0lHbHVjM1JoYm1ObFhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdiM1psY25KcFpHVWdSR2x6Y0dGMFkyZ29LVG9nVW1Wa2FYTkVhWE53WVhSamFDQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlNaV1JwYzBScGMzQmhkR05vS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZCeWIzWnBaR1Z6SUhSb1pTQlNaV1JwY3lCMGNtRnVjMkZqZEdsdmJpQnNiMk5ySUdsdGNHeGxiV1Z1ZEdGMGFXOXVYRzRnSUNBcUlFQnpkVzF0WVhKNUlGSmxkSFZ5Ym5NZ1lTQm1jbVZ6YUNCN1FHeHBibXNnVW1Wa2FYTkRiMjUwWlhoMFRHOWphMzBnY0dWeUlIUnZjQzFzWlhabGJDQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0tpQnpieUJnUUhSeVlXNXpZV04wYVc5dVlXd29LV0FnWTJGdUlHSjFabVpsY2lCM2NtbDBaWE1nYjI0Z1lTQmtaV1JwWTJGMFpXUWdZMjl1Ym1WamRHbHZiaTVjYmlBZ0lDb2dRSEJoY21GdElIc3VMaTVoYm5sYlhYMGdZWEpuY3lBdElFOXdkR2x2Ym1Gc0lHRnlaM1Z0Wlc1MGN5Qm1iM0ozWVhKa1pXUWdkRzhnZEdobElHeHZZMnRjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVbVZrYVhORGIyNTBaWGgwVEc5amEzMGdRU0JtY21WemFDQlNaV1JwY3lCMGNtRnVjMkZqZEdsdmJpQnNiMk5yWEc0Z0lDQXFMMXh1SUNCdmRtVnljbWxrWlNCMGNtRnVjMkZqZEdsdmJreHZZMnNvTGk0dVlYSm5jem9nWVc1NVcxMHBPaUJTWldScGMwTnZiblJsZUhSTWIyTnJQSFJvYVhNK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGSmxaR2x6UTI5dWRHVjRkRXh2WTJzb2RHaHBjeXdnTGk0dVlYSm5jeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRWx1YVhScFlXeHBlbVZ6SUhSb1pTQmhaR0Z3ZEdWeUlHRnVaQ0J2Y0dWdWN5QjBhR1VnVW1Wa2FYTWdZMjl1Ym1WamRHbHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5NHVMazFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaMzBnWVhKbmN5QXRJRWx1YVhScFlXeHBlbUYwYVc5dUlHRnlaM1Z0Wlc1MGMxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0UWNtOXRhWE5sUEhadmFXUStmU0JCSUhCeWIyMXBjMlVnZEdoaGRDQnlaWE52YkhabGN5QnZibU5sSUdsdWFYUnBZV3hwZW1GMGFXOXVJR2x6SUdOdmJYQnNaWFJsWEc0Z0lDQXFMMXh1SUNCdmRtVnljbWxrWlNCaGMzbHVZeUJwYm1sMGFXRnNhWHBsS0Z4dUlDQWdJQzR1TG1GeVozTTZJRTFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaenhTWldScGMwTnZiblJsZUhRK1hHNGdJQ2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHTnZibk4wSUhzZ2JHOW5JSDBnUFNBb1hHNGdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0JRWlhKemFYTjBaVzVqWlV0bGVYTXVTVTVKVkVsQlRFbGFRVlJKVDA0c0lIUnlkV1VwWEc0Z0lDQWdLUzVtYjNJb2RHaHBjeTVwYm1sMGFXRnNhWHBsS1R0Y2JpQWdJQ0JqYjI1emRDQmpiR2xsYm5RZ1BTQjBhR2x6TG1Oc2FXVnVkRHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnYVdZZ0tDRmpiR2xsYm5RdWFYTlBjR1Z1S1NCaGQyRnBkQ0JqYkdsbGJuUXVZMjl1Ym1WamRDZ3BPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVTZJSFZ1YTI1dmQyNHBJSHRjYmlBZ0lDQWdJSFJvY205M0lIUm9hWE11Y0dGeWMyVkZjbkp2Y2lobElHRnpJRVZ5Y205eUtUdGNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NWZjbVZrYVhORGJHbGxiblFnUFNCamJHbGxiblE3WEc0Z0lDQWdZWGRoYVhRZ2MzVndaWEl1YVc1cGRHbGhiR2w2WlNndUxpNWhjbWR6S1R0Y2JpQWdJQ0JzYjJjdWRtVnlZbTl6WlNoZ0pIdDBhR2x6TG5SdlUzUnlhVzVuS0NsOUlHbHVhWFJwWVd4cGVtVmtZQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRk5vZFhSeklHUnZkMjRnZEdobElHRmtZWEIwWlhJZ1lXNWtJR05zYjNObGN5QjBhR1VnVW1Wa2FYTWdZMjl1Ym1WamRHbHZibHh1SUNBZ0tpQkFjR0Z5WVcwZ2V5NHVMazFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaMzBnWVhKbmN5QXRJRk5vZFhSa2IzZHVJR0Z5WjNWdFpXNTBjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBIWnZhV1ErZlNCQklIQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUJ2Ym1ObElITm9kWFJrYjNkdUlHbHpJR052YlhCc1pYUmxYRzRnSUNBcUwxeHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5QnphSFYwWkc5M2JpaGNiaUFnSUNBdUxpNWhjbWR6T2lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFVtVmthWE5EYjI1MFpYaDBQbHh1SUNBcE9pQlFjbTl0YVhObFBIWnZhV1ErSUh0Y2JpQWdJQ0JoZDJGcGRDQnpkWEJsY2k1emFIVjBaRzkzYmlndUxpNWhjbWR6S1R0Y2JpQWdJQ0JqYjI1emRDQmpiR2xsYm5RZ1BTQjBhR2x6TGw5eVpXUnBjME5zYVdWdWRDQS9QeUIwYUdsekxsOWpiR2xsYm5RN1hHNGdJQ0FnZEdocGN5NWZjbVZrYVhORGJHbGxiblFnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnZEdocGN5NWZZMnhwWlc1MElEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2doWTJ4cFpXNTBLU0J5WlhSMWNtNDdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJR0YzWVdsMElHTnNhV1Z1ZEM1eGRXbDBLQ2s3WEc0Z0lDQWdmU0JqWVhSamFDQjdYRzRnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCamJHbGxiblF1WkdWemRISnZlU2dwTzF4dUlDQWdJQ0FnZlNCallYUmphQ0I3WEc0Z0lDQWdJQ0FnSUM4dklIUm9aU0JqYjI1dVpXTjBhVzl1SUdseklHRnNjbVZoWkhrZ1kyeHZjMlZrT3lCdWIzUm9hVzVuSUd4bFpuUWdkRzhnY21Wc1pXRnpaVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1FuVnBiR1J6SUhSb1pTQnVZVzFsYzNCaFkyVmtJRkpsWkdseklHdGxlU0JtYjNJZ1lTQjBZV0pzWlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR0ZpYkdVZ0xTQlVhR1VnZEdGaWJHVWdLRzF2WkdWc0tTQnVZVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdWR2hsSUc1aGJXVnpjR0ZqWldRZ1VtVmthWE1nYUdGemFDQnJaWGxjYmlBZ0lDb3ZYRzRnSUhKbFkyOXlaRXRsZVNoMFlXSnNaVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z1lDUjdkR2hwY3k1amIyNW1hV2N1Y0hKbFptbDRJRDgvSUZKbFpHbHpSR1ZtWVhWc2RGQnlaV1pwZUgwNkpIdDBZV0pzWlgxZ08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pYTnZiSFpsY3lCMGFHVWdZV04wYVhabElIUnlZVzV6WVdOMGFXOXVJR3h2WTJzZ1puSnZiU0JoSUdOdmJuUmxlSFFzSUhkb1pXNGdjSEpsYzJWdWRGeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCU1pYUjFjbTV6SUhSb1pTQjdRR3hwYm1zZ1VtVmthWE5EYjI1MFpYaDBURzlqYTMwZ2IyNXNlU0IzYUdsc1pTQmhJSFJ5WVc1ellXTjBhVzl1SUdselhHNGdJQ0FxSUdGamRIVmhiR3g1SUc5d1pXNHNJSE52SUVOU1ZVUWdiM0JsY21GMGFXOXVjeUJpZFdabVpYSWdkR2hsYVhJZ2QzSnBkR1Z6SUdSMWNtbHVaeUJoSUhSeVlXNXpZV04wYVc5dUlHRnVaRnh1SUNBZ0tpQm5ieUJ6ZEhKaGFXZG9kQ0IwYnlCU1pXUnBjeUJ2ZEdobGNuZHBjMlV1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZrYVhORGIyNTBaWGgwZlNCYlkzUjRYU0F0SUZSb1pTQnZjR1Z5WVhScGIyNGdZMjl1ZEdWNGRGeHVJQ0FnS2lCQWNtVjBkWEp1SUh0U1pXUnBjME52Ym5SbGVIUk1iMk5ySUh3Z2RXNWtaV1pwYm1Wa2ZTQlVhR1VnWVdOMGFYWmxJR3h2WTJzc0lIZG9aVzRnYjI1bElHVjRhWE4wYzF4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lHRmpkR2wyWlV4dlkyc29ZM1I0UHpvZ1VtVmthWE5EYjI1MFpYaDBLVG9nVW1Wa2FYTkRiMjUwWlhoMFRHOWpheUI4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnWTI5dWMzUWdiRzlqYXlBOUlHTjBlRDh1WjJWMFQzSlZibVJsWm1sdVpXUW9YQ0owY21GdWMyRmpkR2x2Ymt4dlkydGNJaWtnWVhOY2JpQWdJQ0FnSUh3Z1EyOXVkR1Y0ZEV4dlkydGNiaUFnSUNBZ0lId2dkVzVrWldacGJtVmtPMXh1SUNBZ0lISmxkSFZ5YmlCc2IyTnJJR2x1YzNSaGJtTmxiMllnVW1Wa2FYTkRiMjUwWlhoMFRHOWpheUFtSmlCc2IyTnJMbUZqZEdsMlpTQS9JR3h2WTJzZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGQnlaWEJoY21WeklHRWdiVzlrWld3Z1ptOXlJSE4wYjNKaFoyVmNiaUFnSUNvZ1FITjFiVzFoY25rZ1JHVnNaV2RoZEdWeklIUnZJSFJvWlNCaVlYTmxJR2x0Y0d4bGJXVnVkR0YwYVc5dUxDQjNhR2xqYUNCbGVIUnlZV04wY3lCMGFHVWdjSEpwYldGeWVWeHVJQ0FnS2lCclpYa2dabkp2YlNCMGFHVWdjbVZqYjNKa0lHSmxabTl5WlNCcGRDQnBjeUJvWVc1a1pXUWdkRzhnZTBCc2FXNXJJR055WldGMFpYMHVYRzRnSUNBcUlFQjBaVzF3YkdGMFpTQk5JQzBnVkdobElHMXZaR1ZzSUhSNWNHVWdZbVZwYm1jZ2NISmxjR0Z5WldSY2JpQWdJQ29nUUhCaGNtRnRJSHROZlNCdGIyUmxiQ0F0SUZSb1pTQnRiMlJsYkNCcGJuTjBZVzVqWlNCMGJ5QndjbVZ3WVhKbFhHNGdJQ0FxSUVCeVpYUjFjbTRnVDJKcVpXTjBJR052Ym5SaGFXNXBibWNnZEdobElISmxZMjl5WkN3Z2FXUWdZVzVrSUhSeVlXNXphV1Z1ZENCa1lYUmhYRzRnSUNBcUwxeHVJQ0J2ZG1WeWNtbGtaU0J3Y21Wd1lYSmxQRTBnWlhoMFpXNWtjeUJOYjJSbGJENG9YRzRnSUNBZ2JXOWtaV3c2SUUwc1hHNGdJQ0FnTGk0dVlYSm5jem9nV3k0dUxtRnVlVnRkTENCU1pXUnBjME52Ym5SbGVIUmRYRzRnSUNrNklIdGNiaUFnSUNCeVpXTnZjbVE2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ0N1hHNGdJQ0FnYVdRNklITjBjbWx1Wnp0Y2JpQWdJQ0IwY21GdWMybGxiblEvT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK08xeHVJQ0I5SUh0Y2JpQWdJQ0JqYjI1emRDQmpkSGdnUFNCaGNtZHpMbkJ2Y0NncE8xeHVJQ0FnSUhKbGRIVnliaUJ6ZFhCbGNpNXdjbVZ3WVhKbEtHMXZaR1ZzTENBdUxpNWhjbWR6TENCamRIZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQkRiMjUyWlhKMGN5QmhJSE4wYjNKbFpDQnlaV052Y21RZ1ltRmpheUIwYnlCaElHMXZaR1ZzSUdsdWMzUmhibU5sWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRVJsYkdWbllYUmxjeUIwYnlCMGFHVWdZbUZ6WlNCcGJYQnNaVzFsYm5SaGRHbHZiaXdnY21WaGRIUmhZMmhwYm1jZ2RHaGxJSEJ5YVcxaGNua2dhMlY1WEc0Z0lDQXFJR1Y0ZEhKaFkzUmxaQ0JtY205dElIUm9aU0J5WldOdmNtUW5jeUJTWldScGN5Qm9ZWE5vSUdacFpXeGtMbHh1SUNBZ0tpQkFkR1Z0Y0d4aGRHVWdUU0F0SUZSb1pTQnRiMlJsYkNCMGVYQmxJSFJ2SUhKbGRtVnlkQ0IwYjF4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDU5SUc5aWFpQXRJRlJvWlNCemRHOXlaV1FnY21WamIzSmtYRzRnSUNBcUlFQndZWEpoYlNCN1EyOXVjM1J5ZFdOMGIzSThUVDU5SUdOc1lYcDZJQzBnVkdobElHMXZaR1ZzSUdOdmJuTjBjblZqZEc5eVhHNGdJQ0FxSUVCd1lYSmhiU0I3VUhKcGJXRnllVXRsZVZSNWNHVjlJR2xrSUMwZ1ZHaGxJSEJ5YVcxaGNua2dhMlY1SUhaaGJIVmxYRzRnSUNBcUlFQnlaWFIxY200Z2UwMTlJRlJvWlNCeVpXTnZibk4wY25WamRHVmtJRzF2WkdWc0lHbHVjM1JoYm1ObFhHNGdJQ0FxTDF4dUlDQnZkbVZ5Y21sa1pTQnlaWFpsY25ROFRTQmxlSFJsYm1SeklFMXZaR1ZzUGloY2JpQWdJQ0J2WW1vNklGSmxZMjl5WkR4emRISnBibWNzSUdGdWVUNHNYRzRnSUNBZ1kyeGhlbm82SUVOdmJuTjBjblZqZEc5eVBFMCtMRnh1SUNBZ0lHbGtPaUJRY21sdFlYSjVTMlY1Vkhsd1pTeGNiaUFnSUNCMGNtRnVjMmxsYm5RL09pQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytMRnh1SUNBZ0lDNHVMbUZ5WjNNNklGc3VMaTVoYm5sYlhTd2dVbVZrYVhORGIyNTBaWGgwWFZ4dUlDQXBPaUJOSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjM1Z3WlhJdWNtVjJaWEowS0c5aWFpd2dZMnhoZW5vc0lHbGtMQ0IwY21GdWMybGxiblFzSUM0dUxtRnlaM01wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJEY21WaGRHVnpJR0VnYm1WM0lISmxZMjl5WkNCcGJpQlNaV1JwYzF4dUlDQWdLaUJBYzNWdGJXRnllU0JYY21sMFpYTWdkR2hsSUhObGNtbGhiR2w2WldRZ2NtVmpiM0prSUhSdklIUm9aU0IwWVdKc1pTQm9ZWE5vTGlCSmJuTnBaR1VnWVZ4dUlDQWdLaUIwY21GdWMyRmpkR2x2YmlCMGFHVWdkM0pwZEdVZ2FYTWdZblZtWm1WeVpXUWdLSEpsWVdRdGVXOTFjaTEzY21sMFpYTXBJR2x1YzNSbFlXUWdiMllnYUdsMGRHbHVaMXh1SUNBZ0tpQlNaV1JwY3pzZ2IzUm9aWEozYVhObElHQklVMFZVVGxoZ0lHZDFZWEpoYm5SbFpYTWdkR2hsSUhKbFkyOXlaQ0JrYjJWeklHNXZkQ0JoYkhKbFlXUjVJR1Y0YVhOMExseHVJQ0FnS2lCQWRHVnRjR3hoZEdVZ1RTQXRJRlJvWlNCdGIyUmxiQ0IwZVhCbFhHNGdJQ0FxSUVCd1lYSmhiU0I3UTI5dWMzUnlkV04wYjNJOFRUNTlJR05zWVhwNklDMGdWR2hsSUcxdlpHVnNJR052Ym5OMGNuVmpkRzl5WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVSEpwYldGeWVVdGxlVlI1Y0dWOUlHbGtJQzBnVkdobElIVnVhWEYxWlNCeVpXTnZjbVFnYVdSbGJuUnBabWxsY2x4dUlDQWdLaUJBY0dGeVlXMGdlMUpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDU5SUcxdlpHVnNJQzBnVkdobElISmxZMjl5WkNCMGJ5QnpkRzl5WlZ4dUlDQWdLaUJBY21WMGRYSnVJSHRRY205dGFYTmxQRkpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDQrZlNCVWFHVWdjM1J2Y21Wa0lISmxZMjl5WkZ4dUlDQWdLaTljYmlBZ1lYTjVibU1nWTNKbFlYUmxQRTBnWlhoMFpXNWtjeUJOYjJSbGJENG9YRzRnSUNBZ1kyeGhlbm82SUVOdmJuTjBjblZqZEc5eVBFMCtMRnh1SUNBZ0lHbGtPaUJRY21sdFlYSjVTMlY1Vkhsd1pTeGNiaUFnSUNCdGIyUmxiRG9nVW1WamIzSmtQSE4wY21sdVp5d2dZVzU1UGl4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJEYjI1MFpYaDBkV0ZzUVhKbmN6eFNaV1JwYzBOdmJuUmxlSFErWEc0Z0lDazZJRkJ5YjIxcGMyVThVbVZqYjNKa1BITjBjbWx1Wnl3Z1lXNTVQajRnZTF4dUlDQWdJR052Ym5OMElIc2diRzluTENCamRIZ2dmU0E5SUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUhSb2FYTXVZM0psWVhSbEtUdGNiaUFnSUNCamIyNXpkQ0IwWVdKc1pTQTlJRTF2WkdWc0xuUmhZbXhsVG1GdFpTaGpiR0Y2ZWlrN1hHNGdJQ0FnYkc5bkxtUmxZblZuS0dCamNtVmhkR2x1WnlCeVpXTnZjbVFnYVc0Z2RHRmliR1VnSkh0MFlXSnNaWDBnZDJsMGFDQnBaQ0FrZTJsa2ZXQXBPMXh1SUNBZ0lHTnZibk4wSUdacFpXeGtJRDBnVTNSeWFXNW5LR2xrS1R0Y2JpQWdJQ0JqYjI1emRDQnJaWGtnUFNCMGFHbHpMbkpsWTI5eVpFdGxlU2gwWVdKc1pTazdYRzRnSUNBZ1kyOXVjM1FnYkc5amF5QTlJSFJvYVhNdVlXTjBhWFpsVEc5amF5aGpkSGdwTzF4dUlDQWdJR052Ym5OMElITmxjbWxoYkdsNlpXUWdQU0J6WlhKcFlXeHBlbVVvYlc5a1pXd3BPMXh1SUNBZ0lHbG1JQ2hzYjJOcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaWRXWm1aWEpsWkNBOUlHeHZZMnN1WjJWMFVtVmpiM0prS0hSaFlteGxMQ0JtYVdWc1pDazdYRzRnSUNBZ0lDQmpiMjV6ZENCbGVHbHpkSE1nUFZ4dUlDQWdJQ0FnSUNCaWRXWm1aWEpsWkM1bWIzVnVaQ0FtSmlCaWRXWm1aWEpsWkM1MllXeDFaU0FoUFQwZ2JuVnNiRnh1SUNBZ0lDQWdJQ0FnSUQ4Z2RISjFaVnh1SUNBZ0lDQWdJQ0FnSURvZ1lYZGhhWFFnZEdocGN5NWpiR2xsYm5RdWFFVjRhWE4wY3loclpYa3NJR1pwWld4a0tUdGNiaUFnSUNBZ0lHbG1JQ2hsZUdsemRITXBYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJEYjI1bWJHbGpkRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJR0JTWldOdmNtUWdkMmwwYUNCcFpDQWtlMmxrZlNCaGJISmxZV1I1SUdWNGFYTjBjeUJwYmlCMFlXSnNaU0FrZTNSaFlteGxmV0JjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUd4dlkyc3VjMlYwVW1WamIzSmtLSFJoWW14bExDQm1hV1ZzWkN3Z2MyVnlhV0ZzYVhwbFpDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2JXOWtaV3c3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUdOeVpXRjBaV1FnUFNCaGQyRnBkQ0IwYUdsekxtTnNhV1Z1ZEM1b1UyVjBUbGdvYTJWNUxDQm1hV1ZzWkN3Z2MyVnlhV0ZzYVhwbFpDazdYRzRnSUNBZ2FXWWdLR055WldGMFpXUWdQVDA5SURBcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1EyOXVabXhwWTNSRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWUZKbFkyOXlaQ0IzYVhSb0lHbGtJQ1I3YVdSOUlHRnNjbVZoWkhrZ1pYaHBjM1J6SUdsdUlIUmhZbXhsSUNSN2RHRmliR1Y5WUZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdiVzlrWld3N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFlXUnpJR0VnY21WamIzSmtJR1p5YjIwZ1VtVmthWE5jYmlBZ0lDb2dRSE4xYlcxaGNua2dVbVZoWkhNZ2RHaGxJSEpsWTI5eVpDQm1jbTl0SUhSb1pTQjBZV0pzWlNCb1lYTm9MaUJKYm5OcFpHVWdZU0IwY21GdWMyRmpkR2x2YmlCMGFHVmNiaUFnSUNvZ1luVm1abVZ5WldRZ2RtRnNkV1VnZDJsdWN5QW9jbVZoWkMxNWIzVnlMWGR5YVhSbGN5azdJR0VnWW5WbVptVnlaV1FnWkdWc1pYUmxJR2x6SUhSeVpXRjBaV1FnWVhNZ1lWeHVJQ0FnS2lCdGFYTnphVzVuSUhKbFkyOXlaQzVjYmlBZ0lDb2dRSFJsYlhCc1lYUmxJRTBnTFNCVWFHVWdiVzlrWld3Z2RIbHdaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwTnZibk4wY25WamRHOXlQRTArZlNCamJHRjZlaUF0SUZSb1pTQnRiMlJsYkNCamIyNXpkSEoxWTNSdmNseHVJQ0FnS2lCQWNHRnlZVzBnZTFCeWFXMWhjbmxMWlhsVWVYQmxmU0JwWkNBdElGUm9aU0IxYm1seGRXVWdjbVZqYjNKa0lHbGtaVzUwYVdacFpYSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK1BuMGdWR2hsSUhOMGIzSmxaQ0J5WldOdmNtUmNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklISmxZV1E4VFNCbGVIUmxibVJ6SUUxdlpHVnNQaWhjYmlBZ0lDQmpiR0Y2ZWpvZ1EyOXVjM1J5ZFdOMGIzSThUVDRzWEc0Z0lDQWdhV1E2SUZCeWFXMWhjbmxMWlhsVWVYQmxMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFTnZiblJsZUhSMVlXeEJjbWR6UEZKbFpHbHpRMjl1ZEdWNGRENWNiaUFnS1RvZ1VISnZiV2x6WlR4U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY3NJR04wZUNCOUlEMGdkR2hwY3k1c2IyZERkSGdvWVhKbmN5d2dkR2hwY3k1eVpXRmtLVHRjYmlBZ0lDQmpiMjV6ZENCMFlXSnNaU0E5SUUxdlpHVnNMblJoWW14bFRtRnRaU2hqYkdGNmVpazdYRzRnSUNBZ2JHOW5MbVJsWW5WbktHQnlaV0ZrYVc1bklISmxZMjl5WkNCcGJpQjBZV0pzWlNBa2UzUmhZbXhsZlNCM2FYUm9JR2xrSUNSN2FXUjlZQ2s3WEc0Z0lDQWdZMjl1YzNRZ1ptbGxiR1FnUFNCVGRISnBibWNvYVdRcE8xeHVJQ0FnSUdOdmJuTjBJR3h2WTJzZ1BTQjBhR2x6TG1GamRHbDJaVXh2WTJzb1kzUjRLVHRjYmlBZ0lDQnBaaUFvYkc5amF5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1luVm1abVZ5WldRZ1BTQnNiMk5yTG1kbGRGSmxZMjl5WkNoMFlXSnNaU3dnWm1sbGJHUXBPMXh1SUNBZ0lDQWdhV1lnS0dKMVptWmxjbVZrTG1admRXNWtLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGlkV1ptWlhKbFpDNTJZV3gxWlNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dUbTkwUm05MWJtUkZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJR0JTWldOdmNtUWdkMmwwYUNCcFpDQWtlMmxrZlNCdWIzUWdabTkxYm1RZ2FXNGdkR0ZpYkdVZ0pIdDBZV0pzWlgxZ1hHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1JsYzJWeWFXRnNhWHBsS0dKMVptWmxjbVZrTG5aaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnY21GM0lEMGdZWGRoYVhRZ2RHaHBjeTVqYkdsbGJuUXVhRWRsZENoMGFHbHpMbkpsWTI5eVpFdGxlU2gwWVdKc1pTa3NJR1pwWld4a0tUdGNiaUFnSUNCcFppQW9jbUYzSUQwOVBTQnVkV3hzSUh4OElISmhkeUE5UFQwZ2RXNWtaV1pwYm1Wa0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFNXZkRVp2ZFc1a1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUdCU1pXTnZjbVFnZDJsMGFDQnBaQ0FrZTJsa2ZTQnViM1FnWm05MWJtUWdhVzRnZEdGaWJHVWdKSHQwWVdKc1pYMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlCa1pYTmxjbWxoYkdsNlpTaHlZWGNwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJWY0dSaGRHVnpJR0Z1SUdWNGFYTjBhVzVuSUhKbFkyOXlaQ0JwYmlCU1pXUnBjMXh1SUNBZ0tpQkFjM1Z0YldGeWVTQkpibk5wWkdVZ1lTQjBjbUZ1YzJGamRHbHZiaUIwYUdVZ2QzSnBkR1VnYVhNZ1luVm1abVZ5WldRN0lHOTBhR1Z5ZDJselpTQjBhR1VnY21WamIzSmtYRzRnSUNBcUlHbHpJRzkyWlhKM2NtbDBkR1Z1SUdsdUlIQnNZV05sTGlCQklHMXBjM05wYm1jZ2NtVmpiM0prSUhKaGFYTmxjeUJoSUdCT2IzUkdiM1Z1WkVWeWNtOXlZQzVjYmlBZ0lDb2dRSFJsYlhCc1lYUmxJRTBnTFNCVWFHVWdiVzlrWld3Z2RIbHdaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwTnZibk4wY25WamRHOXlQRTArZlNCamJHRjZlaUF0SUZSb1pTQnRiMlJsYkNCamIyNXpkSEoxWTNSdmNseHVJQ0FnS2lCQWNHRnlZVzBnZTFCeWFXMWhjbmxMWlhsVWVYQmxmU0JwWkNBdElGUm9aU0IxYm1seGRXVWdjbVZqYjNKa0lHbGtaVzUwYVdacFpYSmNiaUFnSUNvZ1FIQmhjbUZ0SUh0U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK2ZTQnRiMlJsYkNBdElGUm9aU0J1WlhjZ2NtVmpiM0prSUdSaGRHRmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK1BuMGdWR2hsSUhWd1pHRjBaV1FnY21WamIzSmtYRzRnSUNBcUwxeHVJQ0JoYzNsdVl5QjFjR1JoZEdVOFRTQmxlSFJsYm1SeklFMXZaR1ZzUGloY2JpQWdJQ0JqYkdGNmVqb2dRMjl1YzNSeWRXTjBiM0k4VFQ0c1hHNGdJQ0FnYVdRNklGQnlhVzFoY25sTFpYbFVlWEJsTEZ4dUlDQWdJRzF2WkdWc09pQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFTnZiblJsZUhSMVlXeEJjbWR6UEZKbFpHbHpRMjl1ZEdWNGRENWNiaUFnS1RvZ1VISnZiV2x6WlR4U1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY3NJR04wZUNCOUlEMGdkR2hwY3k1c2IyZERkSGdvWVhKbmN5d2dkR2hwY3k1MWNHUmhkR1VwTzF4dUlDQWdJR052Ym5OMElIUmhZbXhsSUQwZ1RXOWtaV3d1ZEdGaWJHVk9ZVzFsS0dOc1lYcDZLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29ZSFZ3WkdGMGFXNW5JSEpsWTI5eVpDQnBiaUIwWVdKc1pTQWtlM1JoWW14bGZTQjNhWFJvSUdsa0lDUjdhV1I5WUNrN1hHNGdJQ0FnWTI5dWMzUWdabWxsYkdRZ1BTQlRkSEpwYm1jb2FXUXBPMXh1SUNBZ0lHTnZibk4wSUd0bGVTQTlJSFJvYVhNdWNtVmpiM0prUzJWNUtIUmhZbXhsS1R0Y2JpQWdJQ0JqYjI1emRDQnNiMk5ySUQwZ2RHaHBjeTVoWTNScGRtVk1iMk5yS0dOMGVDazdYRzRnSUNBZ1kyOXVjM1FnYzJWeWFXRnNhWHBsWkNBOUlITmxjbWxoYkdsNlpTaHRiMlJsYkNrN1hHNGdJQ0FnYVdZZ0tHeHZZMnNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR0oxWm1abGNtVmtJRDBnYkc5amF5NW5aWFJTWldOdmNtUW9kR0ZpYkdVc0lHWnBaV3hrS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JsYkdWMFpXUWdQU0JpZFdabVpYSmxaQzVtYjNWdVpDQW1KaUJpZFdabVpYSmxaQzUyWVd4MVpTQTlQVDBnYm5Wc2JEdGNiaUFnSUNBZ0lHTnZibk4wSUdWNGFYTjBjeUE5WEc0Z0lDQWdJQ0FnSUdSbGJHVjBaV1FnZkh3Z1luVm1abVZ5WldRdVptOTFibVJjYmlBZ0lDQWdJQ0FnSUNBL0lDRmtaV3hsZEdWa1hHNGdJQ0FnSUNBZ0lDQWdPaUJoZDJGcGRDQjBhR2x6TG1Oc2FXVnVkQzVvUlhocGMzUnpLR3RsZVN3Z1ptbGxiR1FwTzF4dUlDQWdJQ0FnYVdZZ0tDRmxlR2x6ZEhNcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5Qk9iM1JHYjNWdVpFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lHQlNaV052Y21RZ2QybDBhQ0JwWkNBa2UybGtmU0J1YjNRZ1ptOTFibVFnYVc0Z2RHRmliR1VnSkh0MFlXSnNaWDFnWEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCc2IyTnJMbk5sZEZKbFkyOXlaQ2gwWVdKc1pTd2dabWxsYkdRc0lITmxjbWxoYkdsNlpXUXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHMXZaR1ZzTzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCbGVHbHpkSE1nUFNCaGQyRnBkQ0IwYUdsekxtTnNhV1Z1ZEM1b1JYaHBjM1J6S0d0bGVTd2dabWxsYkdRcE8xeHVJQ0FnSUdsbUlDZ2haWGhwYzNSektWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFNXZkRVp2ZFc1a1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUdCU1pXTnZjbVFnZDJsMGFDQnBaQ0FrZTJsa2ZTQnViM1FnWm05MWJtUWdhVzRnZEdGaWJHVWdKSHQwWVdKc1pYMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXVZMnhwWlc1MExtaFRaWFFvYTJWNUxDQm1hV1ZzWkN3Z2MyVnlhV0ZzYVhwbFpDazdYRzRnSUNBZ2NtVjBkWEp1SUcxdlpHVnNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQkVaV3hsZEdWeklHRWdjbVZqYjNKa0lHWnliMjBnVW1Wa2FYTmNiaUFnSUNvZ1FITjFiVzFoY25rZ1NXNXphV1JsSUdFZ2RISmhibk5oWTNScGIyNGdkR2hsSUdSbGJHVjBaU0JwY3lCaWRXWm1aWEpsWkRzZ2IzUm9aWEozYVhObElIUm9aU0JtYVdWc1pGeHVJQ0FnS2lCcGN5QnlaVzF2ZG1Wa0lHWnliMjBnZEdobElIUmhZbXhsSUdoaGMyZ2dhVzF0WldScFlYUmxiSGt1SUVFZ2JXbHpjMmx1WnlCeVpXTnZjbVFnY21GcGMyVnpJR0ZjYmlBZ0lDb2dZRTV2ZEVadmRXNWtSWEp5YjNKZ0xseHVJQ0FnS2lCQWRHVnRjR3hoZEdVZ1RTQXRJRlJvWlNCdGIyUmxiQ0IwZVhCbFhHNGdJQ0FxSUVCd1lYSmhiU0I3UTI5dWMzUnlkV04wYjNJOFRUNTlJR05zWVhwNklDMGdWR2hsSUcxdlpHVnNJR052Ym5OMGNuVmpkRzl5WEc0Z0lDQXFJRUJ3WVhKaGJTQjdVSEpwYldGeWVVdGxlVlI1Y0dWOUlHbGtJQzBnVkdobElIVnVhWEYxWlNCeVpXTnZjbVFnYVdSbGJuUnBabWxsY2x4dUlDQWdLaUJBY21WMGRYSnVJSHRRY205dGFYTmxQRkpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDQrZlNCVWFHVWdaR1ZzWlhSbFpDQnlaV052Y21SY2JpQWdJQ292WEc0Z0lHRnplVzVqSUdSbGJHVjBaVHhOSUdWNGRHVnVaSE1nVFc5a1pXdytLRnh1SUNBZ0lHTnNZWHA2T2lCRGIyNXpkSEoxWTNSdmNqeE5QaXhjYmlBZ0lDQnBaRG9nVUhKcGJXRnllVXRsZVZSNWNHVXNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1EyOXVkR1Y0ZEhWaGJFRnlaM004VW1Wa2FYTkRiMjUwWlhoMFBseHVJQ0FwT2lCUWNtOXRhWE5sUEZKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ0K0lIdGNiaUFnSUNCamIyNXpkQ0I3SUd4dlp5d2dZM1I0SUgwZ1BTQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQjBhR2x6TG1SbGJHVjBaU2s3WEc0Z0lDQWdZMjl1YzNRZ2RHRmliR1VnUFNCTmIyUmxiQzUwWVdKc1pVNWhiV1VvWTJ4aGVub3BPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGdaR1ZzWlhScGJtY2djbVZqYjNKa0lHWnliMjBnZEdGaWJHVWdKSHQwWVdKc1pYMGdkMmwwYUNCcFpDQWtlMmxrZldBcE8xeHVJQ0FnSUdOdmJuTjBJR1pwWld4a0lEMGdVM1J5YVc1bktHbGtLVHRjYmlBZ0lDQmpiMjV6ZENCclpYa2dQU0IwYUdsekxuSmxZMjl5WkV0bGVTaDBZV0pzWlNrN1hHNGdJQ0FnWTI5dWMzUWdiRzlqYXlBOUlIUm9hWE11WVdOMGFYWmxURzlqYXloamRIZ3BPMXh1SUNBZ0lHbG1JQ2hzYjJOcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaWRXWm1aWEpsWkNBOUlHeHZZMnN1WjJWMFVtVmpiM0prS0hSaFlteGxMQ0JtYVdWc1pDazdYRzRnSUNBZ0lDQmpiMjV6ZENCeVlYY2dQU0JpZFdabVpYSmxaQzVtYjNWdVpGeHVJQ0FnSUNBZ0lDQS9JR0oxWm1abGNtVmtMblpoYkhWbFhHNGdJQ0FnSUNBZ0lEb2dZWGRoYVhRZ2RHaHBjeTVqYkdsbGJuUXVhRWRsZENoclpYa3NJR1pwWld4a0tUdGNiaUFnSUNBZ0lHbG1JQ2h5WVhjZ1BUMDlJRzUxYkd3Z2ZId2djbUYzSUQwOVBTQjFibVJsWm1sdVpXUXBYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJPYjNSR2IzVnVaRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJR0JTWldOdmNtUWdkMmwwYUNCcFpDQWtlMmxrZlNCdWIzUWdabTkxYm1RZ2FXNGdkR0ZpYkdVZ0pIdDBZV0pzWlgxZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQnNiMk5yTG1SbGJHVjBaVkpsWTI5eVpDaDBZV0pzWlN3Z1ptbGxiR1FwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR1JsYzJWeWFXRnNhWHBsS0hKaGR5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJSEpoZHlBOUlHRjNZV2wwSUhSb2FYTXVZMnhwWlc1MExtaEhaWFFvYTJWNUxDQm1hV1ZzWkNrN1hHNGdJQ0FnYVdZZ0tISmhkeUE5UFQwZ2JuVnNiQ0I4ZkNCeVlYY2dQVDA5SUhWdVpHVm1hVzVsWkNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCT2IzUkdiM1Z1WkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnVW1WamIzSmtJSGRwZEdnZ2FXUWdKSHRwWkgwZ2JtOTBJR1p2ZFc1a0lHbHVJSFJoWW14bElDUjdkR0ZpYkdWOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtTnNhV1Z1ZEM1b1JHVnNLR3RsZVN3Z1ptbGxiR1FwTzF4dUlDQWdJSEpsZEhWeWJpQmtaWE5sY21saGJHbDZaU2h5WVhjcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCTWIyRmtjeUJsZG1WeWVTQnlaV052Y21RZ2IyWWdZU0IwWVdKc1pTd2dZWEJ3YkhscGJtY2dZblZtWm1WeVpXUWdkM0pwZEdWelhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbFlXUnpJSFJvWlNCMFlXSnNaU0JvWVhOb0lHRnVaQ0J0WlhKblpYTWdkR2hsSUhSeVlXNXpZV04wYVc5dUlHSjFabVpsY2lCdmJpQjBiM0FnYzI4Z1lWeHVJQ0FnS2lCeGRXVnllU0JwYm5OcFpHVWdZU0IwY21GdWMyRmpkR2x2YmlCdlluTmxjblpsY3lCMGFHVWdkSEpoYm5OaFkzUnBiMjRuY3lCdmQyNGdkM0pwZEdWekxseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEdGaWJHVWdMU0JVYUdVZ2RHRmliR1VnS0cxdlpHVnNLU0J1WVcxbFhHNGdJQ0FxSUVCd1lYSmhiU0I3VW1Wa2FYTkRiMjUwWlhoMGZTQmJZM1I0WFNBdElGUm9aU0J2Y0dWeVlYUnBiMjRnWTI5dWRHVjRkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBGdHpkSEpwYm1jc0lITjBjbWx1WjExYlhUNTlJRlJvWlNCeVpXTnZjbVFnYVdRdmMyVnlhV0ZzYVhwbFpDQndZV2x5YzF4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lHRnplVzVqSUd4dllXUlVZV0pzWlNoY2JpQWdJQ0IwWVdKc1pUb2djM1J5YVc1bkxGeHVJQ0FnSUdOMGVEODZJRkpsWkdselEyOXVkR1Y0ZEZ4dUlDQXBPaUJRY205dGFYTmxQRnR6ZEhKcGJtY3NJSE4wY21sdVoxMWJYVDRnZTF4dUlDQWdJR052Ym5OMElISmhkeUE5SUdGM1lXbDBJSFJvYVhNdVkyeHBaVzUwTG1oSFpYUkJiR3dvZEdocGN5NXlaV052Y21STFpYa29kR0ZpYkdVcEtUdGNiaUFnSUNCamIyNXpkQ0J0WlhKblpXUWdQU0J1WlhjZ1RXRndQSE4wY21sdVp5d2djM1J5YVc1blBpaFBZbXBsWTNRdVpXNTBjbWxsY3loeVlYY3BLVHRjYmlBZ0lDQmpiMjV6ZENCc2IyTnJJRDBnZEdocGN5NWhZM1JwZG1WTWIyTnJLR04wZUNrN1hHNGdJQ0FnYVdZZ0tHeHZZMnNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR0oxWm1abGNtVmtJRDBnYkc5amF5NTBZV0pzWlVWdWRISnBaWE1vZEdGaWJHVXBPMXh1SUNBZ0lDQWdhV1lnS0dKMVptWmxjbVZrS1NCN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdXMmxrTENCMllXeDFaVjBnYjJZZ1luVm1abVZ5WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2RtRnNkV1VnUFQwOUlHNTFiR3dwSUcxbGNtZGxaQzVrWld4bGRHVW9hV1FwTzF4dUlDQWdJQ0FnSUNBZ0lHVnNjMlVnYldWeVoyVmtMbk5sZENocFpDd2dkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJiTGk0dWJXVnlaMlZrTG1WdWRISnBaWE1vS1YwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVWNFpXTjFkR1Z6SUdFZ2NtRjNJSEYxWlhKNUlHRm5ZV2x1YzNRZ1VtVmthWE5jYmlBZ0lDb2dRSE4xYlcxaGNua2dURzloWkhNZ2RHaGxJRzFoZEdOb2FXNW5JSFJoWW14bExDQnlaWFpsY25SeklHVjJaWEo1SUhKbFkyOXlaQ0IwYnlCaElHMXZaR1ZzSUdGdVpGeHVJQ0FnS2lCaGNIQnNhV1Z6SUhSb1pTQnBiaTF0WlcxdmNua2dabWxzZEdWeWFXNW5MQ0J6YjNKMGFXNW5MQ0JoWjJkeVpXZGhkR2x2YmlCaGJtUWdjR0ZuYVc1aGRHbHZiaUJzYjJkcFl5NWNiaUFnSUNvZ1ZHaHBjeUJ0YVhKeWIzSnpJSFJvWlNCamIzSmxJRkpCVFNCaFpHRndkR1Z5TENCemFXNWpaU0JTWldScGN5Qm9ZWE5vWlhNZ1lYSmxJRzV2ZENCeGRXVnllV0ZpYkdVdVhHNGdJQ0FxSUVCMFpXMXdiR0YwWlNCU0lDMGdWR2hsSUhGMVpYSjVJSEpsZEhWeWJpQjBlWEJsWEc0Z0lDQXFJRUIwWlcxd2JHRjBaU0JFSUMwZ1YyaGxkR2hsY2lCdmJteDVJR1J2WTNWdFpXNTBjeUJoY21VZ2NtVjBkWEp1WldSY2JpQWdJQ29nUUhCaGNtRnRJSHRTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDU5SUhKaGQwbHVjSFYwSUMwZ1ZHaGxJSEYxWlhKNUlITndaV05wWm1sallYUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdEVmU0JrYjJOelQyNXNlU0F0SUZkb1pYUm9aWElnZEc4Z2NtVjBkWEp1SUc5dWJIa2daRzlqZFcxbGJuUnpJQ2hrWldaaGRXeDBJSFJ5ZFdVcFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTFCeWIyMXBjMlU4VW1GM1VtVnpkV3gwUEZJc0lFUStQbjBnVkdobElIRjFaWEo1SUhKbGMzVnNkRnh1SUNBZ0tpOWNiaUFnWVhONWJtTWdjbUYzUEZJc0lFUWdaWGgwWlc1a2N5QmliMjlzWldGdVBpaGNiaUFnSUNCeVlYZEpibkIxZERvZ1VtRjNVbVZrYVhOUmRXVnllVHhoYm5rK0xGeHVJQ0FnSUdSdlkzTlBibXg1T2lCRUlEMGdkSEoxWlNCaGN5QkVMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFTnZiblJsZUhSMVlXeEJjbWR6UEZKbFpHbHpRMjl1ZEdWNGRENWNiaUFnS1RvZ1VISnZiV2x6WlR4U1lYZFNaWE4xYkhROFVpd2dSRDQrSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR3h2Wnl3Z1kzUjRJSDBnUFNCMGFHbHpMbXh2WjBOMGVDaGhjbWR6TENCMGFHbHpMbkpoZHlrN1hHNGdJQ0FnYkc5bkxtUmxZblZuS0dCd1pYSm1iM0p0YVc1bklISmhkeUJ4ZFdWeWVUb2dKSHRLVTA5T0xuTjBjbWx1WjJsbWVTaHlZWGRKYm5CMWRDbDlZQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQjdYRzRnSUNBZ0lDQjNhR1Z5WlN4Y2JpQWdJQ0FnSUhOdmNuUXNYRzRnSUNBZ0lDQnNhVzFwZEN4Y2JpQWdJQ0FnSUhOcmFYQXNYRzRnSUNBZ0lDQm1jbTl0TEZ4dUlDQWdJQ0FnWjNKdmRYQkNlU3hjYmlBZ0lDQWdJR052ZFc1ME9pQmpiM1Z1ZEVacFpXeGtMRnh1SUNBZ0lDQWdZMjkxYm5SRWFYTjBhVzVqZERvZ1kyOTFiblJFYVhOMGFXNWpkRVpwWld4a0xGeHVJQ0FnSUNBZ2JXbHVPaUJ0YVc1R2FXVnNaQ3hjYmlBZ0lDQWdJRzFoZURvZ2JXRjRSbWxsYkdRc1hHNGdJQ0FnSUNCemRXMDZJSE4xYlVacFpXeGtMRnh1SUNBZ0lDQWdZWFpuT2lCaGRtZEdhV1ZzWkN4Y2JpQWdJQ0FnSUdScGMzUnBibU4wT2lCa2FYTjBhVzVqZEVacFpXeGtMRnh1SUNBZ0lIMGdQU0J5WVhkSmJuQjFkRHRjYmlBZ0lDQnNaWFFnZXlCelpXeGxZM1FnZlNBOUlISmhkMGx1Y0hWME8xeHVJQ0FnSUdOdmJuTjBJSFJoWW14bElEMGdUVzlrWld3dWRHRmliR1ZPWVcxbEtHWnliMjBwTzF4dUlDQWdJR052Ym5OMElHVnVkSEpwWlhNZ1BTQmhkMkZwZENCMGFHbHpMbXh2WVdSVVlXSnNaU2gwWVdKc1pTd2dZM1I0S1R0Y2JpQWdJQ0JqYjI1emRDQmpiR0Y2ZWlBOUlHWnliMjA3WEc0Z0lDQWdZMjl1YzNRZ2FXUWdQU0JOYjJSbGJDNXdheWhtY205dEtUdGNiaUFnSUNCamIyNXpkQ0J3Y205d2N5QTlJRTFsZEdGa1lYUmhMbWRsZENobWNtOXRMQ0JOWlhSaFpHRjBZUzVyWlhrb1JFSkxaWGx6TGtsRUxDQnBaQ0JoY3lCemRISnBibWNwS1R0Y2JseHVJQ0FnSUd4bGRDQnlaWE4xYkhRNklHRnVlVnRkSUQwZ1pXNTBjbWxsY3k1dFlYQW9LRnR3YXl3Z2NsMHBJRDArWEc0Z0lDQWdJQ0IwYUdsekxuSmxkbVZ5ZENoY2JpQWdJQ0FnSUNBZ1pHVnpaWEpwWVd4cGVtVW9jaWtzWEc0Z0lDQWdJQ0FnSUdaeWIyMHNYRzRnSUNBZ0lDQWdJRk5sY1hWbGJtTmxMbkJoY25ObFZtRnNkV1VvY0hKdmNITXVkSGx3WlNCaGN5QmhibmtzSUhCcklHRnpJSE4wY21sdVp5a2dZWE1nYzNSeWFXNW5MRnh1SUNBZ0lDQWdJQ0IxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0FnSUdOMGVGeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrN1hHNGdJQ0FnYVdZZ0tITnZjblFwSUhKbGMzVnNkQ0E5SUhKbGMzVnNkQzV6YjNKMEtITnZjblFwTzF4dVhHNGdJQ0FnY21WemRXeDBJRDBnZDJobGNtVWdQeUJ5WlhOMWJIUXVabWxzZEdWeUtIZG9aWEpsS1NBNklISmxjM1ZzZER0Y2JseHVJQ0FnSUdsbUlDaGNJbU52ZFc1MFhDSWdhVzRnY21GM1NXNXdkWFFwSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hZMjkxYm5SR2FXVnNaQ2tnY21WMGRYSnVJSEpsYzNWc2RDNXNaVzVuZEdnZ1lYTWdkVzVyYm05M2JpQmhjeUJTWVhkU1pYTjFiSFE4VWl3Z1JENDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIzVnVkQ0E5SUhKbGMzVnNkQzVtYVd4MFpYSW9YRzRnSUNBZ0lDQWdJQ2h5S1NBOVBseHVJQ0FnSUNBZ0lDQWdJSEpiWTI5MWJuUkdhV1ZzWkNCaGN5QnpkSEpwYm1kZElDRTlQU0IxYm1SbFptbHVaV1FnSmlaY2JpQWdJQ0FnSUNBZ0lDQnlXMk52ZFc1MFJtbGxiR1FnWVhNZ2MzUnlhVzVuWFNBaFBUMGdiblZzYkZ4dUlDQWdJQ0FnS1M1c1pXNW5kR2c3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZMjkxYm5RZ1lYTWdkVzVyYm05M2JpQmhjeUJTWVhkU1pYTjFiSFE4VWl3Z1JENDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR052ZFc1MFJHbHpkR2x1WTNSR2FXVnNaQ0FoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCelpXVnVJRDBnYm1WM0lGTmxkQ2dwTzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCcGRHVnRJRzltSUhKbGMzVnNkQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IyWVd4MVpTQTlJR2wwWlcxYlkyOTFiblJFYVhOMGFXNWpkRVpwWld4a0lHRnpJSE4wY21sdVoxMDdYRzRnSUNBZ0lDQWdJR2xtSUNoMllXeDFaU0FoUFQwZ2RXNWtaV1pwYm1Wa0lDWW1JSFpoYkhWbElDRTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ0lDQWdJSE5sWlc0dVlXUmtLRXBUVDA0dWMzUnlhVzVuYVdaNUtIWmhiSFZsS1NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnYzJWbGJpNXphWHBsSUdGeklIVnVhMjV2ZDI0Z1lYTWdVbUYzVW1WemRXeDBQRklzSUVRK08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHRhVzVHYVdWc1pDQWhQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbVZ1YzNWeVpVWnBaV3hrVkhsd1pTaGNiaUFnSUNBZ0lDQWdZMnhoZW5vc1hHNGdJQ0FnSUNBZ0lHMXBia1pwWld4a0lHRnpJSE4wY21sdVp5eGNiaUFnSUNBZ0lDQWdYQ0pOU1U0Z2IzQmxjbUYwYVc5dVhDSXNYRzRnSUNBZ0lDQWdJQ2gwZVhCbEtTQTlQaUIwYUdsekxtbHpUblZ0WlhKcFkxUjVjR1VvZEhsd1pTa2dmSHdnZEhsd1pTQTlQVDBnWENKa1lYUmxYQ0lzWEc0Z0lDQWdJQ0FnSUZ3aWJuVnRaWEpwWXlCdmNpQmtZWFJsWENKY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCcFppQW9jbVZ6ZFd4MExteGxibWQwYUNBOVBUMGdNQ2tnY21WMGRYSnVJRzUxYkd3Z1lYTWdkVzVyYm05M2JpQmhjeUJTWVhkU1pYTjFiSFE4VWl3Z1JENDdYRzRnSUNBZ0lDQmpiMjV6ZENCMllXeDFaWE1nUFNCeVpYTjFiSFJjYmlBZ0lDQWdJQ0FnTG0xaGNDZ29jaWtnUFQ0Z2NsdHRhVzVHYVdWc1pDQmhjeUJ6ZEhKcGJtZGRLVnh1SUNBZ0lDQWdJQ0F1Wm1sc2RHVnlLQ2gyS1NBOVBpQjJJQ0U5UFNCMWJtUmxabWx1WldRZ0ppWWdkaUFoUFQwZ2JuVnNiQ2s3WEc0Z0lDQWdJQ0JwWmlBb2RtRnNkV1Z6TG14bGJtZDBhQ0E5UFQwZ01Da2djbVYwZFhKdUlHNTFiR3dnWVhNZ2RXNXJibTkzYmlCaGN5QlNZWGRTWlhOMWJIUThVaXdnUkQ0N1hHNGdJQ0FnSUNCc1pYUWdiV2x1Vm1Gc2RXVWdQU0IyWVd4MVpYTmJNRjA3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUhZZ2IyWWdkbUZzZFdWektTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTnZiWEJoY21semIyNGdQVnh1SUNBZ0lDQWdJQ0FnSUhZZ2FXNXpkR0Z1WTJWdlppQkVZWFJsWEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JSFl1WjJWMFZHbHRaU2dwWEc0Z0lDQWdJQ0FnSUNBZ0lDQTZJSFI1Y0dWdlppQjJJRDA5UFNCY0ltSnBaMmx1ZEZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUQ4Z1RuVnRZbVZ5S0hZcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ1RuVnRZbVZ5S0hZcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdGFXNURiMjF3WVhKcGMyOXVJRDFjYmlBZ0lDQWdJQ0FnSUNCdGFXNVdZV3gxWlNCcGJuTjBZVzVqWlc5bUlFUmhkR1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lEOGdiV2x1Vm1Gc2RXVXVaMlYwVkdsdFpTZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBNklIUjVjR1Z2WmlCdGFXNVdZV3gxWlNBOVBUMGdYQ0ppYVdkcGJuUmNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQS9JRTUxYldKbGNpaHRhVzVXWVd4MVpTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ09pQk9kVzFpWlhJb2JXbHVWbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWTI5dGNHRnlhWE52YmlBOElHMXBia052YlhCaGNtbHpiMjRwSUcxcGJsWmhiSFZsSUQwZ2RqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCdGFXNVdZV3gxWlNCaGN5QjFibXR1YjNkdUlHRnpJRkpoZDFKbGMzVnNkRHhTTENCRVBqdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iV0Y0Um1sbGJHUWdJVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVsYm5OMWNtVkdhV1ZzWkZSNWNHVW9YRzRnSUNBZ0lDQWdJR05zWVhwNkxGeHVJQ0FnSUNBZ0lDQnRZWGhHYVdWc1pDQmhjeUJ6ZEhKcGJtY3NYRzRnSUNBZ0lDQWdJRndpVFVGWUlHOXdaWEpoZEdsdmJsd2lMRnh1SUNBZ0lDQWdJQ0FvZEhsd1pTa2dQVDRnZEdocGN5NXBjMDUxYldWeWFXTlVlWEJsS0hSNWNHVXBJSHg4SUhSNWNHVWdQVDA5SUZ3aVpHRjBaVndpTEZ4dUlDQWdJQ0FnSUNCY0ltNTFiV1Z5YVdNZ2IzSWdaR0YwWlZ3aVhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDNXNaVzVuZEdnZ1BUMDlJREFwSUhKbGRIVnliaUJ1ZFd4c0lHRnpJSFZ1YTI1dmQyNGdZWE1nVW1GM1VtVnpkV3gwUEZJc0lFUStPMXh1SUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1Z6SUQwZ2NtVnpkV3gwWEc0Z0lDQWdJQ0FnSUM1dFlYQW9LSElwSUQwK0lISmJiV0Y0Um1sbGJHUWdZWE1nYzNSeWFXNW5YU2xjYmlBZ0lDQWdJQ0FnTG1acGJIUmxjaWdvZGlrZ1BUNGdkaUFoUFQwZ2RXNWtaV1pwYm1Wa0lDWW1JSFlnSVQwOUlHNTFiR3dwTzF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsY3k1c1pXNW5kR2dnUFQwOUlEQXBJSEpsZEhWeWJpQnVkV3hzSUdGeklIVnVhMjV2ZDI0Z1lYTWdVbUYzVW1WemRXeDBQRklzSUVRK08xeHVJQ0FnSUNBZ2JHVjBJRzFoZUZaaGJIVmxJRDBnZG1Gc2RXVnpXekJkTzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCMklHOW1JSFpoYkhWbGN5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmpiMjF3WVhKcGMyOXVJRDFjYmlBZ0lDQWdJQ0FnSUNCMklHbHVjM1JoYm1ObGIyWWdSR0YwWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdQeUIyTG1kbGRGUnBiV1VvS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdPaUIwZVhCbGIyWWdkaUE5UFQwZ1hDSmlhV2RwYm5SY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lFNTFiV0psY2loMktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBNklFNTFiV0psY2loMktUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JXRjRRMjl0Y0dGeWFYTnZiaUE5WEc0Z0lDQWdJQ0FnSUNBZ2JXRjRWbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQkVZWFJsWEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JRzFoZUZaaGJIVmxMbWRsZEZScGJXVW9LVnh1SUNBZ0lDQWdJQ0FnSUNBZ09pQjBlWEJsYjJZZ2JXRjRWbUZzZFdVZ1BUMDlJRndpWW1sbmFXNTBYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdQeUJPZFcxaVpYSW9iV0Y0Vm1Gc2RXVXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dUblZ0WW1WeUtHMWhlRlpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJYQmhjbWx6YjI0Z1BpQnRZWGhEYjIxd1lYSnBjMjl1S1NCdFlYaFdZV3gxWlNBOUlIWTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z2JXRjRWbUZzZFdVZ1lYTWdkVzVyYm05M2JpQmhjeUJTWVhkU1pYTjFiSFE4VWl3Z1JENDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSE4xYlVacFpXeGtJQ0U5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lIUm9hWE11Wlc1emRYSmxSbWxsYkdSVWVYQmxLRnh1SUNBZ0lDQWdJQ0JqYkdGNmVpeGNiaUFnSUNBZ0lDQWdjM1Z0Um1sbGJHUWdZWE1nYzNSeWFXNW5MRnh1SUNBZ0lDQWdJQ0JjSWxOVlRTQnZjR1Z5WVhScGIyNWNJaXhjYmlBZ0lDQWdJQ0FnS0hSNWNHVXBJRDArSUhSb2FYTXVhWE5PZFcxbGNtbGpWSGx3WlNoMGVYQmxLU3hjYmlBZ0lDQWdJQ0FnWENKdWRXMWxjbWxqWENKY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCcFppQW9jbVZ6ZFd4MExteGxibWQwYUNBOVBUMGdNQ2tnY21WMGRYSnVJRzUxYkd3Z1lYTWdkVzVyYm05M2JpQmhjeUJTWVhkU1pYTjFiSFE4VWl3Z1JENDdYRzRnSUNBZ0lDQmpiMjV6ZENCMllXeDFaWE1nUFNCeVpYTjFiSFJjYmlBZ0lDQWdJQ0FnTG0xaGNDZ29jaWtnUFQ0Z2NsdHpkVzFHYVdWc1pDQmhjeUJ6ZEhKcGJtZGRLVnh1SUNBZ0lDQWdJQ0F1Wm1sc2RHVnlLQ2gyS1NBOVBpQjJJQ0U5UFNCMWJtUmxabWx1WldRZ0ppWWdkaUFoUFQwZ2JuVnNiQ2s3WEc0Z0lDQWdJQ0JwWmlBb2RtRnNkV1Z6TG14bGJtZDBhQ0E5UFQwZ01Da2djbVYwZFhKdUlHNTFiR3dnWVhNZ2RXNXJibTkzYmlCaGN5QlNZWGRTWlhOMWJIUThVaXdnUkQ0N1hHNGdJQ0FnSUNCamIyNXpkQ0J6ZFcwZ1BTQjJZV3gxWlhNdWNtVmtkV05sS0Z4dUlDQWdJQ0FnSUNBb1lXTmpMQ0IyS1NBOVBseHVJQ0FnSUNBZ0lDQWdJR0ZqWXlBcklIUm9hWE11ZEc5T2RXMWxjbWxqVm1Gc2RXVW9kaXdnYzNWdFJtbGxiR1FnWVhNZ2MzUnlhVzVuTENCY0lsTlZUU0J2Y0dWeVlYUnBiMjVjSWlrc1hHNGdJQ0FnSUNBZ0lEQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2MzVnRJR0Z6SUhWdWEyNXZkMjRnWVhNZ1VtRjNVbVZ6ZFd4MFBGSXNJRVErTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoaGRtZEdhV1ZzWkNBaFBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm1hV1ZzWkZSNWNHVWdQU0IwYUdsekxuSmxjMjlzZG1WR2FXVnNaRlI1Y0dVb1kyeGhlbm9zSUdGMlowWnBaV3hrSUdGeklITjBjbWx1WnlrN1hHNGdJQ0FnSUNCamIyNXpkQ0JwYzBSaGRHVkdhV1ZzWkNBOUlHWnBaV3hrVkhsd1pTQTlQVDBnWENKa1lYUmxYQ0k3WEc0Z0lDQWdJQ0IwYUdsekxtVnVjM1Z5WlVacFpXeGtWSGx3WlNoY2JpQWdJQ0FnSUNBZ1kyeGhlbm9zWEc0Z0lDQWdJQ0FnSUdGMlowWnBaV3hrSUdGeklITjBjbWx1Wnl4Y2JpQWdJQ0FnSUNBZ1hDSkJWa2NnYjNCbGNtRjBhVzl1WENJc1hHNGdJQ0FnSUNBZ0lDaDBlWEJsS1NBOVBpQjBhR2x6TG1selRuVnRaWEpwWTFSNWNHVW9kSGx3WlNrZ2ZId2dkSGx3WlNBOVBUMGdYQ0prWVhSbFhDSXNYRzRnSUNBZ0lDQWdJRndpYm5WdFpYSnBZeUJ2Y2lCa1lYUmxYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0JwWmlBb2NtVnpkV3gwTG14bGJtZDBhQ0E5UFQwZ01Da2djbVYwZFhKdUlHNTFiR3dnWVhNZ2RXNXJibTkzYmlCaGN5QlNZWGRTWlhOMWJIUThVaXdnUkQ0N1hHNGdJQ0FnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J5WlhOMWJIUmNiaUFnSUNBZ0lDQWdMbTFoY0Nnb2Npa2dQVDRnY2x0aGRtZEdhV1ZzWkNCaGN5QnpkSEpwYm1kZEtWeHVJQ0FnSUNBZ0lDQXVabWxzZEdWeUtDaDJLU0E5UGlCMklDRTlQU0IxYm1SbFptbHVaV1FnSmlZZ2RpQWhQVDBnYm5Wc2JDazdYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RXVnpMbXhsYm1kMGFDQTlQVDBnTUNrZ2NtVjBkWEp1SUc1MWJHd2dZWE1nZFc1cmJtOTNiaUJoY3lCU1lYZFNaWE4xYkhROFVpd2dSRDQ3WEc0Z0lDQWdJQ0JwWmlBb2FYTkVZWFJsUm1sbGJHUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkR2x0WlhOMFlXMXdjeUE5SUhaaGJIVmxjeTV0WVhBb0tIWXBJRDArWEc0Z0lDQWdJQ0FnSUNBZ2RpQnBibk4wWVc1alpXOW1JRVJoZEdVZ1B5QjJMbWRsZEZScGJXVW9LU0E2SUc1bGR5QkVZWFJsS0hZcExtZGxkRlJwYldVb0tWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmhkbWRVYVcxbGMzUmhiWEFnUFZ4dUlDQWdJQ0FnSUNBZ0lIUnBiV1Z6ZEdGdGNITXVjbVZrZFdObEtDaGhZMk1zSUhRcElEMCtJR0ZqWXlBcklIUXNJREFwSUM4Z2RHbHRaWE4wWVcxd2N5NXNaVzVuZEdnN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dSR0YwWlNoaGRtZFVhVzFsYzNSaGJYQXBJR0Z6SUhWdWEyNXZkMjRnWVhNZ1VtRjNVbVZ6ZFd4MFBGSXNJRVErTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWTI5dWMzUWdkRzkwWVd3Z1BTQjJZV3gxWlhNdWNtVmtkV05sS0Z4dUlDQWdJQ0FnSUNBb1lXTmpMQ0IyS1NBOVBseHVJQ0FnSUNBZ0lDQWdJR0ZqWXlBcklIUm9hWE11ZEc5T2RXMWxjbWxqVm1Gc2RXVW9kaXdnWVhablJtbGxiR1FnWVhNZ2MzUnlhVzVuTENCY0lrRldSeUJ2Y0dWeVlYUnBiMjVjSWlrc1hHNGdJQ0FnSUNBZ0lEQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnlaWFIxY200Z0tIUnZkR0ZzSUM4Z2RtRnNkV1Z6TG14bGJtZDBhQ2tnWVhNZ2RXNXJibTkzYmlCaGN5QlNZWGRTWlhOMWJIUThVaXdnUkQ0N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHUnBjM1JwYm1OMFJtbGxiR1FnSVQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2MyVmxiaUE5SUc1bGR5QlRaWFFvS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JwYzNScGJtTjBVbVZ6ZFd4MGN6b2dZVzU1VzEwZ1BTQmJYVHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnYVhSbGJTQnZaaUJ5WlhOMWJIUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkbUZzZFdVZ1BTQnBkR1Z0VzJScGMzUnBibU4wUm1sbGJHUWdZWE1nYzNSeWFXNW5YVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdhMlY1SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYTmxaVzR1YUdGektHdGxlU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpaV1Z1TG1Ga1pDaHJaWGtwTzF4dUlDQWdJQ0FnSUNBZ0lHUnBjM1JwYm1OMFVtVnpkV3gwY3k1d2RYTm9LSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHUnBjM1JwYm1OMFVtVnpkV3gwY3lCaGN5QjFibXR1YjNkdUlHRnpJRkpoZDFKbGMzVnNkRHhTTENCRVBqdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdZMjkxYm5RNklHNTFiV0psY2p0Y2JpQWdJQ0JzWlhRZ2IzVjBjSFYwT2lCaGJubGJYU0I4SUZKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ0N1hHNGdJQ0FnYVdZZ0tHZHliM1Z3UW5rZ0ppWWdaM0p2ZFhCQ2VTNXNaVzVuZEdncElIdGNiaUFnSUNBZ0lHTnZibk4wSUdkeWIzVndaV1FnUFNCMGFHbHpMbWR5YjNWd1VtVmpiM0prY3loeVpYTjFiSFFzSUdkeWIzVndRbmtnWVhNZ0tHdGxlVzltSUUxdlpHVnNLVnRkS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR3RsZVhNZ1BTQlBZbXBsWTNRdWEyVjVjeWhuY205MWNHVmtLVHRjYmlBZ0lDQWdJR052ZFc1MElEMGdhMlY1Y3k1c1pXNW5kR2c3WEc0Z0lDQWdJQ0J2ZFhSd2RYUWdQU0IwYUdsekxtRndjR3g1UjNKdmRYQlFZV2RwYm1GMGFXOXVLR2R5YjNWd1pXUXNJSE5yYVhBc0lHeHBiV2wwS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMjkxYm5RZ1BTQnlaWE4xYkhRdWJHVnVaM1JvTzF4dUlDQWdJQ0FnYkdWMElIQmhaMlZrSUQwZ2NtVnpkV3gwTzF4dUlDQWdJQ0FnYVdZZ0tITnJhWEFwSUhCaFoyVmtJRDBnY0dGblpXUXVjMnhwWTJVb2MydHBjQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JHbHRhWFFwSUhCaFoyVmtJRDBnY0dGblpXUXVjMnhwWTJVb01Dd2diR2x0YVhRcE8xeHVJQ0FnSUNBZ2IzVjBjSFYwSUQwZ2NHRm5aV1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hObGJHVmpkQ0FtSmlBaEtHZHliM1Z3UW5rZ0ppWWdaM0p2ZFhCQ2VTNXNaVzVuZEdncEtTQjdYRzRnSUNBZ0lDQnpaV3hsWTNRZ1BTQkJjbkpoZVM1cGMwRnljbUY1S0hObGJHVmpkQ2tnUHlCelpXeGxZM1FnT2lCYmMyVnNaV04wWFR0Y2JpQWdJQ0FnSUc5MWRIQjFkQ0E5SUNodmRYUndkWFFnWVhNZ1lXNTVXMTBwTG0xaGNDZ29jbTkzS1NBOVBseHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdVpXNTBjbWxsY3loeWIzY3BMbkpsWkhWalpTZ29ZV05qT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK0xDQmJhMlY1TENCMllXeGRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NoelpXeGxZM1FnWVhNZ2MzUnlhVzVuVzEwcExtbHVZMngxWkdWektHdGxlU2twSUdGalkxdHJaWGxkSUQwZ2RtRnNPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJoWTJNN1hHNGdJQ0FnSUNBZ0lIMHNJSHQ5S1Z4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1pHOWpjMDl1YkhrcElISmxkSFZ5YmlCdmRYUndkWFFnWVhNZ2RXNXJibTkzYmlCaGN5QlNZWGRTWlhOMWJIUThVaXdnUkQ0N1hHNGdJQ0FnY21WMGRYSnVJSHNnWkdGMFlUb2diM1YwY0hWMExDQmpiM1Z1ZENCOUlHRnpJRkpoZDFKbGMzVnNkRHhTTENCRVBqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1IzSnZkWEJ6SUhKbFkyOXlaSE1nWW5rZ2IyNWxJRzl5SUcxdmNtVWdZWFIwY21saWRYUmxjMXh1SUNBZ0tpQkFjM1Z0YldGeWVTQlNaV04xY25OcGRtVnNlU0J1WlhOMGN5Qm5jbTkxY0hNZ2QyaGxiaUJ0ZFd4MGFYQnNaU0J6Wld4bFkzUnZjbk1nWVhKbElIQnliM1pwWkdWa095QjBhR1ZjYmlBZ0lDb2dkRzl3TFd4bGRtVnNJSEpsYzNWc2RDQnRZWEJ6SUdWaFkyZ2daM0p2ZFhBZ2EyVjVJSFJ2SUhSb1pTQnRZWFJqYUdsdVp5QnlaV052Y21SeklDaHZjaUJ1WlhOMFpXUWdaM0p2ZFhCektTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aGJubGJYWDBnY21WamIzSmtjeUF0SUZSb1pTQnlaV052Y21SeklIUnZJR2R5YjNWd1hHNGdJQ0FxSUVCd1lYSmhiU0I3S0d0bGVXOW1JRTF2WkdWc0tWdGRmU0J6Wld4bFkzUnZjbk1nTFNCVWFHVWdZWFIwY21saWRYUmxjeUIwYnlCbmNtOTFjQ0JpZVZ4dUlDQWdLaUJBY21WMGRYSnVJSHRTWldOdmNtUThjM1J5YVc1bkxDQmhibmsrZlNCVWFHVWdaM0p2ZFhCbFpDQnlaV052Y21SeklHdGxlV1ZrSUdKNUlHNXZjbTFoYkdsNlpXUWdaM0p2ZFhBZ2EyVjVjMXh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JuY205MWNGSmxZMjl5WkhNb1hHNGdJQ0FnY21WamIzSmtjem9nWVc1NVcxMHNYRzRnSUNBZ2MyVnNaV04wYjNKek9pQW9hMlY1YjJZZ1RXOWtaV3dwVzExY2JpQWdLVG9nVW1WamIzSmtQSE4wY21sdVp5d2dZVzU1UGlCN1hHNGdJQ0FnYVdZZ0tDRnpaV3hsWTNSdmNuTXViR1Z1WjNSb0tTQnlaWFIxY200Z2NtVmpiM0prY3lCaGN5QlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytPMXh1SUNBZ0lHTnZibk4wSUZ0amRYSnlaVzUwTENBdUxpNXlaWE4wWFNBOUlITmxiR1ZqZEc5eWN6dGNiaUFnSUNCamIyNXpkQ0JuY205MWNHVmtPaUJTWldOdmNtUThjM1J5YVc1bkxDQmhibmxiWFQ0Z1BTQjdmVHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSEpsWTI5eVpDQnZaaUJ5WldOdmNtUnpLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnJaWGtnUFNCMGFHbHpMbTV2Y20xaGJHbDZaVWR5YjNWd1MyVjVLSEpsWTI5eVpGdGpkWEp5Wlc1MElHRnpJSE4wY21sdVoxMHBPMXh1SUNBZ0lDQWdhV1lnS0NGbmNtOTFjR1ZrVzJ0bGVWMHBJR2R5YjNWd1pXUmJhMlY1WFNBOUlGdGRPMXh1SUNBZ0lDQWdaM0p2ZFhCbFpGdHJaWGxkTG5CMWMyZ29jbVZqYjNKa0tUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tDRnlaWE4wTG14bGJtZDBhQ2tnY21WMGRYSnVJR2R5YjNWd1pXUTdYRzRnSUNBZ1kyOXVjM1FnYm1WemRHVmtPaUJTWldOdmNtUThjM1J5YVc1bkxDQmhibmsrSUQwZ2UzMDdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmJhMlY1TENCMllXeDFaWE5kSUc5bUlFOWlhbVZqZEM1bGJuUnlhV1Z6S0dkeWIzVndaV1FwS1NCN1hHNGdJQ0FnSUNCdVpYTjBaV1JiYTJWNVhTQTlJSFJvYVhNdVozSnZkWEJTWldOdmNtUnpLSFpoYkhWbGN5d2djbVZ6ZENrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVaWE4wWldRN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUU1dmNtMWhiR2w2WlhNZ1lTQm5jbTkxY0NCclpYa2dkRzhnWVNCemRISnBibWRjYmlBZ0lDb2dRSE4xYlcxaGNua2dVSEp2WkhWalpYTWdZU0J6ZEdGaWJHVWdjM1J5YVc1bklHdGxlU0JtYjNJZ1lIVnVaR1ZtYVc1bFpHQXNJR0J1ZFd4c1lDd2djM2x0WW05c2N5eGNiaUFnSUNvZ2IySnFaV04wY3lBb2RtbGhJRXBUVDA0cElHRnVaQ0J3Y21sdGFYUnBkbVZ6TGx4dUlDQWdLaUJBY0dGeVlXMGdlMkZ1ZVgwZ2RtRnNkV1VnTFNCVWFHVWdjbUYzSUdkeWIzVndJR3RsZVNCMllXeDFaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlGUm9aU0J1YjNKdFlXeHBlbVZrSUd0bGVWeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQnViM0p0WVd4cGVtVkhjbTkxY0V0bGVTaDJZV3gxWlRvZ1lXNTVLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2NtVjBkWEp1SUZ3aWRXNWtaV1pwYm1Wa1hDSTdYRzRnSUNBZ2FXWWdLSFpoYkhWbElEMDlQU0J1ZFd4c0tTQnlaWFIxY200Z1hDSnVkV3hzWENJN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMllXeDFaU0E5UFQwZ1hDSnplVzFpYjJ4Y0lpa2djbVYwZFhKdUlIWmhiSFZsTG5SdlUzUnlhVzVuS0NrN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMllXeDFaU0E5UFQwZ1hDSnZZbXBsWTNSY0lpa2dlMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUVwVFQwNHVjM1J5YVc1bmFXWjVLSFpoYkhWbEtUdGNiaUFnSUNBZ0lIMGdZMkYwWTJnZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1UzUnlhVzVuS0haaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUZOMGNtbHVaeWgyWVd4MVpTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFRndjR3hwWlhNZ2MydHBjQzlzYVcxcGRDQndZV2RwYm1GMGFXOXVJRzkyWlhJZ1ozSnZkWEJsWkNCeVpYTjFiSFJ6WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRkJoWjJWeklIUm9aU0JuY205MWNDQnJaWGx6SUhkb2FXeGxJSEJ5WlhObGNuWnBibWNnZEdobGFYSWdZWE56YjJOcFlYUmxaQ0J5WldOdmNtUnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZMjl5WkR4emRISnBibWNzSUdGdWVUNTlJR2R5YjNWd1pXUWdMU0JVYUdVZ1ozSnZkWEJsWkNCeVpXTnZjbVJ6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJjMnRwY0YwZ0xTQlVhR1VnYm5WdFltVnlJRzltSUdkeWIzVndjeUIwYnlCemEybHdYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJHbHRhWFJkSUMwZ1ZHaGxJRzFoZUdsdGRXMGdiblZ0WW1WeUlHOW1JR2R5YjNWd2N5QjBieUJ5WlhSMWNtNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBuMGdWR2hsSUhCaFoyVmtJR2R5YjNWd2MxeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmhjSEJzZVVkeWIzVndVR0ZuYVc1aGRHbHZiaWhjYmlBZ0lDQm5jbTkxY0dWa09pQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytMRnh1SUNBZ0lITnJhWEEvT2lCdWRXMWlaWElzWEc0Z0lDQWdiR2x0YVhRL09pQnVkVzFpWlhKY2JpQWdLVG9nVW1WamIzSmtQSE4wY21sdVp5d2dZVzU1UGlCN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCemEybHdJRDA5UFNCY0luVnVaR1ZtYVc1bFpGd2lJQ1ltSUhSNWNHVnZaaUJzYVcxcGRDQTlQVDBnWENKMWJtUmxabWx1WldSY0lpbGNiaUFnSUNBZ0lISmxkSFZ5YmlCbmNtOTFjR1ZrTzF4dUlDQWdJR052Ym5OMElHdGxlWE1nUFNCUFltcGxZM1F1YTJWNWN5aG5jbTkxY0dWa0tUdGNiaUFnSUNCamIyNXpkQ0J6ZEdGeWRDQTlJSE5yYVhBZ1B6OGdNRHRjYmlBZ0lDQmpiMjV6ZENCbGJtUWdQU0IwZVhCbGIyWWdiR2x0YVhRZ1BUMDlJRndpZFc1a1pXWnBibVZrWENJZ1B5QjFibVJsWm1sdVpXUWdPaUJ6ZEdGeWRDQXJJR3hwYldsME8xeHVJQ0FnSUdOdmJuTjBJSEJoWjJWa09pQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytJRDBnZTMwN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCclpYa2diMllnYTJWNWN5NXpiR2xqWlNoemRHRnlkQ3dnWlc1a0tTa2dlMXh1SUNBZ0lDQWdjR0ZuWldSYmEyVjVYU0E5SUdkeWIzVndaV1JiYTJWNVhUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEJoWjJWa08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCUVlYSnpaWE1nWVc1a0lHTnZiblpsY25SeklHVnljbTl5Y3lCMGJ5QmhjSEJ5YjNCeWFXRjBaU0IwZVhCbGMxeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCU1pYUjFjbTV6SUdCQ1lYTmxSWEp5YjNKZ0lHbHVjM1JoYm1ObGN5QjFibU5vWVc1blpXUXNJRzFoY0hNZ1kyOXVibVZqZEdsdmJseHVJQ0FnS2lCbVlXbHNkWEpsY3lCMGJ5QmdRMjl1Ym1WamRHbHZia1Z5Y205eVlDQmhibVFnZDNKaGNITWdaWFpsY25sMGFHbHVaeUJsYkhObElHbHVJR0Z1WEc0Z0lDQXFJR0JKYm5SbGNtNWhiRVZ5Y205eVlDNWNiaUFnSUNvZ1FIUmxiWEJzWVhSbElGWWdMU0JVYUdVZ1pYaHdaV04wWldRZ1pYSnliM0lnZEhsd1pWeHVJQ0FnS2lCQWNHRnlZVzBnZTBWeWNtOXlmU0JsY25JZ0xTQlVhR1VnWlhKeWIzSWdkRzhnY0dGeWMyVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1ZuMGdWR2hsSUhCaGNuTmxaQ0JsY25KdmNseHVJQ0FnS2k5Y2JpQWdjR0Z5YzJWRmNuSnZjanhXSUdWNGRHVnVaSE1nUW1GelpVVnljbTl5UGlobGNuSTZJRVZ5Y205eUtUb2dWaUI3WEc0Z0lDQWdhV1lnS0dWeWNpQnBibk4wWVc1alpXOW1JRUpoYzJWRmNuSnZjaWtnY21WMGRYSnVJR1Z5Y2lCaGN5QldPMXh1SUNBZ0lHTnZibk4wSUcxbGMzTmhaMlVnUFNBb1pYSnlJR0Z6SUdGdWVTay9MbTFsYzNOaFoyVWdQejhnVTNSeWFXNW5LR1Z5Y2lrN1hHNGdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0wwVkRUMDVPVWtWR1ZWTkZSSHhGVGs5VVJrOVZUa1I4UlZSSlRVVkVUMVZVZkVOdmJtNWxZM1JwYjI0Z2FYTWdZMnh2YzJWa2ZGTnZZMnRsZENCamJHOXpaV1I4VjFKUFRrZFFRVk5UZkU1UFFWVlVTQzlwTG5SbGMzUW9YRzRnSUNBZ0lDQWdJRzFsYzNOaFoyVmNiaUFnSUNBZ0lDbGNiaUFnSUNBcFhHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFTnZibTVsWTNScGIyNUZjbkp2Y2lobGNuSXBJR0Z6SUZZN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLR1Z5Y2lrZ1lYTWdWanRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdRM0psWVhSbGN5QmhJRzVsZHlCemRHRjBaVzFsYm5RZ1luVnBiR1JsY2lCbWIzSWdjWFZsY21sbGMxeHVJQ0FnS2lCQWRHVnRjR3hoZEdVZ1RTQXRJRlJvWlNCdGIyUmxiQ0IwZVhCbElHWnZjaUIwYUdVZ2MzUmhkR1Z0Wlc1MFhHNGdJQ0FxSUVCd1lYSmhiU0I3VUdGeWRHbGhiRHhCWkdGd2RHVnlSbXhoWjNNK2ZTQmJiM1psY25KcFpHVnpYU0F0SUU5d2RHbHZibUZzSUdGa1lYQjBaWElnWm14aFp5QnZkbVZ5Y21sa1pYTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VtVmthWE5UZEdGMFpXMWxiblE4VFN3Z1lXNTVMQ0JCWkdGd2RHVnlQQzR1TGo0K2ZTQkJJRzVsZHlCemRHRjBaVzFsYm5RZ1luVnBiR1JsY2x4dUlDQWdLaTljYmlBZ1UzUmhkR1Z0Wlc1MFBFMGdaWGgwWlc1a2N5Qk5iMlJsYkR4aWIyOXNaV0Z1UGo0b1hHNGdJQ0FnYjNabGNuSnBaR1Z6UHpvZ1VHRnlkR2xoYkR4QlpHRndkR1Z5Um14aFozTStYRzRnSUNrNklGSmxaR2x6VTNSaGRHVnRaVzUwUEUwc0lHRnVlU3dnUVdSaGNIUmxjanhoYm5rc0lHRnVlU3dnVW1GM1VtVmthWE5SZFdWeWVUeE5QaXdnVW1Wa2FYTkRiMjUwWlhoMFBqNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVbVZrYVhOVGRHRjBaVzFsYm5ROFhHNGdJQ0FnSUNCTkxGeHVJQ0FnSUNBZ1lXNTVMRnh1SUNBZ0lDQWdRV1JoY0hSbGNqeGhibmtzSUdGdWVTd2dVbUYzVW1Wa2FYTlJkV1Z5ZVR4TlBpd2dVbVZrYVhORGIyNTBaWGgwUGx4dUlDQWdJRDRvZEdocGN5QmhjeUJoYm5rc0lHOTJaWEp5YVdSbGN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnlaV0YwWlhNZ1lTQnVaWGNnY0dGbmFXNWhkRzl5SUdadmNpQnhkV1Z5YVdWelhHNGdJQ0FxSUVCMFpXMXdiR0YwWlNCTklDMGdWR2hsSUcxdlpHVnNJSFI1Y0dVZ1ptOXlJSFJvWlNCd1lXZHBibUYwYjNKY2JpQWdJQ29nUUhCaGNtRnRJSHRTWVhkU1pXUnBjMUYxWlhKNWZTQnhkV1Z5ZVNBdElGUm9aU0J4ZFdWeWVTQjBieUJ3WVdkcGJtRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2MybDZaU0F0SUZSb1pTQndZV2RsSUhOcGVtVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0RGIyNXpkSEoxWTNSdmNqeE5QbjBnWTJ4aGVub2dMU0JVYUdVZ2JXOWtaV3dnWTI5dWMzUnlkV04wYjNKY2JpQWdJQ29nUUhKbGRIVnliaUI3VW1Wa2FYTlFZV2RwYm1GMGIzSThUVDU5SUVFZ2JtVjNJSEJoWjJsdVlYUnZjbHh1SUNBZ0tpOWNiaUFnVUdGbmFXNWhkRzl5UEUwZ1pYaDBaVzVrY3lCTmIyUmxiRHhpYjI5c1pXRnVQajRvWEc0Z0lDQWdjWFZsY25rNklGSmhkMUpsWkdselVYVmxjbmtzWEc0Z0lDQWdjMmw2WlRvZ2JuVnRZbVZ5TEZ4dUlDQWdJR05zWVhwNk9pQkRiMjV6ZEhKMVkzUnZjanhOUGx4dUlDQXBPaUJTWldScGMxQmhaMmx1WVhSdmNqeE5QaUI3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJTWldScGMxQmhaMmx1WVhSdmNpaDBhR2x6TENCeGRXVnllU3dnYzJsNlpTd2dZMnhoZW5vcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCV1lXeHBaR0YwWlhNZ2RHaGhkQ0JoYmlCaFoyZHlaV2RoZEdsdmJpQjBZWEpuWlhSeklHRnVJR0YwZEhKcFluVjBaU0J2WmlCMGFHVWdaWGh3WldOMFpXUWdhMmx1WkZ4dUlDQWdLaUJBYzNWdGJXRnllU0JTWlhOdmJIWmxjeUIwYUdVZ1lYUjBjbWxpZFhSbElIUjVjR1VnWm5KdmJTQjBhR1VnYlc5a1pXd2diV1YwWVdSaGRHRWdZVzVrSUhKaGFYTmxjeUJoWEc0Z0lDQXFJR0JSZFdWeWVVVnljbTl5WUNCM2FHVnVJSFJvWlNCMGVYQmxJR1J2WlhNZ2JtOTBJSE5oZEdselpua2dkR2hsSUdkcGRtVnVJSEJ5WldScFkyRjBaUzVjYmlBZ0lDb2dRSEJoY21GdElIdERiMjV6ZEhKMVkzUnZjanhOYjJSbGJENTlJR05zWVhwNklDMGdWR2hsSUcxdlpHVnNJR052Ym5OMGNuVmpkRzl5WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQm1hV1ZzWkNBdElGUm9aU0JoZEhSeWFXSjFkR1VnYm1GdFpTQjBieUIyWVd4cFpHRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1kyOXVkR1Y0ZENBdElGUm9aU0JoWjJkeVpXZGhkR2x2YmlCamIyNTBaWGgwSUhWelpXUWdhVzRnWlhKeWIzSWdiV1Z6YzJGblpYTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2YmloemRISnBibWNwT2lCaWIyOXNaV0Z1ZlNCd2NtVmthV05oZEdVZ0xTQlVlWEJsSUdGalkyVndkR0Z1WTJVZ2NISmxaR2xqWVhSbFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JrWlhOamNtbHdkR2x2YmlBdElFaDFiV0Z1SUhKbFlXUmhZbXhsSUdSbGMyTnlhWEIwYVc5dUlHOW1JSFJvWlNCaFkyTmxjSFJsWkNCMGVYQmxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdDJiMmxrZlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCbGJuTjFjbVZHYVdWc1pGUjVjR1VvWEc0Z0lDQWdZMnhoZW5vNklFTnZibk4wY25WamRHOXlQRTF2WkdWc1BpeGNiaUFnSUNCbWFXVnNaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHTnZiblJsZUhRNklITjBjbWx1Wnl4Y2JpQWdJQ0J3Y21Wa2FXTmhkR1U2SUNoMGVYQmxPaUJ6ZEhKcGJtY3BJRDArSUdKdmIyeGxZVzRzWEc0Z0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUhOMGNtbHVaMXh1SUNBcE9pQjJiMmxrSUh0Y2JpQWdJQ0JqYjI1emRDQjBlWEJsSUQwZ2RHaHBjeTV5WlhOdmJIWmxSbWxsYkdSVWVYQmxLR05zWVhwNkxDQm1hV1ZzWkNrN1hHNGdJQ0FnYVdZZ0tDRjBlWEJsSUh4OElDRndjbVZrYVdOaGRHVW9kSGx3WlNrcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnSkh0amIyNTBaWGgwZlNCeVpYRjFhWEpsY3lBa2UyUmxjMk55YVhCMGFXOXVmU0JoZEhSeWFXSjFkR1VzSUdKMWRDQmNJaVI3Wm1sbGJHUjlYQ0lnYVhNZ0pIdGNiaUFnSUNBZ0lDQWdJQ0IwZVhCbElIeDhJRndpZFc1cmJtOTNibHdpWEc0Z0lDQWdJQ0FnSUgxZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVW1WemIyeDJaWE1nZEdobElHRjBkSEpwWW5WMFpTQjBlWEJsSUdaeWIyMGdkR2hsSUcxdlpHVnNJRzFsZEdGa1lYUmhYRzRnSUNBcUlFQnpkVzF0WVhKNUlGSmxZV1J6SUhSb1pTQnRaWFJoWkdGMFlTQnZjaUJrWlhOcFoyNGdkSGx3WlNCdlppQjBhR1VnWVhSMGNtbGlkWFJsSUdGdVpDQnViM0p0WVd4cGVtVnpJR2wwWEc0Z0lDQXFJSFJ2SUdFZ2JHOTNaWEpqWVhObElIUjVjR1VnYm1GdFpTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0RGIyNXpkSEoxWTNSdmNqeE5iMlJsYkQ1OUlHTnNZWHA2SUMwZ1ZHaGxJRzF2WkdWc0lHTnZibk4wY25WamRHOXlYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbWFXVnNaQ0F0SUZSb1pTQmhkSFJ5YVdKMWRHVWdibUZ0WlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1I5SUZSb1pTQnViM0p0WVd4cGVtVmtJR0YwZEhKcFluVjBaU0IwZVhCbExDQjNhR1Z1SUhKbGMyOXNkbUZpYkdWY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2NtVnpiMngyWlVacFpXeGtWSGx3WlNoY2JpQWdJQ0JqYkdGNmVqb2dRMjl1YzNSeWRXTjBiM0k4VFc5a1pXdytMRnh1SUNBZ0lHWnBaV3hrT2lCemRISnBibWRjYmlBZ0tUb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtJSHRjYmlBZ0lDQmpiMjV6ZENCd2NtOXdTMlY1SUQwZ1ptbGxiR1FnWVhNZ2EyVjViMllnVFc5a1pXdzhabUZzYzJVK08xeHVJQ0FnSUdOdmJuTjBJRzFsZEdGVWVYQmxJRDFjYmlBZ0lDQWdJRTFsZEdGa1lYUmhMblI1Y0dVb1kyeGhlbm9zSUhCeWIzQkxaWGtwSUQ4L1hHNGdJQ0FnSUNCTlpYUmhaR0YwWVM1blpYUlFjbTl3UkdWemFXZHVWSGx3WlhNb1kyeGhlbm9zSUhCeWIzQkxaWGtwUHk1a1pYTnBaMjVVZVhCbE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtNXZjbTFoYkdsNlpVMWxkR0ZVZVhCbEtHMWxkR0ZVZVhCbEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1RtOXliV0ZzYVhwbGN5QmhJSEpoZHlCdFpYUmhaR0YwWVNCMGVYQmxJSFJ2SUdFZ2JHOTNaWEpqWVhObElIUjVjR1VnYm1GdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTJGdWVYMGdiV1YwWVZSNWNHVWdMU0JVYUdVZ2NtRjNJRzFsZEdGa1lYUmhJSFI1Y0dVZ2RtRnNkV1ZjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bklId2dkVzVrWldacGJtVmtmU0JVYUdVZ2JtOXliV0ZzYVhwbFpDQjBlWEJsSUc1aGJXVXNJSGRvWlc0Z2NtVnpiMngyWVdKc1pWeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQnViM0p0WVd4cGVtVk5aWFJoVkhsd1pTaHRaWFJoVkhsd1pUb2dZVzU1S1RvZ2MzUnlhVzVuSUh3Z2RXNWtaV1pwYm1Wa0lIdGNiaUFnSUNCcFppQW9JVzFsZEdGVWVYQmxLU0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdiV1YwWVZSNWNHVWdQVDA5SUZ3aWMzUnlhVzVuWENJcElISmxkSFZ5YmlCdFpYUmhWSGx3WlM1MGIweHZkMlZ5UTJGelpTZ3BPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdiV1YwWVZSNWNHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ0WlhSaFZIbHdaUzV1WVcxbEtWeHVJQ0FnSUNBZ2NtVjBkWEp1SUcxbGRHRlVlWEJsTG01aGJXVXVkRzlNYjNkbGNrTmhjMlVvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQlhhR1YwYUdWeUlIUm9aU0JuYVhabGJpQjBlWEJsSUc1aGJXVWdhWE1nWVNCdWRXMWxjbWxqSUhSNWNHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0MGVYQmxYU0F0SUZSb1pTQnViM0p0WVd4cGVtVmtJSFI1Y0dVZ2JtRnRaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdadmNpQmNJbTUxYldKbGNsd2lJR0Z1WkNCY0ltSnBaMmx1ZEZ3aVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHbHpUblZ0WlhKcFkxUjVjR1VvZEhsd1pUODZJSE4wY21sdVp5azZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxJRDA5UFNCY0ltNTFiV0psY2x3aUlIeDhJSFI1Y0dVZ1BUMDlJRndpWW1sbmFXNTBYQ0k3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52Ym5abGNuUnpJR0VnZG1Gc2RXVWdkRzhnWVNCdWRXMWxjbWxqSUhaaGJIVmxJR1p2Y2lCaFoyZHlaV2RoZEdsdmJseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCQlkyTmxjSFJ6SUc1MWJXSmxjbk1nWVc1a0lHSnBaMmx1ZEhNZ0tHTnZiblpsY25SbFpDQjBieUJnVG5WdFltVnlZQ2tnWVc1a0lISmhhWE5sY3lCaFhHNGdJQ0FxSUdCUmRXVnllVVZ5Y205eVlDQm1iM0lnWVc1NUlHOTBhR1Z5SUhaaGJIVmxJR3RwYm1RdVhHNGdJQ0FxSUVCd1lYSmhiU0I3WVc1NWZTQjJZV3gxWlNBdElGUm9aU0IyWVd4MVpTQjBieUJqYjI1MlpYSjBYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbWFXVnNaQ0F0SUZSb1pTQmhkSFJ5YVdKMWRHVWdibUZ0WlNCMWMyVmtJR2x1SUdWeWNtOXlJRzFsYzNOaFoyVnpYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCamIyNTBaWGgwSUMwZ1ZHaGxJR0ZuWjNKbFoyRjBhVzl1SUdOdmJuUmxlSFFnZFhObFpDQnBiaUJsY25KdmNpQnRaWE56WVdkbGMxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUZSb1pTQnVkVzFsY21saklIWmhiSFZsWEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUhSdlRuVnRaWEpwWTFaaGJIVmxLSFpoYkhWbE9pQmhibmtzSUdacFpXeGtPaUJ6ZEhKcGJtY3NJR052Ym5SbGVIUTZJSE4wY21sdVp5azZJRzUxYldKbGNpQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0p1ZFcxaVpYSmNJaWtnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlGd2lZbWxuYVc1MFhDSXBJSEpsZEhWeWJpQk9kVzFpWlhJb2RtRnNkV1VwTzF4dUlDQWdJSFJvY205M0lHNWxkeUJSZFdWeWVVVnljbTl5S0Z4dUlDQWdJQ0FnWUNSN1kyOXVkR1Y0ZEgwZ2IyNGdYQ0lrZTJacFpXeGtmVndpSUhKbGNYVnBjbVZ6SUc1MWJXVnlhV01nZG1Gc2RXVnpMQ0JpZFhRZ1oyOTBJQ1I3ZEhsd1pXOW1JSFpoYkhWbGZXQmNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCRGNtVmhkR1Z6SUhSb1pTQjFibVJsY214NWFXNW5JRkpsWkdseklHTnNhV1Z1ZEZ4dUlDQWdLaUJBYzNWdGJXRnllU0JTWlhSMWNtNXpJSFJvWlNCaGJISmxZV1I1SUdOdmJtNWxZM1JsWkNCamJHbGxiblFnZDJobGJpQnZibVVnWlhocGMzUnpJQ2hwYm1Oc2RXUnBibWRjYmlBZ0lDb2dkR2h5YjNWbmFDQmhJR0JtYjNJb0tXQWdZMjl1Wm1sbmRYSmhkR2x2YmkxelkyOXdaV1FnY0hKdmVIa3NJSGRvYjNObElHOTNiaUJnWDJOc2FXVnVkR0FnYzJ4dmRDQjNiM1ZzWkZ4dUlDQWdLaUJ2ZEdobGNuZHBjMlVnWW1VZ1pXMXdkSGtnWVc1a0lHSjFhV3hrSUdFZ1puSmxjMmdnZFc1amIyNXVaV04wWldRZ1kyeHBaVzUwS1M0Z1QzUm9aWEozYVhObElHSjFhV3hrY3lCaFhHNGdJQ0FxSUc1dlpHVXRjbVZrYVhNZ1kyeHBaVzUwSUdaeWIyMGdkR2hsSUdOdmJtWnBaM1Z5WldRZ1ZWSk1JRzl5SUdScGMyTnlaWFJsSUdodmMzUXZjRzl5ZEM5amNtVmtaVzUwYVdGc2N5NWNiaUFnSUNvZ1YyaGxiaUJnZEd4ellDQnBjeUJ6WlhRc0lHQjBiSE02SUhSeWRXVmdJSEJzZFhNZ1lXNTVJSE4xY0hCc2FXVmtJR0IwYkhNdVkyOXVibVZqZEdBZ2IzQjBhVzl1Y3lCaGNtVmNiaUFnSUNvZ2JXVnlaMlZrSUdsdWRHOGdkR2hsSUhOdlkydGxkQ0J2Y0hScGIyNXpJQ2hoSUdCeVpXUnBjM002THk5Z0lGVlNUQ0JwY3lCd1lYTnpaV1FnZEdoeWIzVm5hQ0JoY3kxcGN5a3VYRzRnSUNBcUlGUm9aU0JqYkdsbGJuUWdhWE1nWTNKbFlYUmxaQ0JzWVhwcGJIa2dZVzVrSUdOdmJtNWxZM1JsWkNCaWVTQjdRR3hwYm1zZ2FXNXBkR2xoYkdsNlpYMHVYRzRnSUNBcUlFQnlaWFIxY200Z2UxSmxaR2x6UTJ4cFpXNTBWSGx3WlgwZ1ZHaGxJRkpsWkdseklHTnNhV1Z1ZEZ4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lHZGxkRU5zYVdWdWRDZ3BPaUJTWldScGMwTnNhV1Z1ZEZSNWNHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXlaV1JwYzBOc2FXVnVkQ2tnY21WMGRYSnVJSFJvYVhNdVgzSmxaR2x6UTJ4cFpXNTBPMXh1SUNBZ0lHTnZibk4wSUhzZ2RYSnNMQ0JvYjNOMExDQndiM0owTENCMWMyVnlibUZ0WlN3Z2NHRnpjM2R2Y21Rc0lHUmhkR0ZpWVhObExDQjBiSE1nZlNBOUlIUm9hWE11WTI5dVptbG5PMXh1SUNBZ0lHTnZibk4wSUc5d2RHbHZibk02SUZKbFkyOXlaRHh6ZEhKcGJtY3NJR0Z1ZVQ0Z1BTQjFjbXhjYmlBZ0lDQWdJRDhnZXlCMWNtd2dmVnh1SUNBZ0lDQWdPaUI3SUhOdlkydGxkRG9nZXlCb2IzTjBPaUJvYjNOMElEOC9JRndpYkc5allXeG9iM04wWENJc0lIQnZjblE2SUhCdmNuUWdQejhnTmpNM09TQjlJSDA3WEc0Z0lDQWdhV1lnS0hSc2N5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RHeHpUM0IwYVc5dWN5QTlJSFI1Y0dWdlppQjBiSE1nUFQwOUlGd2liMkpxWldOMFhDSWdQeUIwYkhNZ09pQjdmVHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVjMjlqYTJWMElEMGdleUF1TGk0b2IzQjBhVzl1Y3k1emIyTnJaWFFnUHo4Z2UzMHBMQ0IwYkhNNklIUnlkV1VzSUM0dUxuUnNjMDl3ZEdsdmJuTWdmVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFZ6WlhKdVlXMWxLU0J2Y0hScGIyNXpMblZ6WlhKdVlXMWxJRDBnZFhObGNtNWhiV1U3WEc0Z0lDQWdhV1lnS0hCaGMzTjNiM0prS1NCdmNIUnBiMjV6TG5CaGMzTjNiM0prSUQwZ2NHRnpjM2R2Y21RN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCa1lYUmhZbUZ6WlNBOVBUMGdYQ0p1ZFcxaVpYSmNJaWtnYjNCMGFXOXVjeTVrWVhSaFltRnpaU0E5SUdSaGRHRmlZWE5sTzF4dUlDQWdJSEpsZEhWeWJpQmpjbVZoZEdWRGJHbGxiblFvYjNCMGFXOXVjeWtnWVhNZ2RXNXJibTkzYmlCaGN5QlNaV1JwYzBOc2FXVnVkRlI1Y0dVN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFoybHpkR1Z5Y3lCU1pXUnBjeTF6Y0dWamFXWnBZeUJrWldOdmNtRjBhVzl1Y3lCbWIzSWdiVzlrWld3Z2NISnZjR1Z5ZEdsbGMxeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRGIyNW1hV2QxY21WeklHQmpjbVZoZEdWa1FubGdJR0Z1WkNCZ2RYQmtZWFJsWkVKNVlDQm9ZVzVrYkdWeWN5Qm1iM0lnZEdobElGSmxaR2x6WEc0Z0lDQXFJR1pzWVhadmRYSWdjMjhnZEdodmMyVWdabWxsYkdSeklHRnlaU0J3YjNCMWJHRjBaV1FnWm5KdmJTQjBhR1VnWTI5dWRHVjRkQ0JWVlVsRUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0MmIybGtmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJRzkyWlhKeWFXUmxJR1JsWTI5eVlYUnBiMjRvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdjM1Z3WlhJdVpHVmpiM0poZEdsdmJpZ3BPMXh1SUNBZ0lHTnZibk4wSUdOeVpXRjBaV1JDZVV0bGVTQTlJRkJsY25OcGMzUmxibU5sUzJWNWN5NURVa1ZCVkVWRVgwSlpPMXh1SUNBZ0lHTnZibk4wSUhWd1pHRjBaV1JDZVV0bGVTQTlJRkJsY25OcGMzUmxibU5sUzJWNWN5NVZVRVJCVkVWRVgwSlpPMXh1SUNBZ0lFUmxZMjl5WVhScGIyNHVabXhoZG05MWNtVmtRWE1vVW1Wa2FYTkdiR0YyYjNWeUtWeHVJQ0FnSUNBZ0xtWnZjaWhqY21WaGRHVmtRbmxMWlhrcFhHNGdJQ0FnSUNBdVpHVm1hVzVsS0Z4dUlDQWdJQ0FnSUNCdmJrTnlaV0YwWlNoamNtVmhkR1ZrUW5sUGJsSmxaR2x6UTNKbFlYUmxWWEJrWVhSbEtTeGNiaUFnSUNBZ0lDQWdjSEp2Y0UxbGRHRmtZWFJoS0dOeVpXRjBaV1JDZVV0bGVTd2dlMzBwTEZ4dUlDQWdJQ0FnSUNCblpXNWxjbUYwWldRb1kzSmxZWFJsWkVKNVMyVjVLVnh1SUNBZ0lDQWdLVnh1SUNBZ0lDQWdMbUZ3Y0d4NUtDazdYRzRnSUNBZ1JHVmpiM0poZEdsdmJpNW1iR0YyYjNWeVpXUkJjeWhTWldScGMwWnNZWFp2ZFhJcFhHNGdJQ0FnSUNBdVptOXlLSFZ3WkdGMFpXUkNlVXRsZVNsY2JpQWdJQ0FnSUM1a1pXWnBibVVvWEc0Z0lDQWdJQ0FnSUc5dVEzSmxZWFJsVlhCa1lYUmxLR055WldGMFpXUkNlVTl1VW1Wa2FYTkRjbVZoZEdWVmNHUmhkR1VwTEZ4dUlDQWdJQ0FnSUNCd2NtOXdUV1YwWVdSaGRHRW9kWEJrWVhSbFpFSjVTMlY1TENCN2ZTa3NYRzRnSUNBZ0lDQWdJR2RsYm1WeVlYUmxaQ2gxY0dSaGRHVmtRbmxMWlhrcFhHNGdJQ0FnSUNBcFhHNGdJQ0FnSUNBdVlYQndiSGtvS1R0Y2JpQWdmVnh1ZlZ4dVhHNUJaR0Z3ZEdWeUxuTmxkRU4xY25KbGJuUW9VbVZrYVhOR2JHRjJiM1Z5S1R0Y2JsSmxaR2x6UVdSaGNIUmxjaTVrWldOdmNtRjBhVzl1S0NrN1hHNGlYWDA9Il19
714
+ //# sourceMappingURL=adapter.js.map
715
+ //# sourceMappingURL=adapter.cjs.map