@raystack/proton 0.1.0-8cb19702a3e47d173732860d58084b83d6941865 → 0.1.0-985fb92154095bf54ef5ed08a3995100c147a25d

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 (267) hide show
  1. package/README.md +2 -0
  2. package/google/api/annotations_pb.d.ts +34 -0
  3. package/google/api/annotations_pb.js +36 -0
  4. package/google/api/annotations_pb.ts +1 -1
  5. package/google/api/field_behavior_pb.d.ts +134 -0
  6. package/google/api/field_behavior_pb.js +65 -0
  7. package/google/api/field_behavior_pb.ts +1 -1
  8. package/google/api/http_pb.d.ts +477 -0
  9. package/google/api/http_pb.js +47 -0
  10. package/google/api/http_pb.ts +1 -1
  11. package/google/api/httpbody_pb.d.ts +104 -0
  12. package/google/api/httpbody_pb.js +34 -0
  13. package/google/api/httpbody_pb.ts +1 -1
  14. package/index.d.ts +10 -0
  15. package/index.js +10 -0
  16. package/package.json +37 -36
  17. package/protoc-gen-openapiv2/options/annotations_pb.d.ts +63 -0
  18. package/protoc-gen-openapiv2/options/annotations_pb.js +69 -0
  19. package/protoc-gen-openapiv2/options/annotations_pb.ts +1 -1
  20. package/protoc-gen-openapiv2/options/openapiv2_pb.d.ts +1497 -0
  21. package/protoc-gen-openapiv2/options/openapiv2_pb.js +232 -0
  22. package/protoc-gen-openapiv2/options/openapiv2_pb.ts +1 -1
  23. package/raystack/assets/index.d.ts +29 -0
  24. package/raystack/assets/index.js +29 -0
  25. package/raystack/assets/v1beta1/bucket_pb.d.ts +180 -0
  26. package/raystack/assets/v1beta1/bucket_pb.js +32 -0
  27. package/raystack/assets/v1beta1/bucket_pb.ts +1 -1
  28. package/raystack/assets/v1beta1/dashboard_pb.d.ts +217 -0
  29. package/raystack/assets/v1beta1/dashboard_pb.js +32 -0
  30. package/raystack/assets/v1beta1/dashboard_pb.ts +1 -1
  31. package/raystack/assets/v1beta1/event_pb.d.ts +52 -0
  32. package/raystack/assets/v1beta1/event_pb.js +20 -0
  33. package/raystack/assets/v1beta1/event_pb.ts +1 -1
  34. package/raystack/assets/v1beta1/group_pb.d.ts +105 -0
  35. package/raystack/assets/v1beta1/group_pb.js +30 -0
  36. package/raystack/assets/v1beta1/group_pb.ts +1 -1
  37. package/raystack/assets/v1beta1/job_pb.d.ts +78 -0
  38. package/raystack/assets/v1beta1/job_pb.js +25 -0
  39. package/raystack/assets/v1beta1/job_pb.ts +1 -1
  40. package/raystack/assets/v1beta1/lineage_pb.d.ts +43 -0
  41. package/raystack/assets/v1beta1/lineage_pb.js +20 -0
  42. package/raystack/assets/v1beta1/lineage_pb.ts +1 -1
  43. package/raystack/assets/v1beta1/ownership_pb.d.ts +78 -0
  44. package/raystack/assets/v1beta1/ownership_pb.js +26 -0
  45. package/raystack/assets/v1beta1/ownership_pb.ts +1 -1
  46. package/raystack/assets/v1beta1/preview_pb.d.ts +41 -0
  47. package/raystack/assets/v1beta1/preview_pb.js +20 -0
  48. package/raystack/assets/v1beta1/preview_pb.ts +1 -1
  49. package/raystack/assets/v1beta1/properties_pb.d.ts +44 -0
  50. package/raystack/assets/v1beta1/properties_pb.js +20 -0
  51. package/raystack/assets/v1beta1/properties_pb.ts +1 -1
  52. package/raystack/assets/v1beta1/resource_pb.d.ts +74 -0
  53. package/raystack/assets/v1beta1/resource_pb.js +19 -0
  54. package/raystack/assets/v1beta1/resource_pb.ts +1 -1
  55. package/raystack/assets/v1beta1/schema_pb.d.ts +169 -0
  56. package/raystack/assets/v1beta1/schema_pb.js +41 -0
  57. package/raystack/assets/v1beta1/schema_pb.ts +1 -1
  58. package/raystack/assets/v1beta1/table_pb.d.ts +192 -0
  59. package/raystack/assets/v1beta1/table_pb.js +41 -0
  60. package/raystack/assets/v1beta1/table_pb.ts +1 -1
  61. package/raystack/assets/v1beta1/timestamp_pb.d.ts +68 -0
  62. package/raystack/assets/v1beta1/timestamp_pb.js +27 -0
  63. package/raystack/assets/v1beta1/timestamp_pb.ts +1 -1
  64. package/raystack/assets/v1beta1/topic_pb.d.ts +125 -0
  65. package/raystack/assets/v1beta1/topic_pb.js +33 -0
  66. package/raystack/assets/v1beta1/topic_pb.ts +1 -1
  67. package/raystack/assets/v1beta1/user_pb.d.ts +216 -0
  68. package/raystack/assets/v1beta1/user_pb.js +37 -0
  69. package/raystack/assets/v1beta1/user_pb.ts +1 -1
  70. package/raystack/assets/v1beta2/application_pb.d.ts +59 -0
  71. package/raystack/assets/v1beta2/application_pb.js +20 -0
  72. package/raystack/assets/v1beta2/application_pb.ts +1 -1
  73. package/raystack/assets/v1beta2/asset_pb.d.ts +129 -0
  74. package/raystack/assets/v1beta2/asset_pb.js +21 -0
  75. package/raystack/assets/v1beta2/asset_pb.ts +1 -1
  76. package/raystack/assets/v1beta2/bucket_pb.d.ts +163 -0
  77. package/raystack/assets/v1beta2/bucket_pb.js +28 -0
  78. package/raystack/assets/v1beta2/bucket_pb.ts +1 -1
  79. package/raystack/assets/v1beta2/common_pb.d.ts +170 -0
  80. package/raystack/assets/v1beta2/common_pb.js +41 -0
  81. package/raystack/assets/v1beta2/common_pb.ts +1 -1
  82. package/raystack/assets/v1beta2/dashboard_pb.d.ts +192 -0
  83. package/raystack/assets/v1beta2/dashboard_pb.js +28 -0
  84. package/raystack/assets/v1beta2/dashboard_pb.ts +1 -1
  85. package/raystack/assets/v1beta2/experiment_pb.d.ts +134 -0
  86. package/raystack/assets/v1beta2/experiment_pb.js +27 -0
  87. package/raystack/assets/v1beta2/experiment_pb.ts +1 -1
  88. package/raystack/assets/v1beta2/feature_table_pb.d.ts +167 -0
  89. package/raystack/assets/v1beta2/feature_table_pb.js +34 -0
  90. package/raystack/assets/v1beta2/feature_table_pb.ts +1 -1
  91. package/raystack/assets/v1beta2/group_pb.d.ts +77 -0
  92. package/raystack/assets/v1beta2/group_pb.js +27 -0
  93. package/raystack/assets/v1beta2/group_pb.ts +1 -1
  94. package/raystack/assets/v1beta2/job_pb.d.ts +47 -0
  95. package/raystack/assets/v1beta2/job_pb.js +20 -0
  96. package/raystack/assets/v1beta2/job_pb.ts +1 -1
  97. package/raystack/assets/v1beta2/metric_pb.d.ts +83 -0
  98. package/raystack/assets/v1beta2/metric_pb.js +20 -0
  99. package/raystack/assets/v1beta2/metric_pb.ts +1 -1
  100. package/raystack/assets/v1beta2/model_pb.d.ts +227 -0
  101. package/raystack/assets/v1beta2/model_pb.js +41 -0
  102. package/raystack/assets/v1beta2/model_pb.ts +1 -1
  103. package/raystack/assets/v1beta2/table_pb.d.ts +283 -0
  104. package/raystack/assets/v1beta2/table_pb.js +48 -0
  105. package/raystack/assets/v1beta2/table_pb.ts +1 -1
  106. package/raystack/assets/v1beta2/topic_pb.d.ts +117 -0
  107. package/raystack/assets/v1beta2/topic_pb.js +34 -0
  108. package/raystack/assets/v1beta2/topic_pb.ts +1 -1
  109. package/raystack/assets/v1beta2/user_pb.d.ts +203 -0
  110. package/raystack/assets/v1beta2/user_pb.js +34 -0
  111. package/raystack/assets/v1beta2/user_pb.ts +1 -1
  112. package/raystack/common/index.d.ts +2 -0
  113. package/raystack/common/index.js +2 -0
  114. package/raystack/common/v1/service-CommonService_connectquery.d.ts +10 -0
  115. package/raystack/common/v1/service-CommonService_connectquery.js +10 -0
  116. package/raystack/common/v1/service-CommonService_connectquery.ts +1 -1
  117. package/raystack/common/v1/service_pb.d.ts +100 -0
  118. package/raystack/common/v1/service_pb.js +42 -0
  119. package/raystack/common/v1/service_pb.ts +1 -1
  120. package/raystack/compass/index.d.ts +2 -0
  121. package/raystack/compass/index.js +2 -0
  122. package/raystack/compass/v1beta1/service-CompassService_connectquery.d.ts +184 -0
  123. package/raystack/compass/v1beta1/service-CompassService_connectquery.js +225 -0
  124. package/raystack/compass/v1beta1/service-CompassService_connectquery.ts +1 -1
  125. package/raystack/compass/v1beta1/service_pb.d.ts +2994 -0
  126. package/raystack/compass/v1beta1/service_pb.js +745 -0
  127. package/raystack/compass/v1beta1/service_pb.ts +1 -1
  128. package/raystack/entropy/index.d.ts +4 -0
  129. package/raystack/entropy/index.js +4 -0
  130. package/raystack/entropy/v1beta1/module-ModuleService_connectquery.d.ts +26 -0
  131. package/raystack/entropy/v1beta1/module-ModuleService_connectquery.js +30 -0
  132. package/raystack/entropy/v1beta1/module-ModuleService_connectquery.ts +1 -1
  133. package/raystack/entropy/v1beta1/module_pb.d.ts +261 -0
  134. package/raystack/entropy/v1beta1/module_pb.js +97 -0
  135. package/raystack/entropy/v1beta1/module_pb.ts +1 -1
  136. package/raystack/entropy/v1beta1/resource-ResourceService_connectquery.d.ts +34 -0
  137. package/raystack/entropy/v1beta1/resource-ResourceService_connectquery.js +40 -0
  138. package/raystack/entropy/v1beta1/resource-ResourceService_connectquery.ts +1 -1
  139. package/raystack/entropy/v1beta1/resource_pb.d.ts +636 -0
  140. package/raystack/entropy/v1beta1/resource_pb.js +200 -0
  141. package/raystack/entropy/v1beta1/resource_pb.ts +1 -1
  142. package/raystack/frontier/index.d.ts +5 -0
  143. package/raystack/frontier/index.js +5 -0
  144. package/raystack/frontier/v1beta1/admin-AdminService_connectquery.d.ts +269 -0
  145. package/raystack/frontier/v1beta1/admin-AdminService_connectquery.js +323 -0
  146. package/raystack/frontier/v1beta1/admin-AdminService_connectquery.ts +22 -1
  147. package/raystack/frontier/v1beta1/admin_pb.d.ts +3627 -0
  148. package/raystack/frontier/v1beta1/admin_pb.js +935 -0
  149. package/raystack/frontier/v1beta1/admin_pb.ts +179 -10
  150. package/raystack/frontier/v1beta1/frontier-FrontierService_connectquery.d.ts +738 -0
  151. package/raystack/frontier/v1beta1/frontier-FrontierService_connectquery.js +905 -0
  152. package/raystack/frontier/v1beta1/frontier-FrontierService_connectquery.ts +29 -18
  153. package/raystack/frontier/v1beta1/frontier_pb.d.ts +8820 -0
  154. package/raystack/frontier/v1beta1/frontier_pb.js +2593 -0
  155. package/raystack/frontier/v1beta1/frontier_pb.ts +508 -461
  156. package/raystack/frontier/v1beta1/models_pb.d.ts +3092 -0
  157. package/raystack/frontier/v1beta1/models_pb.js +504 -0
  158. package/raystack/frontier/v1beta1/models_pb.ts +359 -52
  159. package/raystack/guardian/index.d.ts +2 -0
  160. package/raystack/guardian/index.js +2 -0
  161. package/raystack/guardian/v1beta1/guardian-GuardianService_connectquery.d.ts +168 -0
  162. package/raystack/guardian/v1beta1/guardian-GuardianService_connectquery.js +207 -0
  163. package/raystack/guardian/v1beta1/guardian-GuardianService_connectquery.ts +1 -1
  164. package/raystack/guardian/v1beta1/guardian_pb.d.ts +3537 -0
  165. package/raystack/guardian/v1beta1/guardian_pb.js +823 -0
  166. package/raystack/guardian/v1beta1/guardian_pb.ts +1 -1
  167. package/raystack/optimus/core/v1beta1/backup-BackupService_connectquery.d.ts +18 -0
  168. package/raystack/optimus/core/v1beta1/backup-BackupService_connectquery.js +20 -0
  169. package/raystack/optimus/core/v1beta1/backup-BackupService_connectquery.ts +1 -1
  170. package/raystack/optimus/core/v1beta1/backup_pb.d.ts +256 -0
  171. package/raystack/optimus/core/v1beta1/backup_pb.js +77 -0
  172. package/raystack/optimus/core/v1beta1/backup_pb.ts +1 -1
  173. package/raystack/optimus/core/v1beta1/job_run-JobRunService_connectquery.d.ts +30 -0
  174. package/raystack/optimus/core/v1beta1/job_run-JobRunService_connectquery.js +33 -0
  175. package/raystack/optimus/core/v1beta1/job_run-JobRunService_connectquery.ts +1 -1
  176. package/raystack/optimus/core/v1beta1/job_run_pb.d.ts +410 -0
  177. package/raystack/optimus/core/v1beta1/job_run_pb.js +127 -0
  178. package/raystack/optimus/core/v1beta1/job_run_pb.ts +1 -1
  179. package/raystack/optimus/core/v1beta1/job_spec-JobSpecificationService_connectquery.d.ts +98 -0
  180. package/raystack/optimus/core/v1beta1/job_spec-JobSpecificationService_connectquery.js +112 -0
  181. package/raystack/optimus/core/v1beta1/job_spec-JobSpecificationService_connectquery.ts +1 -1
  182. package/raystack/optimus/core/v1beta1/job_spec_pb.d.ts +1953 -0
  183. package/raystack/optimus/core/v1beta1/job_spec_pb.js +487 -0
  184. package/raystack/optimus/core/v1beta1/job_spec_pb.ts +1 -1
  185. package/raystack/optimus/core/v1beta1/namespace-NamespaceService_connectquery.d.ts +24 -0
  186. package/raystack/optimus/core/v1beta1/namespace-NamespaceService_connectquery.js +26 -0
  187. package/raystack/optimus/core/v1beta1/namespace-NamespaceService_connectquery.ts +1 -1
  188. package/raystack/optimus/core/v1beta1/namespace_pb.d.ts +180 -0
  189. package/raystack/optimus/core/v1beta1/namespace_pb.js +69 -0
  190. package/raystack/optimus/core/v1beta1/namespace_pb.ts +1 -1
  191. package/raystack/optimus/core/v1beta1/project-ProjectService_connectquery.d.ts +24 -0
  192. package/raystack/optimus/core/v1beta1/project-ProjectService_connectquery.js +26 -0
  193. package/raystack/optimus/core/v1beta1/project-ProjectService_connectquery.ts +1 -1
  194. package/raystack/optimus/core/v1beta1/project_pb.d.ts +166 -0
  195. package/raystack/optimus/core/v1beta1/project_pb.js +69 -0
  196. package/raystack/optimus/core/v1beta1/project_pb.ts +2 -29
  197. package/raystack/optimus/core/v1beta1/replay-ReplayService_connectquery.d.ts +22 -0
  198. package/raystack/optimus/core/v1beta1/replay-ReplayService_connectquery.js +25 -0
  199. package/raystack/optimus/core/v1beta1/replay-ReplayService_connectquery.ts +1 -1
  200. package/raystack/optimus/core/v1beta1/replay_pb.d.ts +331 -0
  201. package/raystack/optimus/core/v1beta1/replay_pb.js +91 -0
  202. package/raystack/optimus/core/v1beta1/replay_pb.ts +1 -1
  203. package/raystack/optimus/core/v1beta1/resource-ResourceService_connectquery.d.ts +43 -0
  204. package/raystack/optimus/core/v1beta1/resource-ResourceService_connectquery.js +48 -0
  205. package/raystack/optimus/core/v1beta1/resource-ResourceService_connectquery.ts +1 -1
  206. package/raystack/optimus/core/v1beta1/resource_pb.d.ts +507 -0
  207. package/raystack/optimus/core/v1beta1/resource_pb.js +134 -0
  208. package/raystack/optimus/core/v1beta1/resource_pb.ts +1 -1
  209. package/raystack/optimus/core/v1beta1/runtime-RuntimeService_connectquery.d.ts +12 -0
  210. package/raystack/optimus/core/v1beta1/runtime-RuntimeService_connectquery.js +12 -0
  211. package/raystack/optimus/core/v1beta1/runtime-RuntimeService_connectquery.ts +1 -1
  212. package/raystack/optimus/core/v1beta1/runtime_pb.d.ts +62 -0
  213. package/raystack/optimus/core/v1beta1/runtime_pb.js +36 -0
  214. package/raystack/optimus/core/v1beta1/runtime_pb.ts +1 -1
  215. package/raystack/optimus/core/v1beta1/secret-SecretService_connectquery.d.ts +30 -0
  216. package/raystack/optimus/core/v1beta1/secret-SecretService_connectquery.js +33 -0
  217. package/raystack/optimus/core/v1beta1/secret-SecretService_connectquery.ts +1 -1
  218. package/raystack/optimus/core/v1beta1/secret_pb.d.ts +250 -0
  219. package/raystack/optimus/core/v1beta1/secret_pb.js +84 -0
  220. package/raystack/optimus/core/v1beta1/secret_pb.ts +1 -1
  221. package/raystack/optimus/core/v1beta1/status_pb.d.ts +78 -0
  222. package/raystack/optimus/core/v1beta1/status_pb.js +31 -0
  223. package/raystack/optimus/core/v1beta1/status_pb.ts +1 -1
  224. package/raystack/optimus/integration/v1beta1/event_pb.d.ts +239 -0
  225. package/raystack/optimus/integration/v1beta1/event_pb.js +62 -0
  226. package/raystack/optimus/integration/v1beta1/event_pb.ts +1 -1
  227. package/raystack/optimus/plugins/v1beta1/dependency_resolver-DependencyResolverModService_connectquery.d.ts +31 -0
  228. package/raystack/optimus/plugins/v1beta1/dependency_resolver-DependencyResolverModService_connectquery.js +34 -0
  229. package/raystack/optimus/plugins/v1beta1/dependency_resolver-DependencyResolverModService_connectquery.ts +1 -1
  230. package/raystack/optimus/plugins/v1beta1/dependency_resolver_pb.d.ts +353 -0
  231. package/raystack/optimus/plugins/v1beta1/dependency_resolver_pb.js +120 -0
  232. package/raystack/optimus/plugins/v1beta1/dependency_resolver_pb.ts +1 -1
  233. package/raystack/predator/index.d.ts +2 -0
  234. package/raystack/predator/index.js +2 -0
  235. package/raystack/predator/v1beta1/metrics_log_pb.d.ts +163 -0
  236. package/raystack/predator/v1beta1/metrics_log_pb.js +48 -0
  237. package/raystack/predator/v1beta1/metrics_log_pb.ts +1 -1
  238. package/raystack/predator/v1beta1/result_log_pb.d.ts +143 -0
  239. package/raystack/predator/v1beta1/result_log_pb.js +42 -0
  240. package/raystack/predator/v1beta1/result_log_pb.ts +1 -1
  241. package/raystack/raccoon/index.d.ts +2 -0
  242. package/raystack/raccoon/index.js +2 -0
  243. package/raystack/raccoon/v1beta1/raccoon-EventService_connectquery.d.ts +10 -0
  244. package/raystack/raccoon/v1beta1/raccoon-EventService_connectquery.js +10 -0
  245. package/raystack/raccoon/v1beta1/raccoon-EventService_connectquery.ts +1 -1
  246. package/raystack/raccoon/v1beta1/raccoon_pb.d.ts +268 -0
  247. package/raystack/raccoon/v1beta1/raccoon_pb.js +64 -0
  248. package/raystack/raccoon/v1beta1/raccoon_pb.ts +1 -1
  249. package/raystack/siren/index.d.ts +2 -0
  250. package/raystack/siren/index.js +2 -0
  251. package/raystack/siren/v1beta1/siren-SirenService_connectquery.d.ts +146 -0
  252. package/raystack/siren/v1beta1/siren-SirenService_connectquery.js +180 -0
  253. package/raystack/siren/v1beta1/siren-SirenService_connectquery.ts +1 -1
  254. package/raystack/siren/v1beta1/siren_pb.d.ts +2281 -0
  255. package/raystack/siren/v1beta1/siren_pb.js +603 -0
  256. package/raystack/siren/v1beta1/siren_pb.ts +1 -1
  257. package/raystack/stencil/index.d.ts +2 -0
  258. package/raystack/stencil/index.js +2 -0
  259. package/raystack/stencil/v1beta1/stencil-StencilService_connectquery.d.ts +70 -0
  260. package/raystack/stencil/v1beta1/stencil-StencilService_connectquery.js +85 -0
  261. package/raystack/stencil/v1beta1/stencil-StencilService_connectquery.ts +1 -1
  262. package/raystack/stencil/v1beta1/stencil_pb.d.ts +1057 -0
  263. package/raystack/stencil/v1beta1/stencil_pb.js +298 -0
  264. package/raystack/stencil/v1beta1/stencil_pb.ts +1 -1
  265. package/validate/validate_pb.d.ts +1953 -0
  266. package/validate/validate_pb.js +223 -0
  267. package/validate/validate_pb.ts +1 -1
@@ -1,4 +1,4 @@
1
- // @generated by protoc-gen-es v2.6.2 with parameter "target=ts,import_extension=none"
1
+ // @generated by protoc-gen-es v2.6.2 with parameter "target=ts+js+dts,import_extension=none"
2
2
  // @generated from file raystack/frontier/v1beta1/frontier.proto (package raystack.frontier.v1beta1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
@@ -9,7 +9,7 @@ import { file_google_api_field_behavior } from "../../../google/api/field_behavi
9
9
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
10
10
  import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
11
11
  import { file_protoc_gen_openapiv2_options_annotations } from "../../../protoc-gen-openapiv2/options/annotations_pb";
12
- import type { AuditLog, BillingAccount, BillingAccount_Address, BillingAccount_Balance, BillingAccount_Tax, BillingAccountDetails, BillingTransaction, CheckoutProductBody, CheckoutSession, CheckoutSetupBody, CheckoutSubscriptionBody, Domain, Feature, Group, Invitation, Invoice, JSONWebKey, KeyCredential, MetaSchema, Namespace, Organization, OrganizationKyc, PaymentMethod, Permission, Plan, Policy, Preference, PreferenceRequestBody, PreferenceTrait, Price, Product, Product_BehaviorConfig, Project, Relation, Resource, Role, RoleRequestBody, SecretCredential, ServiceUser, ServiceUserJWK, ServiceUserToken, Subscription, Subscription_Phase, Usage, User } from "./models_pb";
12
+ import type { AuditRecord, AuditRecordActor, AuditRecordResource, AuditRecordTarget, BillingAccount, BillingAccount_Address, BillingAccount_Balance, BillingAccount_Tax, BillingAccountDetails, BillingTransaction, CheckoutProductBody, CheckoutSession, CheckoutSetupBody, CheckoutSubscriptionBody, Domain, Feature, Group, Invitation, Invoice, JSONWebKey, KeyCredential, MetaSchema, Namespace, Organization, OrganizationKyc, PaymentMethod, Permission, Plan, Policy, Preference, PreferenceRequestBody, PreferenceTrait, Price, Product, Product_BehaviorConfig, Project, Relation, Resource, Role, RoleRequestBody, SecretCredential, ServiceUser, ServiceUserJWK, ServiceUserToken, Session, Session_Meta, Subscription, Subscription_Phase, Usage, User } from "./models_pb";
13
13
  import { file_raystack_frontier_v1beta1_models } from "./models_pb";
14
14
  import { file_validate_validate } from "../../../validate/validate_pb";
15
15
  import type { JsonObject, Message } from "@bufbuild/protobuf";
@@ -18,7 +18,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
18
18
  * Describes the file raystack/frontier/v1beta1/frontier.proto.
19
19
  */
20
20
  export const file_raystack_frontier_v1beta1_frontier: GenFile = /*@__PURE__*/
21
- fileDesc("CihyYXlzdGFjay9mcm9udGllci92MWJldGExL2Zyb250aWVyLnByb3RvEhlyYXlzdGFjay5mcm9udGllci52MWJldGExIokCChlCaWxsaW5nQWNjb3VudFJlcXVlc3RCb2R5EgwKBG5hbWUYASABKAkSDQoFZW1haWwYAiABKAkSDQoFcGhvbmUYAyABKAkSQgoHYWRkcmVzcxgEIAEoCzIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ0FjY291bnQuQWRkcmVzcxIQCghjdXJyZW5jeRgFIAEoCRI/Cgh0YXhfZGF0YRgGIAMoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ0FjY291bnQuVGF4EikKCG1ldGFkYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKVAQobQ3JlYXRlQmlsbGluZ0FjY291bnRSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQARJMCgRib2R5GAIgASgLMjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudFJlcXVlc3RCb2R5Qgj6QgWKAQIQARIPCgdvZmZsaW5lGAMgASgIImIKHENyZWF0ZUJpbGxpbmdBY2NvdW50UmVzcG9uc2USQgoPYmlsbGluZ19hY2NvdW50GAEgASgLMikucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudCKUAQoYR2V0QmlsbGluZ0FjY291bnRSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQARIcChR3aXRoX3BheW1lbnRfbWV0aG9kcxgDIAEoCBIcChR3aXRoX2JpbGxpbmdfZGV0YWlscxgEIAEoCBIOCgZleHBhbmQYZSADKAki7QEKGUdldEJpbGxpbmdBY2NvdW50UmVzcG9uc2USQgoPYmlsbGluZ19hY2NvdW50GAEgASgLMikucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudBJBCg9wYXltZW50X21ldGhvZHMYAiADKAsyKC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBheW1lbnRNZXRob2QSSQoPYmlsbGluZ19kZXRhaWxzGAMgASgLMjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudERldGFpbHMikAEKG1VwZGF0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBIUCgJpZBgBIAEoCUII+kIFcgOwAQESFwoGb3JnX2lkGAIgASgJQgf6QgRyAhABEkIKBGJvZHkYAyABKAsyNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50UmVxdWVzdEJvZHkiYgocVXBkYXRlQmlsbGluZ0FjY291bnRSZXNwb25zZRJCCg9iaWxsaW5nX2FjY291bnQYASABKAsyKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50Ik4KHVJlZ2lzdGVyQmlsbGluZ0FjY291bnRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiIAoeUmVnaXN0ZXJCaWxsaW5nQWNjb3VudFJlc3BvbnNlIkUKGkxpc3RCaWxsaW5nQWNjb3VudHNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQARIOCgZleHBhbmQYZSADKAkiYgobTGlzdEJpbGxpbmdBY2NvdW50c1Jlc3BvbnNlEkMKEGJpbGxpbmdfYWNjb3VudHMYASADKAsyKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50IkwKG0RlbGV0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBIUCgJpZBgBIAEoCUII+kIFcgOwAQESFwoGb3JnX2lkGAIgASgJQgf6QgRyAhABIh4KHERlbGV0ZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UiTAobRW5hYmxlQmlsbGluZ0FjY291bnRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiHgocRW5hYmxlQmlsbGluZ0FjY291bnRSZXNwb25zZSJNChxEaXNhYmxlQmlsbGluZ0FjY291bnRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiHwodRGlzYWJsZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UiSQoYR2V0QmlsbGluZ0JhbGFuY2VSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiXwoZR2V0QmlsbGluZ0JhbGFuY2VSZXNwb25zZRJCCgdiYWxhbmNlGAEgASgLMjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudC5CYWxhbmNlIlwKEUhhc1RyaWFsZWRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAESGAoHcGxhbl9pZBgDIAEoCUIH+kIEcgIQASIlChJIYXNUcmlhbGVkUmVzcG9uc2USDwoHdHJpYWxlZBgBIAEoCCKSAQoZQ3JlYXRlQmlsbGluZ1VzYWdlUmVxdWVzdBIOCgZvcmdfaWQYASABKAkSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQESEgoKcHJvamVjdF9pZBgEIAEoCRIwCgZ1c2FnZXMYAyADKAsyIC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzYWdlIhwKGkNyZWF0ZUJpbGxpbmdVc2FnZVJlc3BvbnNlIvkBCh5MaXN0QmlsbGluZ1RyYW5zYWN0aW9uc1JlcXVlc3QSFwoGb3JnX2lkGAEgASgJQgf6QgRyAhADEh8KCmJpbGxpbmdfaWQYAiABKAlCC/pCCHIGsAEB0AEBEi0KBXNpbmNlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEICGAESLwoLc3RhcnRfcmFuZ2UYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWVuZF9yYW5nZRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGZXhwYW5kGGUgAygJImYKH0xpc3RCaWxsaW5nVHJhbnNhY3Rpb25zUmVzcG9uc2USQwoMdHJhbnNhY3Rpb25zGAEgAygLMi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nVHJhbnNhY3Rpb24iWAofVG90YWxEZWJpdGVkVHJhbnNhY3Rpb25zUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHAoKYmlsbGluZ19pZBgCIAEoCUII+kIFcgOwAQEiZgogVG90YWxEZWJpdGVkVHJhbnNhY3Rpb25zUmVzcG9uc2USQgoHZGViaXRlZBgBIAEoCzIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ0FjY291bnQuQmFsYW5jZSJ3ChZHZXRTdWJzY3JpcHRpb25SZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIfCgpiaWxsaW5nX2lkGAIgASgJQgv6QghyBrABAdABARITCgJpZBgDIAEoCUIH+kIEcgIQARIOCgZleHBhbmQYZSADKAkiWAoXR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2USPQoMc3Vic2NyaXB0aW9uGAEgASgLMicucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TdWJzY3JpcHRpb24igQEKGExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQESDQoFc3RhdGUYAyABKAkSDAoEcGxhbhgEIAEoCRIOCgZleHBhbmQYZSADKAkiWwoZTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZRI+Cg1zdWJzY3JpcHRpb25zGAEgAygLMicucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TdWJzY3JpcHRpb24ilQEKGVVwZGF0ZVN1YnNjcmlwdGlvblJlcXVlc3QSFwoGb3JnX2lkGAEgASgJQgf6QgRyAhADEh8KCmJpbGxpbmdfaWQYAiABKAlCC/pCCHIGsAEB0AEBEhMKAmlkGAMgASgJQgf6QgRyAhABEikKCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJbChpVcGRhdGVTdWJzY3JpcHRpb25SZXNwb25zZRI9CgxzdWJzY3JpcHRpb24YASABKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlN1YnNjcmlwdGlvbiKuAwoZQ2hhbmdlU3Vic2NyaXB0aW9uUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQESEwoCaWQYAyABKAlCB/pCBHICEAESEAoEcGxhbhgEIAEoCUICGAESFQoJaW1tZWRpYXRlGAUgASgIQgIYARJWCgtwbGFuX2NoYW5nZRgGIAEoCzI/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hhbmdlU3Vic2NyaXB0aW9uUmVxdWVzdC5QbGFuQ2hhbmdlSAASWAoMcGhhc2VfY2hhbmdlGAcgASgLMkAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGFuZ2VTdWJzY3JpcHRpb25SZXF1ZXN0LlBoYXNlQ2hhbmdlSAAaLQoKUGxhbkNoYW5nZRIMCgRwbGFuGAEgASgJEhEKCWltbWVkaWF0ZRgCIAEoCBouCgtQaGFzZUNoYW5nZRIfChdjYW5jZWxfdXBjb21pbmdfY2hhbmdlcxgBIAEoCEIICgZjaGFuZ2UiWgoaQ2hhbmdlU3Vic2NyaXB0aW9uUmVzcG9uc2USPAoFcGhhc2UYASABKAsyLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlN1YnNjcmlwdGlvbi5QaGFzZSJ9ChlDYW5jZWxTdWJzY3JpcHRpb25SZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIfCgpiaWxsaW5nX2lkGAIgASgJQgv6QghyBrABAdABARITCgJpZBgDIAEoCUIH+kIEcgIQARIRCglpbW1lZGlhdGUYBCABKAgiHAoaQ2FuY2VsU3Vic2NyaXB0aW9uUmVzcG9uc2UiEgoQTGlzdFBsYW5zUmVxdWVzdCJDChFMaXN0UGxhbnNSZXNwb25zZRIuCgVwbGFucxgBIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGxhbiJ/Ch5DaGVja0ZlYXR1cmVFbnRpdGxlbWVudFJlcXVlc3QSDgoGb3JnX2lkGAEgASgJEh8KCmJpbGxpbmdfaWQYAiABKAlCC/pCCHIGsAEB0AEBEhIKCnByb2plY3RfaWQYBCABKAkSGAoHZmVhdHVyZRgDIAEoCUIH+kIEcgIQASIxCh9DaGVja0ZlYXR1cmVFbnRpdGxlbWVudFJlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCCJRCh1DaGVja0NyZWRpdEVudGl0bGVtZW50UmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSFwoGYW1vdW50GAIgASgDQgf6QgQiAiAAIjAKHkNoZWNrQ3JlZGl0RW50aXRsZW1lbnRSZXNwb25zZRIOCgZzdGF0dXMYASABKAgi0gIKFUNyZWF0ZUNoZWNrb3V0UmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQESEwoLc3VjY2Vzc191cmwYAyABKAkSEgoKY2FuY2VsX3VybBgEIAEoCRJOChFzdWJzY3JpcHRpb25fYm9keRgKIAEoCzIzLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tvdXRTdWJzY3JpcHRpb25Cb2R5EkQKDHByb2R1Y3RfYm9keRgLIAEoCzIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tvdXRQcm9kdWN0Qm9keRJACgpzZXR1cF9ib2R5GAwgASgLMiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja291dFNldHVwQm9keSJeChZDcmVhdGVDaGVja291dFJlc3BvbnNlEkQKEGNoZWNrb3V0X3Nlc3Npb24YASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNoZWNrb3V0U2Vzc2lvbiJQChRMaXN0Q2hlY2tvdXRzUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQEiXgoVTGlzdENoZWNrb3V0c1Jlc3BvbnNlEkUKEWNoZWNrb3V0X3Nlc3Npb25zGAEgAygLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja291dFNlc3Npb24iYwoSR2V0Q2hlY2tvdXRSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIfCgpiaWxsaW5nX2lkGAIgASgJQgv6QghyBrABAdABARITCgJpZBgDIAEoCUIH+kIEcgIQASJbChNHZXRDaGVja291dFJlc3BvbnNlEkQKEGNoZWNrb3V0X3Nlc3Npb24YASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNoZWNrb3V0U2Vzc2lvbiL7AgoSUHJvZHVjdFJlcXVlc3RCb2R5EhUKBG5hbWUYASABKAlCB/pCBHICEAMSDQoFdGl0bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHcGxhbl9pZBgEIAEoCRIwCgZwcmljZXMYBSADKAsyIC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByaWNlEjQKCGJlaGF2aW9yGAggASgJQiL6Qh9yHVIFYmFzaWNSB2NyZWRpdHNSCHBlcl9zZWF00AEBEjQKCGZlYXR1cmVzGAkgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5GZWF0dXJlEkoKD2JlaGF2aW9yX2NvbmZpZxgKIAEoCzIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdC5CZWhhdmlvckNvbmZpZxIpCghtZXRhZGF0YRgUIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RKBAgHEAgiXQoUQ3JlYXRlUHJvZHVjdFJlcXVlc3QSRQoEYm9keRgBIAEoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdFJlcXVlc3RCb2R5Qgj6QgWKAQIQASJMChVDcmVhdGVQcm9kdWN0UmVzcG9uc2USMwoHcHJvZHVjdBgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdCIoChFHZXRQcm9kdWN0UmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQASJJChJHZXRQcm9kdWN0UmVzcG9uc2USMwoHcHJvZHVjdBgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdCIVChNMaXN0UHJvZHVjdHNSZXF1ZXN0IkwKFExpc3RQcm9kdWN0c1Jlc3BvbnNlEjQKCHByb2R1Y3RzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9kdWN0ImgKFFVwZGF0ZVByb2R1Y3RSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABEjsKBGJvZHkYAiABKAsyLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2R1Y3RSZXF1ZXN0Qm9keSJMChVVcGRhdGVQcm9kdWN0UmVzcG9uc2USMwoHcHJvZHVjdBgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdCJ6ChJGZWF0dXJlUmVxdWVzdEJvZHkSFQoEbmFtZRgBIAEoCUIH+kIEcgIQAxINCgV0aXRsZRgCIAEoCRITCgtwcm9kdWN0X2lkcxgDIAMoCRIpCghtZXRhZGF0YRgUIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiXQoUQ3JlYXRlRmVhdHVyZVJlcXVlc3QSRQoEYm9keRgBIAEoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRmVhdHVyZVJlcXVlc3RCb2R5Qgj6QgWKAQIQASJMChVDcmVhdGVGZWF0dXJlUmVzcG9uc2USMwoHZmVhdHVyZRgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRmVhdHVyZSIoChFHZXRGZWF0dXJlUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQASJJChJHZXRGZWF0dXJlUmVzcG9uc2USMwoHZmVhdHVyZRgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRmVhdHVyZSJoChRVcGRhdGVGZWF0dXJlUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQARI7CgRib2R5GAIgASgLMi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5GZWF0dXJlUmVxdWVzdEJvZHkiTAoVVXBkYXRlRmVhdHVyZVJlc3BvbnNlEjMKB2ZlYXR1cmUYASABKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkZlYXR1cmUiFQoTTGlzdEZlYXR1cmVzUmVxdWVzdCJMChRMaXN0RmVhdHVyZXNSZXNwb25zZRI0CghmZWF0dXJlcxgBIAMoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRmVhdHVyZSKDAgoPUGxhblJlcXVlc3RCb2R5EgwKBG5hbWUYASABKAkSDQoFdGl0bGUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSNAoIcHJvZHVjdHMYBCADKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2R1Y3QSLwoIaW50ZXJ2YWwYBSABKAlCHfpCGnIYUgNkYXlSBHdlZWtSBW1vbnRoUgR5ZWFyEhgKEG9uX3N0YXJ0X2NyZWRpdHMYBiABKAMSEgoKdHJpYWxfZGF5cxgHIAEoAxIpCghtZXRhZGF0YRgUIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiVwoRQ3JlYXRlUGxhblJlcXVlc3QSQgoEYm9keRgBIAEoCzIqLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGxhblJlcXVlc3RCb2R5Qgj6QgWKAQIQASJDChJDcmVhdGVQbGFuUmVzcG9uc2USLQoEcGxhbhgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGxhbiIlCg5HZXRQbGFuUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQASJACg9HZXRQbGFuUmVzcG9uc2USLQoEcGxhbhgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGxhbiJiChFVcGRhdGVQbGFuUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQARI4CgRib2R5GAIgASgLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QbGFuUmVxdWVzdEJvZHkiQwoSVXBkYXRlUGxhblJlc3BvbnNlEi0KBHBsYW4YASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBsYW4ifAoTTGlzdEludm9pY2VzUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQESGwoTbm9uemVyb19hbW91bnRfb25seRgDIAEoCBIOCgZleHBhbmQYZSADKAkiTAoUTGlzdEludm9pY2VzUmVzcG9uc2USNAoIaW52b2ljZXMYASADKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkludm9pY2UiVQoZR2V0VXBjb21pbmdJbnZvaWNlUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSHwoKYmlsbGluZ19pZBgCIAEoCUIL+kIIcgawAQHQAQEiUQoaR2V0VXBjb21pbmdJbnZvaWNlUmVzcG9uc2USMwoHaW52b2ljZRgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSW52b2ljZSIQCg5HZXRKV0tzUmVxdWVzdCJGCg9HZXRKV0tzUmVzcG9uc2USMwoEa2V5cxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSlNPTldlYktleSITChFBdXRoTG9nb3V0UmVxdWVzdCIUChJBdXRoTG9nb3V0UmVzcG9uc2UieQoTQXV0aENhbGxiYWNrUmVxdWVzdBIVCg1zdHJhdGVneV9uYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgwKBGNvZGUYAyABKAkSLgoNc3RhdGVfb3B0aW9ucxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiFgoUQXV0aENhbGxiYWNrUmVzcG9uc2Ui3gUKE0F1dGhlbnRpY2F0ZVJlcXVlc3QSZAoNc3RyYXRlZ3lfbmFtZRgBIAEoCUJNkkFKMkhOYW1lIG9mIHRoZSBzdHJhdGVneSB0byB1c2UgZm9yIGF1dGhlbnRpY2F0aW9uLjxici8+ICpFeGFtcGxlOiogYGdvb2dsZWASagoQcmVkaXJlY3Rfb25zdGFydBgCIAEoCEJQkkFNMktJZiBzZXQgdG8gdHJ1ZSwgbG9jYXRpb24gaGVhZGVyIHdpbGwgYmUgc2V0IGZvciByZWRpcmVjdCB0byBzdGFydCBhdXRoIGZsb3cSeAoJcmV0dXJuX3RvGAMgASgJQmWSQWIyYFVSTCB0byByZWRpcmVjdCBhZnRlciBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uLjxici8+ICpFeGFtcGxlOipgImh0dHBzOi8vZnJvbnRpZXIuZXhhbXBsZS5jb20iYBJuCgVlbWFpbBgEIAEoCUJfkkFcMlpFbWFpbCBvZiB0aGUgdXNlciB0byBhdXRoZW50aWNhdGUuIFVzZWQgZm9yIG1hZ2ljIGxpbmtzLjxici8+ICpFeGFtcGxlOipgZXhhbXBsZUBhY21lLm9yZ2ASigIKDGNhbGxiYWNrX3VybBgFIAEoCULzAZJB7wEy7AFIb3N0IHdoaWNoIHNob3VsZCBoYW5kbGUgdGhlIGNhbGwgdG8gZmluaXNoIGF1dGhlbnRpY2F0aW9uIGZsb3csIGZvciBtb3N0IGNhc2VzIGl0IGNvdWxkIGJlIGhvc3Qgb2YgZnJvbnRpZXIgYnV0IGluIGNhc2Ugb2YgcHJveGllcywgdGhpcyB3aWxsIGJlIHByb3h5IHB1YmxpYyBlbmRwb2ludC48YnIvPiAqRXhhbXBsZToqYGh0dHBzOi8vZnJvbnRpZXIuZXhhbXBsZS5jb20vdjFiZXRhMS9hdXRoL2NhbGxiYWNrYCJnChRBdXRoZW50aWNhdGVSZXNwb25zZRIQCghlbmRwb2ludBgBIAEoCRINCgVzdGF0ZRgCIAEoCRIuCg1zdGF0ZV9vcHRpb25zGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJFCgxBdXRoU3RyYXRlZ3kSDAoEbmFtZRgBIAEoCRInCgZwYXJhbXMYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IhsKGUxpc3RBdXRoU3RyYXRlZ2llc1JlcXVlc3QiWQoaTGlzdEF1dGhTdHJhdGVnaWVzUmVzcG9uc2USOwoKc3RyYXRlZ2llcxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aFN0cmF0ZWd5ImMKEEF1dGhUb2tlblJlcXVlc3QSEgoKZ3JhbnRfdHlwZRgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSFQoNY2xpZW50X3NlY3JldBgDIAEoCRIRCglhc3NlcnRpb24YBCABKAkiPQoRQXV0aFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnRva2VuX3R5cGUYAiABKAki8wsKD1VzZXJSZXF1ZXN0Qm9keRLGAgoEbmFtZRgBIAEoCUK3ApJBjAIyiQJUaGUgbmFtZSBvZiB0aGUgdXNlci4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIFRoZSBuYW1lIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlci4gSWYgbm90IHByb3ZpZGVkLCBGcm9udGllciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBhIG5hbWUgZnJvbSB0aGUgdXNlciBlbWFpbC4g+kIkciIyIF4oW2EtekEtWl1bYS16QS1aMC05LV9dezMsNjR9KT8kEpwBCgVlbWFpbBgCIAEoCUKMAZJBfjJ8VGhlIGVtYWlsIG9mIHRoZSB1c2VyLiBUaGUgZW1haWwgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuPGJyLz4qRXhhbXBsZToqYCJqb2huLmRvZUByYXlzdGFjay5vcmciYOJBAQL6QgRyAmABEtgDCghtZXRhZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCrAOSQagDMqUDTWV0YWRhdGEgb2JqZWN0IGZvciB1c2VycyB0aGF0IGNhbiBob2xkIGtleSB2YWx1ZSBwYWlycyBwcmUtZGVmaW5lZCBpbiBVc2VyIE1ldGFzY2hlbWEuIFRoZSBtZXRhZGF0YSBvYmplY3QgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2VyIHN1Y2ggYXMgbGFiZWwsIGRlc2NyaXB0aW9uIGV0Yy4gQnkgZGVmYXVsdCB0aGUgdXNlciBtZXRhc2NoZW1hIGNvbnRhaW5zIGxhYmVscyBhbmQgZGVzY3JpcHRpb25zIGZvciB0aGUgdXNlci4gVXBkYXRlIHRoZSBzYW1lIHRvIGFkZCBtb3JlIGZpZWxkcyB0byB0aGUgdXNlciBtZXRhZGF0YSBvYmplY3QuIDxici8+KkV4YW1wbGU6KmB7ImxhYmVsIjogeyJrZXkxIjogInZhbHVlMSJ9LCAiZGVzY3JpcHRpb24iOiAiVXNlciBEZXNjcmlwdGlvbiJ9YBKpAQoFdGl0bGUYBCABKAlCmQGSQZUBMpIBVGhlIHRpdGxlIGNhbiBjb250YWluIGFueSBVVEYtOCBjaGFyYWN0ZXIsIHVzZWQgdG8gcHJvdmlkZSBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyLiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LiA8YnIvPipFeGFtcGxlOipgIkpvaG4gRG9lImAS8AIKBmF2YXRhchgFIAEoCULfApJBjwIy0wFUaGUgYXZhdGFyIGlzIGJhc2U2NCBlbmNvZGVkIGltYWdlIGRhdGEgb2YgdGhlIHVzZXIuIENhbiBhbHNvIGJlIGxlZnQgZW1wdHkuIFRoZSBpbWFnZSBzaG91bGQgYmUgbGVzcyB0aGFuIDIwMEtCLiBTaG91bGQgZm9sbG93IHRoZSByZWdleCBwYXR0ZXJuIGBeZGF0YTppbWFnZS8ocG5nfGpwZ3xqcGVnfGdpZik7YmFzZTY0LChbYS16QS1aMC05Ky9dKz17MCwyfSkrJGAuSjciZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUEi+kJJckcYkKEPMj5eZGF0YTppbWFnZS8ocG5nfGpwZ3xqcGVnfGdpZik7YmFzZTY0LChbYS16QS1aMC05Ky9dKz17MCwyfSkrJNABASLHAwoQTGlzdFVzZXJzUmVxdWVzdBJlCglwYWdlX3NpemUYASABKAVCUpJBRjJEVGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHJldHVybiBwZXIgcGFnZS4gVGhlIGRlZmF1bHQgaXMgMTAwMC76QgYaBCgBQAESTAoIcGFnZV9udW0YAiABKAVCOpJBLjIsVGhlIHBhZ2UgbnVtYmVyIHRvIHJldHVybi4gVGhlIGRlZmF1bHQgaXMgMS76QgYaBCgBQAESQQoHa2V5d29yZBgDIAEoCUIwkkEtMitUaGUga2V5d29yZCB0byBzZWFyY2ggZm9yIGluIG5hbWUgb3IgZW1haWwuEjwKBm9yZ19pZBgEIAEoCUIskkEpMidUaGUgb3JnYW5pemF0aW9uIElEIHRvIGZpbHRlciB1c2VycyBieS4SMQoIZ3JvdXBfaWQYBSABKAlCH5JBHDIaVGhlIGdyb3VwIGlkIHRvIGZpbHRlciBieS4SSgoFc3RhdGUYBiABKAlCO5JBODI2VGhlIHN0YXRlIHRvIGZpbHRlciBieS4gSXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIlIKEUxpc3RVc2Vyc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFEi4KBXVzZXJzGAIgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyIlcKEUNyZWF0ZVVzZXJSZXF1ZXN0EkIKBGJvZHkYASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXJSZXF1ZXN0Qm9keUII+kIFigECEAEiQwoSQ3JlYXRlVXNlclJlc3BvbnNlEi0KBHVzZXIYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXIiOwoeTGlzdE9yZ2FuaXphdGlvbnNCeVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEg0KBXN0YXRlGAIgASgJIqcBCh9MaXN0T3JnYW5pemF0aW9uc0J5VXNlclJlc3BvbnNlEj4KDW9yZ2FuaXphdGlvbnMYASADKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbhJEChNqb2luYWJsZV92aWFfZG9tYWluGAIgAygLMicucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Pcmdhbml6YXRpb24iNgolTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVxdWVzdBINCgVzdGF0ZRgBIAEoCSKuAQomTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVzcG9uc2USPgoNb3JnYW5pemF0aW9ucxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uEkQKE2pvaW5hYmxlX3ZpYV9kb21haW4YAiADKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbiInChlMaXN0UHJvamVjdHNCeVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIlIKGkxpc3RQcm9qZWN0c0J5VXNlclJlc3BvbnNlEjQKCHByb2plY3RzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0IrMCCiBMaXN0UHJvamVjdHNCeUN1cnJlbnRVc2VyUmVxdWVzdBIOCgZvcmdfaWQYASABKAkSGAoQd2l0aF9wZXJtaXNzaW9ucxgCIAMoCRIVCg1ub25faW5oZXJpdGVkGAMgASgIEhkKEXdpdGhfbWVtYmVyX2NvdW50GAQgASgIEmUKCXBhZ2Vfc2l6ZRgFIAEoBUJSkkFGMkRUaGUgbWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIHBlciBwYWdlLiBUaGUgZGVmYXVsdCBpcyAxMDAwLvpCBhoEKAFAARJMCghwYWdlX251bRgGIAEoBUI6kkEuMixUaGUgcGFnZSBudW1iZXIgdG8gcmV0dXJuLiBUaGUgZGVmYXVsdCBpcyAxLvpCBhoEKAFAASL+AQohTGlzdFByb2plY3RzQnlDdXJyZW50VXNlclJlc3BvbnNlEjQKCHByb2plY3RzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0El0KDGFjY2Vzc19wYWlycxgCIAMoCzJHLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RzQnlDdXJyZW50VXNlclJlc3BvbnNlLkFjY2Vzc1BhaXISDQoFY291bnQYAyABKAUaNQoKQWNjZXNzUGFpchISCgpwcm9qZWN0X2lkGAEgASgJEhMKC3Blcm1pc3Npb25zGAIgAygJIh8KEUVuYWJsZVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIhQKEkVuYWJsZVVzZXJSZXNwb25zZSIgChJEaXNhYmxlVXNlclJlcXVlc3QSCgoCaWQYASABKAkiFQoTRGlzYWJsZVVzZXJSZXNwb25zZSIfChFEZWxldGVVc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSIUChJEZWxldGVVc2VyUmVzcG9uc2UiQAoPR2V0VXNlclJlc3BvbnNlEi0KBHVzZXIYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXIiFwoVR2V0Q3VycmVudFVzZXJSZXF1ZXN0IoQBChZHZXRDdXJyZW50VXNlclJlc3BvbnNlEi0KBHVzZXIYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXISOwoLc2VydmljZXVzZXIYAiABKAsyJi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlcnZpY2VVc2VyIkMKElVwZGF0ZVVzZXJSZXNwb25zZRItCgR1c2VyGAEgASgLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyIkoKGVVwZGF0ZUN1cnJlbnRVc2VyUmVzcG9uc2USLQoEdXNlchgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXNlciJZChFVcGRhdGVVc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRI4CgRib2R5GAIgASgLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyUmVxdWVzdEJvZHkiHAoOR2V0VXNlclJlcXVlc3QSCgoCaWQYASABKAkiYwocTGlzdEN1cnJlbnRVc2VyR3JvdXBzUmVxdWVzdBIOCgZvcmdfaWQYASABKAkSGAoQd2l0aF9wZXJtaXNzaW9ucxgCIAMoCRIZChF3aXRoX21lbWJlcl9jb3VudBgDIAEoCCLhAQodTGlzdEN1cnJlbnRVc2VyR3JvdXBzUmVzcG9uc2USMAoGZ3JvdXBzGAEgAygLMiAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cBJZCgxhY2Nlc3NfcGFpcnMYAiADKAsyQy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDdXJyZW50VXNlckdyb3Vwc1Jlc3BvbnNlLkFjY2Vzc1BhaXIaMwoKQWNjZXNzUGFpchIQCghncm91cF9pZBgBIAEoCRITCgtwZXJtaXNzaW9ucxgCIAMoCSLYAQoVTGlzdFVzZXJHcm91cHNSZXF1ZXN0Ej0KAmlkGAEgASgJQjGSQS4yLFRoZSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IGdyb3VwcyBmb3IuEnoKBm9yZ19pZBgDIAEoCUJqkkFnMmVUaGUgb3JnYW5pemF0aW9uIElEIHRvIGZpbHRlciBncm91cHMgYnkuIElmIG5vdCBwcm92aWRlZCwgZ3JvdXBzIGZyb20gYWxsIG9yZ2FuaXphdGlvbnMgYXJlIHJldHVybmVkLkoECAIQAyJKChZMaXN0VXNlckdyb3Vwc1Jlc3BvbnNlEjAKBmdyb3VwcxgBIAMoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXAiVAoYVXBkYXRlQ3VycmVudFVzZXJSZXF1ZXN0EjgKBGJvZHkYASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXJSZXF1ZXN0Qm9keSJaChpMaXN0VXNlckludml0YXRpb25zUmVxdWVzdBI8CgJpZBgBIAEoCUIwkkEtMitUaGUgdXNlciBlbWFpbCB0byBsaXN0IHRoZSBpbnZpdGF0aW9ucyBmb3IuIlkKG0xpc3RVc2VySW52aXRhdGlvbnNSZXNwb25zZRI6CgtpbnZpdGF0aW9ucxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSW52aXRhdGlvbiIjCiFMaXN0Q3VycmVudFVzZXJJbnZpdGF0aW9uc1JlcXVlc3QilwEKIkxpc3RDdXJyZW50VXNlckludml0YXRpb25zUmVzcG9uc2USOgoLaW52aXRhdGlvbnMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkludml0YXRpb24SNQoEb3JncxgCIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uIrYBChdMaXN0U2VydmljZVVzZXJzUmVxdWVzdBJPCgZvcmdfaWQYASABKAlCP5JBMTIvVGhlIG9yZ2FuaXphdGlvbiBJRCB0byBmaWx0ZXIgc2VydmljZSB1c2VycyBieS7iQQEC+kIEcgIQAxJKCgVzdGF0ZRgCIAEoCUI7kkE4MjZUaGUgc3RhdGUgdG8gZmlsdGVyIGJ5LiBJdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4iWAoYTGlzdFNlcnZpY2VVc2Vyc1Jlc3BvbnNlEjwKDHNlcnZpY2V1c2VycxgBIAMoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIikQEKFlNlcnZpY2VVc2VyUmVxdWVzdEJvZHkSTAoFdGl0bGUYASABKAlCPZJBOjInVXNlciBmcmllbmRseSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHVzZXIuSg8iT3JkZXIgU2VydmljZSISKQoIbWV0YWRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IrYBChhDcmVhdGVTZXJ2aWNlVXNlclJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXJSZXF1ZXN0Qm9keRJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiWAoZQ3JlYXRlU2VydmljZVVzZXJSZXNwb25zZRI7CgtzZXJ2aWNldXNlchgBIAEoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIirgEKFUdldFNlcnZpY2VVc2VyUmVxdWVzdBI6CgJpZBgBIAEoCUIukkErMilUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gZ2V0LhJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiVQoWR2V0U2VydmljZVVzZXJSZXNwb25zZRI7CgtzZXJ2aWNldXNlchgBIAEoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIi9QEKGFVwZGF0ZVNlcnZpY2VVc2VyUmVxdWVzdBI9CgJpZBgBIAEoCUIxkkEuMixUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gdXBkYXRlLhI/CgRib2R5GAIgASgLMjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZXJ2aWNlVXNlclJlcXVlc3RCb2R5ElkKBm9yZ19pZBgDIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJYChlVcGRhdGVTZXJ2aWNlVXNlclJlc3BvbnNlEjsKC3NlcnZpY2V1c2VyGAEgASgLMiYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZXJ2aWNlVXNlciK0AQoYRGVsZXRlU2VydmljZVVzZXJSZXF1ZXN0Ej0KAmlkGAEgASgJQjGSQS4yLFRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBkZWxldGUuElkKBm9yZ19pZBgCIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyIbChlEZWxldGVTZXJ2aWNlVXNlclJlc3BvbnNlItABChtDcmVhdGVTZXJ2aWNlVXNlckpXS1JlcXVlc3QSRwoCaWQYASABKAlCO5JBODI2VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGNyZWF0ZSBhIGtleSBmb3IuEg0KBXRpdGxlGAIgASgJElkKBm9yZ19pZBgDIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJVChxDcmVhdGVTZXJ2aWNlVXNlckpXS1Jlc3BvbnNlEjUKA2tleRgBIAEoCzIoLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuS2V5Q3JlZGVudGlhbCLyAQoYR2V0U2VydmljZVVzZXJKV0tSZXF1ZXN0EkQKAmlkGAEgASgJQjiSQTUyM1RoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBnZXQgYSBrZXkgZm9yLhI1CgZrZXlfaWQYAiABKAlCJZJBIjIgVGhlIHVuaXF1ZSBJRCBvZiB0aGUga2V5IHRvIGdldC4SWQoGb3JnX2lkGAMgASgJQkmSQTsyOVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvLuJBAQL6QgRyAhADIlAKGUdldFNlcnZpY2VVc2VySldLUmVzcG9uc2USMwoEa2V5cxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSlNPTldlYktleSK9AQoaTGlzdFNlcnZpY2VVc2VySldLc1JlcXVlc3QSRAoCaWQYASABKAlCOJJBNTIzVGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGxpc3Qga2V5cyBmb3IuElkKBm9yZ19pZBgCIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJWChtMaXN0U2VydmljZVVzZXJKV0tzUmVzcG9uc2USNwoEa2V5cxgBIAMoCzIpLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXJKV0si+wEKG0RlbGV0ZVNlcnZpY2VVc2VySldLUmVxdWVzdBJHCgJpZBgBIAEoCUI7kkE4MjZUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gZGVsZXRlIGEga2V5IGZvci4SOAoGa2V5X2lkGAIgASgJQiiSQSUyI1RoZSB1bmlxdWUgSUQgb2YgdGhlIGtleSB0byBkZWxldGUuElkKBm9yZ19pZBgDIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyIeChxEZWxldGVTZXJ2aWNlVXNlckpXS1Jlc3BvbnNlItcBCiJDcmVhdGVTZXJ2aWNlVXNlckNyZWRlbnRpYWxSZXF1ZXN0EkcKAmlkGAEgASgJQjuSQTgyNlRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBjcmVhdGUgYSBrZXkgZm9yLhINCgV0aXRsZRgCIAEoCRJZCgZvcmdfaWQYAyABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiYgojQ3JlYXRlU2VydmljZVVzZXJDcmVkZW50aWFsUmVzcG9uc2USOwoGc2VjcmV0GAEgASgLMisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZWNyZXRDcmVkZW50aWFsIscBCiFMaXN0U2VydmljZVVzZXJDcmVkZW50aWFsc1JlcXVlc3QSRwoCaWQYASABKAlCO5JBODI2VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGxpc3Qgc2VjcmV0cyBmb3IuElkKBm9yZ19pZBgCIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJiCiJMaXN0U2VydmljZVVzZXJDcmVkZW50aWFsc1Jlc3BvbnNlEjwKB3NlY3JldHMYASADKAsyKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlY3JldENyZWRlbnRpYWwiiwIKIkRlbGV0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlcXVlc3QSSgoCaWQYASABKAlCPpJBOzI5VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGRlbGV0ZSBhIHNlY3JldCBmb3IuEj4KCXNlY3JldF9pZBgCIAEoCUIrkkEoMiZUaGUgdW5pcXVlIElEIG9mIHRoZSBzZWNyZXQgdG8gZGVsZXRlLhJZCgZvcmdfaWQYAyABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiJQojRGVsZXRlU2VydmljZVVzZXJDcmVkZW50aWFsUmVzcG9uc2Ui1AEKHUNyZWF0ZVNlcnZpY2VVc2VyVG9rZW5SZXF1ZXN0EkkKAmlkGAEgASgJQj2SQToyOFRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBjcmVhdGUgYSB0b2tlbiBmb3IuEg0KBXRpdGxlGAIgASgJElkKBm9yZ19pZBgDIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJcCh5DcmVhdGVTZXJ2aWNlVXNlclRva2VuUmVzcG9uc2USOgoFdG9rZW4YASABKAsyKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlcnZpY2VVc2VyVG9rZW4iwQEKHExpc3RTZXJ2aWNlVXNlclRva2Vuc1JlcXVlc3QSRgoCaWQYASABKAlCOpJBNzI1VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGxpc3QgdG9rZW5zIGZvci4SWQoGb3JnX2lkGAIgASgJQkmSQTsyOVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvLuJBAQL6QgRyAhADIlwKHUxpc3RTZXJ2aWNlVXNlclRva2Vuc1Jlc3BvbnNlEjsKBnRva2VucxgBIAMoCzIrLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXJUb2tlbiKDAgodRGVsZXRlU2VydmljZVVzZXJUb2tlblJlcXVlc3QSSQoCaWQYASABKAlCPZJBOjI4VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGRlbGV0ZSBhIHRva2VuIGZvci4SPAoIdG9rZW5faWQYAiABKAlCKpJBJzIlVGhlIHVuaXF1ZSBJRCBvZiB0aGUgdG9rZW4gdG8gZGVsZXRlLhJZCgZvcmdfaWQYAyABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiIAoeRGVsZXRlU2VydmljZVVzZXJUb2tlblJlc3BvbnNlIt8BCh5MaXN0U2VydmljZVVzZXJQcm9qZWN0c1JlcXVlc3QSSAoCaWQYASABKAlCPJJBOTI3VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGxpc3QgcHJvamVjdHMgZm9yLhJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMSGAoQd2l0aF9wZXJtaXNzaW9ucxgDIAMoCSLrAQofTGlzdFNlcnZpY2VVc2VyUHJvamVjdHNSZXNwb25zZRI0Cghwcm9qZWN0cxgBIAMoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvamVjdBJbCgxhY2Nlc3NfcGFpcnMYAiADKAsyRS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTZXJ2aWNlVXNlclByb2plY3RzUmVzcG9uc2UuQWNjZXNzUGFpcho1CgpBY2Nlc3NQYWlyEhIKCnByb2plY3RfaWQYASABKAkSEwoLcGVybWlzc2lvbnMYAiADKAki7QEKHUxpc3RPcmdhbml6YXRpb25Hcm91cHNSZXF1ZXN0EikKBm9yZ19pZBgCIAEoCUIZ+kIWchQQAzIQXltBLVphLXowLTlfLV0rJBJXCgVzdGF0ZRgDIAEoCUJIkkFFMkNUaGUgc3RhdGUgb2YgdGhlIGdyb3VwIHRvIGZpbHRlciBieS4gSXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuEhEKCWdyb3VwX2lkcxgEIAMoCRIUCgx3aXRoX21lbWJlcnMYBSABKAgSGQoRd2l0aF9tZW1iZXJfY291bnQYBiABKAhKBAgBEAIiUgoeTGlzdE9yZ2FuaXphdGlvbkdyb3Vwc1Jlc3BvbnNlEjAKBmdyb3VwcxgBIAMoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXAirwEKHUNyZWF0ZU9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0EkIKBGJvZHkYASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGVSZXF1ZXN0Qm9keUII+kIFigECEAESSgoGb3JnX2lkGAIgASgJQjqSQTMyMVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHJvbGUgYmVsb25ncyB0by7iQQECIk8KHkNyZWF0ZU9yZ2FuaXphdGlvblJvbGVSZXNwb25zZRItCgRyb2xlGAEgASgLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlIkEKGkdldE9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQAyJMChtHZXRPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2USLQoEcm9sZRgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSJ1Ch1VcGRhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZvcmdfaWQYAyABKAkSOAoEYm9keRgCIAEoCzIqLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZVJlcXVlc3RCb2R5Ik8KHlVwZGF0ZU9yZ2FuaXphdGlvblJvbGVSZXNwb25zZRItCgRyb2xlGAEgASgLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlIjEKEExpc3RSb2xlc1JlcXVlc3QSDQoFc3RhdGUYASABKAkSDgoGc2NvcGVzGAIgAygJIkMKEUxpc3RSb2xlc1Jlc3BvbnNlEi4KBXJvbGVzGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlIlYKHExpc3RPcmdhbml6YXRpb25Sb2xlc1JlcXVlc3QSFwoGb3JnX2lkGAEgASgJQgf6QgRyAhADEg0KBXN0YXRlGAIgASgJEg4KBnNjb3BlcxgDIAMoCSJPCh1MaXN0T3JnYW5pemF0aW9uUm9sZXNSZXNwb25zZRIuCgVyb2xlcxgBIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSJECh1EZWxldGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAMiIAoeRGVsZXRlT3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIqsKChdPcmdhbml6YXRpb25SZXF1ZXN0Qm9keRL7AQoEbmFtZRgBIAEoCULsAZJBzQEyygFUaGUgbmFtZSBvZiB0aGUgb3JnYW5pemF0aW9uLiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBGcm9udGllciBpbnN0YW5jZS4gVGhlIG5hbWUgY2FuIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgZGFzaGVzIGFuZCB1bmRlcnNjb3Jlcy48YnIvPipFeGFtcGxlOipgImZyb250aWVyLW9yZzEtYWNtZSJg4kEBAvpCFHISMhBeW0EtWmEtejAtOS1fXSskErIBCgV0aXRsZRgCIAEoCUKiAZJBngEymwFUaGUgdGl0bGUgY2FuIGNvbnRhaW4gYW55IFVURi04IGNoYXJhY3RlciwgdXNlZCB0byBwcm92aWRlIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ2FuaXphdGlvbi4gQ2FuIGFsc28gYmUgbGVmdCBlbXB0eS48YnIvPiAqRXhhbXBsZSo6IGAiQWNtZSBJbmMiYBLpAwoIbWV0YWRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Qr0DkkG5AzK2A01ldGFkYXRhIG9iamVjdCBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IGNhbiBob2xkIGtleSB2YWx1ZSBwYWlycyBkZWZpbmVkIGluIE9yZ2FuaXphdGlvbiBNZXRhc2NoZW1hLiBUaGUgbWV0YWRhdGEgb2JqZWN0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFyYml0cmFyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JnYW5pemF0aW9uIHN1Y2ggYXMgbGFiZWxzLCBkZXNjcmlwdGlvbnMgZXRjLiBUaGUgZGVmYXVsdCBPcmdhbml6YXRpb24gTWV0YXNjaGVtYSBjb250YWlucyBsYWJlbHMgYW5kIGRlc2NyaXB0b24gZmllbGRzLiBVcGRhdGUgdGhlIE9yZ2FuaXphdGlvbiBNZXRhc2NoZW1hIHRvIGFkZCBtb3JlIGZpZWxkcy4gPGJyLz4qRXhhbXBsZSo6YHsibGFiZWxzIjogeyJrZXkiOiAidmFsdWUifSwgImRlc2NyaXB0aW9uIjogIk9yZ2FuaXphdGlvbiBkZXNjcmlwdGlvbiJ9YBLwAgoGYXZhdGFyGAQgASgJQt8CkkGPAjLTAVRoZSBhdmF0YXIgaXMgYmFzZTY0IGVuY29kZWQgaW1hZ2UgZGF0YSBvZiB0aGUgdXNlci4gQ2FuIGFsc28gYmUgbGVmdCBlbXB0eS4gVGhlIGltYWdlIHNob3VsZCBiZSBsZXNzIHRoYW4gMjAwS0IuIFNob3VsZCBmb2xsb3cgdGhlIHJlZ2V4IHBhdHRlcm4gYF5kYXRhOmltYWdlLyhwbmd8anBnfGpwZWd8Z2lmKTtiYXNlNjQsKFthLXpBLVowLTkrL10rPXswLDJ9KSskYC5KNyJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQSL6QklyRxiQoQ8yPl5kYXRhOmltYWdlLyhwbmd8anBnfGpwZWd8Z2lmKTtiYXNlNjQsKFthLXpBLVowLTkrL10rPXswLDJ9KSsk0AEBIukDChhMaXN0T3JnYW5pemF0aW9uc1JlcXVlc3QSxwEKB3VzZXJfaWQYASABKAlCtQGSQbEBMq4BVGhlIHVzZXIgSUQgdG8gZmlsdGVyIGJ5LiBJdCBjYW4gYmUgdXNlZCB0byBsaXN0IGFsbCB0aGUgb3JnYW5pemF0aW9ucyB0aGF0IHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mLiBPdGhlcndpc2UsIGFsbCB0aGUgb3JnYW5pemF0aW9ucyBpbiB0aGUgRnJvbnRpZXIgaW5zdGFuY2Ugd2lsbCBiZSBsaXN0ZWQuEk4KBXN0YXRlGAIgASgJQj+SQTwyOlRoZSBzdGF0ZSB0byBmaWx0ZXIgYnkuIEl0IGNhbiBiZSBgZW5hYmxlZGAgb3IgYGRpc2FibGVkYC4SZQoJcGFnZV9zaXplGAMgASgFQlKSQUYyRFRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byByZXR1cm4gcGVyIHBhZ2UuIFRoZSBkZWZhdWx0IGlzIDEwMDAu+kIGGgQoAUABEkwKCHBhZ2VfbnVtGAQgASgFQjqSQS4yLFRoZSBwYWdlIG51bWJlciB0byByZXR1cm4uIFRoZSBkZWZhdWx0IGlzIDEu+kIGGgQoAUABIlsKGUxpc3RPcmdhbml6YXRpb25zUmVzcG9uc2USPgoNb3JnYW5pemF0aW9ucxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uImcKGUNyZWF0ZU9yZ2FuaXphdGlvblJlcXVlc3QSSgoEYm9keRgBIAEoCzIyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uUmVxdWVzdEJvZHlCCPpCBYoBAhABIlsKGkNyZWF0ZU9yZ2FuaXphdGlvblJlc3BvbnNlEj0KDG9yZ2FuaXphdGlvbhgBIAEoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uIlgKF0dldE9yZ2FuaXphdGlvblJlc3BvbnNlEj0KDG9yZ2FuaXphdGlvbhgBIAEoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uIlsKGlVwZGF0ZU9yZ2FuaXphdGlvblJlc3BvbnNlEj0KDG9yZ2FuaXphdGlvbhgBIAEoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uIiQKFkdldE9yZ2FuaXphdGlvblJlcXVlc3QSCgoCaWQYASABKAkiaQoZVXBkYXRlT3JnYW5pemF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRJACgRib2R5GAIgASgLMjIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Pcmdhbml6YXRpb25SZXF1ZXN0Qm9keSI0Ch1MaXN0T3JnYW5pemF0aW9uQWRtaW5zUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAyJQCh5MaXN0T3JnYW5pemF0aW9uQWRtaW5zUmVzcG9uc2USLgoFdXNlcnMYASADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXIifAocTGlzdE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxIdChFwZXJtaXNzaW9uX2ZpbHRlchgCIAEoCUICGAESEgoKd2l0aF9yb2xlcxgDIAEoCBIUCgxyb2xlX2ZpbHRlcnMYBCADKAki8wEKHUxpc3RPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlEi4KBXVzZXJzGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyElUKCnJvbGVfcGFpcnMYAiADKAsyQS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlLlJvbGVQYWlyGksKCFJvbGVQYWlyEg8KB3VzZXJfaWQYASABKAkSLgoFcm9sZXMYAiADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGUifAobQWRkT3JnYW5pemF0aW9uVXNlcnNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEkgKCHVzZXJfaWRzGAIgAygJQjaSQTMyMUxpc3Qgb2YgdXNlciBJRHMgdG8gYmUgYWRkZWQgdG8gdGhlIG9yZ2FuaXphdGlvbi4iHgocQWRkT3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZSJFCh1SZW1vdmVPcmdhbml6YXRpb25Vc2VyUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxIPCgd1c2VyX2lkGAIgASgJIiAKHlJlbW92ZU9yZ2FuaXphdGlvblVzZXJSZXNwb25zZSI6CiNMaXN0T3JnYW5pemF0aW9uU2VydmljZVVzZXJzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAyJkCiRMaXN0T3JnYW5pemF0aW9uU2VydmljZVVzZXJzUmVzcG9uc2USPAoMc2VydmljZXVzZXJzGAEgAygLMiYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZXJ2aWNlVXNlciLcAQoiTGlzdE9yZ2FuaXphdGlvbkludml0YXRpb25zUmVxdWVzdBJPCgZvcmdfaWQYASABKAlCP5JBODI2dW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gdG8gd2hpY2ggdXNlciBpcyBpbnZpdGVk4kEBAhJlCgd1c2VyX2lkGAIgASgJQlSSQVEyT3VzZXJfaWQgZmlsdGVyIGlzIHRoZSBlbWFpbCBpZCBvZiB1c2VyIHdobyBhcmUgaW52aXRlZCBpbnNpZGUgdGhlIG9yZ2FuaXphdGlvbi4iYQojTGlzdE9yZ2FuaXphdGlvbkludml0YXRpb25zUmVzcG9uc2USOgoLaW52aXRhdGlvbnMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkludml0YXRpb24ihgQKI0NyZWF0ZU9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0Ek8KBm9yZ19pZBgBIAEoCUI/kkE4MjZ1bmlxdWUgaWQgb2YgdGhlIG9yZ2FuaXphdGlvbiB0byB3aGljaCB1c2VyIGlzIGludml0ZWTiQQECEqsBCgh1c2VyX2lkcxgCIAMoCUKYAZJBhgEygwF1c2VyX2lkIGlzIGVtYWlsIGlkIG9mIHVzZXIgd2hvIGFyZSBpbnZpdGVkIGluc2lkZSB0aGUgb3JnYW5pemF0aW9uLiBJZiB1c2VyIGlzIG5vdCByZWdpc3RlcmVkIG9uIHRoZSBwbGF0Zm9ybSwgaXQgd2lsbCBiZSBub3RpZmllZOJBAQL6QgeSAQQIARAKElYKCWdyb3VwX2lkcxgDIAMoCUJDkkFAMj5saXN0IG9mIGdyb3VwIGlkcyB0byB3aGljaCB1c2VyIG5lZWRzIHRvIGJlIGFkZGVkIGFzIGEgbWVtYmVyLhKHAQoIcm9sZV9pZHMYBCADKAlCdZJBcjJwbGlzdCBvZiByb2xlIGlkcyB0byB3aGljaCB1c2VyIG5lZWRzIHRvIGJlIGFkZGVkIGFzIGEgbWVtYmVyLiBSb2xlcyBhcmUgYmluZGVkIGF0IG9yZ2FuaXphdGlvbiBsZXZlbCBieSBkZWZhdWx0LiJiCiRDcmVhdGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2USOgoLaW52aXRhdGlvbnMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkludml0YXRpb24iPgogR2V0T3JnYW5pemF0aW9uSW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSDgoGb3JnX2lkGAIgASgJIl4KIUdldE9yZ2FuaXphdGlvbkludml0YXRpb25SZXNwb25zZRI5CgppbnZpdGF0aW9uGAEgASgLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5JbnZpdGF0aW9uIkEKI0FjY2VwdE9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEg4KBm9yZ19pZBgCIAEoCSImCiRBY2NlcHRPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2UiQQojRGVsZXRlT3JnYW5pemF0aW9uSW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSDgoGb3JnX2lkGAIgASgJIpUCCh5MaXN0T3JnYW5pemF0aW9uRG9tYWluc1JlcXVlc3QSbAoGb3JnX2lkGAEgASgJQlySQU4yTHVuaXF1ZSBpZCBvZiB0aGUgb3JnYW5pemF0aW9uIGZvciB3aGljaCB3aGl0ZWxpc3RlZCBkb21haW5zIGFyZSB0byBiZSBsaXN0ZWTiQQEC+kIEcgIQAxKEAQoFc3RhdGUYAiABKAlCdZJBcjJwZmlsdGVyIHRvIGxpc3QgZG9tYWlucyBieSB0aGVpciBzdGF0ZSAocGVuZGluZy92ZXJpZmllZCkuIElmIG5vdCBwcm92aWRlZCwgYWxsIGRvbWFpbnMgZm9yIGFuIG9yZyB3aWxsIGJlIGxpc3RlZCJVCh9MaXN0T3JnYW5pemF0aW9uRG9tYWluc1Jlc3BvbnNlEjIKB2RvbWFpbnMYASADKAsyIS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRvbWFpbiKYAQogTGlzdE9yZ2FuaXphdGlvbnNCeURvbWFpblJlcXVlc3QSdAoEbmFtZRgBIAEoCUJmkkFYMlZkb21haW4gbmFtZSB0byBiZSB1c2VkIHRvIGxpc3QgYWxsIHRoZSBvcmdhbml6YXRpb25zIHRoYXQgaGF2ZSB0aGlzIGRvbWFpbiB3aGl0ZWxpc3RlZOJBAQL6QgRyAhADImMKIUxpc3RPcmdhbml6YXRpb25zQnlEb21haW5SZXNwb25zZRI+Cg1vcmdhbml6YXRpb25zGAEgAygLMicucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Pcmdhbml6YXRpb24iMgoXSm9pbk9yZ2FuaXphdGlvblJlcXVlc3QSFwoGb3JnX2lkGAEgASgJQgf6QgRyAhADIhoKGEpvaW5Pcmdhbml6YXRpb25SZXNwb25zZSLSAQocR2V0T3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBJDCgJpZBgBIAEoCUI3kkEpMid1bmlxdWUgaWQgb2YgdGhlIGRvbWFpbiB0byBiZSByZXRyaWV2ZWTiQQEC+kIEcgIQAxJtCgZvcmdfaWQYAiABKAlCXZJBTzJNdW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gZm9yIHdoaWNoIHdoaXRlbGlzdGVkIGRvbWFpbiBpcyB0byBiZSByZXRyaWV2ZWTiQQEC+kIEcgIQAyJSCh1HZXRPcmdhbml6YXRpb25Eb21haW5SZXNwb25zZRIxCgZkb21haW4YASABKAsyIS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRvbWFpbiLiAQofQ3JlYXRlT3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBJrCgZvcmdfaWQYASABKAlCW5JBTTJLdW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gZm9yIHdoaWNoIHdoaXRlbGlzdGVkIGRvbWFpbnMgYXJlIHRvIGJlIGFkZGVk4kEBAvpCBHICEAMSUgoGZG9tYWluGAIgASgJQkKSQTQyMmRvbWFpbiBuYW1lIHRvIGJlIGFkZGVkIHRvIHRoZSB0cnVzdGVkIGRvbWFpbiBsaXN04kEBAvpCBHICEAMiVQogQ3JlYXRlT3JnYW5pemF0aW9uRG9tYWluUmVzcG9uc2USMQoGZG9tYWluGAEgASgLMiEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Eb21haW4i0wEKH0RlbGV0ZU9yZ2FuaXphdGlvbkRvbWFpblJlcXVlc3QSQQoCaWQYASABKAlCNZJBJzIldW5pcXVlIGlkIG9mIHRoZSBkb21haW4gdG8gYmUgZGVsZXRlZOJBAQL6QgRyAhADEm0KBm9yZ19pZBgCIAEoCUJdkkFPMk11bmlxdWUgaWQgb2YgdGhlIG9yZ2FuaXphdGlvbiBmb3Igd2hpY2ggd2hpdGVsaXN0ZWQgZG9tYWlucyBhcmUgdG8gYmUgZGVsZXRlZOJBAQL6QgRyAhADIiIKIERlbGV0ZU9yZ2FuaXphdGlvbkRvbWFpblJlc3BvbnNlItUBCh9WZXJpZnlPcmdhbml6YXRpb25Eb21haW5SZXF1ZXN0Em4KBm9yZ19pZBgBIAEoCUJekkFQMk51bmlxdWUgaWQgb2YgdGhlIG9yZ2FuaXphdGlvbiBmb3Igd2hpY2ggd2hpdGVsaXN0ZWQgZG9tYWlucyBhcmUgdG8gYmUgdmVyaWZpZWTiQQEC+kIEcgIQAxJCCgJpZBgCIAEoCUI2kkEoMiZ1bmlxdWUgaWQgb2YgdGhlIGRvbWFpbiB0byBiZSB2ZXJpZmllZOJBAQL6QgRyAhADIjEKIFZlcmlmeU9yZ2FuaXphdGlvbkRvbWFpblJlc3BvbnNlEg0KBXN0YXRlGAEgASgJIiYKJERlbGV0ZU9yZ2FuaXphdGlvbkludml0YXRpb25SZXNwb25zZSInChlFbmFibGVPcmdhbml6YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIhwKGkVuYWJsZU9yZ2FuaXphdGlvblJlc3BvbnNlIigKGkRpc2FibGVPcmdhbml6YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIh0KG0Rpc2FibGVPcmdhbml6YXRpb25SZXNwb25zZSInChlEZWxldGVPcmdhbml6YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIhwKGkRlbGV0ZU9yZ2FuaXphdGlvblJlc3BvbnNlIisKGUdldE9yZ2FuaXphdGlvbkt5Y1JlcXVlc3QSDgoGb3JnX2lkGAEgASgJImIKGkdldE9yZ2FuaXphdGlvbkt5Y1Jlc3BvbnNlEkQKEG9yZ2FuaXphdGlvbl9reWMYASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbkt5YyKsBQoSUHJvamVjdFJlcXVlc3RCb2R5EvcBCgRuYW1lGAEgASgJQugBkkHJATLGAVRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBGcm9udGllciBpbnN0YW5jZS4gVGhlIG5hbWUgY2FuIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgZGFzaGVzIGFuZCB1bmRlcnNjb3Jlcy48YnIvPiAqRXhhbXBsZToqIGBmcm9udGllci1wbGF5Z3JvdW5kYOJBAQL6QhRyEjIQXltBLVphLXowLTktX10rJBK3AQoFdGl0bGUYAiABKAlCpwGSQaMBMqABVGhlIHRpdGxlIGNhbiBjb250YWluIGFueSBVVEYtOCBjaGFyYWN0ZXIsIHVzZWQgdG8gcHJvdmlkZSBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBwcm9qZWN0LiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LiA8YnIvPiAqRXhhbXBsZToqIGBGcm9udGllciBQbGF5Z3JvdW5kYBKJAQoIbWV0YWRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ql6SQVsyWU1ldGFkYXRhIG9iamVjdCBmb3IgcHJvamVjdHMgdGhhdCBjYW4gaG9sZCBrZXkgdmFsdWUgcGFpcnMgZGVmaW5lZCBpbiBQcm9qZWN0IE1ldGFzY2hlbWEuElYKBm9yZ19pZBgEIAEoCUJGkkE4MjZ1bmlxdWUgaWQgb2YgdGhlIG9yZ2FuaXphdGlvbiB0byB3aGljaCBwcm9qZWN0IGJlbG9uZ3PiQQEC+kIEcgIQAyJdChRDcmVhdGVQcm9qZWN0UmVxdWVzdBJFCgRib2R5GAEgASgLMi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0UmVxdWVzdEJvZHlCCPpCBYoBAhABIkwKFUNyZWF0ZVByb2plY3RSZXNwb25zZRIzCgdwcm9qZWN0GAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0It8BCh9MaXN0T3JnYW5pemF0aW9uUHJvamVjdHNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEosBCgVzdGF0ZRgCIAEoCUJ8kkF5MndGaWx0ZXIgcHJvamVjdHMgYnkgc3RhdGUuIElmIG5vdCBzcGVjaWZpZWQsIGFsbCBwcm9qZWN0cyBhcmUgcmV0dXJuZWQuIDxici8+ICpQb3NzaWJsZSB2YWx1ZXM6KiBgZW5hYmxlZGAgb3IgYGRpc2FibGVkYBIZChF3aXRoX21lbWJlcl9jb3VudBgDIAEoCCJYCiBMaXN0T3JnYW5pemF0aW9uUHJvamVjdHNSZXNwb25zZRI0Cghwcm9qZWN0cxgBIAMoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvamVjdCIfChFHZXRQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSJJChJHZXRQcm9qZWN0UmVzcG9uc2USMwoHcHJvamVjdBgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvamVjdCJfChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRI7CgRib2R5GAIgASgLMi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0UmVxdWVzdEJvZHkiTAoVVXBkYXRlUHJvamVjdFJlc3BvbnNlEjMKB3Byb2plY3QYASABKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2plY3QiLwoYTGlzdFByb2plY3RBZG1pbnNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADIksKGUxpc3RQcm9qZWN0QWRtaW5zUmVzcG9uc2USLgoFdXNlcnMYASADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXIiXQoXTGlzdFByb2plY3RVc2Vyc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSGQoRcGVybWlzc2lvbl9maWx0ZXIYAiABKAkSEgoKd2l0aF9yb2xlcxgDIAEoCCLpAQoYTGlzdFByb2plY3RVc2Vyc1Jlc3BvbnNlEi4KBXVzZXJzGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyElAKCnJvbGVfcGFpcnMYAiADKAsyPC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0VXNlcnNSZXNwb25zZS5Sb2xlUGFpchpLCghSb2xlUGFpchIPCgd1c2VyX2lkGAEgASgJEi4KBXJvbGVzGAIgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlIkkKHkxpc3RQcm9qZWN0U2VydmljZVVzZXJzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxISCgp3aXRoX3JvbGVzGAMgASgIIowCCh9MaXN0UHJvamVjdFNlcnZpY2VVc2Vyc1Jlc3BvbnNlEjwKDHNlcnZpY2V1c2VycxgBIAMoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXISVwoKcm9sZV9wYWlycxgCIAMoCzJDLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RTZXJ2aWNlVXNlcnNSZXNwb25zZS5Sb2xlUGFpchpSCghSb2xlUGFpchIWCg5zZXJ2aWNldXNlcl9pZBgBIAEoCRIuCgVyb2xlcxgCIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSJDChhMaXN0UHJvamVjdEdyb3Vwc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSEgoKd2l0aF9yb2xlcxgCIAEoCCLuAQoZTGlzdFByb2plY3RHcm91cHNSZXNwb25zZRIwCgZncm91cHMYASADKAsyIC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdyb3VwElEKCnJvbGVfcGFpcnMYAiADKAsyPS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0R3JvdXBzUmVzcG9uc2UuUm9sZVBhaXIaTAoIUm9sZVBhaXISEAoIZ3JvdXBfaWQYASABKAkSLgoFcm9sZXMYAiADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGUiIgoURW5hYmxlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiFwoVRW5hYmxlUHJvamVjdFJlc3BvbnNlIiMKFURpc2FibGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIYChZEaXNhYmxlUHJvamVjdFJlc3BvbnNlIiIKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIhcKFURlbGV0ZVByb2plY3RSZXNwb25zZSKjCAoRUG9saWN5UmVxdWVzdEJvZHkSUgoHcm9sZV9pZBgBIAEoCUJBkkEzMjF1bmlxdWUgaWQgb2YgdGhlIHJvbGUgdG8gd2hpY2ggcG9saWN5IGlzIGFzc2lnbmVk4kEBAvpCBHICEAMSrwEKBXRpdGxlGAMgASgJQp8BkkGbATKYAVRoZSB0aXRsZSBjYW4gY29udGFpbiBhbnkgVVRGLTggY2hhcmFjdGVyLCB1c2VkIHRvIHByb3ZpZGUgYSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcG9saWN5LiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LiA8YnIvPiAqRXhhbXBsZToqIGBQb2xpY3kgdGl0bGVgErMBCghyZXNvdXJjZRgCIAEoCUKgAZJBkQEyjgFUaGUgcmVzb3VyY2UgdG8gd2hpY2ggcG9saWN5IGlzIGFzc2lnbmVkIGluIHRoaXMgZm9ybWF0IGBuYW1lc3BhY2U6dXVpZGAuIDxici8+ICpFeGFtcGxlOiogYGFwcC9ndWFyZGlhbjo3MGY2OWMzYS0zMzRiLTRmMjUtOTBiOC00ZDRmM2JlNmI4ZTJg4kEBAvpCBHICEAMS7wIKCXByaW5jaXBhbBgEIAEoCULbApJB0wIy0AJwcmluY2lwYWwgaXMgdGhlIHVzZXIgb3IgZ3JvdXAgdG8gd2hpY2ggcG9saWN5IGlzIGFzc2lnbmVkLiBUaGUgcHJpbmNpcGFsIGlkIG11c3QgYmUgcHJlZml4ZWQgd2l0aCBpdHMgbmFtZXNwYWNlIGlkIGluIHRoaXMgZm9ybWF0IGBuYW1lc3BhY2U6dXVpZGAuIFRoZSBuYW1lc3BhY2UgY2FuIGJlIGBhcHAvdXNlcmAsIGBhcHAvZ3JvdXBgIG9yIGBhcHAvc2VydmljZXVzZXJgIChjb21pbmcgdXAhKSBhbmQgdXVpZCBpcyB0aGUgdW5pcXVlIGlkIG9mIHRoZSBwcmluY2lwYWwuIDxici8+ICpFeGFtcGxlOiogYGFwcC91c2VyOjkyZjY5YzNhLTMzNGItNGYyNS05MGI4LTRkNGYzYmU2YjgyNWDiQQECEt8BCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCswGSQa8BMqwBTWV0YWRhdGEgb2JqZWN0IGZvciBwb2xpY2llcyB0aGF0IGNhbiBob2xkIGtleSB2YWx1ZSBwYWlycyBkZWZpbmVkIGluIFBvbGljeSBNZXRhc2NoZW1hLjxici8+ICpFeGFtcGxlOiogYHsibGFiZWxzIjogeyJrZXkiOiAidmFsdWUifSwgImRlc2NyaXB0aW9uIjogIlBvbGljeSBkZXNjcmlwdGlvbiJ9YCKUBQoaQ3JlYXRlUG9saWN5Rm9yUHJvamVjdEJvZHkSUgoHcm9sZV9pZBgBIAEoCUJBkkEzMjF1bmlxdWUgaWQgb2YgdGhlIHJvbGUgdG8gd2hpY2ggcG9saWN5IGlzIGFzc2lnbmVk4kEBAvpCBHICEAMSrwEKBXRpdGxlGAIgASgJQp8BkkGbATKYAVRoZSB0aXRsZSBjYW4gY29udGFpbiBhbnkgVVRGLTggY2hhcmFjdGVyLCB1c2VkIHRvIHByb3ZpZGUgYSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcG9saWN5LiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LiA8YnIvPiAqRXhhbXBsZToqIGBQb2xpY3kgdGl0bGVgEu8CCglwcmluY2lwYWwYAyABKAlC2wKSQdMCMtACcHJpbmNpcGFsIGlzIHRoZSB1c2VyIG9yIGdyb3VwIHRvIHdoaWNoIHBvbGljeSBpcyBhc3NpZ25lZC4gVGhlIHByaW5jaXBhbCBpZCBtdXN0IGJlIHByZWZpeGVkIHdpdGggaXRzIG5hbWVzcGFjZSBpZCBpbiB0aGlzIGZvcm1hdCBgbmFtZXNwYWNlOnV1aWRgLiBUaGUgbmFtZXNwYWNlIGNhbiBiZSBgYXBwL3VzZXJgLCBgYXBwL2dyb3VwYCBvciBgYXBwL3NlcnZpY2V1c2VyYCAoY29taW5nIHVwISkgYW5kIHV1aWQgaXMgdGhlIHVuaXF1ZSBpZCBvZiB0aGUgcHJpbmNpcGFsLiA8YnIvPiAqRXhhbXBsZToqIGBhcHAvdXNlcjo5MmY2OWMzYS0zMzRiLTRmMjUtOTBiOC00ZDRmM2JlNmI4MjVg4kEBAiIiChRHZXRQZXJtaXNzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJSChVHZXRQZXJtaXNzaW9uUmVzcG9uc2USOQoKcGVybWlzc2lvbhgBIAEoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGVybWlzc2lvbiIYChZMaXN0UGVybWlzc2lvbnNSZXF1ZXN0IlUKF0xpc3RQZXJtaXNzaW9uc1Jlc3BvbnNlEjoKC3Blcm1pc3Npb25zGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QZXJtaXNzaW9uIhcKFUxpc3ROYW1lc3BhY2VzUmVxdWVzdCJSChZMaXN0TmFtZXNwYWNlc1Jlc3BvbnNlEjgKCm5hbWVzcGFjZXMYASADKAsyJC5yYXlzdGFjay5mcm9udGllci52MWJldGExLk5hbWVzcGFjZSIhChNHZXROYW1lc3BhY2VSZXF1ZXN0EgoKAmlkGAEgASgJIk8KFEdldE5hbWVzcGFjZVJlc3BvbnNlEjcKCW5hbWVzcGFjZRgBIAEoCzIkLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTmFtZXNwYWNlIlsKE0NyZWF0ZVBvbGljeVJlcXVlc3QSRAoEYm9keRgBIAEoCzIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUG9saWN5UmVxdWVzdEJvZHlCCPpCBYoBAhABIk8KFENyZWF0ZVBvbGljeVJlc3BvbnNlEjEKBnBvbGljeRgCIAEoCzIhLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUG9saWN5SgQIARACIh4KEEdldFBvbGljeVJlcXVlc3QSCgoCaWQYASABKAkiRgoRR2V0UG9saWN5UmVzcG9uc2USMQoGcG9saWN5GAEgASgLMiEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qb2xpY3kimQIKE0xpc3RQb2xpY2llc1JlcXVlc3QSNgoGb3JnX2lkGAEgASgJQiaSQSMyIVRoZSBvcmdhbml6YXRpb24gaWQgdG8gZmlsdGVyIGJ5LhI1Cgpwcm9qZWN0X2lkGAIgASgJQiGSQR4yHFRoZSBwcm9qZWN0IGlkIHRvIGZpbHRlciBieS4SLwoHdXNlcl9pZBgDIAEoCUIekkEbMhlUaGUgdXNlciBpZCB0byBmaWx0ZXIgYnkuEi8KB3JvbGVfaWQYBCABKAlCHpJBGzIZVGhlIHJvbGUgaWQgdG8gZmlsdGVyIGJ5LhIxCghncm91cF9pZBgFIAEoCUIfkkEcMhpUaGUgZ3JvdXAgaWQgdG8gZmlsdGVyIGJ5LiJLChRMaXN0UG9saWNpZXNSZXNwb25zZRIzCghwb2xpY2llcxgBIAMoCzIhLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUG9saWN5Il0KE1VwZGF0ZVBvbGljeVJlcXVlc3QSCgoCaWQYASABKAkSOgoEYm9keRgCIAEoCzIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUG9saWN5UmVxdWVzdEJvZHkiSwoUVXBkYXRlUG9saWN5UmVzcG9uc2USMwoIcG9saWNpZXMYASADKAsyIS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBvbGljeSIhChNEZWxldGVQb2xpY3lSZXF1ZXN0EgoKAmlkGAEgASgJIhYKFERlbGV0ZVBvbGljeVJlc3BvbnNlIosBCh1DcmVhdGVQb2xpY3lGb3JQcm9qZWN0UmVxdWVzdBIbCgpwcm9qZWN0X2lkGAEgASgJQgf6QgRyAhADEk0KBGJvZHkYAiABKAsyNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVBvbGljeUZvclByb2plY3RCb2R5Qgj6QgWKAQIQASIgCh5DcmVhdGVQb2xpY3lGb3JQcm9qZWN0UmVzcG9uc2UicgoTUmVsYXRpb25SZXF1ZXN0Qm9keRIOCgZvYmplY3QYASABKAkSDwoHc3ViamVjdBgDIAEoCRIQCghyZWxhdGlvbhgEIAEoCRIcChRzdWJqZWN0X3N1Yl9yZWxhdGlvbhgGIAEoCUoECAIQA0oECAUQBiJfChVDcmVhdGVSZWxhdGlvblJlcXVlc3QSRgoEYm9keRgBIAEoCzIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVsYXRpb25SZXF1ZXN0Qm9keUII+kIFigECEAEiTwoWQ3JlYXRlUmVsYXRpb25SZXNwb25zZRI1CghyZWxhdGlvbhgBIAEoCzIjLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVsYXRpb24iIAoSR2V0UmVsYXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIkwKE0dldFJlbGF0aW9uUmVzcG9uc2USNQoIcmVsYXRpb24YASABKAsyIy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlbGF0aW9uImEKFVVwZGF0ZVJlbGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRI8CgRib2R5GAIgASgLMi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZWxhdGlvblJlcXVlc3RCb2R5Ik8KFlVwZGF0ZVJlbGF0aW9uUmVzcG9uc2USNQoIcmVsYXRpb24YASABKAsyIy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlbGF0aW9uIrkGChBHcm91cFJlcXVlc3RCb2R5Es8BCgRuYW1lGAEgASgJQsABkkGhATKeAVRoZSBuYW1lIG9mIHRoZSBncm91cC4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIFRoZSBuYW1lIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMu4kEBAvpCFHISMhBeW0EtWmEtejAtOS1fXSskEosBCgV0aXRsZRgCIAEoCUJ8kkF5MndUaGUgdGl0bGUgY2FuIGNvbnRhaW4gYW55IFVURi04IGNoYXJhY3RlciwgdXNlZCB0byBwcm92aWRlIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIGdyb3VwLiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LhK+AwoIbWV0YWRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0QpIDkkGOAzKLA01ldGFkYXRhIG9iamVjdCBmb3IgZ3JvdXBzIHRoYXQgY2FuIGhvbGQga2V5IHZhbHVlIHBhaXJzIGRlZmluZWQgaW4gR3JvdXAgTWV0YXNjaGVtYS4gVGhlIG1ldGFkYXRhIG9iamVjdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhcmJpdHJhcnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyb3VwIHN1Y2ggYXMgbGFiZWxzLCBkZXNjcmlwdGlvbnMgZXRjLiBUaGUgZGVmYXVsdCBHcm91cCBNZXRhc2NoZW1hIGNvbnRhaW5zIGxhYmVscyBhbmQgZGVzY3JpcHRvbiBmaWVsZHMuIFVwZGF0ZSB0aGUgR3JvdXAgTWV0YXNjaGVtYSB0byBhZGQgbW9yZSBmaWVsZHMuPGJyLz4qRXhhbXBsZToqYHsibGFiZWxzIjogeyJrZXkiOiAidmFsdWUifSwgImRlc2NyaXB0aW9uIjogIkdyb3VwIGRlc2NyaXB0aW9uIn1gSgQIBBAFIqYBChJDcmVhdGVHcm91cFJlcXVlc3QSQwoEYm9keRgBIAEoCzIrLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXBSZXF1ZXN0Qm9keUII+kIFigECEAESSwoGb3JnX2lkGAIgASgJQjuSQTQyMlRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIGdyb3VwIGJlbG9uZ3MgdG8u4kEBAiJDCg9HZXRHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSDgoGb3JnX2lkGAIgASgJEhQKDHdpdGhfbWVtYmVycxgDIAEoCCJGChNDcmVhdGVHcm91cFJlc3BvbnNlEi8KBWdyb3VwGAEgASgLMiAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cCJDChBHZXRHcm91cFJlc3BvbnNlEi8KBWdyb3VwGAEgASgLMiAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cCJGChNVcGRhdGVHcm91cFJlc3BvbnNlEi8KBWdyb3VwGAEgASgLMiAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cCKoAQoSVXBkYXRlR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEjkKBGJvZHkYAiABKAsyKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdyb3VwUmVxdWVzdEJvZHkSSwoGb3JnX2lkGAMgASgJQjuSQTQyMlRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIGdyb3VwIGJlbG9uZ3MgdG8u4kEBAiJHChVMaXN0R3JvdXBVc2Vyc1JlcXVlc3QSCgoCaWQYASABKAkSDgoGb3JnX2lkGAIgASgJEhIKCndpdGhfcm9sZXMYAyABKAgi5QEKFkxpc3RHcm91cFVzZXJzUmVzcG9uc2USLgoFdXNlcnMYASADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXISTgoKcm9sZV9wYWlycxgCIAMoCzI6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEdyb3VwVXNlcnNSZXNwb25zZS5Sb2xlUGFpchpLCghSb2xlUGFpchIPCgd1c2VyX2lkGAEgASgJEi4KBXJvbGVzGAIgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlIjkKEkVuYWJsZUdyb3VwUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAMiFQoTRW5hYmxlR3JvdXBSZXNwb25zZSI6ChNEaXNhYmxlR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQAyIWChREaXNhYmxlR3JvdXBSZXNwb25zZSI5ChJEZWxldGVHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSFwoGb3JnX2lkGAIgASgJQgf6QgRyAhADIhUKE0RlbGV0ZUdyb3VwUmVzcG9uc2UiTQoUQWRkR3JvdXBVc2Vyc1JlcXVlc3QSCgoCaWQYASABKAkSFwoGb3JnX2lkGAIgASgJQgf6QgRyAhADEhAKCHVzZXJfaWRzGAMgAygJIhcKFUFkZEdyb3VwVXNlcnNSZXNwb25zZSJOChZSZW1vdmVHcm91cFVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQAxIPCgd1c2VyX2lkGAMgASgJIhkKF1JlbW92ZUdyb3VwVXNlclJlc3BvbnNlIlAKFURlbGV0ZVJlbGF0aW9uUmVxdWVzdBIOCgZvYmplY3QYASABKAkSDwoHc3ViamVjdBgCIAEoCRIQCghyZWxhdGlvbhgEIAEoCUoECAMQBCIYChZEZWxldGVSZWxhdGlvblJlc3BvbnNlIlMKG0xpc3RQcm9qZWN0UmVzb3VyY2VzUmVxdWVzdBIbCgpwcm9qZWN0X2lkGAIgASgJQgf6QgRyAhADEhEKCW5hbWVzcGFjZRgEIAEoCUoECAEQAiJWChxMaXN0UHJvamVjdFJlc291cmNlc1Jlc3BvbnNlEjYKCXJlc291cmNlcxgBIAMoCzIjLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVzb3VyY2UitgYKE1Jlc291cmNlUmVxdWVzdEJvZHkScwoEbmFtZRgBIAEoCUJlkkFeMlxUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UuICBNdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHByb2plY3QuIDxici8+ICpFeGFtcGxlOiogYG15LXJlc291cmNlYOJBAQISjgEKBXRpdGxlGAIgASgJQn+SQXwyelRoZSB0aXRsZSBjYW4gY29udGFpbiBhbnkgVVRGLTggY2hhcmFjdGVyLCB1c2VkIHRvIHByb3ZpZGUgYSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcmVzb3VyY2UuIENhbiBhbHNvIGJlIGxlZnQgZW1wdHkuEvIBCgluYW1lc3BhY2UYAyABKAlC3gGSQdYBMtMBVGhlIG5hbWVzcGFjZSBvZiB0aGUgcmVzb3VyY2UuIFRoZSByZXNvdXJjZSBuYW1lc3BhY2UgYXJlIGNyZWF0ZWQgd2hlbiBwZXJtaXNzaW9ucyBmb3IgdGhhdCByZXNvdXJjZSBpcyBjcmVhdGVkIGluIEZyb250aWVyLiBJZiBuYW1lc3BhY2UgZG9lc24ndCBleGlzdHMgdGhlIHJlcXVlc3Qgd2lsbCBmYWlsLiA8YnIvPiAqRXhhbXBsZToqIGBjb21wdXRlL2luc3RhbmNlYOJBAQIS7AEKCXByaW5jaXBhbBgGIAEoCULYAZJB1AEy0QFVc2VySUQgb3IgU2VydmljZVVzZXJJRCB0aGF0IHNob3VsZCBiZSBtYXJrZWQgYXMgb3duZXIgb2YgdGhlIHJlc291cmNlLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHdpbGwgYmUgbWFkZSB0aGUgcmVzb3VyY2Ugb3duZXIuIDxici8+ICpFeGFtcGxlOiogYHVzZXI6OTJmNjljM2EtMzM0Yi00ZjI1LTkwYjgtNGQ0ZjNiZTZiODI1YBIpCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RKBAgEEAVKBAgFEAYipgEKHENyZWF0ZVByb2plY3RSZXNvdXJjZVJlcXVlc3QSRgoEYm9keRgBIAEoCzIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVzb3VyY2VSZXF1ZXN0Qm9keUII+kIFigECEAESEgoKcHJvamVjdF9pZBgCIAEoCRIqCgJpZBgDIAEoCUIekkEbMhlBdXRvZ2VuZXJhdGVkIGlmIHNraXBwZWQuIlYKHUNyZWF0ZVByb2plY3RSZXNvdXJjZVJlc3BvbnNlEjUKCHJlc291cmNlGAEgASgLMiMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZXNvdXJjZSJKChlHZXRQcm9qZWN0UmVzb3VyY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhsKCnByb2plY3RfaWQYAyABKAlCB/pCBHICEANKBAgCEAMiUwoaR2V0UHJvamVjdFJlc291cmNlUmVzcG9uc2USNQoIcmVzb3VyY2UYASABKAsyIy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlc291cmNlInwKHFVwZGF0ZVByb2plY3RSZXNvdXJjZVJlcXVlc3QSCgoCaWQYASABKAkSPAoEYm9keRgCIAEoCzIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVzb3VyY2VSZXF1ZXN0Qm9keRISCgpwcm9qZWN0X2lkGAMgASgJIlYKHVVwZGF0ZVByb2plY3RSZXNvdXJjZVJlc3BvbnNlEjUKCHJlc291cmNlGAEgASgLMiMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZXNvdXJjZSJHChxEZWxldGVQcm9qZWN0UmVzb3VyY2VSZXF1ZXN0EgoKAmlkGAEgASgJEhsKCnByb2plY3RfaWQYAyABKAlCB/pCBHICEAMiHwodRGVsZXRlUHJvamVjdFJlc291cmNlUmVzcG9uc2UigwYKHkNoZWNrUmVzb3VyY2VQZXJtaXNzaW9uUmVxdWVzdBJDCglvYmplY3RfaWQYASABKAlCMBgBkkErMilEZXByZWNhdGVkLiBVc2UgYHJlc291cmNlYCBmaWVsZCBpbnN0ZWFkLhJKChBvYmplY3RfbmFtZXNwYWNlGAIgASgJQjAYAZJBKzIpRGVwcmVjYXRlZC4gVXNlIGByZXNvdXJjZWAgZmllbGQgaW5zdGVhZC4SjAEKCnBlcm1pc3Npb24YAyABKAlCeJJBWTJXdGhlIHBlcm1pc3Npb24gbmFtZSB0byBjaGVjay4gPGJyLz4gKkV4YW1wbGU6KiBgZ2V0YCwgYGxpc3RgLCBgY29tcHV0ZS5pbnN0YW5jZS5jcmVhdGVg4kEBAvpCFXITMhFeW0EtWmEtejAtOS5fLV0rJBLAAwoIcmVzb3VyY2UYBCABKAlCrQOSQakDMqYDYG5hbWVzcGFjZTp1dWlkYCBvciBgbmFtZXNwYWNlOm5hbWVgIG9mIHRoZSBvcmcgb3IgcHJvamVjdCwgYW5kIGBuYW1lc3BhY2U6dXJuYCBvZiBhIHJlc291cmNlIHVuZGVyIGEgcHJvamVjdC4gSW4gY2FzZSBvZiBhbiBvcmcvcHJvamVjdCBlaXRoZXIgcHJvdmlkZSB0aGUgY29tcGxldGUgbmFtZXNwYWNlIChhcHAvb3JnYW5pemF0aW9uKSBvciBGcm9udGllciBjYW4gYWxzbyBwYXJzZSBhbGlhc2VzIGZvciB0aGUgc2FtZSBhcyBgb3JnYCBvciBgcHJvamVjdGAuIDxici8+ICpFeGFtcGxlOiogYG9yZ2FuaXphdGlvbjo5MmY2OWMzYS0zMzRiLTRmMjUtOTBiOC00ZDRmM2JlNmI4MjVgIG9yIGBhcHAvcHJvamVjdDpwcm9qZWN0LW5hbWVgIG9yIGBjb21wdXRlL2luc3RhbmNlOjkyZjY5YzNhLTMzNGItNGYyNS05MGI4LTRkNGYzYmU2YjgyNWAiMQofQ2hlY2tSZXNvdXJjZVBlcm1pc3Npb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAgibgobQmF0Y2hDaGVja1Blcm1pc3Npb25SZXF1ZXN0Ek8KBmJvZGllcxgBIAMoCzIzLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmF0Y2hDaGVja1Blcm1pc3Npb25Cb2R5Qgr6QgeSAQQIARAUItIEChhCYXRjaENoZWNrUGVybWlzc2lvbkJvZHkScwoKcGVybWlzc2lvbhgBIAEoCUJfkkFAMj50aGUgcGVybWlzc2lvbiBuYW1lIHRvIGNoZWNrLiA8YnIvPiAqRXhhbXBsZToqIGBnZXRgIG9yIGBsaXN0YOJBAQL6QhVyEzIRXltBLVphLXowLTkuXy1dKyQSwAMKCHJlc291cmNlGAIgASgJQq0DkkGpAzKmA2BuYW1lc3BhY2U6dXVpZGAgb3IgYG5hbWVzcGFjZTpuYW1lYCBvZiB0aGUgb3JnIG9yIHByb2plY3QsIGFuZCBgbmFtZXNwYWNlOnVybmAgb2YgYSByZXNvdXJjZSB1bmRlciBhIHByb2plY3QuIEluIGNhc2Ugb2YgYW4gb3JnL3Byb2plY3QgZWl0aGVyIHByb3ZpZGUgdGhlIGNvbXBsZXRlIG5hbWVzcGFjZSAoYXBwL29yZ2FuaXphdGlvbikgb3IgRnJvbnRpZXIgY2FuIGFsc28gcGFyc2UgYWxpYXNlcyBmb3IgdGhlIHNhbWUgYXMgYG9yZ2Agb3IgYHByb2plY3RgLiA8YnIvPiAqRXhhbXBsZToqIGBvcmdhbml6YXRpb246OTJmNjljM2EtMzM0Yi00ZjI1LTkwYjgtNGQ0ZjNiZTZiODI1YCBvciBgYXBwL3Byb2plY3Q6cHJvamVjdC1uYW1lYCBvciBgY29tcHV0ZS9pbnN0YW5jZTo5MmY2OWMzYS0zMzRiLTRmMjUtOTBiOC00ZDRmM2JlNmI4MjVgImoKHEJhdGNoQ2hlY2tQZXJtaXNzaW9uUmVzcG9uc2USSgoFcGFpcnMYASADKAsyOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJhdGNoQ2hlY2tQZXJtaXNzaW9uUmVzcG9uc2VQYWlyInUKIEJhdGNoQ2hlY2tQZXJtaXNzaW9uUmVzcG9uc2VQYWlyEkEKBGJvZHkYASABKAsyMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJhdGNoQ2hlY2tQZXJtaXNzaW9uQm9keRIOCgZzdGF0dXMYAiABKAgioQMKFU1ldGFTY2hlbWFSZXF1ZXN0Qm9keRLUAQoEbmFtZRgBIAEoCULFAZJBpgEyowFUaGUgbmFtZSBvZiB0aGUgbWV0YXNjaGVtYS4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIFRoZSBuYW1lIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMu4kEBAvpCFHISMhBeW0EtWmEtejAtOS1fXSskErABCgZzY2hlbWEYAiABKAlCnwGSQZABMo0BVGhlIHNjaGVtYSBvZiB0aGUgbWV0YXNjaGVtYS4gVGhlIHNjaGVtYSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBzY2hlbWEuUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vanNvbi1zY2hlbWEub3JnLyB0byBrbm93IG1vcmUgYWJvdXQganNvbiBzY2hlbWEu4kEBAvpCBHICEAIiYwoXQ3JlYXRlTWV0YVNjaGVtYVJlcXVlc3QSSAoEYm9keRgBIAEoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTWV0YVNjaGVtYVJlcXVlc3RCb2R5Qgj6QgWKAQIQASJVChhDcmVhdGVNZXRhU2NoZW1hUmVzcG9uc2USOQoKbWV0YXNjaGVtYRgBIAEoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTWV0YVNjaGVtYSIiChRHZXRNZXRhU2NoZW1hUmVxdWVzdBIKCgJpZBgBIAEoCSJSChVHZXRNZXRhU2NoZW1hUmVzcG9uc2USOQoKbWV0YXNjaGVtYRgBIAEoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTWV0YVNjaGVtYSJvChdVcGRhdGVNZXRhU2NoZW1hUmVxdWVzdBIKCgJpZBgBIAEoCRJICgRib2R5GAIgASgLMjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5NZXRhU2NoZW1hUmVxdWVzdEJvZHlCCPpCBYoBAhABIlUKGFVwZGF0ZU1ldGFTY2hlbWFSZXNwb25zZRI5CgptZXRhc2NoZW1hGAEgASgLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5NZXRhU2NoZW1hIiUKF0RlbGV0ZU1ldGFTY2hlbWFSZXF1ZXN0EgoKAmlkGAEgASgJIhoKGERlbGV0ZU1ldGFTY2hlbWFSZXNwb25zZSIYChZMaXN0TWV0YVNjaGVtYXNSZXF1ZXN0IlUKF0xpc3RNZXRhU2NoZW1hc1Jlc3BvbnNlEjoKC21ldGFzY2hlbWFzGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5NZXRhU2NoZW1hItABCiBMaXN0T3JnYW5pemF0aW9uQXVkaXRMb2dzUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSDgoGc291cmNlGAUgASgJEg4KBmFjdGlvbhgGIAEoCRIVCg1pZ25vcmVfc3lzdGVtGAcgASgIEi4KCnN0YXJ0X3RpbWUYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZF90aW1lGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJWCiFMaXN0T3JnYW5pemF0aW9uQXVkaXRMb2dzUmVzcG9uc2USMQoEbG9ncxgBIAMoCzIjLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXVkaXRMb2ciegoiQ3JlYXRlT3JnYW5pemF0aW9uQXVkaXRMb2dzUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSOwoEbG9ncxgCIAMoCzIjLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXVkaXRMb2dCCPpCBZIBAggBIiUKI0NyZWF0ZU9yZ2FuaXphdGlvbkF1ZGl0TG9nc1Jlc3BvbnNlIk4KHkdldE9yZ2FuaXphdGlvbkF1ZGl0TG9nUmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSEwoCaWQYAiABKAlCB/pCBHICEAMiUwofR2V0T3JnYW5pemF0aW9uQXVkaXRMb2dSZXNwb25zZRIwCgNsb2cYASABKAsyIy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkF1ZGl0TG9nIhwKGkRlc2NyaWJlUHJlZmVyZW5jZXNSZXF1ZXN0IlkKG0Rlc2NyaWJlUHJlZmVyZW5jZXNSZXNwb25zZRI6CgZ0cmFpdHMYASADKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2VUcmFpdCKHAQokQ3JlYXRlT3JnYW5pemF0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEkoKBmJvZGllcxgCIAMoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZVJlcXVlc3RCb2R5Qgj6QgWSAQIIASJjCiVDcmVhdGVPcmdhbml6YXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlEjoKC3ByZWZlcmVuY2VzGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlIjkKIkxpc3RPcmdhbml6YXRpb25QcmVmZXJlbmNlc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMiYQojTGlzdE9yZ2FuaXphdGlvblByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UiggEKH0NyZWF0ZVByb2plY3RQcmVmZXJlbmNlc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSSgoGYm9kaWVzGAIgAygLMjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlUmVxdWVzdEJvZHlCCPpCBZIBAggBIl4KIENyZWF0ZVByb2plY3RQcmVmZXJlbmNlc1Jlc3BvbnNlEjoKC3ByZWZlcmVuY2VzGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlIjQKHUxpc3RQcm9qZWN0UHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADIlwKHkxpc3RQcm9qZWN0UHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSKAAQodQ3JlYXRlR3JvdXBQcmVmZXJlbmNlc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSSgoGYm9kaWVzGAIgAygLMjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlUmVxdWVzdEJvZHlCCPpCBZIBAggBIlwKHkNyZWF0ZUdyb3VwUHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSIyChtMaXN0R3JvdXBQcmVmZXJlbmNlc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMiWgocTGlzdEdyb3VwUHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSJ/ChxDcmVhdGVVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEkoKBmJvZGllcxgCIAMoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZVJlcXVlc3RCb2R5Qgj6QgWSAQIIASJbCh1DcmVhdGVVc2VyUHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSIxChpMaXN0VXNlclByZWZlcmVuY2VzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAyJZChtMaXN0VXNlclByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UicQojQ3JlYXRlQ3VycmVudFVzZXJQcmVmZXJlbmNlc1JlcXVlc3QSSgoGYm9kaWVzGAIgAygLMjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlUmVxdWVzdEJvZHlCCPpCBZIBAggBImIKJENyZWF0ZUN1cnJlbnRVc2VyUHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSIjCiFMaXN0Q3VycmVudFVzZXJQcmVmZXJlbmNlc1JlcXVlc3QiYAoiTGlzdEN1cnJlbnRVc2VyUHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSJICh1CaWxsaW5nV2ViaG9va0NhbGxiYWNrUmVxdWVzdBIZCghwcm92aWRlchgBIAEoCUIH+kIEcgIQARIMCgRib2R5GAIgASgMIiAKHkJpbGxpbmdXZWJob29rQ2FsbGJhY2tSZXNwb25zZSKEBAobQ3JlYXRlUHJvc3BlY3RQdWJsaWNSZXF1ZXN0Ej4KBG5hbWUYASABKAlCMJJBFzIVZnVsbCBuYW1lIG9mIHRoZSB1c2Vy+kITchEyDF5bQS1aYS16IF0rJNABARIyCgVlbWFpbBgFIAEoCUIjkkETMhFlbWFpbCBvZiB0aGUgdXNlcuJBAQL6QgZyBBABYAESLAoFcGhvbmUYBiABKAlCHZJBGjIYcGhvbmUgbnVtYmVyIG9mIHRoZSB1c2VyEoABCghhY3Rpdml0eRgHIAEoCUJukkFOMkxhY3Rpdml0eSBmb3Igd2hpY2ggdXNlciBpcyBzdWJzY3JpYmluZywgZS5nLiBuZXdzbGV0dGVyLCB3YWl0bGlzdCwgYmxvZ3MgZXRj4kEBAvpCFnIUEAEyEF5bQS1aYS16MC05LV9dKyQSbQoGc291cmNlGAkgASgJQl2SQUAyPnNvdXJjZSBvZiB0aGlzIHVzZXIgYWRkaXRpb24gZS5nLiBwbGF0Zm9ybSwgd2Vic2l0ZSwgYWRtaW4gZXRj+kIXchUyEF5bQS1aYS16MC05LV9dKyTQAQESUQoIbWV0YWRhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0QiaSQSMyIWFkZGl0aW9uYWwgaW5mbyBhcyBrZXkgdmFsdWUgcGFpciIeChxDcmVhdGVQcm9zcGVjdFB1YmxpY1Jlc3BvbnNlMquUAwoPRnJvbnRpZXJTZXJ2aWNlEugCCglMaXN0VXNlcnMSKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2Vyc1JlcXVlc3QaLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2Vyc1Jlc3BvbnNlIv8BkkHlAQoEVXNlchIRTGlzdCBwdWJsaWMgdXNlcnMayQFSZXR1cm5zIHRoZSB1c2VycyBmcm9tIGFsbCB0aGUgb3JnYW5pemF0aW9ucyBpbiBhIEZyb250aWVyIGluc3RhbmNlLiBJdCBjYW4gYmUgZmlsdGVyZWQgYnkga2V5d29yZCwgb3JnYW5pemF0aW9uLCBncm91cCBhbmQgc3RhdGUuIEFkZGl0aW9uYWxseSB5b3UgY2FuIGluY2x1ZGUgcGFnZSBudW1iZXIgYW5kIHBhZ2Ugc2l6ZSBmb3IgcGFnaW5hdGlvbi6C0+STAhASDi92MWJldGExL3VzZXJzErsGCgpDcmVhdGVVc2VyEiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVVc2VyUmVxdWVzdBotLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlVXNlclJlc3BvbnNlIs8FkkGvBQoEVXNlchILQ3JlYXRlIHVzZXIalwVDcmVhdGUgYSB1c2VyIHdpdGggdGhlIGdpdmVuIGRldGFpbHMuIEEgdXNlciBpcyBub3QgYXR0YWNoZWQgdG8gYW4gb3JnYW5pemF0aW9uIG9yIGEgZ3JvdXAgYnkgZGVmYXVsdCxhbmQgY2FuIGJlIGludml0ZWQgdG8gdGhlIG9yZy9ncm91cC4gVGhlIG5hbWUgb2YgdGhlIHVzZXIgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIElmIGEgdXNlciBuYW1lIGlzIG5vdCBwcm92aWRlZCwgRnJvbnRpZXIgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYSBuYW1lIGZyb20gdGhlIHVzZXIgZW1haWwuIFRoZSB1c2VyIG1ldGFkYXRhIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSB1c2VyIG1ldGFzY2hlbWEuIEJ5IGRlZmF1bHQgdGhlIHVzZXIgbWV0YXNjaGVtYSBjb250YWlucyBgbGFiZWxzYCBhbmQgYGRlc2NyaXB0aW9uc2AgZm9yIHRoZSB1c2VyLiBUaGUgYHRpdGxlYCBmaWVsZCBjYW4gYmUgb3B0aW9uYWxseSBhZGRlZCBmb3IgYSB1c2VyLWZyaWVuZGx5IG5hbWUuIDxici8+PGJyLz4qRXhhbXBsZToqYHsiZW1haWwiOiJqb2huLmRvZUByYXlzdGFjay5vcmciLCJ0aXRsZSI6IkpvaG4gRG9lIixtZXRhZGF0YTp7ImxhYmVsIjogeyJrZXkxIjogInZhbHVlMSJ9LCAiZGVzY3JpcHRpb24iOiAiVXNlciBEZXNjcmlwdGlvbiJ9fWBiAILT5JMCFiIOL3YxYmV0YTEvdXNlcnM6BGJvZHkSzwEKB0dldFVzZXISKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFVzZXJSZXF1ZXN0GioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRVc2VyUmVzcG9uc2UibZJBTwoEVXNlchIIR2V0IHVzZXIaPUdldCBhIHVzZXIgYnkgaWQgc2VhcmNoZWQgb3ZlciBhbGwgb3JnYW5pemF0aW9ucyBpbiBGcm9udGllci6C0+STAhUSEy92MWJldGExL3VzZXJzL3tpZH0S6gIKDkxpc3RVc2VyR3JvdXBzEjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0VXNlckdyb3Vwc1JlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2VyR3JvdXBzUmVzcG9uc2Ui8gGSQcwBCgRVc2VyEhBMaXN0IHVzZXIgZ3JvdXBzGrEBTGlzdHMgYWxsIHRoZSBncm91cHMgYSB1c2VyIGJlbG9uZ3MgdG8gYWNyb3NzIGFsbCBvcmdhbml6YXRpb24gaW4gRnJvbnRpZXIuIFRvIGdldCB0aGUgZ3JvdXBzIG9mIGEgdXNlciBpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiwgdXNlIHRoZSBvcmdfaWQgZmlsdGVyIGluIHRoZSBxdWVyeSBwYXJhbWV0ZXIugtPkkwIcEhovdjFiZXRhMS91c2Vycy97aWR9L2dyb3VwcxLHAQoVTGlzdEN1cnJlbnRVc2VyR3JvdXBzEjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJHcm91cHNSZXF1ZXN0GjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJHcm91cHNSZXNwb25zZSI7kkEWCgRVc2VyEg5MaXN0IG15IGdyb3Vwc4LT5JMCHBIaL3YxYmV0YTEvdXNlcnMvc2VsZi9ncm91cHMSrQEKDkdldEN1cnJlbnRVc2VyEjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRDdXJyZW50VXNlclJlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEN1cnJlbnRVc2VyUmVzcG9uc2UiNpJBGAoEVXNlchIQR2V0IGN1cnJlbnQgdXNlcoLT5JMCFRITL3YxYmV0YTEvdXNlcnMvc2VsZhKiAQoKVXBkYXRlVXNlchIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlVXNlclJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVVzZXJSZXNwb25zZSI3kkETCgRVc2VyEgtVcGRhdGUgdXNlcoLT5JMCGxoTL3YxYmV0YTEvdXNlcnMve2lkfToEYm9keRK/AQoRVXBkYXRlQ3VycmVudFVzZXISMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZUN1cnJlbnRVc2VyUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlQ3VycmVudFVzZXJSZXNwb25zZSI/kkEbCgRVc2VyEhNVcGRhdGUgY3VycmVudCB1c2VygtPkkwIbGhMvdjFiZXRhMS91c2Vycy9zZWxmOgRib2R5EpECCgpFbmFibGVVc2VyEiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVVc2VyUmVxdWVzdBotLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlVXNlclJlc3BvbnNlIqUBkkF9CgRVc2VyEgtFbmFibGUgdXNlchpoU2V0cyB0aGUgc3RhdGUgb2YgdGhlIHVzZXIgYXMgZW5hYmxlZC4gVGhlIHVzZXIgd2lsbCBiZSBhYmxlIHRvIGxvZyBpbiBhbmQgYWNjZXNzIHRoZSBGcm9udGllciBpbnN0YW5jZS6C0+STAh8iGi92MWJldGExL3VzZXJzL3tpZH0vZW5hYmxlOgEqEpADCgtEaXNhYmxlVXNlchItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZVVzZXJSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlVXNlclJlc3BvbnNlIqECkkH3AQoEVXNlchIMRGlzYWJsZSB1c2VyGuABU2V0cyB0aGUgc3RhdGUgb2YgdGhlIHVzZXIgYXMgZGlhYmxlZC5UaGUgdXNlcidzIG1lbWJlcnNoaXAgdG8gZ3JvdXBzIGFuZCBvcmdhbml6YXRpb25zIHdpbGwgc3RpbGwgZXhpc3QgYWxvbmcgd2l0aCBhbGwgaXQncyByb2xlcyBmb3IgYWNjZXNzIGNvbnRyb2wsIGJ1dCB0aGUgdXNlciB3aWxsIG5vdCBiZSBhYmxlIHRvIGxvZyBpbiBhbmQgYWNjZXNzIHRoZSBGcm9udGllciBpbnN0YW5jZS6C0+STAiAiGy92MWJldGExL3VzZXJzL3tpZH0vZGlzYWJsZToBKhL3AQoKRGVsZXRlVXNlchIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlVXNlclJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVVzZXJSZXNwb25zZSKLAZJBbQoEVXNlchILRGVsZXRlIHVzZXIaWERlbGV0ZSBhbiB1c2VyIHBlcm1hbmVudGx5IGZvcmV2ZXIgYW5kIGFsbCBvZiBpdHMgcmVsYXRpb25zIChvcmdhbml6YXRpb25zLCBncm91cHMsIGV0YymC0+STAhUqEy92MWJldGExL3VzZXJzL3tpZH0S/wQKF0xpc3RPcmdhbml6YXRpb25zQnlVc2VyEjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uc0J5VXNlclJlcXVlc3QaOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25zQnlVc2VyUmVzcG9uc2Ui7AOSQb8DCgRVc2VyEhZHZXQgdXNlciBvcmdhbml6YXRpb25zGp4DVGhpcyBBUEkgcmV0dXJucyB0d28gbGlzdCBvZiBvcmdhbml6YXRpb25zIGZvciB0aGUgdXNlci4gaSkgVGhlIGxpc3Qgb2Ygb3JncyB3aGljaCB0aGUgY3VycmVudCB1c2VyIGlzIGFscmVhZHkgYSBwYXJ0IG9mIGlpKSBUaGUgbGlzdCBvZiBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGNhbiBqb2luIGRpcmVjdGx5IChiYXNlZCBvbiBkb21haW4gd2hpdGVsaXN0ZWQgYW5kIHZlcmlmaWVkIGJ5IHRoZSBvcmcpLiBUaGlzIGxpc3Qgd2lsbCBhbHNvIGNvbnRhaW4gb3JncyBvZiB3aGljaCB1c2VyIGlzIGFscmVhZHkgYSBwYXJ0IG9mLiBOb3RlOiB0aGUgZG9tYWluIG5lZWRzIHRvIGJlIHZlcmlmaWVkIGJ5IHRoZSBvcmcgYmVmb3JlIHRoZSBpdCBpcyByZXR1cm5lZCBhcyBvbmUgb2YgdGhlIGpvaW5hYmxlIG9yZ3MgYnkgZG9tYWlugtPkkwIjEiEvdjFiZXRhMS91c2Vycy97aWR9L29yZ2FuaXphdGlvbnMSpAUKHkxpc3RPcmdhbml6YXRpb25zQnlDdXJyZW50VXNlchJALnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVxdWVzdBpBLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVzcG9uc2Ui/AOSQc8DCgRVc2VyEhRHZXQgbXkgb3JnYW5pemF0aW9ucxqwA1RoaXMgQVBJIHJldHVybnMgdHdvIGxpc3Qgb2Ygb3JnYW5pemF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIuIGkpIFRoZSBsaXN0IG9mIG9yZ3Mgd2hpY2ggdGhlIGN1cnJlbnQgdXNlciBpcyBhbHJlYWR5IGEgcGFydCBvZiBpaSkgVGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9ucyB0aGUgdXNlciBjYW4gam9pbiBkaXJlY3RseSAoYmFzZWQgb24gZG9tYWluIHdoaXRlbGlzdGVkIGFuZCB2ZXJpZmllZCBieSB0aGUgb3JnKS4gVGhpcyBsaXN0IHdpbGwgYWxzbyBjb250YWluIG9yZ3Mgb2Ygd2hpY2ggdXNlciBpcyBhbHJlYWR5IGEgcGFydCBvZi4gTm90ZTogdGhlIGRvbWFpbiBuZWVkcyB0byBiZSB2ZXJpZmllZCBieSB0aGUgb3JnIGJlZm9yZSB0aGUgaXQgaXMgcmV0dXJuZWQgYXMgb25lIG9mIHRoZSBqb2luYWJsZSBvcmdzIGJ5IGRvbWFpboLT5JMCIxIhL3YxYmV0YTEvdXNlcnMvc2VsZi9vcmdhbml6YXRpb25zEuwBChJMaXN0UHJvamVjdHNCeVVzZXISNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0c0J5VXNlclJlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0c0J5VXNlclJlc3BvbnNlImmSQUIKBFVzZXISEUdldCB1c2VyIHByb2plY3RzGidHZXQgYWxsIHRoZSBwcm9qZWN0cyBhIHVzZXIgYmVsb25ncyB0by6C0+STAh4SHC92MWJldGExL3VzZXJzL3tpZH0vcHJvamVjdHMShAIKGUxpc3RQcm9qZWN0c0J5Q3VycmVudFVzZXISOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0c0J5Q3VycmVudFVzZXJSZXF1ZXN0GjwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdHNCeUN1cnJlbnRVc2VyUmVzcG9uc2UibJJBRQoEVXNlchIPR2V0IG15IHByb2plY3RzGixHZXQgYWxsIHByb2plY3RzIHRoZSBjdXJyZW50IHVzZXIgYmVsb25ncyB0b4LT5JMCHhIcL3YxYmV0YTEvdXNlcnMvc2VsZi9wcm9qZWN0cxL3AQoTTGlzdFVzZXJJbnZpdGF0aW9ucxI1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFVzZXJJbnZpdGF0aW9uc1JlcXVlc3QaNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2VySW52aXRhdGlvbnNSZXNwb25zZSJxkkFHCgRVc2VyEhVMaXN0IHVzZXIgaW52aXRhdGlvbnMaKExpc3QgYWxsIHRoZSBpbnZpdGF0aW9ucyBzZW50IHRvIGEgdXNlci6C0+STAiESHy92MWJldGExL3VzZXJzL3tpZH0vaW52aXRhdGlvbnMSkgIKGkxpc3RDdXJyZW50VXNlckludml0YXRpb25zEjwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJJbnZpdGF0aW9uc1JlcXVlc3QaPS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDdXJyZW50VXNlckludml0YXRpb25zUmVzcG9uc2Uid5JBTQoEVXNlchIVTGlzdCB1c2VyIGludml0YXRpb25zGi5MaXN0IGFsbCB0aGUgaW52aXRhdGlvbnMgc2VudCB0byBjdXJyZW50IHVzZXIugtPkkwIhEh8vdjFiZXRhMS91c2Vycy9zZWxmL2ludml0YXRpb25zEqgCChBMaXN0U2VydmljZVVzZXJzEjIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJzUmVxdWVzdBozLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2Vyc1Jlc3BvbnNlIqoBkkGJAQoLU2VydmljZVVzZXISFkxpc3Qgb3JnIHNlcnZpY2UgdXNlcnMaYlJldHVybnMgdGhlIHNlcnZpY2UgdXNlciBvZiBhbiBvcmdhbml6YXRpb24gaW4gYSBGcm9udGllciBpbnN0YW5jZS4gSXQgY2FuIGJlIGZpbHRlciBieSBpdCdzIHN0YXRlgtPkkwIXEhUvdjFiZXRhMS9zZXJ2aWNldXNlcnMS9AEKEUNyZWF0ZVNlcnZpY2VVc2VyEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVTZXJ2aWNlVXNlclJlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VyUmVzcG9uc2UidJJBOgoLU2VydmljZVVzZXISE0NyZWF0ZSBzZXJ2aWNlIHVzZXIaFkNyZWF0ZSBhIHNlcnZpY2UgdXNlci6C0+STAjEiLC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzOgEqEvgBCg5HZXRTZXJ2aWNlVXNlchIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0U2VydmljZVVzZXJSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRTZXJ2aWNlVXNlclJlc3BvbnNlIoABkkFECgtTZXJ2aWNlVXNlchIQR2V0IHNlcnZpY2UgdXNlchojR2V0IHNlcnZpY2UgdXNlciBkZXRhaWxzIGJ5IGl0cyBpZC6C0+STAjMSMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0SvgIKEURlbGV0ZVNlcnZpY2VVc2VyEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVTZXJ2aWNlVXNlclJlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVNlcnZpY2VVc2VyUmVzcG9uc2UivQGSQYABCgtTZXJ2aWNlVXNlchITRGVsZXRlIHNlcnZpY2UgdXNlchpcRGVsZXRlIGEgc2VydmljZSB1c2VyIHBlcm1hbmVudGx5IGFuZCBhbGwgb2YgaXRzIHJlbGF0aW9ucyAoa2V5cywgb3JnYW5pemF0aW9ucywgcm9sZXMsIGV0YymC0+STAjMqMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0SmAMKFENyZWF0ZVNlcnZpY2VVc2VySldLEjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVTZXJ2aWNlVXNlckpXS1JlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VySldLUmVzcG9uc2UijgKSQckBCgtTZXJ2aWNlVXNlchIrQ3JlYXRlIHNlcnZpY2UgdXNlciBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFpchqMAUdlbmVyYXRlIGEgc2VydmljZSB1c2VyIGtleSBhbmQgcmV0dXJuIGl0LCB0aGUgcHJpdmF0ZSBrZXkgcGFydCBvZiB0aGUgcmVzcG9uc2Ugd2lsbCBub3QgYmUgcGVyc2lzdGVkIGFuZCBzaG91bGQgYmUga2VwdCBzZWN1cmVseSBieSBjbGllbnQugtPkkwI7IjYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L2tleXM6ASoSrwIKE0xpc3RTZXJ2aWNlVXNlckpXS3MSNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTZXJ2aWNlVXNlckpXS3NSZXF1ZXN0GjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJKV0tzUmVzcG9uc2UiqAGSQWcKC1NlcnZpY2VVc2VyEhZMaXN0IHNlcnZpY2UgdXNlciBrZXlzGkBMaXN0IGFsbCB0aGUga2V5cyBvZiBhIHNlcnZpY2UgdXNlciB3aXRoIGl0cyBkZXRhaWxzIGV4Y2VwdCBqd2sugtPkkwI4EjYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L2tleXMSlgIKEUdldFNlcnZpY2VVc2VySldLEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRTZXJ2aWNlVXNlckpXS1JlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFNlcnZpY2VVc2VySldLUmVzcG9uc2UilQGSQUsKC1NlcnZpY2VVc2VyEhRHZXQgc2VydmljZSB1c2VyIGtleRomR2V0IGEgc2VydmljZSB1c2VyIHB1YmxpYyBSU0EgSldLIHNldC6C0+STAkESPy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0va2V5cy97a2V5X2lkfRKiAgoURGVsZXRlU2VydmljZVVzZXJKV0sSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVNlcnZpY2VVc2VySldLUmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlU2VydmljZVVzZXJKV0tSZXNwb25zZSKYAZJBTgoLU2VydmljZVVzZXISF0RlbGV0ZSBzZXJ2aWNlIHVzZXIga2V5GiZEZWxldGUgYSBzZXJ2aWNlIHVzZXIga2V5IHBlcm1hbmVudGx5LoLT5JMCQSo/L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS9rZXlzL3trZXlfaWR9EqQDChtDcmVhdGVTZXJ2aWNlVXNlckNyZWRlbnRpYWwSPS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlcXVlc3QaPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlc3BvbnNlIoUCkkG9AQoLU2VydmljZVVzZXISJkNyZWF0ZSBzZXJ2aWNlIHVzZXIgY2xpZW50IGNyZWRlbnRpYWxzGoUBR2VuZXJhdGUgYSBzZXJ2aWNlIHVzZXIgY3JlZGVudGlhbCBhbmQgcmV0dXJuIGl0LiBUaGUgY3JlZGVudGlhbCB2YWx1ZSB3aWxsIG5vdCBiZSBwZXJzaXN0ZWQgYW5kIHNob3VsZCBiZSBzZWN1cmVseSBzdG9yZWQgYnkgY2xpZW50LoLT5JMCPiI5L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS9zZWNyZXRzOgEqErkCChpMaXN0U2VydmljZVVzZXJDcmVkZW50aWFscxI8LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2VyQ3JlZGVudGlhbHNSZXF1ZXN0Gj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJDcmVkZW50aWFsc1Jlc3BvbnNlIp0BkkFZCgtTZXJ2aWNlVXNlchIdTGlzdCBzZXJ2aWNlIHVzZXIgY3JlZGVudGlhbHMaK0xpc3QgYWxsIHRoZSBjcmVkZW50aWFscyBvZiBhIHNlcnZpY2UgdXNlci6C0+STAjsSOS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0vc2VjcmV0cxLAAgobRGVsZXRlU2VydmljZVVzZXJDcmVkZW50aWFsEj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVTZXJ2aWNlVXNlckNyZWRlbnRpYWxSZXF1ZXN0Gj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVTZXJ2aWNlVXNlckNyZWRlbnRpYWxSZXNwb25zZSKhAZJBUQoLU2VydmljZVVzZXISH0RlbGV0ZSBzZXJ2aWNlIHVzZXIgY3JlZGVudGlhbHMaIURlbGV0ZSBhIHNlcnZpY2UgdXNlciBjcmVkZW50aWFsLoLT5JMCRypFL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS9zZWNyZXRzL3tzZWNyZXRfaWR9EvwCChZDcmVhdGVTZXJ2aWNlVXNlclRva2VuEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVTZXJ2aWNlVXNlclRva2VuUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlU2VydmljZVVzZXJUb2tlblJlc3BvbnNlIuwBkkGlAQoLU2VydmljZVVzZXISGUNyZWF0ZSBzZXJ2aWNlIHVzZXIgdG9rZW4ae0dlbmVyYXRlIGEgc2VydmljZSB1c2VyIHRva2VuIGFuZCByZXR1cm4gaXQuIFRoZSB0b2tlbiB2YWx1ZSB3aWxsIG5vdCBiZSBwZXJzaXN0ZWQgYW5kIHNob3VsZCBiZSBzZWN1cmVseSBzdG9yZWQgYnkgY2xpZW50LoLT5JMCPSI4L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS90b2tlbnM6ASoSnwIKFUxpc3RTZXJ2aWNlVXNlclRva2VucxI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2VyVG9rZW5zUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2VyVG9rZW5zUmVzcG9uc2UikgGSQU8KC1NlcnZpY2VVc2VyEhhMaXN0IHNlcnZpY2UgdXNlciB0b2tlbnMaJkxpc3QgYWxsIHRoZSB0b2tlbnMgb2YgYSBzZXJ2aWNlIHVzZXIugtPkkwI6EjgvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L3Rva2VucxKkAgoWRGVsZXRlU2VydmljZVVzZXJUb2tlbhI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlU2VydmljZVVzZXJUb2tlblJlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVNlcnZpY2VVc2VyVG9rZW5SZXNwb25zZSKUAZJBRgoLU2VydmljZVVzZXISGURlbGV0ZSBzZXJ2aWNlIHVzZXIgdG9rZW4aHERlbGV0ZSBhIHNlcnZpY2UgdXNlciB0b2tlbi6C0+STAkUqQy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0vdG9rZW5zL3t0b2tlbl9pZH0SsAIKF0xpc3RTZXJ2aWNlVXNlclByb2plY3RzEjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJQcm9qZWN0c1JlcXVlc3QaOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTZXJ2aWNlVXNlclByb2plY3RzUmVzcG9uc2UinQGSQVgKC1NlcnZpY2VVc2VyEhpMaXN0IHNlcnZpY2Ugc3NlciBwcm9qZWN0cxotTGlzdCBhbGwgcHJvamVjdHMgdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvgtPkkwI8EjovdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L3Byb2plY3RzEuQCChZMaXN0T3JnYW5pemF0aW9uR3JvdXBzEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uR3JvdXBzUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkdyb3Vwc1Jlc3BvbnNlItQBkkGiAQoFR3JvdXASGExpc3Qgb3JnYW5pemF0aW9uIGdyb3Vwcxp/R2V0IGFsbCBncm91cHMgdGhhdCBiZWxvbmcgdG8gYW4gb3JnYW5pemF0aW9uLiBUaGUgcmVzdWx0cyBjYW4gYmUgZmlsdGVyZWQgYnkgc3RhdGUgd2hpY2ggY2FuIGJlIGVpdGhlciBiZSBlbmFibGVkIG9yIGRpc2FibGVkLoLT5JMCKBImL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9ncm91cHMSnQMKC0NyZWF0ZUdyb3VwEi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVHcm91cFJlcXVlc3QaLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUdyb3VwUmVzcG9uc2UirgKSQfYBCgVHcm91cBIMQ3JlYXRlIGdyb3VwGt4BQ3JlYXRlIGEgbmV3IGdyb3VwIGluIGFuIG9yZ2FuaXphdGlvbiB3aGljaCBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIHVzZXJzLiBUaGUgZ3JvdXAgY2FuIGJlIGFzc2lnbmVkIHJvbGVzIGFuZCBwZXJtaXNzaW9ucyBhbmQgY2FuIGJlIHVzZWQgdG8gbWFuYWdlIGFjY2VzcyB0byByZXNvdXJjZXMuIEFsc28gYSBncm91cCBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBvdGhlciBncm91cHMugtPkkwIuIiYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3VwczoEYm9keRKtAQoIR2V0R3JvdXASKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEdyb3VwUmVxdWVzdBorLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0R3JvdXBSZXNwb25zZSJIkkESCgVHcm91cBIJR2V0IGdyb3VwgtPkkwItEisvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3Vwcy97aWR9Er8BCgtVcGRhdGVHcm91cBItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlR3JvdXBSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVHcm91cFJlc3BvbnNlIlGSQRUKBUdyb3VwEgxVcGRhdGUgZ3JvdXCC0+STAjMaKy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZ3JvdXBzL3tpZH06BGJvZHkS/gEKDkxpc3RHcm91cFVzZXJzEjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0R3JvdXBVc2Vyc1JlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RHcm91cFVzZXJzUmVzcG9uc2UihgGSQUoKBUdyb3VwEhBMaXN0IGdyb3VwIHVzZXJzGi9SZXR1cm5zIGEgbGlzdCBvZiB1c2VycyB0aGF0IGJlbG9uZyB0byBhIGdyb3VwLoLT5JMCMxIxL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9ncm91cHMve2lkfS91c2VycxLdAgoNQWRkR3JvdXBVc2VycxIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQWRkR3JvdXBVc2Vyc1JlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkFkZEdyb3VwVXNlcnNSZXNwb25zZSLoAZJBqAEKBUdyb3VwEg5BZGQgZ3JvdXAgdXNlchqOAUFkZHMgYSBwcmluY2lwbGUodXNlciBhbmQgc2VydmljZS11c2VycykgdG8gYSBncm91cCwgZXhpc3RpbmcgdXNlcnMgaW4gdGhlIGdyb3VwIHdpbGwgYmUgaWdub3JlZC4gQSBncm91cCBjYW4ndCBoYXZlIG5lc3RlZCBncm91cHMgYXMgbWVtYmVycy6C0+STAjYiMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZ3JvdXBzL3tpZH0vdXNlcnM6ASoS7wIKD1JlbW92ZUdyb3VwVXNlchIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVtb3ZlR3JvdXBVc2VyUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVtb3ZlR3JvdXBVc2VyUmVzcG9uc2Ui9AGSQa0BCgVHcm91cBIRUmVtb3ZlIGdyb3VwIHVzZXIakAFSZW1vdmVzIGEgcHJpbmNpcGxlKHVzZXIgYW5kIHNlcnZpY2UtdXNlcnMpIGZyb20gYSBncm91cC4gSWYgdGhlIHVzZXIgaXMgbm90IGluIHRoZSBncm91cCwgdGhlIHJlcXVlc3Qgd2lsbCBzdWNjZWVkIGJ1dCBubyBjaGFuZ2VzIHdpbGwgYmUgbWFkZS6C0+STAj0qOy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZ3JvdXBzL3tpZH0vdXNlcnMve3VzZXJfaWR9EsMCCgtFbmFibGVHcm91cBItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlR3JvdXBSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVHcm91cFJlc3BvbnNlItQBkkGTAQoFR3JvdXASDEVuYWJsZSBncm91cBp8U2V0cyB0aGUgc3RhdGUgb2YgdGhlIGdyb3VwIGFzIGVuYWJsZWQuIFRoZSBgZW5hYmxlZGAgZmxhZyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZ3JvdXAgY2FuIGJlIHVzZWQgZm9yIGFjY2VzcyBjb250cm9sLoLT5JMCNyIyL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9ncm91cHMve2lkfS9lbmFibGU6ASoS1AMKDERpc2FibGVHcm91cBIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZUdyb3VwUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZUdyb3VwUmVzcG9uc2Ui4gKSQaACCgVHcm91cBINRGlzYWJsZSBncm91cBqHAlNldHMgdGhlIHN0YXRlIG9mIHRoZSBncm91cCBhcyBkaXNhYmxlZC4gVGhlIGdyb3VwIHdpbGwgbm90IGJlIGF2YWlsYWJsZSBmb3IgYWNjZXNzIGNvbnRyb2wgYW5kIHRoZSBleGlzdGluZyB1c2VycyBpbiB0aGUgZ3JvdXAgd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgYW55IHJlc291cmNlcyB0aGF0IGFyZSBhc3NpZ25lZCB0byB0aGUgZ3JvdXAuIE5vIG90aGVyIHVzZXJzIGNhbiBiZSBhZGRlZCB0byB0aGUgZ3JvdXAgd2hpbGUgaXQgaXMgZGlzYWJsZWQugtPkkwI4IjMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3Vwcy97aWR9L2Rpc2FibGU6ASoS/QEKC0RlbGV0ZUdyb3VwEi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVHcm91cFJlcXVlc3QaLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZUdyb3VwUmVzcG9uc2UijgGSQVgKBUdyb3VwEgxEZWxldGUgZ3JvdXAaQURlbGV0ZSBhbiBvcmdhbml6YXRpb24gZ3JvdXAgcGVybWFuZW50bHkgYW5kIGFsbCBvZiBpdHMgcmVsYXRpb25zgtPkkwItKisvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3Vwcy97aWR9EpMCCglMaXN0Um9sZXMSKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RSb2xlc1JlcXVlc3QaLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RSb2xlc1Jlc3BvbnNlIqoBkkGQAQoEUm9sZRITTGlzdCBwbGF0Zm9ybSByb2xlcxpzUmV0dXJucyBhIGxpc3Qgb2YgcGxhdGZvcm0gd2lkZSByb2xlcyBhdmFpbGFibGUgaW4gZW5pdHJlIEZyb250aWVyIGluc3RhbmNlIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBwZXJtaXNzaW9uc4LT5JMCEBIOL3YxYmV0YTEvcm9sZXMSvAIKFUxpc3RPcmdhbml6YXRpb25Sb2xlcxI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2UirwGSQX8KBFJvbGUSF0xpc3Qgb3JnYW5pemF0aW9uIHJvbGVzGl5SZXR1cm5zIGEgbGlzdCBvZiBjdXN0b20gcm9sZXMgY3JlYXRlZCB1bmRlciBhbiBvcmdhbml6YXRpb24gd2l0aCB0aGVpciBhc3NvY2lhdGVkIHBlcm1pc3Npb25zgtPkkwInEiUvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3JvbGVzEvcCChZDcmVhdGVPcmdhbml6YXRpb25Sb2xlEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlT3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIucBkkGwAQoEUm9sZRIYQ3JlYXRlIG9yZ2FuaXphdGlvbiByb2xlGo0BQ3JlYXRlIGEgY3VzdG9tIHJvbGUgdW5kZXIgYW4gb3JnYW5pemF0aW9uLiBUaGlzIGN1c3RvbSByb2xlIHdpbGwgb25seSBiZSBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnQgdG8gdGhlIHByaW5jaXBsZXMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24ugtPkkwItIiUvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3JvbGVzOgRib2R5EqwCChNHZXRPcmdhbml6YXRpb25Sb2xlEjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBo2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIqUBkkFwCgRSb2xlEhVHZXQgb3JnYW5pemF0aW9uIHJvbGUaUVJldHVybnMgYSBjdXN0b20gcm9sZSB1bmRlciBhbiBvcmdhbml6YXRpb24gYWxvbmcgd2l0aCBpdHMgYXNzb2NpYXRlZCBwZXJtaXNzaW9uc4LT5JMCLBIqL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9yb2xlcy97aWR9EvwCChZVcGRhdGVPcmdhbml6YXRpb25Sb2xlEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlT3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIuwBkkGwAQoEUm9sZRIYVXBkYXRlIG9yZ2FuaXphdGlvbiByb2xlGo0BVXBkYXRlIGEgY3VzdG9tIHJvbGUgdW5kZXIgYW4gb3JnYW5pemF0aW9uLiBUaGlzIGN1c3RvbSByb2xlIHdpbGwgb25seSBiZSBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnQgdG8gdGhlIHByaW5jaXBsZXMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24ugtPkkwIyGiovdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3JvbGVzL3tpZH06BGJvZHkStwIKFkRlbGV0ZU9yZ2FuaXphdGlvblJvbGUSOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0GjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2UipwGSQXIKBFJvbGUSGERlbGV0ZSBvcmdhbml6YXRpb24gcm9sZRpQRGVsZXRlIGEgY3VzdG9tIHJvbGUgYW5kIGFsbCBvZiBpdHMgcmVsYXRpb25zIHVuZGVyIGFuIG9yZ2FuaXphdGlvbiBwZXJtYW5lbnRseS6C0+STAiwqKi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMve2lkfRKaAgoRTGlzdE9yZ2FuaXphdGlvbnMSMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25zUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbnNSZXNwb25zZSKZAZJBeAoMT3JnYW5pemF0aW9uEhJMaXN0IG9yZ2FuaXphdGlvbnMaVFJldHVybnMgYSBsaXN0IG9mIG9yZ2FuaXphdGlvbnMuIEl0IGNhbiBiZSBmaWx0ZXJlZCBieSB1c2VySUQgb3Igb3JnYW5pemF0aW9uIHN0YXRlLoLT5JMCGBIWL3YxYmV0YTEvb3JnYW5pemF0aW9ucxLNAQoSQ3JlYXRlT3JnYW5pemF0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25SZXNwb25zZSJKkkEjCgxPcmdhbml6YXRpb24SE0NyZWF0ZSBvcmdhbml6YXRpb26C0+STAh4iFi92MWJldGExL29yZ2FuaXphdGlvbnM6BGJvZHkS4AEKD0dldE9yZ2FuaXphdGlvbhIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uUmVzcG9uc2UiZpJBQAoMT3JnYW5pemF0aW9uEhBHZXQgb3JnYW5pemF0aW9uGh5HZXQgb3JnYW5pemF0aW9uIGJ5IElEIG9yIG5hbWWC0+STAh0SGy92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfRLtAQoSVXBkYXRlT3JnYW5pemF0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVPcmdhbml6YXRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVPcmdhbml6YXRpb25SZXNwb25zZSJqkkE+CgxPcmdhbml6YXRpb24SE1VwZGF0ZSBvcmdhbml6YXRpb24aGVVwZGF0ZSBvcmdhbml6YXRpb24gYnkgSUSC0+STAiMaGy92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfToEYm9keRKfAgoYTGlzdE9yZ2FuaXphdGlvblByb2plY3RzEjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uUHJvamVjdHNSZXF1ZXN0GjsucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uUHJvamVjdHNSZXNwb25zZSKJAZJBWgoMT3JnYW5pemF0aW9uEhlHZXQgb3JnYW5pemF0aW9uIHByb2plY3RzGi9HZXQgYWxsIHByb2plY3RzIHRoYXQgYmVsb25nIHRvIGFuIG9yZ2FuaXphdGlvboLT5JMCJhIkL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3Byb2plY3RzEo4CChZMaXN0T3JnYW5pemF0aW9uQWRtaW5zEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uQWRtaW5zUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkFkbWluc1Jlc3BvbnNlIn+SQVIKDE9yZ2FuaXphdGlvbhIYTGlzdCBvcmdhbml6YXRpb24gYWRtaW5zGihSZXR1cm5zIGEgbGlzdCBhZG1pbnMgb2YgYW4gb3JnYW5pemF0aW9ugtPkkwIkEiIvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tpZH0vYWRtaW5zEt8BChVMaXN0T3JnYW5pemF0aW9uVXNlcnMSNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1JlcXVlc3QaOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlIlOSQScKDE9yZ2FuaXphdGlvbhIXTGlzdCBvcmdhbml6YXRpb24gdXNlcnOC0+STAiMSIS92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfS91c2VycxLtAgoUQWRkT3JnYW5pemF0aW9uVXNlcnMSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkFkZE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQWRkT3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZSLjAZJBswEKDE9yZ2FuaXphdGlvbhIVQWRkIG9yZ2FuaXphdGlvbiB1c2VyGosBQWRkIGEgdXNlciB0byBhbiBvcmdhbml6YXRpb24uIEEgdXNlciBtdXN0IGV4aXN0cyBpbiBGcm9udGllciBiZWZvcmUgYWRkaW5nIGl0IHRvIGFuIG9yZy4gVGhpcyByZXF1ZXN0IHdpbGwgZmFpbCBpZiB0aGUgdXNlciBkb2Vzbid0IGV4aXN0c4LT5JMCJiIhL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3VzZXJzOgEqEpICChZSZW1vdmVPcmdhbml6YXRpb25Vc2VyEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZW1vdmVPcmdhbml6YXRpb25Vc2VyUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVtb3ZlT3JnYW5pemF0aW9uVXNlclJlc3BvbnNlIoIBkkFMCgxPcmdhbml6YXRpb24SGFJlbW92ZSBvcmdhbml6YXRpb24gdXNlchoiUmVtb3ZlIGEgdXNlciBmcm9tIGFuIG9yZ2FuaXphdGlvboLT5JMCLSorL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3VzZXJzL3t1c2VyX2lkfRKWAgoSR2V0T3JnYW5pemF0aW9uS3ljEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRPcmdhbml6YXRpb25LeWNSZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRPcmdhbml6YXRpb25LeWNSZXNwb25zZSKSAZJBZAoPT3JnYW5pemF0aW9uS3ljEh9HZXQgS1lDIGluZm8gb2YgYW4gb3JnYW5pemF0aW9uGjBHZXQgS1lDIGluZm8gb2YgYW4gb3JnYW5pemF0aW9uIHVzaW5nIElEIG9yIG5hbWWC0+STAiUSIy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0va3ljEoMCChxMaXN0T3JnYW5pemF0aW9uU2VydmljZVVzZXJzEj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uU2VydmljZVVzZXJzUmVxdWVzdBo/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblNlcnZpY2VVc2Vyc1Jlc3BvbnNlImKSQS8KDE9yZ2FuaXphdGlvbhIfTGlzdCBvcmdhbml6YXRpb24gc2VydmljZSB1c2Vyc4LT5JMCKhIoL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3NlcnZpY2V1c2VycxK5AgobTGlzdE9yZ2FuaXphdGlvbkludml0YXRpb25zEj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uSW52aXRhdGlvbnNSZXF1ZXN0Gj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uSW52aXRhdGlvbnNSZXNwb25zZSKaAZJBZAoMT3JnYW5pemF0aW9uEhhMaXN0IHBlbmRpbmcgaW52aXRhdGlvbnMaOlJldHVybnMgYWxsIHBlbmRpbmcgaW52aXRhdGlvbnMgcXVldWVkIGZvciBhbiBvcmdhbml6YXRpb26C0+STAi0SKy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vaW52aXRhdGlvbnMS9gIKHENyZWF0ZU9yZ2FuaXphdGlvbkludml0YXRpb24SPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZU9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0Gj8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2Ui1AGSQZoBCgxPcmdhbml6YXRpb24SC0ludml0ZSB1c2VyGn1JbnZpdGUgdXNlcnMgdG8gYW4gb3JnYW5pemF0aW9uLCBpZiB1c2VyIGlzIG5vdCByZWdpc3RlcmVkIG9uIHRoZSBwbGF0Zm9ybSwgaXQgd2lsbCBiZSBub3RpZmllZC4gSW52aXRhdGlvbnMgZXhwaXJlIGluIDcgZGF5c4LT5JMCMCIrL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9pbnZpdGF0aW9uczoBKhKzAgoZR2V0T3JnYW5pemF0aW9uSW52aXRhdGlvbhI7LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uSW52aXRhdGlvblJlcXVlc3QaPC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldE9yZ2FuaXphdGlvbkludml0YXRpb25SZXNwb25zZSKaAZJBXwoMT3JnYW5pemF0aW9uEhZHZXQgcGVuZGluZyBpbnZpdGF0aW9uGjdSZXR1cm5zIGEgcGVuZGluZyBpbnZpdGF0aW9uIHF1ZXVlZCBmb3IgYW4gb3JnYW5pemF0aW9ugtPkkwIyEjAvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2ludml0YXRpb25zL3tpZH0SmQMKHEFjY2VwdE9yZ2FuaXphdGlvbkludml0YXRpb24SPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkFjY2VwdE9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0Gj8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BY2NlcHRPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2Ui9wGSQbEBCgxPcmdhbml6YXRpb24SGUFjY2VwdCBwZW5kaW5nIGludml0YXRpb24ahQFBY2NlcHQgcGVuZGluZyBpbnZpdGF0aW9uIHF1ZXVlZCBmb3IgYW4gb3JnYW5pemF0aW9uLiBUaGUgdXNlciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBvcmdhbml6YXRpb24gYW5kIGdyb3VwcyBkZWZpbmVkIGluIHRoZSBpbnZpdGF0aW9ugtPkkwI8IjcvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2ludml0YXRpb25zL3tpZH0vYWNjZXB0OgEqEr4CChxEZWxldGVPcmdhbml6YXRpb25JbnZpdGF0aW9uEj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVxdWVzdBo/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlT3JnYW5pemF0aW9uSW52aXRhdGlvblJlc3BvbnNlIpwBkkFhCgxPcmdhbml6YXRpb24SGURlbGV0ZSBwZW5kaW5nIGludml0YXRpb24aNkRlbGV0ZSBhIHBlbmRpbmcgaW52aXRhdGlvbiBxdWV1ZWQgZm9yIGFuIG9yZ2FuaXphdGlvboLT5JMCMiowL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9pbnZpdGF0aW9ucy97aWR9EtgDChdMaXN0T3JnYW5pemF0aW9uRG9tYWlucxI5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkRvbWFpbnNSZXF1ZXN0GjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uRG9tYWluc1Jlc3BvbnNlIsUCkkGSAgoMT3JnYW5pemF0aW9uEhBMaXN0IG9yZyBkb21haW5zGu8BUmV0dXJucyBhbGwgZG9tYWlucyB3aGl0ZWxpc3RlZCBmb3IgYW4gb3JnYW5pemF0aW9uIChib3RoIHBlbmRpbmcgYW5kIHZlcmlmaWVkIGlmIG5vIGZpbHRlcnMgYXJlIHByb3ZpZGVkIGZvciB0aGUgc3RhdGUpLiBUaGUgdmVyaWZpZWQgZG9tYWlucyBhbGxvdyB1c2VycyBlbWFpbCB3aXRoIHRoZSBvcmcncyB3aGl0ZWxpc3RlZCBkb21haW4gdG8gam9pbiB0aGUgb3JnYW5pemF0aW9uIHdpdGhvdXQgaW52aXRhdGlvbi6C0+STAikSJy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZG9tYWlucxL+BAoYQ3JlYXRlT3JnYW5pemF0aW9uRG9tYWluEjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25Eb21haW5SZXF1ZXN0GjsucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25Eb21haW5SZXNwb25zZSLoA5JBsgMKDE9yZ2FuaXphdGlvbhIRQ3JlYXRlIG9yZyBkb21haW4ajgNBZGQgYSBkb21haW4gdG8gYW4gb3JnYW5pemF0aW9uIHdoaWNoIGlmIHZlcmlmaWVkIGFsbG93cyBhbGwgdXNlcnMgb2YgdGhlIHNhbWUgZG9tYWluIHRvIGJlIHNpZ25lZCB1cCB0byB0aGUgb3JnYW5pemF0aW9uIHdpdGhvdXQgaW52aXRhdGlvbi4gVGhpcyBBUEkgZ2VuZXJhdGVzIGEgdmVyaWZpY2F0aW9uIHRva2VuIGZvciBhIGRvbWFpbiB3aGljaCBtdXN0IGJlIGFkZGVkIHRvIHlvdXIgZG9tYWluJ3MgRE5TIHByb3ZpZGVyIGFzIGEgVFhUIHJlY29yZCBzaG91bGQgYmUgdmVyaWZpZWQgd2l0aCBGcm9udGllciBWZXJpZnlPcmdhbml6YXRpb25Eb21haW4gQVBJIGJlZm9yZSBpdCBjYW4gYmUgdXNlZCBhcyBhbiBPcmdhbml6YXRpb24ncyB0cnVzdGVkIGRvbWFpbiB0byBzaWduIHVwIHVzZXJzLoLT5JMCLCInL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9kb21haW5zOgEqErcCChhEZWxldGVPcmdhbml6YXRpb25Eb21haW4SOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU9yZ2FuaXphdGlvbkRvbWFpblJlcXVlc3QaOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU9yZ2FuaXphdGlvbkRvbWFpblJlc3BvbnNlIqEBkkFqCgxPcmdhbml6YXRpb24SEURlbGV0ZSBvcmcgZG9tYWluGkdSZW1vdmUgYSBkb21haW4gZnJvbSB0aGUgbGlzdCBvZiBhbiBvcmdhbml6YXRpb24ncyB0cnVzdGVkIGRvbWFpbnMgbGlzdILT5JMCLiosL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9kb21haW5zL3tpZH0S4gIKFUdldE9yZ2FuaXphdGlvbkRvbWFpbhI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uRG9tYWluUmVzcG9uc2Ui1QGSQZ0BCgxPcmdhbml6YXRpb24SDkdldCBvcmcgZG9tYWluGn1HZXQgYSBkb21haW4gZnJvbSB0aGUgbGlzdCBvZiBhbiBvcmdhbml6YXRpb24ncyB3aGl0ZWxpc3RlZCBkb21haW5zLiBSZXR1cm5zIGJvdGggdmVyaWZpZWQgYW5kIHVudmVyaWZpZWQgZG9tYWlucyBieSB0aGVpciBJRILT5JMCLhIsL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9kb21haW5zL3tpZH0SpQQKGFZlcmlmeU9yZ2FuaXphdGlvbkRvbWFpbhI6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVmVyaWZ5T3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBo7LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVmVyaWZ5T3JnYW5pemF0aW9uRG9tYWluUmVzcG9uc2UijwOSQc0CCgxPcmdhbml6YXRpb24SEVZlcmlmeSBvcmcgZG9tYWluGqkCVmVyaWZ5IGEgZG9tYWluIGZvciBhbiBvcmdhbml6YXRpb24gd2l0aCBhIHZlcmlmaWNhdGlvbiB0b2tlbiBnZW5lcmF0ZWQgYnkgRnJvbnRpZXIgR2VuZXJhdGVEb21haW5WZXJpZmljYXRpb25Ub2tlbiBBUEkuIFRoZSB0b2tlbiBtdXN0IGJlIGFkZGVkIHRvIHlvdXIgZG9tYWluJ3MgRE5TIHByb3ZpZGVyIGFzIGEgVFhUIHJlY29yZCBiZWZvcmUgaXQgY2FuIGJlIHZlcmlmaWVkLiBUaGlzIEFQSSByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgZG9tYWluIChwZW5kaW5nL3ZlcmlmaWVkKSBhZnRlciB2ZXJpZmljYXRpb24ugtPkkwI4IjMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2RvbWFpbnMve2lkfS92ZXJpZnk6ASoSkgMKEEpvaW5Pcmdhbml6YXRpb24SMi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkpvaW5Pcmdhbml6YXRpb25SZXF1ZXN0GjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Kb2luT3JnYW5pemF0aW9uUmVzcG9uc2UilAKSQeEBCgxPcmdhbml6YXRpb24SEUpvaW4gb3JnYW5pemF0aW9uGr0BQWxsb3dzIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHRvIGpvaW4gdGhlIE9yZyBpZiBvbmUgaXMgbm90IGEgcGFydCBvZiBpdC4gVGhlIHVzZXIgd2lsbCBvbmx5IGJlIGFibGUgdG8gam9pbiB3aGVuIHRoZSB1c2VyIGVtYWlsJ3MgZG9tYWluIG1hdGNoZXMgdGhlIG9yZ2FuaXphdGlvbidzIHdoaXRlbGlzdGVkIGRvbWFpbnMugtPkkwIpIiQvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2pvaW46ASoS2QIKEkVuYWJsZU9yZ2FuaXphdGlvbhI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlT3JnYW5pemF0aW9uUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlT3JnYW5pemF0aW9uUmVzcG9uc2Ui1QGSQaQBCgxPcmdhbml6YXRpb24SE0VuYWJsZSBvcmdhbml6YXRpb24af1NldHMgdGhlIHN0YXRlIG9mIHRoZSBvcmdhbml6YXRpb24gYXMgZW5hYmxlZC4gVGhlIGV4aXN0aW5nIHVzZXJzIGluIHRoZSBvcmcgd2lsbCBiZSBhYmxlIHRvIGFjY2VzcyBhbnkgb3JnYW5pemF0aW9uIHJlc291cmNlcy6C0+STAiciIi92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfS9lbmFibGU6ASoS5AIKE0Rpc2FibGVPcmdhbml6YXRpb24SNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRpc2FibGVPcmdhbml6YXRpb25SZXF1ZXN0GjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlT3JnYW5pemF0aW9uUmVzcG9uc2Ui3QGSQasBCgxPcmdhbml6YXRpb24SFERpc2FibGUgb3JnYW5pemF0aW9uGoQBU2V0cyB0aGUgc3RhdGUgb2YgdGhlIG9yZ2FuaXphdGlvbiBhcyBkaXNhYmxlZC4gVGhlIGV4aXN0aW5nIHVzZXJzIGluIHRoZSBvcmcgd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgYW55IG9yZ2FuaXphdGlvbiByZXNvdXJjZXMugtPkkwIoIiMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tpZH0vZGlzYWJsZToBKhLGAgoSRGVsZXRlT3JnYW5pemF0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25SZXNwb25zZSLCAZJBmwEKDE9yZ2FuaXphdGlvbhITRGVsZXRlIG9yZ2FuaXphdGlvbhp2RGVsZXRlIGFuIG9yZ2FuaXphdGlvbiBhbmQgYWxsIG9mIGl0cyByZWxhdGlvbnMgcGVybWFuZW50bHkuIFRoZSBvcmdhbml6YXRpb24gdXNlcnMgd2lsbCBub3QgYmUgZGVsZXRlZCBmcm9tIEZyb250aWVyLoLT5JMCHSobL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9Eq8BCg1DcmVhdGVQcm9qZWN0Ei8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9qZWN0UmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUHJvamVjdFJlc3BvbnNlIjuSQRkKB1Byb2plY3QSDkNyZWF0ZSBwcm9qZWN0gtPkkwIZIhEvdjFiZXRhMS9wcm9qZWN0czoEYm9keRK7AQoKR2V0UHJvamVjdBIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvamVjdFJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFByb2plY3RSZXNwb25zZSJQkkEvCgdQcm9qZWN0EgtHZXQgcHJvamVjdBoXUmV0dXJucyBhIHByb2plY3QgYnkgSUSC0+STAhgSFi92MWJldGExL3Byb2plY3RzL3tpZH0SzQEKDVVwZGF0ZVByb2plY3QSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVByb2plY3RSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9qZWN0UmVzcG9uc2UiWZJBMgoHUHJvamVjdBIOVXBkYXRlIHByb2plY3QaF1VwZGF0ZXMgYSBwcm9qZWN0IGJ5IElEgtPkkwIeGhYvdjFiZXRhMS9wcm9qZWN0cy97aWR9OgRib2R5EvMBChFMaXN0UHJvamVjdEFkbWlucxIzLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RBZG1pbnNSZXF1ZXN0GjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdEFkbWluc1Jlc3BvbnNlInOSQUsKB1Byb2plY3QSE0xpc3QgcHJvamVjdCBhZG1pbnMaK1JldHVybnMgYSBjb2xsZWN0aW9uIG9mIGFkbWlucyBvZiBhIHByb2plY3SC0+STAh8SHS92MWJldGExL3Byb2plY3RzL3tpZH0vYWRtaW5zEpgCChBMaXN0UHJvamVjdFVzZXJzEjIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdFVzZXJzUmVxdWVzdBozLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RVc2Vyc1Jlc3BvbnNlIpoBkkFzCgdQcm9qZWN0EhJMaXN0IHByb2plY3QgdXNlcnMaVFJldHVybnMgYSBjb2xsZWN0aW9uIG9mIHVzZXJzIG9mIGEgcHJvamVjdC4gRmlsdGVyIGJ5IHVzZXIgcGVybWlzc2lvbnMgaXMgc3VwcG9ydGVkLoLT5JMCHhIcL3YxYmV0YTEvcHJvamVjdHMve2lkfS91c2VycxKRAgoXTGlzdFByb2plY3RTZXJ2aWNlVXNlcnMSOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0U2VydmljZVVzZXJzUmVxdWVzdBo6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RTZXJ2aWNlVXNlcnNSZXNwb25zZSJ/kkFRCgdQcm9qZWN0EhlMaXN0IHByb2plY3Qgc2VydmljZXVzZXJzGitSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiB1c2VycyBvZiBhIHByb2plY3QugtPkkwIlEiMvdjFiZXRhMS9wcm9qZWN0cy97aWR9L3NlcnZpY2V1c2VycxL0AQoRTGlzdFByb2plY3RHcm91cHMSMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0R3JvdXBzUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RHcm91cHNSZXNwb25zZSJ0kkFMCgdQcm9qZWN0EhNMaXN0IHByb2plY3QgZ3JvdXBzGixSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBncm91cHMgb2YgYSBwcm9qZWN0LoLT5JMCHxIdL3YxYmV0YTEvcHJvamVjdHMve2lkfS9ncm91cHMSuAEKDUVuYWJsZVByb2plY3QSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkVuYWJsZVByb2plY3RSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVQcm9qZWN0UmVzcG9uc2UiRJJBGQoHUHJvamVjdBIORW5hYmxlIHByb2plY3SC0+STAiIiHS92MWJldGExL3Byb2plY3RzL3tpZH0vZW5hYmxlOgEqEr0BCg5EaXNhYmxlUHJvamVjdBIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZVByb2plY3RSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlUHJvamVjdFJlc3BvbnNlIkaSQRoKB1Byb2plY3QSD0Rpc2FibGUgcHJvamVjdILT5JMCIyIeL3YxYmV0YTEvcHJvamVjdHMve2lkfS9kaXNhYmxlOgEqEuIBCg1EZWxldGVQcm9qZWN0Ei8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVQcm9qZWN0UmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUHJvamVjdFJlc3BvbnNlIm6SQU0KB1Byb2plY3QSDkRlbGV0ZSBQcm9qZWN0GjJEZWxldGUgYSBwcm9qZWN0IGFsbCBvZiBpdHMgcmVsYXRpb25zIHBlcm1hbmVudGx5LoLT5JMCGCoWL3YxYmV0YTEvcHJvamVjdHMve2lkfRK9AQoMQ3JlYXRlUG9saWN5Ei4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lSZXNwb25zZSJMkkEqCgZQb2xpY3kSDUNyZWF0ZSBwb2xpY3kaEUNyZWF0ZXMgYSBwb2xpY3kggtPkkwIZIhEvdjFiZXRhMS9wb2xpY2llczoEYm9keRK1AQoJR2V0UG9saWN5EisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQb2xpY3lSZXF1ZXN0GiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQb2xpY3lSZXNwb25zZSJNkkEsCgZQb2xpY3kSCkdldCBwb2xpY3kaFlJldHVybnMgYSBwb2xpY3kgYnkgSUSC0+STAhgSFi92MWJldGExL3BvbGljaWVzL3tpZH0SuQIKDExpc3RQb2xpY2llcxIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBvbGljaWVzUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBvbGljaWVzUmVzcG9uc2UixwGSQaoBCgZQb2xpY3kSEUxpc3QgYWxsIHBvbGljaWVzGowBTGlzdHMgYWxsIHRoZSBwb2xpY2llcyBmcm9tIGFsbCB0aGUgb3JnYW5pemF0aW9ucyBpbiBhIEZyb250aWVyIGluc3RhbmNlLiBJdCBjYW4gYmUgZmlsdGVyZWQgYnkgb3JnYW5pemF0aW9uLCBwcm9qZWN0LCB1c2VyLCByb2xlIGFuZCBncm91cC6C0+STAhMSES92MWJldGExL3BvbGljaWVzEscBCgxVcGRhdGVQb2xpY3kSLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVBvbGljeVJlcXVlc3QaLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVBvbGljeVJlc3BvbnNlIlaSQS8KBlBvbGljeRINVXBkYXRlIHBvbGljeRoWVXBkYXRlcyBhIHBvbGljeSBieSBJRILT5JMCHhoWL3YxYmV0YTEvcG9saWNpZXMve2lkfToEYm9keRLcAQoMRGVsZXRlUG9saWN5Ei4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVQb2xpY3lSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVQb2xpY3lSZXNwb25zZSJrkkFKCgZQb2xpY3kSDURlbGV0ZSBQb2xpY3kaMURlbGV0ZSBhIHBvbGljeSBhbGwgb2YgaXRzIHJlbGF0aW9ucyBwZXJtYW5lbnRseS6C0+STAhgqFi92MWJldGExL3BvbGljaWVzL3tpZH0SiQIKFkNyZWF0ZVBvbGljeUZvclByb2plY3QSOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVBvbGljeUZvclByb2plY3RSZXF1ZXN0GjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lGb3JQcm9qZWN0UmVzcG9uc2UiepJBQgoGUG9saWN5EhlDcmVhdGUgUG9saWN5IGZvciBQcm9qZWN0Gh1DcmVhdGUgYSBwb2xpY3kgZm9yIGEgcHJvamVjdILT5JMCLyInL3YxYmV0YTEvcG9saWNpZXMvcHJvamVjdHMve3Byb2plY3RfaWR9OgRib2R5ErUBCg5DcmVhdGVSZWxhdGlvbhIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUmVsYXRpb25SZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVSZWxhdGlvblJlc3BvbnNlIj6SQRsKCFJlbGF0aW9uEg9DcmVhdGUgcmVsYXRpb26C0+STAhoiEi92MWJldGExL3JlbGF0aW9uczoEYm9keRLCAQoLR2V0UmVsYXRpb24SLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFJlbGF0aW9uUmVxdWVzdBouLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UmVsYXRpb25SZXNwb25zZSJUkkEyCghSZWxhdGlvbhIMR2V0IHJlbGF0aW9uGhhSZXR1cm5zIGEgcmVsYXRpb24gYnkgSUSC0+STAhkSFy92MWJldGExL3JlbGF0aW9ucy97aWR9EpACCg5EZWxldGVSZWxhdGlvbhIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUmVsYXRpb25SZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVSZWxhdGlvblJlc3BvbnNlIpgBkkFOCghSZWxhdGlvbhIPRGVsZXRlIHJlbGF0aW9uGjFSZW1vdmUgYSBzdWJqZWN0IGhhdmluZyBhIHJlbGF0aW9uIGZyb20gYW4gb2JqZWN0gtPkkwJBKj8vdjFiZXRhMS9yZWxhdGlvbnMve3JlbGF0aW9ufS9vYmplY3Qve29iamVjdH0vc3ViamVjdC97c3ViamVjdH0SugEKD0xpc3RQZXJtaXNzaW9ucxIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBlcm1pc3Npb25zUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBlcm1pc3Npb25zUmVzcG9uc2UiQJJBIQoKUGVybWlzc2lvbhITR2V0IGFsbCBwZXJtaXNzaW9uc4LT5JMCFhIUL3YxYmV0YTEvcGVybWlzc2lvbnMS0AEKDUdldFBlcm1pc3Npb24SLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFBlcm1pc3Npb25SZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQZXJtaXNzaW9uUmVzcG9uc2UiXJJBOAoKUGVybWlzc2lvbhIOR2V0IHBlcm1pc3Npb24aGlJldHVybnMgYSBwZXJtaXNzaW9uIGJ5IElEgtPkkwIbEhkvdjFiZXRhMS9wZXJtaXNzaW9ucy97aWR9Eu8BCg5MaXN0TmFtZXNwYWNlcxIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE5hbWVzcGFjZXNSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0TmFtZXNwYWNlc1Jlc3BvbnNlIniSQVoKCU5hbWVzcGFjZRISR2V0IGFsbCBuYW1lc3BhY2VzGjlSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBuYW1lc3BhY2VzIGluIGEgRnJvbnRpZXIgaW5zdGFuY2WC0+STAhUSEy92MWJldGExL25hbWVzcGFjZXMSyQEKDEdldE5hbWVzcGFjZRIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0TmFtZXNwYWNlUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0TmFtZXNwYWNlUmVzcG9uc2UiWJJBNQoJTmFtZXNwYWNlEg1HZXQgbmFtZXNwYWNlGhlSZXR1cm5zIGEgbmFtZXNwYWNlIGJ5IElEgtPkkwIaEhgvdjFiZXRhMS9uYW1lc3BhY2VzL3tpZH0S2QEKFExpc3RQcm9qZWN0UmVzb3VyY2VzEjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdFJlc291cmNlc1JlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0UmVzb3VyY2VzUmVzcG9uc2UiUJJBHQoIUmVzb3VyY2USEUdldCBhbGwgcmVzb3VyY2VzgtPkkwIqEigvdjFiZXRhMS9wcm9qZWN0cy97cHJvamVjdF9pZH0vcmVzb3VyY2VzEoECChVDcmVhdGVQcm9qZWN0UmVzb3VyY2USNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2plY3RSZXNvdXJjZVJlcXVlc3QaOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2plY3RSZXNvdXJjZVJlc3BvbnNlInWSQTwKCFJlc291cmNlEg9DcmVhdGUgcmVzb3VyY2UaH0NyZWF0ZXMgYSByZXNvdXJjZSBpbiBhIHByb2plY3SC0+STAjAiKC92MWJldGExL3Byb2plY3RzL3twcm9qZWN0X2lkfS9yZXNvdXJjZXM6BGJvZHkS9QEKEkdldFByb2plY3RSZXNvdXJjZRI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvamVjdFJlc291cmNlUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvamVjdFJlc291cmNlUmVzcG9uc2UicpJBOgoIUmVzb3VyY2USDEdldCByZXNvdXJjZRogUmV0dXJucyBhIHByb2plY3QgcmVzb3VyY2UgYnkgSUSC0+STAi8SLS92MWJldGExL3Byb2plY3RzL3twcm9qZWN0X2lkfS9yZXNvdXJjZXMve2lkfRKGAgoVVXBkYXRlUHJvamVjdFJlc291cmNlEjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9qZWN0UmVzb3VyY2VSZXF1ZXN0GjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9qZWN0UmVzb3VyY2VSZXNwb25zZSJ6kkE8CghSZXNvdXJjZRIPVXBkYXRlIHJlc291cmNlGh9VcGRhdGVzIGEgcmVzb3VyY2UgaW4gYSBwcm9qZWN0gtPkkwI1Gi0vdjFiZXRhMS9wcm9qZWN0cy97cHJvamVjdF9pZH0vcmVzb3VyY2VzL3tpZH06BGJvZHkSjwIKFURlbGV0ZVByb2plY3RSZXNvdXJjZRI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUHJvamVjdFJlc291cmNlUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUHJvamVjdFJlc291cmNlUmVzcG9uc2UiggGSQUoKCFJlc291cmNlEg9EZWxldGUgcmVzb3VyY2UaLURlbGV0ZXMgYSByZXNvdXJjZSBmcm9tIGEgcHJvamVjdCBwZXJtYW5lbnRseYLT5JMCLyotL3YxYmV0YTEvcHJvamVjdHMve3Byb2plY3RfaWR9L3Jlc291cmNlcy97aWR9EvsDChdDaGVja1Jlc291cmNlUGVybWlzc2lvbhI5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tSZXNvdXJjZVBlcm1pc3Npb25SZXF1ZXN0GjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja1Jlc291cmNlUGVybWlzc2lvblJlc3BvbnNlIugCkkHLAgoFQXV0aHoSBUNoZWNrGroCUmV0dXJucyB0cnVlIGlmIGEgcHJpbmNpcGFsIGhhcyByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgYSByZXNvdXJjZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLjxici8+IE5vdGUgdGhlIHByaW5jaXBhbCBjYW4gYmUgYSB1c2VyIG9yIGEgc2VydmljZSBhY2NvdW50LiBGcm9udGllciB3aWxsIGV4dHJhY3QgcHJpbmNpcGFsIGZyb20gdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHNlc3Npb24gY29va2llIChpZiBhbnkpLCBvciB0aGUgY2xpZW50IGlkIGFuZCBzZWNyZXQgKGluIGNhc2Ugb2Ygc2VydmljZSB1c2Vycykgb3IgdGhlIGFjY2VzcyB0b2tlbi6C0+STAhMiDi92MWJldGExL2NoZWNrOgEqErMEChRCYXRjaENoZWNrUGVybWlzc2lvbhI2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmF0Y2hDaGVja1Blcm1pc3Npb25SZXF1ZXN0GjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CYXRjaENoZWNrUGVybWlzc2lvblJlc3BvbnNlIqkDkkGHAwoFQXV0aHoSC0JhdGNoIGNoZWNrGvACUmV0dXJucyB0cnVlIGlmIGEgcHJpbmNpcGFsIGhhcyByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgYSByZXNvdXJjZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLjxici8+IE5vdGUgdGhlIHByaW5jaXBhbCBjYW4gYmUgYSB1c2VyIG9yIGEgc2VydmljZSBhY2NvdW50LCBhbmQgRnJvbnRpZXIgd2lsbCB0aGUgY3JlZGVudGlhbHMgZnJvbSB0aGUgY3VycmVudCBsb2dnZWQgaW4gcHJpbmNpcGFsIGZyb20gdGhlIHNlc3Npb24gY29va2llIChpZiBhbnkpLCBvciB0aGUgY2xpZW50IGlkIGFuZCBzZWNyZXQgKGluIGNhc2Ugb2Ygc2VydmljZSB1c2Vycykgb3IgdGhlIGFjY2VzcyB0b2tlbiAoaW4gY2FzZSBvZiBodW1hbiB1c2VyIGFjY291bnRzKS6C0+STAhgiEy92MWJldGExL2JhdGNoY2hlY2s6ASoStQEKB0dldEpXS3MSKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEpXS3NSZXF1ZXN0GioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRKV0tzUmVzcG9uc2UiU5JBHAoFQXV0aHoSE0dldCB3ZWxsIGtub3duIEpXS3OC0+STAi4SEi92MWJldGExL2F1dGgvandrc1oYEhYvLndlbGwta25vd24vandrcy5qc29uErcCChJMaXN0QXV0aFN0cmF0ZWdpZXMSNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RBdXRoU3RyYXRlZ2llc1JlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RBdXRoU3RyYXRlZ2llc1Jlc3BvbnNlIrMBkkGaAQoFQXV0aG4SHkxpc3QgYXV0aGVudGljYXRpb24gc3RyYXRlZ2llcxpxUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpdHkgcHJvdmlkZXJzIGNvbmZpZ3VyZWQgb24gYW4gaW5zdGFuY2UgbGV2ZWwgaW4gRnJvbnRpZXIuIGUuZyBHb29nbGUsIEF6dXJlQUQsIEdpdGh1YiBldGOC0+STAg8SDS92MWJldGExL2F1dGgS6QQKDEF1dGhlbnRpY2F0ZRIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aGVudGljYXRlUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aGVudGljYXRlUmVzcG9uc2Ui9wOSQZgDCgVBdXRobhIcQXV0aGVudGljYXRlIHdpdGggYSBzdHJhdGVneRrwAkF1dGhlbnRpY2F0ZSBhIHVzZXIgd2l0aCBhIHN0cmF0ZWd5LiBCeSBkZWZhdWx0LCBhZnRlciBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uIG5vIG9wZXJhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCB0byBhcHBseSByZWRpcmVjdGlvbiBpbiBjYXNlIG9mIGJyb3dzZXJzLCBwcm92aWRlIGEgdXJsIGluIHRoZSBhdXRoZW50aWNhdGUgcmVxdWVzdCBib2R5IHRoYXQgd2lsbCBiZSB1c2VkIGZvciByZWRpcmVjdGlvbiBhZnRlciBhdXRoZW50aWNhdGlvbi4gQWxzbyBzZXQgcmVkaXJlY3QgYXMgdHJ1ZSBmb3IgcmVkaXJlY3RpbmcgdGhlIHVzZXIgcmVxdWVzdCB0byB0aGUgcmVkaXJlY3RfdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24ugtPkkwJVEiYvdjFiZXRhMS9hdXRoL3JlZ2lzdGVyL3tzdHJhdGVneV9uYW1lfVorIiYvdjFiZXRhMS9hdXRoL3JlZ2lzdGVyL3tzdHJhdGVneV9uYW1lfToBKhK9BAoMQXV0aENhbGxiYWNrEi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoQ2FsbGJhY2tSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoQ2FsbGJhY2tSZXNwb25zZSLLA5JBjAMKBUF1dGhuEhhDYWxsYmFjayBmcm9tIGEgc3RyYXRlZ3ka6AJDYWxsYmFjayBmcm9tIGEgc3RyYXRlZ3kuIFRoaXMgaXMgdGhlIGVuZHBvaW50IHdoZXJlIHRoZSBzdHJhdGVneSB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyIGFmdGVyIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24uIFRoaXMgZW5kcG9pbnQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgY29kZSBhbmQgc3RhdGUgcXVlcnkgcGFyYW1ldGVycy4gVGhlIGNvZGUgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHN0cmF0ZWd5IGFuZCB0aGUgc3RhdGUgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgcmV0dXJuX3RvIHVybCBmcm9tIHRoZSBzZXNzaW9uIGFuZCByZWRpcmVjdCB0aGUgdXNlciB0byB0aGF0IHVybC6C0+STAjUSFi92MWJldGExL2F1dGgvY2FsbGJhY2taGyIWL3YxYmV0YTEvYXV0aC9jYWxsYmFjazoBKhLCAwoJQXV0aFRva2VuEisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoVG9rZW5SZXF1ZXN0GiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoVG9rZW5SZXNwb25zZSLZApJBtwIKBUF1dGhuEipHZW5lcmF0ZSBhY2Nlc3MgdG9rZW4gYnkgZ2l2ZW4gY3JlZGVudGlhbHMagQJBY2Nlc3MgdG9rZW4gY2FuIGJlIGdlbmVyYXRlZCBieSBwcm92aWRpbmcgdGhlIGNyZWRlbnRpYWxzIGluIHRoZSByZXF1ZXN0IGJvZHkvaGVhZGVyLiBUaGUgY3JlZGVudGlhbHMgY2FuIGJlIGNsaWVudCBpZCBhbmQgc2VjcmV0IG9yIHNlcnZpY2UgYWNjb3VudCBnZW5lcmF0ZWQga2V5IGp3dC4gVXNlIHRoZSBnZW5lcmF0ZWQgYWNjZXNzIHRva2VuIGluIEF1dGhvcml6YXRpb24gaGVhZGVyIHRvIGFjY2VzcyB0aGUgZnJvbnRpZXIgcmVzb3VyY2VzLoLT5JMCGCITL3YxYmV0YTEvYXV0aC90b2tlbjoBKhLBAQoKQXV0aExvZ291dBIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aExvZ291dFJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkF1dGhMb2dvdXRSZXNwb25zZSJWkkEfCgVBdXRobhIWTG9nb3V0IGZyb20gYSBzdHJhdGVneYLT5JMCLhIUL3YxYmV0YTEvYXV0aC9sb2dvdXRaFioUL3YxYmV0YTEvYXV0aC9sb2dvdXQSrgIKD0xpc3RNZXRhU2NoZW1hcxIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE1ldGFTY2hlbWFzUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE1ldGFTY2hlbWFzUmVzcG9uc2UiswGSQZIBCgpNZXRhU2NoZW1hEhBMaXN0IG1ldGFzY2hlbWFzGnJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgbWV0YXNjaGVtYXMgY29uZmlndXJlZCBvbiBhbiBpbnN0YW5jZSBsZXZlbCBpbiBGcm9udGllci4gZS5nIHVzZXIsIHByb2plY3QsIG9yZ2FuaXphdGlvbiBldGOC0+STAhcSFS92MWJldGExL21ldGEvc2NoZW1hcxKfBQoQQ3JlYXRlTWV0YVNjaGVtYRIyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlTWV0YVNjaGVtYVJlcXVlc3QaMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZU1ldGFTY2hlbWFSZXNwb25zZSKhBJJB+gMKCk1ldGFTY2hlbWESEUNyZWF0ZSBtZXRhc2NoZW1hGtgDQ3JlYXRlIGEgbmV3IG1ldGFkYXRhIHNjaGVtYS4gVGhlIG1ldGFzY2hlbWEgKipuYW1lKiogbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UgYW5kIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMuIFRoZSBtZXRhc2NoZW1hICoqc2NoZW1hKiogbXVzdCBiZSBhIHZhbGlkIEpTT04gc2NoZW1hLlBsZWFzZSByZWZlciB0byBodHRwczovL2pzb24tc2NoZW1hLm9yZy8gdG8ga25vdyBtb3JlIGFib3V0IGpzb24gc2NoZW1hLiA8YnIvPipFeGFtcGxlOiogYHtuYW1lOiJ1c2VyIixzY2hlbWE6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJsYWJlbCI6eyJ0eXBlIjoib2JqZWN0IiwiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9fSwiZGVzY3JpcHRpb24iOnsidHlwZSI6InN0cmluZyJ9fX19YILT5JMCHSIVL3YxYmV0YTEvbWV0YS9zY2hlbWFzOgRib2R5EtMBCg1HZXRNZXRhU2NoZW1hEi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRNZXRhU2NoZW1hUmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0TWV0YVNjaGVtYVJlc3BvbnNlIl+SQToKCk1ldGFTY2hlbWESDkdldCBtZXRhc2NoZW1hGhxHZXQgYSBtZXRhZGF0YSBzY2hlbWEgYnkgSUQugtPkkwIcEhovdjFiZXRhMS9tZXRhL3NjaGVtYXMve2lkfRLBBAoQVXBkYXRlTWV0YVNjaGVtYRIyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlTWV0YVNjaGVtYVJlcXVlc3QaMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZU1ldGFTY2hlbWFSZXNwb25zZSLDA5JBlwMKCk1ldGFTY2hlbWESEVVwZGF0ZSBtZXRhc2NoZW1hGvUCVXBkYXRlIGEgbWV0YWRhdGEgc2NoZW1hLiBPbmx5IGBzY2hlbWFgIGZpZWxkIG9mIGEgbWV0YXNjaGVtYSBjYW4gYmUgdXBkYXRlZC4gVGhlIG1ldGFzY2hlbWEgYHNjaGVtYWAgbXVzdCBiZSBhIHZhbGlkIEpTT04gc2NoZW1hLlBsZWFzZSByZWZlciB0byBodHRwczovL2pzb24tc2NoZW1hLm9yZy8gdG8ga25vdyBtb3JlIGFib3V0IGpzb24gc2NoZW1hLiA8YnIvPipFeGFtcGxlOiogYHtuYW1lOiJ1c2VyIixzY2hlbWE6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJsYWJlbCI6eyJ0eXBlIjoib2JqZWN0IiwiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9fSwiZGVzY3JpcHRpb24iOnsidHlwZSI6InN0cmluZyJ9fX19YILT5JMCIhoaL3YxYmV0YTEvbWV0YS9zY2hlbWFzL3tpZH06BGJvZHkS4wQKEERlbGV0ZU1ldGFTY2hlbWESMi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU1ldGFTY2hlbWFSZXF1ZXN0GjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVNZXRhU2NoZW1hUmVzcG9uc2Ui5QOSQb8DCgpNZXRhU2NoZW1hEhFEZWxldGUgbWV0YXNjaGVtYRqdA0RlbGV0ZSBhIG1ldGFkYXRhIHNjaGVtYSBwZXJtYW5lbnRseS4gT25jZSBkZWxldGVkIHRoZSBtZXRhc2NoZW1hIHdvbid0IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG1ldGFkYXRhLiBGb3IgZXhhbXBsZSwgaWYgYSBtZXRhc2NoZW1hKHdpdGggYGxhYmVsYCBhbmQgYGRlc2NyaXB0aW9uYCBmaWVsZHMpIGlzIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG1ldGFkYXRhIG9mIGEgdXNlciwgdGhlbiBkZWxldGluZyB0aGUgbWV0YXNjaGVtYSB3aWxsIG5vdCB2YWxpZGF0ZSB0aGUgbWV0YWRhdGEgb2YgdGhlIHVzZXIgYW5kIG1ldGFkYXRhIGZpZWxkIGNhbiBjb250YWluIGFueSBrZXktdmFsdWUgcGFpcihhbmQgc2F5IGFub3RoZXIgZmllbGQgY2FsbGVkIGBmb29gIGNhbiBiZSBpbnNlcnRlZCBpbiBhIHVzZXIncyBtZXRhZGF0YSkugtPkkwIcKhovdjFiZXRhMS9tZXRhL3NjaGVtYXMve2lkfRKmAgoZTGlzdE9yZ2FuaXphdGlvbkF1ZGl0TG9ncxI7LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkF1ZGl0TG9nc1JlcXVlc3QaPC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25BdWRpdExvZ3NSZXNwb25zZSKNAZJBWQoIQXVkaXRMb2cSD0xpc3QgYXVkaXQgbG9ncxo8UmV0dXJucyBhIGxpc3Qgb2YgYXVkaXQgbG9ncyBvZiBhbiBvcmdhbml6YXRpb24gaW4gRnJvbnRpZXIugtPkkwIrEikvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2F1ZGl0bG9ncxKUAgobQ3JlYXRlT3JnYW5pemF0aW9uQXVkaXRMb2dzEj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25BdWRpdExvZ3NSZXF1ZXN0Gj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25BdWRpdExvZ3NSZXNwb25zZSJ2kkE/CghBdWRpdExvZxIQQ3JlYXRlIGF1ZGl0IGxvZxohQ3JlYXRlIG5ldyBhdWRpdCBsb2dzIGluIGEgYmF0Y2gugtPkkwIuIikvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2F1ZGl0bG9nczoBKhL9AQoXR2V0T3JnYW5pemF0aW9uQXVkaXRMb2cSOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldE9yZ2FuaXphdGlvbkF1ZGl0TG9nUmVxdWVzdBo6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uQXVkaXRMb2dSZXNwb25zZSJrkkEyCghBdWRpdExvZxINR2V0IGF1ZGl0IGxvZxoXR2V0IGFuIGF1ZGl0IGxvZyBieSBJRC6C0+STAjASLi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYXVkaXRsb2dzL3tpZH0SiQIKE0Rlc2NyaWJlUHJlZmVyZW5jZXMSNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlc2NyaWJlUHJlZmVyZW5jZXNSZXF1ZXN0GjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZXNjcmliZVByZWZlcmVuY2VzUmVzcG9uc2UiggGSQVwKClByZWZlcmVuY2USFERlc2NyaWJlIHByZWZlcmVuY2VzGjhSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcHJlZmVyZW5jZXMgc3VwcG9ydGVkIGJ5IEZyb250aWVyLoLT5JMCHRIbL3YxYmV0YTEvcHJlZmVyZW5jZXMvdHJhaXRzEsQDCh1DcmVhdGVPcmdhbml6YXRpb25QcmVmZXJlbmNlcxI/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlT3JnYW5pemF0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0GkAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlIp8CkkHpAQoKUHJlZmVyZW5jZRIfQ3JlYXRlIG9yZ2FuaXphdGlvbiBwcmVmZXJlbmNlcxq5AUNyZWF0ZSBhIG5ldyBvcmdhbml6YXRpb24gcHJlZmVyZW5jZXMuIFRoZSBvcmdhbml6YXRpb24gcHJlZmVyZW5jZXMgKipuYW1lKiogbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBvcmdhbml6YXRpb24gYW5kIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMugtPkkwIsIicvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tpZH0vcHJlZmVyZW5jZXM6ASoSpQIKG0xpc3RPcmdhbml6YXRpb25QcmVmZXJlbmNlcxI9LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblByZWZlcmVuY2VzUmVxdWVzdBo+LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblByZWZlcmVuY2VzUmVzcG9uc2UihgGSQVQKClByZWZlcmVuY2USHUxpc3Qgb3JnYW5pemF0aW9uIHByZWZlcmVuY2VzGidMaXN0IGFuIG9yZ2FuaXphdGlvbiBwcmVmZXJlbmNlcyBieSBJRC6C0+STAikSJy92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfS9wcmVmZXJlbmNlcxKcAwoYQ3JlYXRlUHJvamVjdFByZWZlcmVuY2VzEjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9qZWN0UHJlZmVyZW5jZXNSZXF1ZXN0GjsucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9qZWN0UHJlZmVyZW5jZXNSZXNwb25zZSKGApJB1QEKClByZWZlcmVuY2USGkNyZWF0ZSBwcm9qZWN0IHByZWZlcmVuY2VzGqoBQ3JlYXRlIGEgbmV3IHByb2plY3QgcHJlZmVyZW5jZXMuIFRoZSBwcm9qZWN0IHByZWZlcmVuY2VzICoqbmFtZSoqIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgcHJvamVjdCBhbmQgY2FuIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgZGFzaGVzIGFuZCB1bmRlcnNjb3Jlcy6C0+STAiciIi92MWJldGExL3Byb2plY3RzL3tpZH0vcHJlZmVyZW5jZXM6ASoShQIKFkxpc3RQcm9qZWN0UHJlZmVyZW5jZXMSOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0UHJlZmVyZW5jZXNSZXF1ZXN0GjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdFByZWZlcmVuY2VzUmVzcG9uc2UidpJBSQoKUHJlZmVyZW5jZRIYTGlzdCBwcm9qZWN0IHByZWZlcmVuY2VzGiFMaXN0IGEgcHJvamVjdCBwcmVmZXJlbmNlcyBieSBJRC6C0+STAiQSIi92MWJldGExL3Byb2plY3RzL3tpZH0vcHJlZmVyZW5jZXMSjAMKFkNyZWF0ZUdyb3VwUHJlZmVyZW5jZXMSOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUdyb3VwUHJlZmVyZW5jZXNSZXF1ZXN0GjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVHcm91cFByZWZlcmVuY2VzUmVzcG9uc2Ui/AGSQc0BCgpQcmVmZXJlbmNlEhhDcmVhdGUgZ3JvdXAgcHJlZmVyZW5jZXMapAFDcmVhdGUgYSBuZXcgZ3JvdXAgcHJlZmVyZW5jZXMuIFRoZSBncm91cCBwcmVmZXJlbmNlcyAqKm5hbWUqKiBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGdyb3VwIGFuZCBjYW4gY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzLoLT5JMCJSIgL3YxYmV0YTEvZ3JvdXBzL3tpZH0vcHJlZmVyZW5jZXM6ASoS+QEKFExpc3RHcm91cFByZWZlcmVuY2VzEjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0R3JvdXBQcmVmZXJlbmNlc1JlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RHcm91cFByZWZlcmVuY2VzUmVzcG9uc2UicJJBRQoKUHJlZmVyZW5jZRIWTGlzdCBncm91cCBwcmVmZXJlbmNlcxofTGlzdCBhIGdyb3VwIHByZWZlcmVuY2VzIGJ5IElELoLT5JMCIhIgL3YxYmV0YTEvZ3JvdXBzL3tpZH0vcHJlZmVyZW5jZXMShAMKFUNyZWF0ZVVzZXJQcmVmZXJlbmNlcxI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlVXNlclByZWZlcmVuY2VzUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlVXNlclByZWZlcmVuY2VzUmVzcG9uc2Ui9wGSQckBCgpQcmVmZXJlbmNlEhdDcmVhdGUgdXNlciBwcmVmZXJlbmNlcxqhAUNyZWF0ZSBhIG5ldyB1c2VyIHByZWZlcmVuY2VzLiBUaGUgdXNlciBwcmVmZXJlbmNlcyAqKm5hbWUqKiBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHVzZXIgYW5kIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMugtPkkwIkIh8vdjFiZXRhMS91c2Vycy97aWR9L3ByZWZlcmVuY2VzOgEqEvMBChNMaXN0VXNlclByZWZlcmVuY2VzEjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0VXNlclByZWZlcmVuY2VzUmVxdWVzdBo2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFVzZXJQcmVmZXJlbmNlc1Jlc3BvbnNlIm2SQUMKClByZWZlcmVuY2USFUxpc3QgdXNlciBwcmVmZXJlbmNlcxoeTGlzdCBhIHVzZXIgcHJlZmVyZW5jZXMgYnkgSUQugtPkkwIhEh8vdjFiZXRhMS91c2Vycy97aWR9L3ByZWZlcmVuY2VzEqEDChxDcmVhdGVDdXJyZW50VXNlclByZWZlcmVuY2VzEj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVDdXJyZW50VXNlclByZWZlcmVuY2VzUmVxdWVzdBo/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlQ3VycmVudFVzZXJQcmVmZXJlbmNlc1Jlc3BvbnNlIv8BkkHRAQoKUHJlZmVyZW5jZRIfQ3JlYXRlIGN1cnJlbnQgdXNlciBwcmVmZXJlbmNlcxqhAUNyZWF0ZSBhIG5ldyB1c2VyIHByZWZlcmVuY2VzLiBUaGUgdXNlciBwcmVmZXJlbmNlcyAqKm5hbWUqKiBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHVzZXIgYW5kIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMugtPkkwIkIh8vdjFiZXRhMS91c2Vycy9zZWxmL3ByZWZlcmVuY2VzOgEqEpACChpMaXN0Q3VycmVudFVzZXJQcmVmZXJlbmNlcxI8LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEN1cnJlbnRVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0Gj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJQcmVmZXJlbmNlc1Jlc3BvbnNlInWSQUsKClByZWZlcmVuY2USHUxpc3QgY3VycmVudCB1c2VyIHByZWZlcmVuY2VzGh5MaXN0IGEgdXNlciBwcmVmZXJlbmNlcyBieSBJRC6C0+STAiESHy92MWJldGExL3VzZXJzL3NlbGYvcHJlZmVyZW5jZXMSkwIKFENyZWF0ZUJpbGxpbmdBY2NvdW50EjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVCaWxsaW5nQWNjb3VudFJlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UiiQGSQVQKB0JpbGxpbmcSFkNyZWF0ZSBiaWxsaW5nIGFjY291bnQaMUNyZWF0ZSBhIG5ldyBiaWxsaW5nIGFjY291bnQgZm9yIGFuIG9yZ2FuaXphdGlvbi6C0+STAiwiJy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZzoBKhLzAQoRR2V0QmlsbGluZ0FjY291bnQSMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEJpbGxpbmdBY2NvdW50UmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0QmlsbGluZ0FjY291bnRSZXNwb25zZSJzkkE8CgdCaWxsaW5nEhNHZXQgYmlsbGluZyBhY2NvdW50GhxHZXQgYSBiaWxsaW5nIGFjY291bnQgYnkgSUQugtPkkwIuEiwvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2lkfRKFAgoUVXBkYXRlQmlsbGluZ0FjY291bnQSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlQmlsbGluZ0FjY291bnRSZXNwb25zZSJ8kkFCCgdCaWxsaW5nEhZVcGRhdGUgYmlsbGluZyBhY2NvdW50Gh9VcGRhdGUgYSBiaWxsaW5nIGFjY291bnQgYnkgSUQugtPkkwIxGiwvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2lkfToBKhLBAgoWUmVnaXN0ZXJCaWxsaW5nQWNjb3VudBI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVnaXN0ZXJCaWxsaW5nQWNjb3VudFJlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlZ2lzdGVyQmlsbGluZ0FjY291bnRSZXNwb25zZSKxAZJBbgoHQmlsbGluZxIkUmVnaXN0ZXIgYmlsbGluZyBhY2NvdW50IHRvIHByb3ZpZGVyGj1SZWdpc3RlciBhIGJpbGxpbmcgYWNjb3VudCB0byBhIHByb3ZpZGVyIGlmIGl0J3Mgbm90IGFscmVhZHkugtPkkwI6IjUvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2lkfS9yZWdpc3RlcjoBKhKDAgoTTGlzdEJpbGxpbmdBY2NvdW50cxI1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEJpbGxpbmdBY2NvdW50c1JlcXVlc3QaNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RCaWxsaW5nQWNjb3VudHNSZXNwb25zZSJ9kkFLCgdCaWxsaW5nEhVMaXN0IGJpbGxpbmcgYWNjb3VudHMaKUxpc3QgYmlsbGluZyBhY2NvdW50cyBvZiBhbiBvcmdhbml6YXRpb24ugtPkkwIpEicvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcSggIKFERlbGV0ZUJpbGxpbmdBY2NvdW50EjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVCaWxsaW5nQWNjb3VudFJlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UieZJBQgoHQmlsbGluZxIWRGVsZXRlIGJpbGxpbmcgYWNjb3VudBofRGVsZXRlIGEgYmlsbGluZyBhY2NvdW50IGJ5IElELoLT5JMCLiosL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tpZH0SjQIKFEVuYWJsZUJpbGxpbmdBY2NvdW50EjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVCaWxsaW5nQWNjb3VudFJlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkVuYWJsZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UigwGSQUIKB0JpbGxpbmcSFkVuYWJsZSBiaWxsaW5nIGFjY291bnQaH0VuYWJsZSBhIGJpbGxpbmcgYWNjb3VudCBieSBJRC6C0+STAjgiMy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9L2VuYWJsZToBKhLpAgoVRGlzYWJsZUJpbGxpbmdBY2NvdW50EjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlQmlsbGluZ0FjY291bnRSZXF1ZXN0GjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlQmlsbGluZ0FjY291bnRSZXNwb25zZSLcAZJBmQEKB0JpbGxpbmcSF0Rpc2FibGUgYmlsbGluZyBhY2NvdW50GnVEaXNhYmxlIGEgYmlsbGluZyBhY2NvdW50IGJ5IElELiBEaXNhYmxpbmcgYSBiaWxsaW5nIGFjY291bnQgZG9lc24ndCBhdXRvbWF0aWNhbGx5IGRpc2FibGUgaXQncyBhY3RpdmUgc3Vic2NyaXB0aW9ucy6C0+STAjkiNC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9L2Rpc2FibGU6ASoSiwIKEUdldEJpbGxpbmdCYWxhbmNlEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRCaWxsaW5nQmFsYW5jZVJlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEJpbGxpbmdCYWxhbmNlUmVzcG9uc2UiigGSQUsKB0JpbGxpbmcSE0dldCBiaWxsaW5nIGJhbGFuY2UaK0dldCB0aGUgYmFsYW5jZSBvZiBhIGJpbGxpbmcgYWNjb3VudCBieSBJRC6C0+STAjYSNC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9L2JhbGFuY2US+gEKCkhhc1RyaWFsZWQSLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkhhc1RyaWFsZWRSZXF1ZXN0Gi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5IYXNUcmlhbGVkUmVzcG9uc2UijgGSQT8KB0JpbGxpbmcSC0hhcyB0cmlhbGVkGidDaGVjayBpZiBhIGJpbGxpbmcgYWNjb3VudCBoYXMgdHJpYWxlZC6C0+STAkYSRC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9L3BsYW5zL3twbGFuX2lkfS90cmlhbGVkEscCCg9HZXRTdWJzY3JpcHRpb24SMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFN1YnNjcmlwdGlvblJlcXVlc3QaMi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFN1YnNjcmlwdGlvblJlc3BvbnNlIswBkkE7CgxTdWJzY3JpcHRpb24SEEdldCBzdWJzY3JpcHRpb24aGUdldCBhIHN1YnNjcmlwdGlvbiBieSBJRC6C0+STAocBEkcvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L3N1YnNjcmlwdGlvbnMve2lkfVo8EjovdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcvc3Vic2NyaXB0aW9ucy97aWR9EuoCChJDYW5jZWxTdWJzY3JpcHRpb24SNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNhbmNlbFN1YnNjcmlwdGlvblJlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNhbmNlbFN1YnNjcmlwdGlvblJlc3BvbnNlIuYBkkFBCgxTdWJzY3JpcHRpb24SE0NhbmNlbCBzdWJzY3JpcHRpb24aHENhbmNlbCBhIHN1YnNjcmlwdGlvbiBieSBJRC6C0+STApsBIk4vdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L3N1YnNjcmlwdGlvbnMve2lkfS9jYW5jZWw6ASpaRiJBL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3N1YnNjcmlwdGlvbnMve2lkfS9jYW5jZWw6ASoS0wIKEUxpc3RTdWJzY3JpcHRpb25zEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2Ui0gGSQUwKDFN1YnNjcmlwdGlvbhISTGlzdCBzdWJzY3JpcHRpb25zGihMaXN0IHN1YnNjcmlwdGlvbnMgb2YgYSBiaWxsaW5nIGFjY291bnQugtPkkwJ9EkIvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L3N1YnNjcmlwdGlvbnNaNxI1L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3N1YnNjcmlwdGlvbnMS9AIKEkNoYW5nZVN1YnNjcmlwdGlvbhI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hhbmdlU3Vic2NyaXB0aW9uUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hhbmdlU3Vic2NyaXB0aW9uUmVzcG9uc2Ui8AGSQUsKDFN1YnNjcmlwdGlvbhIYQ2hhbmdlIHN1YnNjcmlwdGlvbiBwbGFuGiFDaGFuZ2UgYSBzdWJzY3JpcHRpb24gcGxhbiBieSBJRC6C0+STApsBIk4vdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L3N1YnNjcmlwdGlvbnMve2lkfS9jaGFuZ2U6ASpaRiJBL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3N1YnNjcmlwdGlvbnMve2lkfS9jaGFuZ2U6ASoS3AIKElVwZGF0ZVN1YnNjcmlwdGlvbhI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlU3Vic2NyaXB0aW9uUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlU3Vic2NyaXB0aW9uUmVzcG9uc2Ui2AGSQUEKDFN1YnNjcmlwdGlvbhITVXBkYXRlIHN1YnNjcmlwdGlvbhocVXBkYXRlIGEgc3Vic2NyaXB0aW9uIGJ5IElELoLT5JMCjQEaRy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vc3Vic2NyaXB0aW9ucy97aWR9OgEqWj8iOi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy9zdWJzY3JpcHRpb25zL3tpZH06ASoS2AEKDUNyZWF0ZVByb2R1Y3QSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2R1Y3RSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9kdWN0UmVzcG9uc2UiZJJBPQoHUHJvZHVjdBIOQ3JlYXRlIHByb2R1Y3QaIkNyZWF0ZSBhIG5ldyBwcm9kdWN0IGZvciBwbGF0Zm9ybS6C0+STAh4iGS92MWJldGExL2JpbGxpbmcvcHJvZHVjdHM6ASoSwAEKCkdldFByb2R1Y3QSLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFByb2R1Y3RSZXF1ZXN0Gi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQcm9kdWN0UmVzcG9uc2UiVZJBLAoHUHJvZHVjdBILR2V0IHByb2R1Y3QaFEdldCBhIHByb2R1Y3QgYnkgSUQugtPkkwIgEh4vdjFiZXRhMS9iaWxsaW5nL3Byb2R1Y3RzL3tpZH0SzwEKDExpc3RQcm9kdWN0cxIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2R1Y3RzUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2R1Y3RzUmVzcG9uc2UiXpJBOgoHUHJvZHVjdBINTGlzdCBwcm9kdWN0cxogTGlzdCBhbGwgcHJvZHVjdHMgb2YgYSBwbGF0Zm9ybS6C0+STAhsSGS92MWJldGExL2JpbGxpbmcvcHJvZHVjdHMS0gEKDVVwZGF0ZVByb2R1Y3QSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVByb2R1Y3RSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9kdWN0UmVzcG9uc2UiXpJBMgoHUHJvZHVjdBIOVXBkYXRlIHByb2R1Y3QaF1VwZGF0ZSBhIHByb2R1Y3QgYnkgSUQugtPkkwIjGh4vdjFiZXRhMS9iaWxsaW5nL3Byb2R1Y3RzL3tpZH06ASoS2AEKDUNyZWF0ZUZlYXR1cmUSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUZlYXR1cmVSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVGZWF0dXJlUmVzcG9uc2UiZJJBPQoHRmVhdHVyZRIOQ3JlYXRlIGZlYXR1cmUaIkNyZWF0ZSBhIG5ldyBmZWF0dXJlIGZvciBwbGF0Zm9ybS6C0+STAh4iGS92MWJldGExL2JpbGxpbmcvZmVhdHVyZXM6ASoSwAEKCkdldEZlYXR1cmUSLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEZlYXR1cmVSZXF1ZXN0Gi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRGZWF0dXJlUmVzcG9uc2UiVZJBLAoHRmVhdHVyZRILR2V0IGZlYXR1cmUaFEdldCBhIGZlYXR1cmUgYnkgSUQugtPkkwIgEh4vdjFiZXRhMS9iaWxsaW5nL2ZlYXR1cmVzL3tpZH0S0gEKDVVwZGF0ZUZlYXR1cmUSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZUZlYXR1cmVSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVGZWF0dXJlUmVzcG9uc2UiXpJBMgoHRmVhdHVyZRIOVXBkYXRlIGZlYXR1cmUaF1VwZGF0ZSBhIGZlYXR1cmUgYnkgSUQugtPkkwIjGh4vdjFiZXRhMS9iaWxsaW5nL2ZlYXR1cmVzL3tpZH06ASoSwAEKDExpc3RGZWF0dXJlcxIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEZlYXR1cmVzUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEZlYXR1cmVzUmVzcG9uc2UiT5JBKwoHRmVhdHVyZRINTGlzdCBmZWF0dXJlcxoRTGlzdCBhbGwgZmVhdHVyZXOC0+STAhsSGS92MWJldGExL2JpbGxpbmcvZmVhdHVyZXMSwwEKCkNyZWF0ZVBsYW4SLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVBsYW5SZXF1ZXN0Gi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQbGFuUmVzcG9uc2UiWJJBNAoEUGxhbhILQ3JlYXRlIHBsYW4aH0NyZWF0ZSBhIG5ldyBwbGFuIGZvciBwbGF0Zm9ybS6C0+STAhsiFi92MWJldGExL2JpbGxpbmcvcGxhbnM6ASoSrAEKCUxpc3RQbGFucxIrLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBsYW5zUmVxdWVzdBosLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBsYW5zUmVzcG9uc2UiRJJBIwoEUGxhbhIKTGlzdCBwbGFucxoPTGlzdCBhbGwgcGxhbnMugtPkkwIYEhYvdjFiZXRhMS9iaWxsaW5nL3BsYW5zEqsBCgdHZXRQbGFuEikucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQbGFuUmVxdWVzdBoqLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UGxhblJlc3BvbnNlIkmSQSMKBFBsYW4SCEdldCBwbGFuGhFHZXQgYSBwbGFuIGJ5IElELoLT5JMCHRIbL3YxYmV0YTEvYmlsbGluZy9wbGFucy97aWR9Er0BCgpVcGRhdGVQbGFuEiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQbGFuUmVxdWVzdBotLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlUGxhblJlc3BvbnNlIlKSQSkKBFBsYW4SC1VwZGF0ZSBwbGFuGhRVcGRhdGUgYSBwbGFuIGJ5IElELoLT5JMCIBobL3YxYmV0YTEvYmlsbGluZy9wbGFucy97aWR9OgEqEoUDCg5DcmVhdGVDaGVja291dBIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlQ2hlY2tvdXRSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVDaGVja291dFJlc3BvbnNlIo0CkkGIAQoIQ2hlY2tvdXQSIkNoZWNrb3V0IGEgcHJvZHVjdCBvciBzdWJzY3JpcHRpb24aWENoZWNrb3V0IGEgcHJvZHVjdCB0byBidXkgaXQgb25lIHRpbWUgb3Igc3RhcnQgYSBzdWJzY3JpcHRpb24gcGxhbiBvbiBhIGJpbGxpbmcgYWNjb3VudC6C0+STAnsiPi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vY2hlY2tvdXRzOgEqWjYiMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy9jaGVja291dHM6ASoStwIKDUxpc3RDaGVja291dHMSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDaGVja291dHNSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q2hlY2tvdXRzUmVzcG9uc2UiwgGSQUQKCENoZWNrb3V0Eg5MaXN0IGNoZWNrb3V0cxooTGlzdCBhbGwgY2hlY2tvdXRzIG9mIGEgYmlsbGluZyBhY2NvdW50LoLT5JMCdRI+L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tiaWxsaW5nX2lkfS9jaGVja291dHNaMxIxL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL2NoZWNrb3V0cxKmAgoLR2V0Q2hlY2tvdXQSLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldENoZWNrb3V0UmVxdWVzdBouLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0Q2hlY2tvdXRSZXNwb25zZSK3AZJBLwoIQ2hlY2tvdXQSDEdldCBjaGVja291dBoVR2V0IGEgY2hlY2tvdXQgYnkgSUQugtPkkwJ/EkMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L2NoZWNrb3V0cy97aWR9WjgSNi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy9jaGVja291dHMve2lkfRLcAgoXQ2hlY2tGZWF0dXJlRW50aXRsZW1lbnQSOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNoZWNrRmVhdHVyZUVudGl0bGVtZW50UmVxdWVzdBo6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tGZWF0dXJlRW50aXRsZW1lbnRSZXNwb25zZSLJAZJBVgoLRW50aXRsZW1lbnQSEUNoZWNrIGVudGl0bGVtZW50GjRDaGVjayBpZiBhIGJpbGxpbmcgYWNjb3VudCBpcyBlbnRpdGxlZCB0byBhIGZlYXR1cmUugtPkkwJqIjovdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L2NoZWNrOgEqWikiJC92MWJldGExL29yZ2FuaXphdGlvbnMvYmlsbGluZy9jaGVjazoBKhKfAgoWQ2hlY2tDcmVkaXRFbnRpdGxlbWVudBI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tDcmVkaXRFbnRpdGxlbWVudFJlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNoZWNrQ3JlZGl0RW50aXRsZW1lbnRSZXNwb25zZSKPAZJBawoLRW50aXRsZW1lbnQSGENoZWNrIGNyZWRpdCBlbnRpdGxlbWVudBpCQ2hlY2sgaWYgYSBiaWxsaW5nIGFjY291bnQgaGFzIGVub3VnaCBjcmVkaXRzIHRvIGNvdmVyIHRoZSBhbW91bnQugtPkkwIbIhYvdjFiZXRhMS9iaWxsaW5nL2NoZWNrOgEqEskCChJDcmVhdGVCaWxsaW5nVXNhZ2USNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUJpbGxpbmdVc2FnZVJlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUJpbGxpbmdVc2FnZVJlc3BvbnNlIsUBkkFQCgVVc2FnZRIUQ3JlYXRlIGJpbGxpbmcgdXNhZ2UaMVJlcG9ydCBhIG5ldyBiaWxsaW5nIHVzYWdlIGZvciBhIGJpbGxpbmcgYWNjb3VudC6C0+STAmwiOy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vdXNhZ2VzOgEqWioiJS92MWJldGExL29yZ2FuaXphdGlvbnMvYmlsbGluZy91c2FnZXM6ASoS7AIKF0xpc3RCaWxsaW5nVHJhbnNhY3Rpb25zEjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0QmlsbGluZ1RyYW5zYWN0aW9uc1JlcXVlc3QaOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RCaWxsaW5nVHJhbnNhY3Rpb25zUmVzcG9uc2Ui2QGSQVUKC1RyYW5zYWN0aW9uEhlMaXN0IGJpbGxpbmcgdHJhbnNhY3Rpb25zGitMaXN0IGFsbCB0cmFuc2FjdGlvbnMgb2YgYSBiaWxsaW5nIGFjY291bnQugtPkkwJ7EkEvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L3RyYW5zYWN0aW9uc1o2EjQvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcvdHJhbnNhY3Rpb25zEu8CChhUb3RhbERlYml0ZWRUcmFuc2FjdGlvbnMSOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlRvdGFsRGViaXRlZFRyYW5zYWN0aW9uc1JlcXVlc3QaOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlRvdGFsRGViaXRlZFRyYW5zYWN0aW9uc1Jlc3BvbnNlItkBkkF/CgtUcmFuc2FjdGlvbhI3U3VtIG9mIGFtb3VudCBvZiBkZWJpdGVkIHRyYW5zYWN0aW9ucyBpbmNsdWRpbmcgcmVmdW5kcxo3U3VtIG9mIGFtb3VudCBvZiBkZWJpdGVkIHRyYW5zYWN0aW9ucyBpbmNsdWRpbmcgcmVmdW5kc4LT5JMCURJPL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tiaWxsaW5nX2lkfS9kZWJpdGVkX3RyYW5zYWN0aW9uc190b3RhbBKvAgoMTGlzdEludm9pY2VzEi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0SW52b2ljZXNSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0SW52b2ljZXNSZXNwb25zZSK9AZJBQQoHSW52b2ljZRINTGlzdCBpbnZvaWNlcxonTGlzdCBhbGwgaW52b2ljZXMgb2YgYSBiaWxsaW5nIGFjY291bnQugtPkkwJzEj0vdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L2ludm9pY2VzWjISMC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy9pbnZvaWNlcxLiAgoSR2V0VXBjb21pbmdJbnZvaWNlEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRVcGNvbWluZ0ludm9pY2VSZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRVcGNvbWluZ0ludm9pY2VSZXNwb25zZSLeAZJBTwoHSW52b2ljZRIUR2V0IHVwY29taW5nIGludm9pY2UaLkdldCB0aGUgdXBjb21pbmcgaW52b2ljZSBvZiBhIGJpbGxpbmcgYWNjb3VudC6C0+STAoUBEkYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L2ludm9pY2VzL3VwY29taW5nWjsSOS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy9pbnZvaWNlcy91cGNvbWluZxKcAgoWQmlsbGluZ1dlYmhvb2tDYWxsYmFjaxI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ1dlYmhvb2tDYWxsYmFja1JlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdXZWJob29rQ2FsbGJhY2tSZXNwb25zZSKMAZJBTgoHV2ViaG9vaxIWQWNjZXB0IEJpbGxpbmcgd2ViaG9vaxorQWNjZXB0cyBhIEJpbGxpbmcgd2ViaG9vayBhbmQgcHJvY2Vzc2VzIGl0LoLT5JMCNSItL3YxYmV0YTEvYmlsbGluZy93ZWJob29rcy9jYWxsYmFjay97cHJvdmlkZXJ9OgRib2R5EpECChRDcmVhdGVQcm9zcGVjdFB1YmxpYxI2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUHJvc3BlY3RQdWJsaWNSZXF1ZXN0GjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9zcGVjdFB1YmxpY1Jlc3BvbnNlIocBkkFnCghQcm9zcGVjdBIPQ3JlYXRlIHByb3NwZWN0GkpDcmVhdGUgcHJvc3BlY3QgZm9yIGdpdmVuIGVtYWlsIGFuZCBhY3Rpdml0eS4gQXZhaWxhYmxlIGZvciBwdWJsaWMgYWNjZXNzLoLT5JMCFyISL3YxYmV0YTEvcHJvc3BlY3RzOgEqQvINCiNpby5yYXlzdGFjay5wcm90b24uZnJvbnRpZXIudjFiZXRhMUIIRnJvbnRpZXJaO2dpdGh1Yi5jb20vcmF5c3RhY2svcHJvdG9uL2Zyb250aWVyL3YxYmV0YTE7ZnJvbnRpZXJ2MWJldGExkkGCDRIeChVGcm9udGllciBHZW5lcmFsIEFQSXMyBTAuMi4wGg4xMjcuMC4wLjE6NzQwMCoBATIQYXBwbGljYXRpb24vanNvbjoQYXBwbGljYXRpb24vanNvblI8CgMyMDASNQobT0sgLSBBIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzUmkKAzQwMBJiCkhCYWQgUmVxdWVzdCAtIFRoZSByZXF1ZXN0IHdhcyBtYWxmb3JtZWQgb3IgY29udGFpbmVkIGludmFsaWQgcGFyYW1ldGVycy4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXNSSgoDNDAxEkMKKVVuYXV0aG9yaXplZCAtIEF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzUmEKAzQwMxJaCkBGb3JiaWRkZW4gLSBVc2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzUlEKAzQwNBJKCjBOb3QgRm91bmQgLSBUaGUgcmVxdWVzdGVkIHJlc291cmNlIHdhcyBub3QgZm91bmQSFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXNSdQoDNTAwEm4KVEludGVybmFsIFNlcnZlciBFcnJvci4gUmV0dXJuZWQgd2hlbiB0aGVyZXMgaXMgc29tZXRoaW5nIHdyb25nIHdpdGggRnJvbnRpZXIgc2VydmVyLhIWChQaEi5nb29nbGUucnBjLlN0YXR1c1q2AQpECgVCYXNpYxI7CAESH0NsaWVudCBJRC9TZWNyZXQgYXV0aGVudGljYXRpb24aFEJhc2ljIEF1dGhlbnRpY2F0aW9uIAIKbgoGQmVhcmVyEmQIAhJPVGhlIEF1dGhvcml6YXRpb24gaGVhZGVyIG11c3QgYmUgc2V0IHRvIEJlYXJlciBmb2xsb3dlZCBieSBhIHNwYWNlIGFuZCBhIHRva2VuLhoNQXV0aG9yaXphdGlvbiACYhMKBwoFQmFzaWMKCAoGQmVhcmVyagYKBFVzZXJqggMKBUdyb3VwEvgCR3JvdXBzIGluIEZyb250aWVyIGFyZSB1c2VkIHRvIG1hbmFnZSB1c2VycyBhbmQgdGhlaXIgYWNjZXNzIHRvIHJlc291cmNlcy4gRWFjaCBncm91cCBoYXMgYSB1bmlxdWUgbmFtZSBhbmQgaWQgdGhhdCBjYW4gYmUgdXNlZCB0byBncmFudCBhY2Nlc3MgdG8gcmVzb3VyY2VzLiBXaGVuIGEgdXNlciBpcyBhZGRlZCB0byBhIGdyb3VwLCB0aGV5IGluaGVyaXQgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyB0aGF0IGhhdmUgYmVlbiBncmFudGVkIHRvIHRoZSBncm91cC4gVGhpcyBhbGxvd3MgeW91IHRvIG1hbmFnZSBhY2Nlc3MgdG8gcmVzb3VyY2VzIGF0IHNjYWxlLCB3aXRob3V0IGhhdmluZyB0byBncmFudCBwZXJtaXNzaW9ucyB0byBpbmRpdmlkdWFsIHVzZXJzLmoGCgRSb2xlag4KDE9yZ2FuaXphdGlvbmoJCgdQcm9qZWN0aggKBlBvbGljeWoKCghSZWxhdGlvbmoMCgpQZXJtaXNzaW9uagsKCU5hbWVzcGFjZWoKCghSZXNvdXJjZWobCgVBdXRoehISQXV0aG9yaXphdGlvbiBBUElzahwKBUF1dGhuEhNBdXRoZW50aWNhdGlvbiBBUElzapACCgpNZXRhU2NoZW1hEoECTWFuYWdlIE1ldGFkYXRhIFNjaGVtYXMgd2hpY2ggYXJlIHVzZWQgdG8gdmFsaWRhdGUgbWV0YWRhdGEgb2JqZWN0IHdoaWxlIGNyZWF0aW5nIHVzZXIvb3JnL2dyb3VwL3JvbGUuIEZyb250aWVyIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGRlZmF1bHQgbWV0YXNjaGVtYXMgd2l0aCBgbGFiZWxgIGFuZCBgZGVzY3JpcHRpb25gIGZpZWxkcy4gWW91IGNhbiBhbHNvIHVwZGF0ZSB0aGVzZSBtZXRhc2NoZW1hcyB0byBhZGQvZWRpdCBtb3JlIGZpZWxkcy5iBnByb3RvMw", [file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_struct, file_google_protobuf_timestamp, file_protoc_gen_openapiv2_options_annotations, file_raystack_frontier_v1beta1_models, file_validate_validate]);
21
+ fileDesc("CihyYXlzdGFjay9mcm9udGllci92MWJldGExL2Zyb250aWVyLnByb3RvEhlyYXlzdGFjay5mcm9udGllci52MWJldGExIokCChlCaWxsaW5nQWNjb3VudFJlcXVlc3RCb2R5EgwKBG5hbWUYASABKAkSDQoFZW1haWwYAiABKAkSDQoFcGhvbmUYAyABKAkSQgoHYWRkcmVzcxgEIAEoCzIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ0FjY291bnQuQWRkcmVzcxIQCghjdXJyZW5jeRgFIAEoCRI/Cgh0YXhfZGF0YRgGIAMoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ0FjY291bnQuVGF4EikKCG1ldGFkYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKVAQobQ3JlYXRlQmlsbGluZ0FjY291bnRSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQARJMCgRib2R5GAIgASgLMjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudFJlcXVlc3RCb2R5Qgj6QgWKAQIQARIPCgdvZmZsaW5lGAMgASgIImIKHENyZWF0ZUJpbGxpbmdBY2NvdW50UmVzcG9uc2USQgoPYmlsbGluZ19hY2NvdW50GAEgASgLMikucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudCKUAQoYR2V0QmlsbGluZ0FjY291bnRSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQARIcChR3aXRoX3BheW1lbnRfbWV0aG9kcxgDIAEoCBIcChR3aXRoX2JpbGxpbmdfZGV0YWlscxgEIAEoCBIOCgZleHBhbmQYZSADKAki7QEKGUdldEJpbGxpbmdBY2NvdW50UmVzcG9uc2USQgoPYmlsbGluZ19hY2NvdW50GAEgASgLMikucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudBJBCg9wYXltZW50X21ldGhvZHMYAiADKAsyKC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBheW1lbnRNZXRob2QSSQoPYmlsbGluZ19kZXRhaWxzGAMgASgLMjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudERldGFpbHMikAEKG1VwZGF0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBIUCgJpZBgBIAEoCUII+kIFcgOwAQESFwoGb3JnX2lkGAIgASgJQgf6QgRyAhABEkIKBGJvZHkYAyABKAsyNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50UmVxdWVzdEJvZHkiYgocVXBkYXRlQmlsbGluZ0FjY291bnRSZXNwb25zZRJCCg9iaWxsaW5nX2FjY291bnQYASABKAsyKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50Ik4KHVJlZ2lzdGVyQmlsbGluZ0FjY291bnRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiIAoeUmVnaXN0ZXJCaWxsaW5nQWNjb3VudFJlc3BvbnNlIkUKGkxpc3RCaWxsaW5nQWNjb3VudHNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQARIOCgZleHBhbmQYZSADKAkiYgobTGlzdEJpbGxpbmdBY2NvdW50c1Jlc3BvbnNlEkMKEGJpbGxpbmdfYWNjb3VudHMYASADKAsyKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50IkwKG0RlbGV0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBIUCgJpZBgBIAEoCUII+kIFcgOwAQESFwoGb3JnX2lkGAIgASgJQgf6QgRyAhABIh4KHERlbGV0ZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UiTAobRW5hYmxlQmlsbGluZ0FjY291bnRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiHgocRW5hYmxlQmlsbGluZ0FjY291bnRSZXNwb25zZSJNChxEaXNhYmxlQmlsbGluZ0FjY291bnRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiHwodRGlzYWJsZUJpbGxpbmdBY2NvdW50UmVzcG9uc2UiSQoYR2V0QmlsbGluZ0JhbGFuY2VSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAEiXwoZR2V0QmlsbGluZ0JhbGFuY2VSZXNwb25zZRJCCgdiYWxhbmNlGAEgASgLMjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nQWNjb3VudC5CYWxhbmNlIlwKEUhhc1RyaWFsZWRSZXF1ZXN0EhQKAmlkGAEgASgJQgj6QgVyA7ABARIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAESGAoHcGxhbl9pZBgDIAEoCUIH+kIEcgIQASIlChJIYXNUcmlhbGVkUmVzcG9uc2USDwoHdHJpYWxlZBgBIAEoCCKYAQoZQ3JlYXRlQmlsbGluZ1VzYWdlUmVxdWVzdBIOCgZvcmdfaWQYASABKAkSIQoKYmlsbGluZ19pZBgCIAEoCUINGAH6QghyBrABAdABARIWCgpwcm9qZWN0X2lkGAQgASgJQgIYARIwCgZ1c2FnZXMYAyADKAsyIC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzYWdlIhwKGkNyZWF0ZUJpbGxpbmdVc2FnZVJlc3BvbnNlIvsBCh5MaXN0QmlsbGluZ1RyYW5zYWN0aW9uc1JlcXVlc3QSFwoGb3JnX2lkGAEgASgJQgf6QgRyAhADEiEKCmJpbGxpbmdfaWQYAiABKAlCDRgB+kIIcgawAQHQAQESLQoFc2luY2UYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgIYARIvCgtzdGFydF9yYW5nZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJZW5kX3JhbmdlGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZleHBhbmQYZSADKAkiZgofTGlzdEJpbGxpbmdUcmFuc2FjdGlvbnNSZXNwb25zZRJDCgx0cmFuc2FjdGlvbnMYASADKAsyLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdUcmFuc2FjdGlvbiJdCh9Ub3RhbERlYml0ZWRUcmFuc2FjdGlvbnNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBImYKIFRvdGFsRGViaXRlZFRyYW5zYWN0aW9uc1Jlc3BvbnNlEkIKB2RlYml0ZWQYASABKAsyMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJpbGxpbmdBY2NvdW50LkJhbGFuY2UifgoWR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBIcCgZvcmdfaWQYASABKAlCDBgB+kIHcgUQA9ABARIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBEhMKAmlkGAMgASgJQgf6QgRyAhABEg4KBmV4cGFuZBhlIAMoCSJYChdHZXRTdWJzY3JpcHRpb25SZXNwb25zZRI9CgxzdWJzY3JpcHRpb24YASABKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlN1YnNjcmlwdGlvbiKDAQoYTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBEg0KBXN0YXRlGAMgASgJEgwKBHBsYW4YBCABKAkSDgoGZXhwYW5kGGUgAygJIlsKGUxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2USPgoNc3Vic2NyaXB0aW9ucxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU3Vic2NyaXB0aW9uIpwBChlVcGRhdGVTdWJzY3JpcHRpb25SZXF1ZXN0EhwKBm9yZ19pZBgBIAEoCUIMGAH6QgdyBRAD0AEBEiEKCmJpbGxpbmdfaWQYAiABKAlCDRgB+kIIcgawAQHQAQESEwoCaWQYAyABKAlCB/pCBHICEAESKQoIbWV0YWRhdGEYFCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlsKGlVwZGF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlEj0KDHN1YnNjcmlwdGlvbhgBIAEoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU3Vic2NyaXB0aW9uIrUDChlDaGFuZ2VTdWJzY3JpcHRpb25SZXF1ZXN0EhwKBm9yZ19pZBgBIAEoCUIMGAH6QgdyBRAD0AEBEiEKCmJpbGxpbmdfaWQYAiABKAlCDRgB+kIIcgawAQHQAQESEwoCaWQYAyABKAlCB/pCBHICEAESEAoEcGxhbhgEIAEoCUICGAESFQoJaW1tZWRpYXRlGAUgASgIQgIYARJWCgtwbGFuX2NoYW5nZRgGIAEoCzI/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hhbmdlU3Vic2NyaXB0aW9uUmVxdWVzdC5QbGFuQ2hhbmdlSAASWAoMcGhhc2VfY2hhbmdlGAcgASgLMkAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGFuZ2VTdWJzY3JpcHRpb25SZXF1ZXN0LlBoYXNlQ2hhbmdlSAAaLQoKUGxhbkNoYW5nZRIMCgRwbGFuGAEgASgJEhEKCWltbWVkaWF0ZRgCIAEoCBouCgtQaGFzZUNoYW5nZRIfChdjYW5jZWxfdXBjb21pbmdfY2hhbmdlcxgBIAEoCEIICgZjaGFuZ2UiWgoaQ2hhbmdlU3Vic2NyaXB0aW9uUmVzcG9uc2USPAoFcGhhc2UYASABKAsyLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlN1YnNjcmlwdGlvbi5QaGFzZSKEAQoZQ2FuY2VsU3Vic2NyaXB0aW9uUmVxdWVzdBIcCgZvcmdfaWQYASABKAlCDBgB+kIHcgUQA9ABARIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBEhMKAmlkGAMgASgJQgf6QgRyAhABEhEKCWltbWVkaWF0ZRgEIAEoCCIcChpDYW5jZWxTdWJzY3JpcHRpb25SZXNwb25zZSISChBMaXN0UGxhbnNSZXF1ZXN0IkMKEUxpc3RQbGFuc1Jlc3BvbnNlEi4KBXBsYW5zGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QbGFuIoUBCh5DaGVja0ZlYXR1cmVFbnRpdGxlbWVudFJlcXVlc3QSDgoGb3JnX2lkGAEgASgJEiEKCmJpbGxpbmdfaWQYAiABKAlCDRgB+kIIcgawAQHQAQESFgoKcHJvamVjdF9pZBgEIAEoCUICGAESGAoHZmVhdHVyZRgDIAEoCUIH+kIEcgIQASIxCh9DaGVja0ZlYXR1cmVFbnRpdGxlbWVudFJlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCCJRCh1DaGVja0NyZWRpdEVudGl0bGVtZW50UmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSFwoGYW1vdW50GAIgASgDQgf6QgQiAiAAIjAKHkNoZWNrQ3JlZGl0RW50aXRsZW1lbnRSZXNwb25zZRIOCgZzdGF0dXMYASABKAgi1AIKFUNyZWF0ZUNoZWNrb3V0UmVxdWVzdBIXCgZvcmdfaWQYASABKAlCB/pCBHICEAMSIQoKYmlsbGluZ19pZBgCIAEoCUINGAH6QghyBrABAdABARITCgtzdWNjZXNzX3VybBgDIAEoCRISCgpjYW5jZWxfdXJsGAQgASgJEk4KEXN1YnNjcmlwdGlvbl9ib2R5GAogASgLMjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja291dFN1YnNjcmlwdGlvbkJvZHkSRAoMcHJvZHVjdF9ib2R5GAsgASgLMi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja291dFByb2R1Y3RCb2R5EkAKCnNldHVwX2JvZHkYDCABKAsyLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNoZWNrb3V0U2V0dXBCb2R5Il4KFkNyZWF0ZUNoZWNrb3V0UmVzcG9uc2USRAoQY2hlY2tvdXRfc2Vzc2lvbhgBIAEoCzIqLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tvdXRTZXNzaW9uIlIKFExpc3RDaGVja291dHNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBIl4KFUxpc3RDaGVja291dHNSZXNwb25zZRJFChFjaGVja291dF9zZXNzaW9ucxgBIAMoCzIqLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tvdXRTZXNzaW9uImoKEkdldENoZWNrb3V0UmVxdWVzdBIcCgZvcmdfaWQYASABKAlCDBgB+kIHcgUQA9ABARIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBEhMKAmlkGAMgASgJQgf6QgRyAhABIlsKE0dldENoZWNrb3V0UmVzcG9uc2USRAoQY2hlY2tvdXRfc2Vzc2lvbhgBIAEoCzIqLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tvdXRTZXNzaW9uIvsCChJQcm9kdWN0UmVxdWVzdEJvZHkSFQoEbmFtZRgBIAEoCUIH+kIEcgIQAxINCgV0aXRsZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIPCgdwbGFuX2lkGAQgASgJEjAKBnByaWNlcxgFIAMoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJpY2USNAoIYmVoYXZpb3IYCCABKAlCIvpCH3IdUgViYXNpY1IHY3JlZGl0c1IIcGVyX3NlYXTQAQESNAoIZmVhdHVyZXMYCSADKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkZlYXR1cmUSSgoPYmVoYXZpb3JfY29uZmlnGAogASgLMjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9kdWN0LkJlaGF2aW9yQ29uZmlnEikKCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEoECAcQCCJdChRDcmVhdGVQcm9kdWN0UmVxdWVzdBJFCgRib2R5GAEgASgLMi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9kdWN0UmVxdWVzdEJvZHlCCPpCBYoBAhABIkwKFUNyZWF0ZVByb2R1Y3RSZXNwb25zZRIzCgdwcm9kdWN0GAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9kdWN0IigKEUdldFByb2R1Y3RSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABIkkKEkdldFByb2R1Y3RSZXNwb25zZRIzCgdwcm9kdWN0GAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9kdWN0IhUKE0xpc3RQcm9kdWN0c1JlcXVlc3QiTAoUTGlzdFByb2R1Y3RzUmVzcG9uc2USNAoIcHJvZHVjdHMYASADKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2R1Y3QiaAoUVXBkYXRlUHJvZHVjdFJlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAESOwoEYm9keRgCIAEoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdFJlcXVlc3RCb2R5IkwKFVVwZGF0ZVByb2R1Y3RSZXNwb25zZRIzCgdwcm9kdWN0GAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9kdWN0InoKEkZlYXR1cmVSZXF1ZXN0Qm9keRIVCgRuYW1lGAEgASgJQgf6QgRyAhADEg0KBXRpdGxlGAIgASgJEhMKC3Byb2R1Y3RfaWRzGAMgAygJEikKCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJdChRDcmVhdGVGZWF0dXJlUmVxdWVzdBJFCgRib2R5GAEgASgLMi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5GZWF0dXJlUmVxdWVzdEJvZHlCCPpCBYoBAhABIkwKFUNyZWF0ZUZlYXR1cmVSZXNwb25zZRIzCgdmZWF0dXJlGAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5GZWF0dXJlIigKEUdldEZlYXR1cmVSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABIkkKEkdldEZlYXR1cmVSZXNwb25zZRIzCgdmZWF0dXJlGAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5GZWF0dXJlImgKFFVwZGF0ZUZlYXR1cmVSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABEjsKBGJvZHkYAiABKAsyLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkZlYXR1cmVSZXF1ZXN0Qm9keSJMChVVcGRhdGVGZWF0dXJlUmVzcG9uc2USMwoHZmVhdHVyZRgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRmVhdHVyZSIVChNMaXN0RmVhdHVyZXNSZXF1ZXN0IkwKFExpc3RGZWF0dXJlc1Jlc3BvbnNlEjQKCGZlYXR1cmVzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5GZWF0dXJlIoMCCg9QbGFuUmVxdWVzdEJvZHkSDAoEbmFtZRgBIAEoCRINCgV0aXRsZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRI0Cghwcm9kdWN0cxgEIAMoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvZHVjdBIvCghpbnRlcnZhbBgFIAEoCUId+kIachhSA2RheVIEd2Vla1IFbW9udGhSBHllYXISGAoQb25fc3RhcnRfY3JlZGl0cxgGIAEoAxISCgp0cmlhbF9kYXlzGAcgASgDEikKCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJXChFDcmVhdGVQbGFuUmVxdWVzdBJCCgRib2R5GAEgASgLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QbGFuUmVxdWVzdEJvZHlCCPpCBYoBAhABIkMKEkNyZWF0ZVBsYW5SZXNwb25zZRItCgRwbGFuGAEgASgLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QbGFuIiUKDkdldFBsYW5SZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABIkAKD0dldFBsYW5SZXNwb25zZRItCgRwbGFuGAEgASgLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QbGFuImIKEVVwZGF0ZVBsYW5SZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhABEjgKBGJvZHkYAiABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBsYW5SZXF1ZXN0Qm9keSJDChJVcGRhdGVQbGFuUmVzcG9uc2USLQoEcGxhbhgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGxhbiJ+ChNMaXN0SW52b2ljZXNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxIhCgpiaWxsaW5nX2lkGAIgASgJQg0YAfpCCHIGsAEB0AEBEhsKE25vbnplcm9fYW1vdW50X29ubHkYAyABKAgSDgoGZXhwYW5kGGUgAygJIkwKFExpc3RJbnZvaWNlc1Jlc3BvbnNlEjQKCGludm9pY2VzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5JbnZvaWNlIlcKGUdldFVwY29taW5nSW52b2ljZVJlcXVlc3QSFwoGb3JnX2lkGAEgASgJQgf6QgRyAhADEiEKCmJpbGxpbmdfaWQYAiABKAlCDRgB+kIIcgawAQHQAQEiUQoaR2V0VXBjb21pbmdJbnZvaWNlUmVzcG9uc2USMwoHaW52b2ljZRgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSW52b2ljZSIQCg5HZXRKV0tzUmVxdWVzdCJGCg9HZXRKV0tzUmVzcG9uc2USMwoEa2V5cxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSlNPTldlYktleSITChFBdXRoTG9nb3V0UmVxdWVzdCIUChJBdXRoTG9nb3V0UmVzcG9uc2UieQoTQXV0aENhbGxiYWNrUmVxdWVzdBIVCg1zdHJhdGVneV9uYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgwKBGNvZGUYAyABKAkSLgoNc3RhdGVfb3B0aW9ucxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiFgoUQXV0aENhbGxiYWNrUmVzcG9uc2Ui3gUKE0F1dGhlbnRpY2F0ZVJlcXVlc3QSZAoNc3RyYXRlZ3lfbmFtZRgBIAEoCUJNkkFKMkhOYW1lIG9mIHRoZSBzdHJhdGVneSB0byB1c2UgZm9yIGF1dGhlbnRpY2F0aW9uLjxici8+ICpFeGFtcGxlOiogYGdvb2dsZWASagoQcmVkaXJlY3Rfb25zdGFydBgCIAEoCEJQkkFNMktJZiBzZXQgdG8gdHJ1ZSwgbG9jYXRpb24gaGVhZGVyIHdpbGwgYmUgc2V0IGZvciByZWRpcmVjdCB0byBzdGFydCBhdXRoIGZsb3cSeAoJcmV0dXJuX3RvGAMgASgJQmWSQWIyYFVSTCB0byByZWRpcmVjdCBhZnRlciBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uLjxici8+ICpFeGFtcGxlOipgImh0dHBzOi8vZnJvbnRpZXIuZXhhbXBsZS5jb20iYBJuCgVlbWFpbBgEIAEoCUJfkkFcMlpFbWFpbCBvZiB0aGUgdXNlciB0byBhdXRoZW50aWNhdGUuIFVzZWQgZm9yIG1hZ2ljIGxpbmtzLjxici8+ICpFeGFtcGxlOipgZXhhbXBsZUBhY21lLm9yZ2ASigIKDGNhbGxiYWNrX3VybBgFIAEoCULzAZJB7wEy7AFIb3N0IHdoaWNoIHNob3VsZCBoYW5kbGUgdGhlIGNhbGwgdG8gZmluaXNoIGF1dGhlbnRpY2F0aW9uIGZsb3csIGZvciBtb3N0IGNhc2VzIGl0IGNvdWxkIGJlIGhvc3Qgb2YgZnJvbnRpZXIgYnV0IGluIGNhc2Ugb2YgcHJveGllcywgdGhpcyB3aWxsIGJlIHByb3h5IHB1YmxpYyBlbmRwb2ludC48YnIvPiAqRXhhbXBsZToqYGh0dHBzOi8vZnJvbnRpZXIuZXhhbXBsZS5jb20vdjFiZXRhMS9hdXRoL2NhbGxiYWNrYCJnChRBdXRoZW50aWNhdGVSZXNwb25zZRIQCghlbmRwb2ludBgBIAEoCRINCgVzdGF0ZRgCIAEoCRIuCg1zdGF0ZV9vcHRpb25zGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJFCgxBdXRoU3RyYXRlZ3kSDAoEbmFtZRgBIAEoCRInCgZwYXJhbXMYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IhsKGUxpc3RBdXRoU3RyYXRlZ2llc1JlcXVlc3QiWQoaTGlzdEF1dGhTdHJhdGVnaWVzUmVzcG9uc2USOwoKc3RyYXRlZ2llcxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aFN0cmF0ZWd5ImMKEEF1dGhUb2tlblJlcXVlc3QSEgoKZ3JhbnRfdHlwZRgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSFQoNY2xpZW50X3NlY3JldBgDIAEoCRIRCglhc3NlcnRpb24YBCABKAkiPQoRQXV0aFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnRva2VuX3R5cGUYAiABKAki8wsKD1VzZXJSZXF1ZXN0Qm9keRLGAgoEbmFtZRgBIAEoCUK3ApJBjAIyiQJUaGUgbmFtZSBvZiB0aGUgdXNlci4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIFRoZSBuYW1lIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlci4gSWYgbm90IHByb3ZpZGVkLCBGcm9udGllciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBhIG5hbWUgZnJvbSB0aGUgdXNlciBlbWFpbC4g+kIkciIyIF4oW2EtekEtWl1bYS16QS1aMC05LV9dezMsNjR9KT8kEpwBCgVlbWFpbBgCIAEoCUKMAZJBfjJ8VGhlIGVtYWlsIG9mIHRoZSB1c2VyLiBUaGUgZW1haWwgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuPGJyLz4qRXhhbXBsZToqYCJqb2huLmRvZUByYXlzdGFjay5vcmciYOJBAQL6QgRyAmABEtgDCghtZXRhZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCrAOSQagDMqUDTWV0YWRhdGEgb2JqZWN0IGZvciB1c2VycyB0aGF0IGNhbiBob2xkIGtleSB2YWx1ZSBwYWlycyBwcmUtZGVmaW5lZCBpbiBVc2VyIE1ldGFzY2hlbWEuIFRoZSBtZXRhZGF0YSBvYmplY3QgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2VyIHN1Y2ggYXMgbGFiZWwsIGRlc2NyaXB0aW9uIGV0Yy4gQnkgZGVmYXVsdCB0aGUgdXNlciBtZXRhc2NoZW1hIGNvbnRhaW5zIGxhYmVscyBhbmQgZGVzY3JpcHRpb25zIGZvciB0aGUgdXNlci4gVXBkYXRlIHRoZSBzYW1lIHRvIGFkZCBtb3JlIGZpZWxkcyB0byB0aGUgdXNlciBtZXRhZGF0YSBvYmplY3QuIDxici8+KkV4YW1wbGU6KmB7ImxhYmVsIjogeyJrZXkxIjogInZhbHVlMSJ9LCAiZGVzY3JpcHRpb24iOiAiVXNlciBEZXNjcmlwdGlvbiJ9YBKpAQoFdGl0bGUYBCABKAlCmQGSQZUBMpIBVGhlIHRpdGxlIGNhbiBjb250YWluIGFueSBVVEYtOCBjaGFyYWN0ZXIsIHVzZWQgdG8gcHJvdmlkZSBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyLiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LiA8YnIvPipFeGFtcGxlOipgIkpvaG4gRG9lImAS8AIKBmF2YXRhchgFIAEoCULfApJBjwIy0wFUaGUgYXZhdGFyIGlzIGJhc2U2NCBlbmNvZGVkIGltYWdlIGRhdGEgb2YgdGhlIHVzZXIuIENhbiBhbHNvIGJlIGxlZnQgZW1wdHkuIFRoZSBpbWFnZSBzaG91bGQgYmUgbGVzcyB0aGFuIDIwMEtCLiBTaG91bGQgZm9sbG93IHRoZSByZWdleCBwYXR0ZXJuIGBeZGF0YTppbWFnZS8ocG5nfGpwZ3xqcGVnfGdpZik7YmFzZTY0LChbYS16QS1aMC05Ky9dKz17MCwyfSkrJGAuSjciZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUEi+kJJckcYkKEPMj5eZGF0YTppbWFnZS8ocG5nfGpwZ3xqcGVnfGdpZik7YmFzZTY0LChbYS16QS1aMC05Ky9dKz17MCwyfSkrJNABASLHAwoQTGlzdFVzZXJzUmVxdWVzdBJlCglwYWdlX3NpemUYASABKAVCUpJBRjJEVGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHJldHVybiBwZXIgcGFnZS4gVGhlIGRlZmF1bHQgaXMgMTAwMC76QgYaBCgBQAESTAoIcGFnZV9udW0YAiABKAVCOpJBLjIsVGhlIHBhZ2UgbnVtYmVyIHRvIHJldHVybi4gVGhlIGRlZmF1bHQgaXMgMS76QgYaBCgBQAESQQoHa2V5d29yZBgDIAEoCUIwkkEtMitUaGUga2V5d29yZCB0byBzZWFyY2ggZm9yIGluIG5hbWUgb3IgZW1haWwuEjwKBm9yZ19pZBgEIAEoCUIskkEpMidUaGUgb3JnYW5pemF0aW9uIElEIHRvIGZpbHRlciB1c2VycyBieS4SMQoIZ3JvdXBfaWQYBSABKAlCH5JBHDIaVGhlIGdyb3VwIGlkIHRvIGZpbHRlciBieS4SSgoFc3RhdGUYBiABKAlCO5JBODI2VGhlIHN0YXRlIHRvIGZpbHRlciBieS4gSXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIlIKEUxpc3RVc2Vyc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFEi4KBXVzZXJzGAIgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyIlcKEUNyZWF0ZVVzZXJSZXF1ZXN0EkIKBGJvZHkYASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXJSZXF1ZXN0Qm9keUII+kIFigECEAEiQwoSQ3JlYXRlVXNlclJlc3BvbnNlEi0KBHVzZXIYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXIiOwoeTGlzdE9yZ2FuaXphdGlvbnNCeVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEg0KBXN0YXRlGAIgASgJIqcBCh9MaXN0T3JnYW5pemF0aW9uc0J5VXNlclJlc3BvbnNlEj4KDW9yZ2FuaXphdGlvbnMYASADKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbhJEChNqb2luYWJsZV92aWFfZG9tYWluGAIgAygLMicucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Pcmdhbml6YXRpb24iNgolTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVxdWVzdBINCgVzdGF0ZRgBIAEoCSKuAQomTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVzcG9uc2USPgoNb3JnYW5pemF0aW9ucxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uEkQKE2pvaW5hYmxlX3ZpYV9kb21haW4YAiADKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbiInChlMaXN0UHJvamVjdHNCeVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIlIKGkxpc3RQcm9qZWN0c0J5VXNlclJlc3BvbnNlEjQKCHByb2plY3RzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0IrMCCiBMaXN0UHJvamVjdHNCeUN1cnJlbnRVc2VyUmVxdWVzdBIOCgZvcmdfaWQYASABKAkSGAoQd2l0aF9wZXJtaXNzaW9ucxgCIAMoCRIVCg1ub25faW5oZXJpdGVkGAMgASgIEhkKEXdpdGhfbWVtYmVyX2NvdW50GAQgASgIEmUKCXBhZ2Vfc2l6ZRgFIAEoBUJSkkFGMkRUaGUgbWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIHBlciBwYWdlLiBUaGUgZGVmYXVsdCBpcyAxMDAwLvpCBhoEKAFAARJMCghwYWdlX251bRgGIAEoBUI6kkEuMixUaGUgcGFnZSBudW1iZXIgdG8gcmV0dXJuLiBUaGUgZGVmYXVsdCBpcyAxLvpCBhoEKAFAASL+AQohTGlzdFByb2plY3RzQnlDdXJyZW50VXNlclJlc3BvbnNlEjQKCHByb2plY3RzGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0El0KDGFjY2Vzc19wYWlycxgCIAMoCzJHLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RzQnlDdXJyZW50VXNlclJlc3BvbnNlLkFjY2Vzc1BhaXISDQoFY291bnQYAyABKAUaNQoKQWNjZXNzUGFpchISCgpwcm9qZWN0X2lkGAEgASgJEhMKC3Blcm1pc3Npb25zGAIgAygJIh8KEUVuYWJsZVVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIhQKEkVuYWJsZVVzZXJSZXNwb25zZSIgChJEaXNhYmxlVXNlclJlcXVlc3QSCgoCaWQYASABKAkiFQoTRGlzYWJsZVVzZXJSZXNwb25zZSIfChFEZWxldGVVc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSIUChJEZWxldGVVc2VyUmVzcG9uc2UiQAoPR2V0VXNlclJlc3BvbnNlEi0KBHVzZXIYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXIiFwoVR2V0Q3VycmVudFVzZXJSZXF1ZXN0IoQBChZHZXRDdXJyZW50VXNlclJlc3BvbnNlEi0KBHVzZXIYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXISOwoLc2VydmljZXVzZXIYAiABKAsyJi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlcnZpY2VVc2VyIkMKElVwZGF0ZVVzZXJSZXNwb25zZRItCgR1c2VyGAEgASgLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyIkoKGVVwZGF0ZUN1cnJlbnRVc2VyUmVzcG9uc2USLQoEdXNlchgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXNlciJZChFVcGRhdGVVc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRI4CgRib2R5GAIgASgLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyUmVxdWVzdEJvZHkiHAoOR2V0VXNlclJlcXVlc3QSCgoCaWQYASABKAkiYwocTGlzdEN1cnJlbnRVc2VyR3JvdXBzUmVxdWVzdBIOCgZvcmdfaWQYASABKAkSGAoQd2l0aF9wZXJtaXNzaW9ucxgCIAMoCRIZChF3aXRoX21lbWJlcl9jb3VudBgDIAEoCCLhAQodTGlzdEN1cnJlbnRVc2VyR3JvdXBzUmVzcG9uc2USMAoGZ3JvdXBzGAEgAygLMiAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cBJZCgxhY2Nlc3NfcGFpcnMYAiADKAsyQy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDdXJyZW50VXNlckdyb3Vwc1Jlc3BvbnNlLkFjY2Vzc1BhaXIaMwoKQWNjZXNzUGFpchIQCghncm91cF9pZBgBIAEoCRITCgtwZXJtaXNzaW9ucxgCIAMoCSLYAQoVTGlzdFVzZXJHcm91cHNSZXF1ZXN0Ej0KAmlkGAEgASgJQjGSQS4yLFRoZSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IGdyb3VwcyBmb3IuEnoKBm9yZ19pZBgDIAEoCUJqkkFnMmVUaGUgb3JnYW5pemF0aW9uIElEIHRvIGZpbHRlciBncm91cHMgYnkuIElmIG5vdCBwcm92aWRlZCwgZ3JvdXBzIGZyb20gYWxsIG9yZ2FuaXphdGlvbnMgYXJlIHJldHVybmVkLkoECAIQAyJKChZMaXN0VXNlckdyb3Vwc1Jlc3BvbnNlEjAKBmdyb3VwcxgBIAMoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXAiVAoYVXBkYXRlQ3VycmVudFVzZXJSZXF1ZXN0EjgKBGJvZHkYASABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVzZXJSZXF1ZXN0Qm9keSJaChpMaXN0VXNlckludml0YXRpb25zUmVxdWVzdBI8CgJpZBgBIAEoCUIwkkEtMitUaGUgdXNlciBlbWFpbCB0byBsaXN0IHRoZSBpbnZpdGF0aW9ucyBmb3IuIlkKG0xpc3RVc2VySW52aXRhdGlvbnNSZXNwb25zZRI6CgtpbnZpdGF0aW9ucxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSW52aXRhdGlvbiIjCiFMaXN0Q3VycmVudFVzZXJJbnZpdGF0aW9uc1JlcXVlc3QilwEKIkxpc3RDdXJyZW50VXNlckludml0YXRpb25zUmVzcG9uc2USOgoLaW52aXRhdGlvbnMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkludml0YXRpb24SNQoEb3JncxgCIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uIrYBChdMaXN0U2VydmljZVVzZXJzUmVxdWVzdBJPCgZvcmdfaWQYASABKAlCP5JBMTIvVGhlIG9yZ2FuaXphdGlvbiBJRCB0byBmaWx0ZXIgc2VydmljZSB1c2VycyBieS7iQQEC+kIEcgIQAxJKCgVzdGF0ZRgCIAEoCUI7kkE4MjZUaGUgc3RhdGUgdG8gZmlsdGVyIGJ5LiBJdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4iWAoYTGlzdFNlcnZpY2VVc2Vyc1Jlc3BvbnNlEjwKDHNlcnZpY2V1c2VycxgBIAMoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIikQEKFlNlcnZpY2VVc2VyUmVxdWVzdEJvZHkSTAoFdGl0bGUYASABKAlCPZJBOjInVXNlciBmcmllbmRseSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHVzZXIuSg8iT3JkZXIgU2VydmljZSISKQoIbWV0YWRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IrYBChhDcmVhdGVTZXJ2aWNlVXNlclJlcXVlc3QSPwoEYm9keRgBIAEoCzIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXJSZXF1ZXN0Qm9keRJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiWAoZQ3JlYXRlU2VydmljZVVzZXJSZXNwb25zZRI7CgtzZXJ2aWNldXNlchgBIAEoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIirgEKFUdldFNlcnZpY2VVc2VyUmVxdWVzdBI6CgJpZBgBIAEoCUIukkErMilUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gZ2V0LhJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiVQoWR2V0U2VydmljZVVzZXJSZXNwb25zZRI7CgtzZXJ2aWNldXNlchgBIAEoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIitAEKGERlbGV0ZVNlcnZpY2VVc2VyUmVxdWVzdBI9CgJpZBgBIAEoCUIxkkEuMixUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gZGVsZXRlLhJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiGwoZRGVsZXRlU2VydmljZVVzZXJSZXNwb25zZSLQAQobQ3JlYXRlU2VydmljZVVzZXJKV0tSZXF1ZXN0EkcKAmlkGAEgASgJQjuSQTgyNlRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBjcmVhdGUgYSBrZXkgZm9yLhINCgV0aXRsZRgCIAEoCRJZCgZvcmdfaWQYAyABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiVQocQ3JlYXRlU2VydmljZVVzZXJKV0tSZXNwb25zZRI1CgNrZXkYASABKAsyKC5yYXlzdGFjay5mcm9udGllci52MWJldGExLktleUNyZWRlbnRpYWwi8gEKGEdldFNlcnZpY2VVc2VySldLUmVxdWVzdBJECgJpZBgBIAEoCUI4kkE1MjNUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gZ2V0IGEga2V5IGZvci4SNQoGa2V5X2lkGAIgASgJQiWSQSIyIFRoZSB1bmlxdWUgSUQgb2YgdGhlIGtleSB0byBnZXQuElkKBm9yZ19pZBgDIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJQChlHZXRTZXJ2aWNlVXNlckpXS1Jlc3BvbnNlEjMKBGtleXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkpTT05XZWJLZXkivQEKGkxpc3RTZXJ2aWNlVXNlckpXS3NSZXF1ZXN0EkQKAmlkGAEgASgJQjiSQTUyM1RoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBsaXN0IGtleXMgZm9yLhJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiVgobTGlzdFNlcnZpY2VVc2VySldLc1Jlc3BvbnNlEjcKBGtleXMYASADKAsyKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlcnZpY2VVc2VySldLIvsBChtEZWxldGVTZXJ2aWNlVXNlckpXS1JlcXVlc3QSRwoCaWQYASABKAlCO5JBODI2VGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VydmljZSB1c2VyIHRvIGRlbGV0ZSBhIGtleSBmb3IuEjgKBmtleV9pZBgCIAEoCUIokkElMiNUaGUgdW5pcXVlIElEIG9mIHRoZSBrZXkgdG8gZGVsZXRlLhJZCgZvcmdfaWQYAyABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiHgocRGVsZXRlU2VydmljZVVzZXJKV0tSZXNwb25zZSLXAQoiQ3JlYXRlU2VydmljZVVzZXJDcmVkZW50aWFsUmVxdWVzdBJHCgJpZBgBIAEoCUI7kkE4MjZUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gY3JlYXRlIGEga2V5IGZvci4SDQoFdGl0bGUYAiABKAkSWQoGb3JnX2lkGAMgASgJQkmSQTsyOVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvLuJBAQL6QgRyAhADImIKI0NyZWF0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlc3BvbnNlEjsKBnNlY3JldBgBIAEoCzIrLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VjcmV0Q3JlZGVudGlhbCLHAQohTGlzdFNlcnZpY2VVc2VyQ3JlZGVudGlhbHNSZXF1ZXN0EkcKAmlkGAEgASgJQjuSQTgyNlRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBsaXN0IHNlY3JldHMgZm9yLhJZCgZvcmdfaWQYAiABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiYgoiTGlzdFNlcnZpY2VVc2VyQ3JlZGVudGlhbHNSZXNwb25zZRI8CgdzZWNyZXRzGAEgAygLMisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZWNyZXRDcmVkZW50aWFsIosCCiJEZWxldGVTZXJ2aWNlVXNlckNyZWRlbnRpYWxSZXF1ZXN0EkoKAmlkGAEgASgJQj6SQTsyOVRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBkZWxldGUgYSBzZWNyZXQgZm9yLhI+CglzZWNyZXRfaWQYAiABKAlCK5JBKDImVGhlIHVuaXF1ZSBJRCBvZiB0aGUgc2VjcmV0IHRvIGRlbGV0ZS4SWQoGb3JnX2lkGAMgASgJQkmSQTsyOVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvLuJBAQL6QgRyAhADIiUKI0RlbGV0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlc3BvbnNlItQBCh1DcmVhdGVTZXJ2aWNlVXNlclRva2VuUmVxdWVzdBJJCgJpZBgBIAEoCUI9kkE6MjhUaGUgdW5pcXVlIElEIG9mIHRoZSBzZXJ2aWNlIHVzZXIgdG8gY3JlYXRlIGEgdG9rZW4gZm9yLhINCgV0aXRsZRgCIAEoCRJZCgZvcmdfaWQYAyABKAlCSZJBOzI5VGhlIG9yZ2FuaXphdGlvbiBJRCB0byB3aGljaCB0aGUgc2VydmljZSB1c2VyIGJlbG9uZ3MgdG8u4kEBAvpCBHICEAMiXAoeQ3JlYXRlU2VydmljZVVzZXJUb2tlblJlc3BvbnNlEjoKBXRva2VuGAEgASgLMisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZXJ2aWNlVXNlclRva2VuIsEBChxMaXN0U2VydmljZVVzZXJUb2tlbnNSZXF1ZXN0EkYKAmlkGAEgASgJQjqSQTcyNVRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBsaXN0IHRva2VucyBmb3IuElkKBm9yZ19pZBgCIAEoCUJJkkE7MjlUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBzZXJ2aWNlIHVzZXIgYmVsb25ncyB0by7iQQEC+kIEcgIQAyJcCh1MaXN0U2VydmljZVVzZXJUb2tlbnNSZXNwb25zZRI7CgZ0b2tlbnMYASADKAsyKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlcnZpY2VVc2VyVG9rZW4igwIKHURlbGV0ZVNlcnZpY2VVc2VyVG9rZW5SZXF1ZXN0EkkKAmlkGAEgASgJQj2SQToyOFRoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBkZWxldGUgYSB0b2tlbiBmb3IuEjwKCHRva2VuX2lkGAIgASgJQiqSQScyJVRoZSB1bmlxdWUgSUQgb2YgdGhlIHRva2VuIHRvIGRlbGV0ZS4SWQoGb3JnX2lkGAMgASgJQkmSQTsyOVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvLuJBAQL6QgRyAhADIiAKHkRlbGV0ZVNlcnZpY2VVc2VyVG9rZW5SZXNwb25zZSLfAQoeTGlzdFNlcnZpY2VVc2VyUHJvamVjdHNSZXF1ZXN0EkgKAmlkGAEgASgJQjySQTkyN1RoZSB1bmlxdWUgSUQgb2YgdGhlIHNlcnZpY2UgdXNlciB0byBsaXN0IHByb2plY3RzIGZvci4SWQoGb3JnX2lkGAIgASgJQkmSQTsyOVRoZSBvcmdhbml6YXRpb24gSUQgdG8gd2hpY2ggdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvLuJBAQL6QgRyAhADEhgKEHdpdGhfcGVybWlzc2lvbnMYAyADKAki6wEKH0xpc3RTZXJ2aWNlVXNlclByb2plY3RzUmVzcG9uc2USNAoIcHJvamVjdHMYASADKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2plY3QSWwoMYWNjZXNzX3BhaXJzGAIgAygLMkUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJQcm9qZWN0c1Jlc3BvbnNlLkFjY2Vzc1BhaXIaNQoKQWNjZXNzUGFpchISCgpwcm9qZWN0X2lkGAEgASgJEhMKC3Blcm1pc3Npb25zGAIgAygJIu0BCh1MaXN0T3JnYW5pemF0aW9uR3JvdXBzUmVxdWVzdBIpCgZvcmdfaWQYAiABKAlCGfpCFnIUEAMyEF5bQS1aYS16MC05Xy1dKyQSVwoFc3RhdGUYAyABKAlCSJJBRTJDVGhlIHN0YXRlIG9mIHRoZSBncm91cCB0byBmaWx0ZXIgYnkuIEl0IGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkLhIRCglncm91cF9pZHMYBCADKAkSFAoMd2l0aF9tZW1iZXJzGAUgASgIEhkKEXdpdGhfbWVtYmVyX2NvdW50GAYgASgISgQIARACIlIKHkxpc3RPcmdhbml6YXRpb25Hcm91cHNSZXNwb25zZRIwCgZncm91cHMYASADKAsyIC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdyb3VwIq8BCh1DcmVhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBJCCgRib2R5GAEgASgLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlUmVxdWVzdEJvZHlCCPpCBYoBAhABEkoKBm9yZ19pZBgCIAEoCUI6kkEzMjFUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSByb2xlIGJlbG9uZ3MgdG8u4kEBAiJPCh5DcmVhdGVPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2USLQoEcm9sZRgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSJBChpHZXRPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAMiTAobR2V0T3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlEi0KBHJvbGUYASABKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGUidQodVXBkYXRlT3JnYW5pemF0aW9uUm9sZVJlcXVlc3QSCgoCaWQYASABKAkSDgoGb3JnX2lkGAMgASgJEjgKBGJvZHkYAiABKAsyKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGVSZXF1ZXN0Qm9keSJPCh5VcGRhdGVPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2USLQoEcm9sZRgBIAEoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSIxChBMaXN0Um9sZXNSZXF1ZXN0Eg0KBXN0YXRlGAEgASgJEg4KBnNjb3BlcxgCIAMoCSJDChFMaXN0Um9sZXNSZXNwb25zZRIuCgVyb2xlcxgBIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSJWChxMaXN0T3JnYW5pemF0aW9uUm9sZXNSZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAxINCgVzdGF0ZRgCIAEoCRIOCgZzY29wZXMYAyADKAkiTwodTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2USLgoFcm9sZXMYASADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGUiRAodRGVsZXRlT3JnYW5pemF0aW9uUm9sZVJlcXVlc3QSCgoCaWQYASABKAkSFwoGb3JnX2lkGAIgASgJQgf6QgRyAhADIiAKHkRlbGV0ZU9yZ2FuaXphdGlvblJvbGVSZXNwb25zZSKrCgoXT3JnYW5pemF0aW9uUmVxdWVzdEJvZHkS+wEKBG5hbWUYASABKAlC7AGSQc0BMsoBVGhlIG5hbWUgb2YgdGhlIG9yZ2FuaXphdGlvbi4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIFRoZSBuYW1lIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMuPGJyLz4qRXhhbXBsZToqYCJmcm9udGllci1vcmcxLWFjbWUiYOJBAQL6QhRyEjIQXltBLVphLXowLTktX10rJBKyAQoFdGl0bGUYAiABKAlCogGSQZ4BMpsBVGhlIHRpdGxlIGNhbiBjb250YWluIGFueSBVVEYtOCBjaGFyYWN0ZXIsIHVzZWQgdG8gcHJvdmlkZSBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmdhbml6YXRpb24uIENhbiBhbHNvIGJlIGxlZnQgZW1wdHkuPGJyLz4gKkV4YW1wbGUqOiBgIkFjbWUgSW5jImAS6QMKCG1ldGFkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEK9A5JBuQMytgNNZXRhZGF0YSBvYmplY3QgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCBjYW4gaG9sZCBrZXkgdmFsdWUgcGFpcnMgZGVmaW5lZCBpbiBPcmdhbml6YXRpb24gTWV0YXNjaGVtYS4gVGhlIG1ldGFkYXRhIG9iamVjdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhcmJpdHJhcnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yZ2FuaXphdGlvbiBzdWNoIGFzIGxhYmVscywgZGVzY3JpcHRpb25zIGV0Yy4gVGhlIGRlZmF1bHQgT3JnYW5pemF0aW9uIE1ldGFzY2hlbWEgY29udGFpbnMgbGFiZWxzIGFuZCBkZXNjcmlwdG9uIGZpZWxkcy4gVXBkYXRlIHRoZSBPcmdhbml6YXRpb24gTWV0YXNjaGVtYSB0byBhZGQgbW9yZSBmaWVsZHMuIDxici8+KkV4YW1wbGUqOmB7ImxhYmVscyI6IHsia2V5IjogInZhbHVlIn0sICJkZXNjcmlwdGlvbiI6ICJPcmdhbml6YXRpb24gZGVzY3JpcHRpb24ifWAS8AIKBmF2YXRhchgEIAEoCULfApJBjwIy0wFUaGUgYXZhdGFyIGlzIGJhc2U2NCBlbmNvZGVkIGltYWdlIGRhdGEgb2YgdGhlIHVzZXIuIENhbiBhbHNvIGJlIGxlZnQgZW1wdHkuIFRoZSBpbWFnZSBzaG91bGQgYmUgbGVzcyB0aGFuIDIwMEtCLiBTaG91bGQgZm9sbG93IHRoZSByZWdleCBwYXR0ZXJuIGBeZGF0YTppbWFnZS8ocG5nfGpwZ3xqcGVnfGdpZik7YmFzZTY0LChbYS16QS1aMC05Ky9dKz17MCwyfSkrJGAuSjciZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUEi+kJJckcYkKEPMj5eZGF0YTppbWFnZS8ocG5nfGpwZ3xqcGVnfGdpZik7YmFzZTY0LChbYS16QS1aMC05Ky9dKz17MCwyfSkrJNABASLpAwoYTGlzdE9yZ2FuaXphdGlvbnNSZXF1ZXN0EscBCgd1c2VyX2lkGAEgASgJQrUBkkGxATKuAVRoZSB1c2VyIElEIHRvIGZpbHRlciBieS4gSXQgY2FuIGJlIHVzZWQgdG8gbGlzdCBhbGwgdGhlIG9yZ2FuaXphdGlvbnMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZi4gT3RoZXJ3aXNlLCBhbGwgdGhlIG9yZ2FuaXphdGlvbnMgaW4gdGhlIEZyb250aWVyIGluc3RhbmNlIHdpbGwgYmUgbGlzdGVkLhJOCgVzdGF0ZRgCIAEoCUI/kkE8MjpUaGUgc3RhdGUgdG8gZmlsdGVyIGJ5LiBJdCBjYW4gYmUgYGVuYWJsZWRgIG9yIGBkaXNhYmxlZGAuEmUKCXBhZ2Vfc2l6ZRgDIAEoBUJSkkFGMkRUaGUgbWF4aW11bSBudW1iZXIgb2YgdXNlcnMgdG8gcmV0dXJuIHBlciBwYWdlLiBUaGUgZGVmYXVsdCBpcyAxMDAwLvpCBhoEKAFAARJMCghwYWdlX251bRgEIAEoBUI6kkEuMixUaGUgcGFnZSBudW1iZXIgdG8gcmV0dXJuLiBUaGUgZGVmYXVsdCBpcyAxLvpCBhoEKAFAASJbChlMaXN0T3JnYW5pemF0aW9uc1Jlc3BvbnNlEj4KDW9yZ2FuaXphdGlvbnMYASADKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbiJnChlDcmVhdGVPcmdhbml6YXRpb25SZXF1ZXN0EkoKBGJvZHkYASABKAsyMi5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvblJlcXVlc3RCb2R5Qgj6QgWKAQIQASJbChpDcmVhdGVPcmdhbml6YXRpb25SZXNwb25zZRI9Cgxvcmdhbml6YXRpb24YASABKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbiJYChdHZXRPcmdhbml6YXRpb25SZXNwb25zZRI9Cgxvcmdhbml6YXRpb24YASABKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbiJbChpVcGRhdGVPcmdhbml6YXRpb25SZXNwb25zZRI9Cgxvcmdhbml6YXRpb24YASABKAsyJy5yYXlzdGFjay5mcm9udGllci52MWJldGExLk9yZ2FuaXphdGlvbiIkChZHZXRPcmdhbml6YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJImkKGVVwZGF0ZU9yZ2FuaXphdGlvblJlcXVlc3QSCgoCaWQYASABKAkSQAoEYm9keRgCIAEoCzIyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uUmVxdWVzdEJvZHkiNAodTGlzdE9yZ2FuaXphdGlvbkFkbWluc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMiUAoeTGlzdE9yZ2FuaXphdGlvbkFkbWluc1Jlc3BvbnNlEi4KBXVzZXJzGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyInwKHExpc3RPcmdhbml6YXRpb25Vc2Vyc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSHQoRcGVybWlzc2lvbl9maWx0ZXIYAiABKAlCAhgBEhIKCndpdGhfcm9sZXMYAyABKAgSFAoMcm9sZV9maWx0ZXJzGAQgAygJIvMBCh1MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZRIuCgV1c2VycxgBIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXNlchJVCgpyb2xlX3BhaXJzGAIgAygLMkEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZS5Sb2xlUGFpchpLCghSb2xlUGFpchIPCgd1c2VyX2lkGAEgASgJEi4KBXJvbGVzGAIgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlInwKG0FkZE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxJICgh1c2VyX2lkcxgCIAMoCUI2kkEzMjFMaXN0IG9mIHVzZXIgSURzIHRvIGJlIGFkZGVkIHRvIHRoZSBvcmdhbml6YXRpb24uIh4KHEFkZE9yZ2FuaXphdGlvblVzZXJzUmVzcG9uc2UiRQodUmVtb3ZlT3JnYW5pemF0aW9uVXNlclJlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSDwoHdXNlcl9pZBgCIAEoCSIgCh5SZW1vdmVPcmdhbml6YXRpb25Vc2VyUmVzcG9uc2UiOgojTGlzdE9yZ2FuaXphdGlvblNlcnZpY2VVc2Vyc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMiZAokTGlzdE9yZ2FuaXphdGlvblNlcnZpY2VVc2Vyc1Jlc3BvbnNlEjwKDHNlcnZpY2V1c2VycxgBIAMoCzImLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2VydmljZVVzZXIi3AEKIkxpc3RPcmdhbml6YXRpb25JbnZpdGF0aW9uc1JlcXVlc3QSTwoGb3JnX2lkGAEgASgJQj+SQTgyNnVuaXF1ZSBpZCBvZiB0aGUgb3JnYW5pemF0aW9uIHRvIHdoaWNoIHVzZXIgaXMgaW52aXRlZOJBAQISZQoHdXNlcl9pZBgCIAEoCUJUkkFRMk91c2VyX2lkIGZpbHRlciBpcyB0aGUgZW1haWwgaWQgb2YgdXNlciB3aG8gYXJlIGludml0ZWQgaW5zaWRlIHRoZSBvcmdhbml6YXRpb24uImEKI0xpc3RPcmdhbml6YXRpb25JbnZpdGF0aW9uc1Jlc3BvbnNlEjoKC2ludml0YXRpb25zGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5JbnZpdGF0aW9uIoYECiNDcmVhdGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVxdWVzdBJPCgZvcmdfaWQYASABKAlCP5JBODI2dW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gdG8gd2hpY2ggdXNlciBpcyBpbnZpdGVk4kEBAhKrAQoIdXNlcl9pZHMYAiADKAlCmAGSQYYBMoMBdXNlcl9pZCBpcyBlbWFpbCBpZCBvZiB1c2VyIHdobyBhcmUgaW52aXRlZCBpbnNpZGUgdGhlIG9yZ2FuaXphdGlvbi4gSWYgdXNlciBpcyBub3QgcmVnaXN0ZXJlZCBvbiB0aGUgcGxhdGZvcm0sIGl0IHdpbGwgYmUgbm90aWZpZWTiQQEC+kIHkgEECAEQChJWCglncm91cF9pZHMYAyADKAlCQ5JBQDI+bGlzdCBvZiBncm91cCBpZHMgdG8gd2hpY2ggdXNlciBuZWVkcyB0byBiZSBhZGRlZCBhcyBhIG1lbWJlci4ShwEKCHJvbGVfaWRzGAQgAygJQnWSQXIycGxpc3Qgb2Ygcm9sZSBpZHMgdG8gd2hpY2ggdXNlciBuZWVkcyB0byBiZSBhZGRlZCBhcyBhIG1lbWJlci4gUm9sZXMgYXJlIGJpbmRlZCBhdCBvcmdhbml6YXRpb24gbGV2ZWwgYnkgZGVmYXVsdC4iYgokQ3JlYXRlT3JnYW5pemF0aW9uSW52aXRhdGlvblJlc3BvbnNlEjoKC2ludml0YXRpb25zGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5JbnZpdGF0aW9uIj4KIEdldE9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEg4KBm9yZ19pZBgCIAEoCSJeCiFHZXRPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2USOQoKaW52aXRhdGlvbhgBIAEoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSW52aXRhdGlvbiJBCiNBY2NlcHRPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZvcmdfaWQYAiABKAkiJgokQWNjZXB0T3JnYW5pemF0aW9uSW52aXRhdGlvblJlc3BvbnNlIkEKI0RlbGV0ZU9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEg4KBm9yZ19pZBgCIAEoCSKVAgoeTGlzdE9yZ2FuaXphdGlvbkRvbWFpbnNSZXF1ZXN0EmwKBm9yZ19pZBgBIAEoCUJckkFOMkx1bmlxdWUgaWQgb2YgdGhlIG9yZ2FuaXphdGlvbiBmb3Igd2hpY2ggd2hpdGVsaXN0ZWQgZG9tYWlucyBhcmUgdG8gYmUgbGlzdGVk4kEBAvpCBHICEAMShAEKBXN0YXRlGAIgASgJQnWSQXIycGZpbHRlciB0byBsaXN0IGRvbWFpbnMgYnkgdGhlaXIgc3RhdGUgKHBlbmRpbmcvdmVyaWZpZWQpLiBJZiBub3QgcHJvdmlkZWQsIGFsbCBkb21haW5zIGZvciBhbiBvcmcgd2lsbCBiZSBsaXN0ZWQiVQofTGlzdE9yZ2FuaXphdGlvbkRvbWFpbnNSZXNwb25zZRIyCgdkb21haW5zGAEgAygLMiEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Eb21haW4imAEKIExpc3RPcmdhbml6YXRpb25zQnlEb21haW5SZXF1ZXN0EnQKBG5hbWUYASABKAlCZpJBWDJWZG9tYWluIG5hbWUgdG8gYmUgdXNlZCB0byBsaXN0IGFsbCB0aGUgb3JnYW5pemF0aW9ucyB0aGF0IGhhdmUgdGhpcyBkb21haW4gd2hpdGVsaXN0ZWTiQQEC+kIEcgIQAyJjCiFMaXN0T3JnYW5pemF0aW9uc0J5RG9tYWluUmVzcG9uc2USPgoNb3JnYW5pemF0aW9ucxgBIAMoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuT3JnYW5pemF0aW9uIjIKF0pvaW5Pcmdhbml6YXRpb25SZXF1ZXN0EhcKBm9yZ19pZBgBIAEoCUIH+kIEcgIQAyIaChhKb2luT3JnYW5pemF0aW9uUmVzcG9uc2Ui0gEKHEdldE9yZ2FuaXphdGlvbkRvbWFpblJlcXVlc3QSQwoCaWQYASABKAlCN5JBKTIndW5pcXVlIGlkIG9mIHRoZSBkb21haW4gdG8gYmUgcmV0cmlldmVk4kEBAvpCBHICEAMSbQoGb3JnX2lkGAIgASgJQl2SQU8yTXVuaXF1ZSBpZCBvZiB0aGUgb3JnYW5pemF0aW9uIGZvciB3aGljaCB3aGl0ZWxpc3RlZCBkb21haW4gaXMgdG8gYmUgcmV0cmlldmVk4kEBAvpCBHICEAMiUgodR2V0T3JnYW5pemF0aW9uRG9tYWluUmVzcG9uc2USMQoGZG9tYWluGAEgASgLMiEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Eb21haW4i4gEKH0NyZWF0ZU9yZ2FuaXphdGlvbkRvbWFpblJlcXVlc3QSawoGb3JnX2lkGAEgASgJQluSQU0yS3VuaXF1ZSBpZCBvZiB0aGUgb3JnYW5pemF0aW9uIGZvciB3aGljaCB3aGl0ZWxpc3RlZCBkb21haW5zIGFyZSB0byBiZSBhZGRlZOJBAQL6QgRyAhADElIKBmRvbWFpbhgCIAEoCUJCkkE0MjJkb21haW4gbmFtZSB0byBiZSBhZGRlZCB0byB0aGUgdHJ1c3RlZCBkb21haW4gbGlzdOJBAQL6QgRyAhADIlUKIENyZWF0ZU9yZ2FuaXphdGlvbkRvbWFpblJlc3BvbnNlEjEKBmRvbWFpbhgBIAEoCzIhLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRG9tYWluItMBCh9EZWxldGVPcmdhbml6YXRpb25Eb21haW5SZXF1ZXN0EkEKAmlkGAEgASgJQjWSQScyJXVuaXF1ZSBpZCBvZiB0aGUgZG9tYWluIHRvIGJlIGRlbGV0ZWTiQQEC+kIEcgIQAxJtCgZvcmdfaWQYAiABKAlCXZJBTzJNdW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gZm9yIHdoaWNoIHdoaXRlbGlzdGVkIGRvbWFpbnMgYXJlIHRvIGJlIGRlbGV0ZWTiQQEC+kIEcgIQAyIiCiBEZWxldGVPcmdhbml6YXRpb25Eb21haW5SZXNwb25zZSLVAQofVmVyaWZ5T3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBJuCgZvcmdfaWQYASABKAlCXpJBUDJOdW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gZm9yIHdoaWNoIHdoaXRlbGlzdGVkIGRvbWFpbnMgYXJlIHRvIGJlIHZlcmlmaWVk4kEBAvpCBHICEAMSQgoCaWQYAiABKAlCNpJBKDImdW5pcXVlIGlkIG9mIHRoZSBkb21haW4gdG8gYmUgdmVyaWZpZWTiQQEC+kIEcgIQAyIxCiBWZXJpZnlPcmdhbml6YXRpb25Eb21haW5SZXNwb25zZRINCgVzdGF0ZRgBIAEoCSImCiREZWxldGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2UiJwoZRW5hYmxlT3JnYW5pemF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIcChpFbmFibGVPcmdhbml6YXRpb25SZXNwb25zZSIoChpEaXNhYmxlT3JnYW5pemF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIdChtEaXNhYmxlT3JnYW5pemF0aW9uUmVzcG9uc2UiJwoZRGVsZXRlT3JnYW5pemF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIcChpEZWxldGVPcmdhbml6YXRpb25SZXNwb25zZSIrChlHZXRPcmdhbml6YXRpb25LeWNSZXF1ZXN0Eg4KBm9yZ19pZBgBIAEoCSJiChpHZXRPcmdhbml6YXRpb25LeWNSZXNwb25zZRJEChBvcmdhbml6YXRpb25fa3ljGAEgASgLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Pcmdhbml6YXRpb25LeWMirAUKElByb2plY3RSZXF1ZXN0Qm9keRL3AQoEbmFtZRgBIAEoCULoAZJByQEyxgFUaGUgbmFtZSBvZiB0aGUgcHJvamVjdC4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIFRoZSBuYW1lIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMuPGJyLz4gKkV4YW1wbGU6KiBgZnJvbnRpZXItcGxheWdyb3VuZGDiQQEC+kIUchIyEF5bQS1aYS16MC05LV9dKyQStwEKBXRpdGxlGAIgASgJQqcBkkGjATKgAVRoZSB0aXRsZSBjYW4gY29udGFpbiBhbnkgVVRGLTggY2hhcmFjdGVyLCB1c2VkIHRvIHByb3ZpZGUgYSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcHJvamVjdC4gQ2FuIGFsc28gYmUgbGVmdCBlbXB0eS4gPGJyLz4gKkV4YW1wbGU6KiBgRnJvbnRpZXIgUGxheWdyb3VuZGASiQEKCG1ldGFkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEJekkFbMllNZXRhZGF0YSBvYmplY3QgZm9yIHByb2plY3RzIHRoYXQgY2FuIGhvbGQga2V5IHZhbHVlIHBhaXJzIGRlZmluZWQgaW4gUHJvamVjdCBNZXRhc2NoZW1hLhJWCgZvcmdfaWQYBCABKAlCRpJBODI2dW5pcXVlIGlkIG9mIHRoZSBvcmdhbml6YXRpb24gdG8gd2hpY2ggcHJvamVjdCBiZWxvbmdz4kEBAvpCBHICEAMiXQoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSRQoEYm9keRgBIAEoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvamVjdFJlcXVlc3RCb2R5Qgj6QgWKAQIQASJMChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USMwoHcHJvamVjdBgBIAEoCzIiLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvamVjdCLfAQofTGlzdE9yZ2FuaXphdGlvblByb2plY3RzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxKLAQoFc3RhdGUYAiABKAlCfJJBeTJ3RmlsdGVyIHByb2plY3RzIGJ5IHN0YXRlLiBJZiBub3Qgc3BlY2lmaWVkLCBhbGwgcHJvamVjdHMgYXJlIHJldHVybmVkLiA8YnIvPiAqUG9zc2libGUgdmFsdWVzOiogYGVuYWJsZWRgIG9yIGBkaXNhYmxlZGASGQoRd2l0aF9tZW1iZXJfY291bnQYAyABKAgiWAogTGlzdE9yZ2FuaXphdGlvblByb2plY3RzUmVzcG9uc2USNAoIcHJvamVjdHMYASADKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2plY3QiHwoRR2V0UHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiSQoSR2V0UHJvamVjdFJlc3BvbnNlEjMKB3Byb2plY3QYASABKAsyIi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByb2plY3QiXwoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSOwoEYm9keRgCIAEoCzItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJvamVjdFJlcXVlc3RCb2R5IkwKFVVwZGF0ZVByb2plY3RSZXNwb25zZRIzCgdwcm9qZWN0GAEgASgLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qcm9qZWN0Ii8KGExpc3RQcm9qZWN0QWRtaW5zUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAyJLChlMaXN0UHJvamVjdEFkbWluc1Jlc3BvbnNlEi4KBXVzZXJzGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyIl0KF0xpc3RQcm9qZWN0VXNlcnNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEhkKEXBlcm1pc3Npb25fZmlsdGVyGAIgASgJEhIKCndpdGhfcm9sZXMYAyABKAgi6QEKGExpc3RQcm9qZWN0VXNlcnNSZXNwb25zZRIuCgV1c2VycxgBIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXNlchJQCgpyb2xlX3BhaXJzGAIgAygLMjwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdFVzZXJzUmVzcG9uc2UuUm9sZVBhaXIaSwoIUm9sZVBhaXISDwoHdXNlcl9pZBgBIAEoCRIuCgVyb2xlcxgCIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSJJCh5MaXN0UHJvamVjdFNlcnZpY2VVc2Vyc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMSEgoKd2l0aF9yb2xlcxgDIAEoCCKMAgofTGlzdFByb2plY3RTZXJ2aWNlVXNlcnNSZXNwb25zZRI8CgxzZXJ2aWNldXNlcnMYASADKAsyJi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlNlcnZpY2VVc2VyElcKCnJvbGVfcGFpcnMYAiADKAsyQy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0U2VydmljZVVzZXJzUmVzcG9uc2UuUm9sZVBhaXIaUgoIUm9sZVBhaXISFgoOc2VydmljZXVzZXJfaWQYASABKAkSLgoFcm9sZXMYAiADKAsyHy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJvbGUiQwoYTGlzdFByb2plY3RHcm91cHNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEhIKCndpdGhfcm9sZXMYAiABKAgi7gEKGUxpc3RQcm9qZWN0R3JvdXBzUmVzcG9uc2USMAoGZ3JvdXBzGAEgAygLMiAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cBJRCgpyb2xlX3BhaXJzGAIgAygLMj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlLlJvbGVQYWlyGkwKCFJvbGVQYWlyEhAKCGdyb3VwX2lkGAEgASgJEi4KBXJvbGVzGAIgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Sb2xlIiIKFEVuYWJsZVByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIhcKFUVuYWJsZVByb2plY3RSZXNwb25zZSIjChVEaXNhYmxlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiGAoWRGlzYWJsZVByb2plY3RSZXNwb25zZSIiChREZWxldGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiowgKEVBvbGljeVJlcXVlc3RCb2R5ElIKB3JvbGVfaWQYASABKAlCQZJBMzIxdW5pcXVlIGlkIG9mIHRoZSByb2xlIHRvIHdoaWNoIHBvbGljeSBpcyBhc3NpZ25lZOJBAQL6QgRyAhADEq8BCgV0aXRsZRgDIAEoCUKfAZJBmwEymAFUaGUgdGl0bGUgY2FuIGNvbnRhaW4gYW55IFVURi04IGNoYXJhY3RlciwgdXNlZCB0byBwcm92aWRlIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHBvbGljeS4gQ2FuIGFsc28gYmUgbGVmdCBlbXB0eS4gPGJyLz4gKkV4YW1wbGU6KiBgUG9saWN5IHRpdGxlYBKzAQoIcmVzb3VyY2UYAiABKAlCoAGSQZEBMo4BVGhlIHJlc291cmNlIHRvIHdoaWNoIHBvbGljeSBpcyBhc3NpZ25lZCBpbiB0aGlzIGZvcm1hdCBgbmFtZXNwYWNlOnV1aWRgLiA8YnIvPiAqRXhhbXBsZToqIGBhcHAvZ3VhcmRpYW46NzBmNjljM2EtMzM0Yi00ZjI1LTkwYjgtNGQ0ZjNiZTZiOGUyYOJBAQL6QgRyAhADEu8CCglwcmluY2lwYWwYBCABKAlC2wKSQdMCMtACcHJpbmNpcGFsIGlzIHRoZSB1c2VyIG9yIGdyb3VwIHRvIHdoaWNoIHBvbGljeSBpcyBhc3NpZ25lZC4gVGhlIHByaW5jaXBhbCBpZCBtdXN0IGJlIHByZWZpeGVkIHdpdGggaXRzIG5hbWVzcGFjZSBpZCBpbiB0aGlzIGZvcm1hdCBgbmFtZXNwYWNlOnV1aWRgLiBUaGUgbmFtZXNwYWNlIGNhbiBiZSBgYXBwL3VzZXJgLCBgYXBwL2dyb3VwYCBvciBgYXBwL3NlcnZpY2V1c2VyYCAoY29taW5nIHVwISkgYW5kIHV1aWQgaXMgdGhlIHVuaXF1ZSBpZCBvZiB0aGUgcHJpbmNpcGFsLiA8YnIvPiAqRXhhbXBsZToqIGBhcHAvdXNlcjo5MmY2OWMzYS0zMzRiLTRmMjUtOTBiOC00ZDRmM2JlNmI4MjVg4kEBAhLfAQoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0QrMBkkGvATKsAU1ldGFkYXRhIG9iamVjdCBmb3IgcG9saWNpZXMgdGhhdCBjYW4gaG9sZCBrZXkgdmFsdWUgcGFpcnMgZGVmaW5lZCBpbiBQb2xpY3kgTWV0YXNjaGVtYS48YnIvPiAqRXhhbXBsZToqIGB7ImxhYmVscyI6IHsia2V5IjogInZhbHVlIn0sICJkZXNjcmlwdGlvbiI6ICJQb2xpY3kgZGVzY3JpcHRpb24ifWAilAUKGkNyZWF0ZVBvbGljeUZvclByb2plY3RCb2R5ElIKB3JvbGVfaWQYASABKAlCQZJBMzIxdW5pcXVlIGlkIG9mIHRoZSByb2xlIHRvIHdoaWNoIHBvbGljeSBpcyBhc3NpZ25lZOJBAQL6QgRyAhADEq8BCgV0aXRsZRgCIAEoCUKfAZJBmwEymAFUaGUgdGl0bGUgY2FuIGNvbnRhaW4gYW55IFVURi04IGNoYXJhY3RlciwgdXNlZCB0byBwcm92aWRlIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHBvbGljeS4gQ2FuIGFsc28gYmUgbGVmdCBlbXB0eS4gPGJyLz4gKkV4YW1wbGU6KiBgUG9saWN5IHRpdGxlYBLvAgoJcHJpbmNpcGFsGAMgASgJQtsCkkHTAjLQAnByaW5jaXBhbCBpcyB0aGUgdXNlciBvciBncm91cCB0byB3aGljaCBwb2xpY3kgaXMgYXNzaWduZWQuIFRoZSBwcmluY2lwYWwgaWQgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIGl0cyBuYW1lc3BhY2UgaWQgaW4gdGhpcyBmb3JtYXQgYG5hbWVzcGFjZTp1dWlkYC4gVGhlIG5hbWVzcGFjZSBjYW4gYmUgYGFwcC91c2VyYCwgYGFwcC9ncm91cGAgb3IgYGFwcC9zZXJ2aWNldXNlcmAgKGNvbWluZyB1cCEpIGFuZCB1dWlkIGlzIHRoZSB1bmlxdWUgaWQgb2YgdGhlIHByaW5jaXBhbC4gPGJyLz4gKkV4YW1wbGU6KiBgYXBwL3VzZXI6OTJmNjljM2EtMzM0Yi00ZjI1LTkwYjgtNGQ0ZjNiZTZiODI1YOJBAQIiIgoUR2V0UGVybWlzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUgoVR2V0UGVybWlzc2lvblJlc3BvbnNlEjkKCnBlcm1pc3Npb24YASABKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBlcm1pc3Npb24iGAoWTGlzdFBlcm1pc3Npb25zUmVxdWVzdCJVChdMaXN0UGVybWlzc2lvbnNSZXNwb25zZRI6CgtwZXJtaXNzaW9ucxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUGVybWlzc2lvbiIXChVMaXN0TmFtZXNwYWNlc1JlcXVlc3QiUgoWTGlzdE5hbWVzcGFjZXNSZXNwb25zZRI4CgpuYW1lc3BhY2VzGAEgAygLMiQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5OYW1lc3BhY2UiIQoTR2V0TmFtZXNwYWNlUmVxdWVzdBIKCgJpZBgBIAEoCSJPChRHZXROYW1lc3BhY2VSZXNwb25zZRI3CgluYW1lc3BhY2UYASABKAsyJC5yYXlzdGFjay5mcm9udGllci52MWJldGExLk5hbWVzcGFjZSJbChNDcmVhdGVQb2xpY3lSZXF1ZXN0EkQKBGJvZHkYASABKAsyLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBvbGljeVJlcXVlc3RCb2R5Qgj6QgWKAQIQASJPChRDcmVhdGVQb2xpY3lSZXNwb25zZRIxCgZwb2xpY3kYAiABKAsyIS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBvbGljeUoECAEQAiIeChBHZXRQb2xpY3lSZXF1ZXN0EgoKAmlkGAEgASgJIkYKEUdldFBvbGljeVJlc3BvbnNlEjEKBnBvbGljeRgBIAEoCzIhLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUG9saWN5IpkCChNMaXN0UG9saWNpZXNSZXF1ZXN0EjYKBm9yZ19pZBgBIAEoCUImkkEjMiFUaGUgb3JnYW5pemF0aW9uIGlkIHRvIGZpbHRlciBieS4SNQoKcHJvamVjdF9pZBgCIAEoCUIhkkEeMhxUaGUgcHJvamVjdCBpZCB0byBmaWx0ZXIgYnkuEi8KB3VzZXJfaWQYAyABKAlCHpJBGzIZVGhlIHVzZXIgaWQgdG8gZmlsdGVyIGJ5LhIvCgdyb2xlX2lkGAQgASgJQh6SQRsyGVRoZSByb2xlIGlkIHRvIGZpbHRlciBieS4SMQoIZ3JvdXBfaWQYBSABKAlCH5JBHDIaVGhlIGdyb3VwIGlkIHRvIGZpbHRlciBieS4iSwoUTGlzdFBvbGljaWVzUmVzcG9uc2USMwoIcG9saWNpZXMYASADKAsyIS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBvbGljeSJdChNVcGRhdGVQb2xpY3lSZXF1ZXN0EgoKAmlkGAEgASgJEjoKBGJvZHkYAiABKAsyLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlBvbGljeVJlcXVlc3RCb2R5IksKFFVwZGF0ZVBvbGljeVJlc3BvbnNlEjMKCHBvbGljaWVzGAEgAygLMiEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Qb2xpY3kiIQoTRGVsZXRlUG9saWN5UmVxdWVzdBIKCgJpZBgBIAEoCSIWChREZWxldGVQb2xpY3lSZXNwb25zZSKLAQodQ3JlYXRlUG9saWN5Rm9yUHJvamVjdFJlcXVlc3QSGwoKcHJvamVjdF9pZBgBIAEoCUIH+kIEcgIQAxJNCgRib2R5GAIgASgLMjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lGb3JQcm9qZWN0Qm9keUII+kIFigECEAEiIAoeQ3JlYXRlUG9saWN5Rm9yUHJvamVjdFJlc3BvbnNlInIKE1JlbGF0aW9uUmVxdWVzdEJvZHkSDgoGb2JqZWN0GAEgASgJEg8KB3N1YmplY3QYAyABKAkSEAoIcmVsYXRpb24YBCABKAkSHAoUc3ViamVjdF9zdWJfcmVsYXRpb24YBiABKAlKBAgCEANKBAgFEAYiXwoVQ3JlYXRlUmVsYXRpb25SZXF1ZXN0EkYKBGJvZHkYASABKAsyLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlbGF0aW9uUmVxdWVzdEJvZHlCCPpCBYoBAhABIk8KFkNyZWF0ZVJlbGF0aW9uUmVzcG9uc2USNQoIcmVsYXRpb24YASABKAsyIy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlbGF0aW9uIiAKEkdldFJlbGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJMChNHZXRSZWxhdGlvblJlc3BvbnNlEjUKCHJlbGF0aW9uGAEgASgLMiMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZWxhdGlvbiJhChVVcGRhdGVSZWxhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSPAoEYm9keRgCIAEoCzIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVsYXRpb25SZXF1ZXN0Qm9keSJPChZVcGRhdGVSZWxhdGlvblJlc3BvbnNlEjUKCHJlbGF0aW9uGAEgASgLMiMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZWxhdGlvbiK5BgoQR3JvdXBSZXF1ZXN0Qm9keRLPAQoEbmFtZRgBIAEoCULAAZJBoQEyngFUaGUgbmFtZSBvZiB0aGUgZ3JvdXAuIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIEZyb250aWVyIGluc3RhbmNlLiBUaGUgbmFtZSBjYW4gY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzLuJBAQL6QhRyEjIQXltBLVphLXowLTktX10rJBKLAQoFdGl0bGUYAiABKAlCfJJBeTJ3VGhlIHRpdGxlIGNhbiBjb250YWluIGFueSBVVEYtOCBjaGFyYWN0ZXIsIHVzZWQgdG8gcHJvdmlkZSBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBncm91cC4gQ2FuIGFsc28gYmUgbGVmdCBlbXB0eS4SvgMKCG1ldGFkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEKSA5JBjgMyiwNNZXRhZGF0YSBvYmplY3QgZm9yIGdyb3VwcyB0aGF0IGNhbiBob2xkIGtleSB2YWx1ZSBwYWlycyBkZWZpbmVkIGluIEdyb3VwIE1ldGFzY2hlbWEuIFRoZSBtZXRhZGF0YSBvYmplY3QgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBncm91cCBzdWNoIGFzIGxhYmVscywgZGVzY3JpcHRpb25zIGV0Yy4gVGhlIGRlZmF1bHQgR3JvdXAgTWV0YXNjaGVtYSBjb250YWlucyBsYWJlbHMgYW5kIGRlc2NyaXB0b24gZmllbGRzLiBVcGRhdGUgdGhlIEdyb3VwIE1ldGFzY2hlbWEgdG8gYWRkIG1vcmUgZmllbGRzLjxici8+KkV4YW1wbGU6KmB7ImxhYmVscyI6IHsia2V5IjogInZhbHVlIn0sICJkZXNjcmlwdGlvbiI6ICJHcm91cCBkZXNjcmlwdGlvbiJ9YEoECAQQBSKmAQoSQ3JlYXRlR3JvdXBSZXF1ZXN0EkMKBGJvZHkYASABKAsyKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdyb3VwUmVxdWVzdEJvZHlCCPpCBYoBAhABEksKBm9yZ19pZBgCIAEoCUI7kkE0MjJUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBncm91cCBiZWxvbmdzIHRvLuJBAQIiQwoPR2V0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBm9yZ19pZBgCIAEoCRIUCgx3aXRoX21lbWJlcnMYAyABKAgiRgoTQ3JlYXRlR3JvdXBSZXNwb25zZRIvCgVncm91cBgBIAEoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXAiQwoQR2V0R3JvdXBSZXNwb25zZRIvCgVncm91cBgBIAEoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXAiRgoTVXBkYXRlR3JvdXBSZXNwb25zZRIvCgVncm91cBgBIAEoCzIgLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR3JvdXAiqAEKElVwZGF0ZUdyb3VwUmVxdWVzdBIKCgJpZBgBIAEoCRI5CgRib2R5GAIgASgLMisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Hcm91cFJlcXVlc3RCb2R5EksKBm9yZ19pZBgDIAEoCUI7kkE0MjJUaGUgb3JnYW5pemF0aW9uIElEIHRvIHdoaWNoIHRoZSBncm91cCBiZWxvbmdzIHRvLuJBAQIiRwoVTGlzdEdyb3VwVXNlcnNSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBm9yZ19pZBgCIAEoCRISCgp3aXRoX3JvbGVzGAMgASgIIuUBChZMaXN0R3JvdXBVc2Vyc1Jlc3BvbnNlEi4KBXVzZXJzGAEgAygLMh8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Vc2VyEk4KCnJvbGVfcGFpcnMYAiADKAsyOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RHcm91cFVzZXJzUmVzcG9uc2UuUm9sZVBhaXIaSwoIUm9sZVBhaXISDwoHdXNlcl9pZBgBIAEoCRIuCgVyb2xlcxgCIAMoCzIfLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUm9sZSI5ChJFbmFibGVHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSFwoGb3JnX2lkGAIgASgJQgf6QgRyAhADIhUKE0VuYWJsZUdyb3VwUmVzcG9uc2UiOgoTRGlzYWJsZUdyb3VwUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAMiFgoURGlzYWJsZUdyb3VwUmVzcG9uc2UiOQoSRGVsZXRlR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQAyIVChNEZWxldGVHcm91cFJlc3BvbnNlIk0KFEFkZEdyb3VwVXNlcnNSZXF1ZXN0EgoKAmlkGAEgASgJEhcKBm9yZ19pZBgCIAEoCUIH+kIEcgIQAxIQCgh1c2VyX2lkcxgDIAMoCSIXChVBZGRHcm91cFVzZXJzUmVzcG9uc2UiTgoWUmVtb3ZlR3JvdXBVc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgZvcmdfaWQYAiABKAlCB/pCBHICEAMSDwoHdXNlcl9pZBgDIAEoCSIZChdSZW1vdmVHcm91cFVzZXJSZXNwb25zZSJQChVEZWxldGVSZWxhdGlvblJlcXVlc3QSDgoGb2JqZWN0GAEgASgJEg8KB3N1YmplY3QYAiABKAkSEAoIcmVsYXRpb24YBCABKAlKBAgDEAQiGAoWRGVsZXRlUmVsYXRpb25SZXNwb25zZSJTChtMaXN0UHJvamVjdFJlc291cmNlc1JlcXVlc3QSGwoKcHJvamVjdF9pZBgCIAEoCUIH+kIEcgIQAxIRCgluYW1lc3BhY2UYBCABKAlKBAgBEAIiVgocTGlzdFByb2plY3RSZXNvdXJjZXNSZXNwb25zZRI2CglyZXNvdXJjZXMYASADKAsyIy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlc291cmNlIrYGChNSZXNvdXJjZVJlcXVlc3RCb2R5EnMKBG5hbWUYASABKAlCZZJBXjJcVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlLiAgTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBwcm9qZWN0LiA8YnIvPiAqRXhhbXBsZToqIGBteS1yZXNvdXJjZWDiQQECEo4BCgV0aXRsZRgCIAEoCUJ/kkF8MnpUaGUgdGl0bGUgY2FuIGNvbnRhaW4gYW55IFVURi04IGNoYXJhY3RlciwgdXNlZCB0byBwcm92aWRlIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJlc291cmNlLiBDYW4gYWxzbyBiZSBsZWZ0IGVtcHR5LhLyAQoJbmFtZXNwYWNlGAMgASgJQt4BkkHWATLTAVRoZSBuYW1lc3BhY2Ugb2YgdGhlIHJlc291cmNlLiBUaGUgcmVzb3VyY2UgbmFtZXNwYWNlIGFyZSBjcmVhdGVkIHdoZW4gcGVybWlzc2lvbnMgZm9yIHRoYXQgcmVzb3VyY2UgaXMgY3JlYXRlZCBpbiBGcm9udGllci4gSWYgbmFtZXNwYWNlIGRvZXNuJ3QgZXhpc3RzIHRoZSByZXF1ZXN0IHdpbGwgZmFpbC4gPGJyLz4gKkV4YW1wbGU6KiBgY29tcHV0ZS9pbnN0YW5jZWDiQQECEuwBCglwcmluY2lwYWwYBiABKAlC2AGSQdQBMtEBVXNlcklEIG9yIFNlcnZpY2VVc2VySUQgdGhhdCBzaG91bGQgYmUgbWFya2VkIGFzIG93bmVyIG9mIHRoZSByZXNvdXJjZS4gSWYgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudCBsb2dnZWQgaW4gdXNlciB3aWxsIGJlIG1hZGUgdGhlIHJlc291cmNlIG93bmVyLiA8YnIvPiAqRXhhbXBsZToqIGB1c2VyOjkyZjY5YzNhLTMzNGItNGYyNS05MGI4LTRkNGYzYmU2YjgyNWASKQoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SgQIBBAFSgQIBRAGIqYBChxDcmVhdGVQcm9qZWN0UmVzb3VyY2VSZXF1ZXN0EkYKBGJvZHkYASABKAsyLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlc291cmNlUmVxdWVzdEJvZHlCCPpCBYoBAhABEhIKCnByb2plY3RfaWQYAiABKAkSKgoCaWQYAyABKAlCHpJBGzIZQXV0b2dlbmVyYXRlZCBpZiBza2lwcGVkLiJWCh1DcmVhdGVQcm9qZWN0UmVzb3VyY2VSZXNwb25zZRI1CghyZXNvdXJjZRgBIAEoCzIjLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVzb3VyY2UiSgoZR2V0UHJvamVjdFJlc291cmNlUmVxdWVzdBIKCgJpZBgBIAEoCRIbCgpwcm9qZWN0X2lkGAMgASgJQgf6QgRyAhADSgQIAhADIlMKGkdldFByb2plY3RSZXNvdXJjZVJlc3BvbnNlEjUKCHJlc291cmNlGAEgASgLMiMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZXNvdXJjZSJ8ChxVcGRhdGVQcm9qZWN0UmVzb3VyY2VSZXF1ZXN0EgoKAmlkGAEgASgJEjwKBGJvZHkYAiABKAsyLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlJlc291cmNlUmVxdWVzdEJvZHkSEgoKcHJvamVjdF9pZBgDIAEoCSJWCh1VcGRhdGVQcm9qZWN0UmVzb3VyY2VSZXNwb25zZRI1CghyZXNvdXJjZRgBIAEoCzIjLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVzb3VyY2UiRwocRGVsZXRlUHJvamVjdFJlc291cmNlUmVxdWVzdBIKCgJpZBgBIAEoCRIbCgpwcm9qZWN0X2lkGAMgASgJQgf6QgRyAhADIh8KHURlbGV0ZVByb2plY3RSZXNvdXJjZVJlc3BvbnNlIoMGCh5DaGVja1Jlc291cmNlUGVybWlzc2lvblJlcXVlc3QSQwoJb2JqZWN0X2lkGAEgASgJQjAYAZJBKzIpRGVwcmVjYXRlZC4gVXNlIGByZXNvdXJjZWAgZmllbGQgaW5zdGVhZC4SSgoQb2JqZWN0X25hbWVzcGFjZRgCIAEoCUIwGAGSQSsyKURlcHJlY2F0ZWQuIFVzZSBgcmVzb3VyY2VgIGZpZWxkIGluc3RlYWQuEowBCgpwZXJtaXNzaW9uGAMgASgJQniSQVkyV3RoZSBwZXJtaXNzaW9uIG5hbWUgdG8gY2hlY2suIDxici8+ICpFeGFtcGxlOiogYGdldGAsIGBsaXN0YCwgYGNvbXB1dGUuaW5zdGFuY2UuY3JlYXRlYOJBAQL6QhVyEzIRXltBLVphLXowLTkuXy1dKyQSwAMKCHJlc291cmNlGAQgASgJQq0DkkGpAzKmA2BuYW1lc3BhY2U6dXVpZGAgb3IgYG5hbWVzcGFjZTpuYW1lYCBvZiB0aGUgb3JnIG9yIHByb2plY3QsIGFuZCBgbmFtZXNwYWNlOnVybmAgb2YgYSByZXNvdXJjZSB1bmRlciBhIHByb2plY3QuIEluIGNhc2Ugb2YgYW4gb3JnL3Byb2plY3QgZWl0aGVyIHByb3ZpZGUgdGhlIGNvbXBsZXRlIG5hbWVzcGFjZSAoYXBwL29yZ2FuaXphdGlvbikgb3IgRnJvbnRpZXIgY2FuIGFsc28gcGFyc2UgYWxpYXNlcyBmb3IgdGhlIHNhbWUgYXMgYG9yZ2Agb3IgYHByb2plY3RgLiA8YnIvPiAqRXhhbXBsZToqIGBvcmdhbml6YXRpb246OTJmNjljM2EtMzM0Yi00ZjI1LTkwYjgtNGQ0ZjNiZTZiODI1YCBvciBgYXBwL3Byb2plY3Q6cHJvamVjdC1uYW1lYCBvciBgY29tcHV0ZS9pbnN0YW5jZTo5MmY2OWMzYS0zMzRiLTRmMjUtOTBiOC00ZDRmM2JlNmI4MjVgIjEKH0NoZWNrUmVzb3VyY2VQZXJtaXNzaW9uUmVzcG9uc2USDgoGc3RhdHVzGAEgASgIIm4KG0JhdGNoQ2hlY2tQZXJtaXNzaW9uUmVxdWVzdBJPCgZib2RpZXMYASADKAsyMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkJhdGNoQ2hlY2tQZXJtaXNzaW9uQm9keUIK+kIHkgEECAEQFCLSBAoYQmF0Y2hDaGVja1Blcm1pc3Npb25Cb2R5EnMKCnBlcm1pc3Npb24YASABKAlCX5JBQDI+dGhlIHBlcm1pc3Npb24gbmFtZSB0byBjaGVjay4gPGJyLz4gKkV4YW1wbGU6KiBgZ2V0YCBvciBgbGlzdGDiQQEC+kIVchMyEV5bQS1aYS16MC05Ll8tXSskEsADCghyZXNvdXJjZRgCIAEoCUKtA5JBqQMypgNgbmFtZXNwYWNlOnV1aWRgIG9yIGBuYW1lc3BhY2U6bmFtZWAgb2YgdGhlIG9yZyBvciBwcm9qZWN0LCBhbmQgYG5hbWVzcGFjZTp1cm5gIG9mIGEgcmVzb3VyY2UgdW5kZXIgYSBwcm9qZWN0LiBJbiBjYXNlIG9mIGFuIG9yZy9wcm9qZWN0IGVpdGhlciBwcm92aWRlIHRoZSBjb21wbGV0ZSBuYW1lc3BhY2UgKGFwcC9vcmdhbml6YXRpb24pIG9yIEZyb250aWVyIGNhbiBhbHNvIHBhcnNlIGFsaWFzZXMgZm9yIHRoZSBzYW1lIGFzIGBvcmdgIG9yIGBwcm9qZWN0YC4gPGJyLz4gKkV4YW1wbGU6KiBgb3JnYW5pemF0aW9uOjkyZjY5YzNhLTMzNGItNGYyNS05MGI4LTRkNGYzYmU2YjgyNWAgb3IgYGFwcC9wcm9qZWN0OnByb2plY3QtbmFtZWAgb3IgYGNvbXB1dGUvaW5zdGFuY2U6OTJmNjljM2EtMzM0Yi00ZjI1LTkwYjgtNGQ0ZjNiZTZiODI1YCJqChxCYXRjaENoZWNrUGVybWlzc2lvblJlc3BvbnNlEkoKBXBhaXJzGAEgAygLMjsucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CYXRjaENoZWNrUGVybWlzc2lvblJlc3BvbnNlUGFpciJ1CiBCYXRjaENoZWNrUGVybWlzc2lvblJlc3BvbnNlUGFpchJBCgRib2R5GAEgASgLMjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CYXRjaENoZWNrUGVybWlzc2lvbkJvZHkSDgoGc3RhdHVzGAIgASgIIqEDChVNZXRhU2NoZW1hUmVxdWVzdEJvZHkS1AEKBG5hbWUYASABKAlCxQGSQaYBMqMBVGhlIG5hbWUgb2YgdGhlIG1ldGFzY2hlbWEuIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIEZyb250aWVyIGluc3RhbmNlLiBUaGUgbmFtZSBjYW4gY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzLuJBAQL6QhRyEjIQXltBLVphLXowLTktX10rJBKwAQoGc2NoZW1hGAIgASgJQp8BkkGQATKNAVRoZSBzY2hlbWEgb2YgdGhlIG1ldGFzY2hlbWEuIFRoZSBzY2hlbWEgbXVzdCBiZSBhIHZhbGlkIEpTT04gc2NoZW1hLlBsZWFzZSByZWZlciB0byBodHRwczovL2pzb24tc2NoZW1hLm9yZy8gdG8ga25vdyBtb3JlIGFib3V0IGpzb24gc2NoZW1hLuJBAQL6QgRyAhACImMKF0NyZWF0ZU1ldGFTY2hlbWFSZXF1ZXN0EkgKBGJvZHkYASABKAsyMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLk1ldGFTY2hlbWFSZXF1ZXN0Qm9keUII+kIFigECEAEiVQoYQ3JlYXRlTWV0YVNjaGVtYVJlc3BvbnNlEjkKCm1ldGFzY2hlbWEYASABKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLk1ldGFTY2hlbWEiIgoUR2V0TWV0YVNjaGVtYVJlcXVlc3QSCgoCaWQYASABKAkiUgoVR2V0TWV0YVNjaGVtYVJlc3BvbnNlEjkKCm1ldGFzY2hlbWEYASABKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLk1ldGFTY2hlbWEibwoXVXBkYXRlTWV0YVNjaGVtYVJlcXVlc3QSCgoCaWQYASABKAkSSAoEYm9keRgCIAEoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTWV0YVNjaGVtYVJlcXVlc3RCb2R5Qgj6QgWKAQIQASJVChhVcGRhdGVNZXRhU2NoZW1hUmVzcG9uc2USOQoKbWV0YXNjaGVtYRgBIAEoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTWV0YVNjaGVtYSIlChdEZWxldGVNZXRhU2NoZW1hUmVxdWVzdBIKCgJpZBgBIAEoCSIaChhEZWxldGVNZXRhU2NoZW1hUmVzcG9uc2UiGAoWTGlzdE1ldGFTY2hlbWFzUmVxdWVzdCJVChdMaXN0TWV0YVNjaGVtYXNSZXNwb25zZRI6CgttZXRhc2NoZW1hcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTWV0YVNjaGVtYSIcChpEZXNjcmliZVByZWZlcmVuY2VzUmVxdWVzdCJZChtEZXNjcmliZVByZWZlcmVuY2VzUmVzcG9uc2USOgoGdHJhaXRzGAEgAygLMioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlVHJhaXQihwEKJENyZWF0ZU9yZ2FuaXphdGlvblByZWZlcmVuY2VzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxJKCgZib2RpZXMYAiADKAsyMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2VSZXF1ZXN0Qm9keUII+kIFkgECCAEiYwolQ3JlYXRlT3JnYW5pemF0aW9uUHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSI5CiJMaXN0T3JnYW5pemF0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADImEKI0xpc3RPcmdhbml6YXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlEjoKC3ByZWZlcmVuY2VzGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlIoIBCh9DcmVhdGVQcm9qZWN0UHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEkoKBmJvZGllcxgCIAMoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZVJlcXVlc3RCb2R5Qgj6QgWSAQIIASJeCiBDcmVhdGVQcm9qZWN0UHJlZmVyZW5jZXNSZXNwb25zZRI6CgtwcmVmZXJlbmNlcxgBIAMoCzIlLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZSI0Ch1MaXN0UHJvamVjdFByZWZlcmVuY2VzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAyJcCh5MaXN0UHJvamVjdFByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UigAEKHUNyZWF0ZUdyb3VwUHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADEkoKBmJvZGllcxgCIAMoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZVJlcXVlc3RCb2R5Qgj6QgWSAQIIASJcCh5DcmVhdGVHcm91cFByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UiMgobTGlzdEdyb3VwUHJlZmVyZW5jZXNSZXF1ZXN0EhMKAmlkGAEgASgJQgf6QgRyAhADIloKHExpc3RHcm91cFByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UifwocQ3JlYXRlVXNlclByZWZlcmVuY2VzUmVxdWVzdBITCgJpZBgBIAEoCUIH+kIEcgIQAxJKCgZib2RpZXMYAiADKAsyMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2VSZXF1ZXN0Qm9keUII+kIFkgECCAEiWwodQ3JlYXRlVXNlclByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UiMQoaTGlzdFVzZXJQcmVmZXJlbmNlc1JlcXVlc3QSEwoCaWQYASABKAlCB/pCBHICEAMiWQobTGlzdFVzZXJQcmVmZXJlbmNlc1Jlc3BvbnNlEjoKC3ByZWZlcmVuY2VzGAEgAygLMiUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QcmVmZXJlbmNlInEKI0NyZWF0ZUN1cnJlbnRVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0EkoKBmJvZGllcxgCIAMoCzIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUHJlZmVyZW5jZVJlcXVlc3RCb2R5Qgj6QgWSAQIIASJiCiRDcmVhdGVDdXJyZW50VXNlclByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UiIwohTGlzdEN1cnJlbnRVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0ImAKIkxpc3RDdXJyZW50VXNlclByZWZlcmVuY2VzUmVzcG9uc2USOgoLcHJlZmVyZW5jZXMYASADKAsyJS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlByZWZlcmVuY2UiSAodQmlsbGluZ1dlYmhvb2tDYWxsYmFja1JlcXVlc3QSGQoIcHJvdmlkZXIYASABKAlCB/pCBHICEAESDAoEYm9keRgCIAEoDCIgCh5CaWxsaW5nV2ViaG9va0NhbGxiYWNrUmVzcG9uc2UihAQKG0NyZWF0ZVByb3NwZWN0UHVibGljUmVxdWVzdBI+CgRuYW1lGAEgASgJQjCSQRcyFWZ1bGwgbmFtZSBvZiB0aGUgdXNlcvpCE3IRMgxeW0EtWmEteiBdKyTQAQESMgoFZW1haWwYBSABKAlCI5JBEzIRZW1haWwgb2YgdGhlIHVzZXLiQQEC+kIGcgQQAWABEiwKBXBob25lGAYgASgJQh2SQRoyGHBob25lIG51bWJlciBvZiB0aGUgdXNlchKAAQoIYWN0aXZpdHkYByABKAlCbpJBTjJMYWN0aXZpdHkgZm9yIHdoaWNoIHVzZXIgaXMgc3Vic2NyaWJpbmcsIGUuZy4gbmV3c2xldHRlciwgd2FpdGxpc3QsIGJsb2dzIGV0Y+JBAQL6QhZyFBABMhBeW0EtWmEtejAtOS1fXSskEm0KBnNvdXJjZRgJIAEoCUJdkkFAMj5zb3VyY2Ugb2YgdGhpcyB1c2VyIGFkZGl0aW9uIGUuZy4gcGxhdGZvcm0sIHdlYnNpdGUsIGFkbWluIGV0Y/pCF3IVMhBeW0EtWmEtejAtOS1fXSsk0AEBElEKCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEImkkEjMiFhZGRpdGlvbmFsIGluZm8gYXMga2V5IHZhbHVlIHBhaXIiHgocQ3JlYXRlUHJvc3BlY3RQdWJsaWNSZXNwb25zZSIVChNMaXN0U2Vzc2lvbnNSZXF1ZXN0IkwKFExpc3RTZXNzaW9uc1Jlc3BvbnNlEjQKCHNlc3Npb25zGAEgAygLMiIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5TZXNzaW9uIjgKFFJldm9rZVNlc3Npb25SZXF1ZXN0EiAKCnNlc3Npb25faWQYASABKAlCDOJBAQL6QgVyA7ABASIXChVSZXZva2VTZXNzaW9uUmVzcG9uc2UiGAoWUGluZ1VzZXJTZXNzaW9uUmVxdWVzdCJUChdQaW5nVXNlclNlc3Npb25SZXNwb25zZRI5CghtZXRhZGF0YRgBIAEoCzInLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuU2Vzc2lvbi5NZXRhIrUDChhDcmVhdGVBdWRpdFJlY29yZFJlcXVlc3QSQAoFYWN0b3IYASABKAsyKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkF1ZGl0UmVjb3JkQWN0b3JCBOJBAQISGgoFZXZlbnQYAiABKAlCC+JBAQL6QgRyAhADEkYKCHJlc291cmNlGAMgASgLMi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdWRpdFJlY29yZFJlc291cmNlQgTiQQECEjwKBnRhcmdldBgEIAEoCzIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXVkaXRSZWNvcmRUYXJnZXQSNQoLb2NjdXJyZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgTiQQECEhgKBm9yZ19pZBgGIAEoCUII+kIFcgOwAQESEgoKcmVxdWVzdF9pZBgHIAEoCRIpCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJQoPaWRlbXBvdGVuY3lfa2V5GAkgASgJQgziQQEC+kIFcgOwAQEiWQoZQ3JlYXRlQXVkaXRSZWNvcmRSZXNwb25zZRI8CgxhdWRpdF9yZWNvcmQYASABKAsyJi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkF1ZGl0UmVjb3JkMtORAwoPRnJvbnRpZXJTZXJ2aWNlEugCCglMaXN0VXNlcnMSKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2Vyc1JlcXVlc3QaLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2Vyc1Jlc3BvbnNlIv8BkkHlAQoEVXNlchIRTGlzdCBwdWJsaWMgdXNlcnMayQFSZXR1cm5zIHRoZSB1c2VycyBmcm9tIGFsbCB0aGUgb3JnYW5pemF0aW9ucyBpbiBhIEZyb250aWVyIGluc3RhbmNlLiBJdCBjYW4gYmUgZmlsdGVyZWQgYnkga2V5d29yZCwgb3JnYW5pemF0aW9uLCBncm91cCBhbmQgc3RhdGUuIEFkZGl0aW9uYWxseSB5b3UgY2FuIGluY2x1ZGUgcGFnZSBudW1iZXIgYW5kIHBhZ2Ugc2l6ZSBmb3IgcGFnaW5hdGlvbi6C0+STAhASDi92MWJldGExL3VzZXJzErsGCgpDcmVhdGVVc2VyEiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVVc2VyUmVxdWVzdBotLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlVXNlclJlc3BvbnNlIs8FkkGvBQoEVXNlchILQ3JlYXRlIHVzZXIalwVDcmVhdGUgYSB1c2VyIHdpdGggdGhlIGdpdmVuIGRldGFpbHMuIEEgdXNlciBpcyBub3QgYXR0YWNoZWQgdG8gYW4gb3JnYW5pemF0aW9uIG9yIGEgZ3JvdXAgYnkgZGVmYXVsdCxhbmQgY2FuIGJlIGludml0ZWQgdG8gdGhlIG9yZy9ncm91cC4gVGhlIG5hbWUgb2YgdGhlIHVzZXIgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UuIElmIGEgdXNlciBuYW1lIGlzIG5vdCBwcm92aWRlZCwgRnJvbnRpZXIgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYSBuYW1lIGZyb20gdGhlIHVzZXIgZW1haWwuIFRoZSB1c2VyIG1ldGFkYXRhIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSB1c2VyIG1ldGFzY2hlbWEuIEJ5IGRlZmF1bHQgdGhlIHVzZXIgbWV0YXNjaGVtYSBjb250YWlucyBgbGFiZWxzYCBhbmQgYGRlc2NyaXB0aW9uc2AgZm9yIHRoZSB1c2VyLiBUaGUgYHRpdGxlYCBmaWVsZCBjYW4gYmUgb3B0aW9uYWxseSBhZGRlZCBmb3IgYSB1c2VyLWZyaWVuZGx5IG5hbWUuIDxici8+PGJyLz4qRXhhbXBsZToqYHsiZW1haWwiOiJqb2huLmRvZUByYXlzdGFjay5vcmciLCJ0aXRsZSI6IkpvaG4gRG9lIixtZXRhZGF0YTp7ImxhYmVsIjogeyJrZXkxIjogInZhbHVlMSJ9LCAiZGVzY3JpcHRpb24iOiAiVXNlciBEZXNjcmlwdGlvbiJ9fWBiAILT5JMCFiIOL3YxYmV0YTEvdXNlcnM6BGJvZHkSzwEKB0dldFVzZXISKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFVzZXJSZXF1ZXN0GioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRVc2VyUmVzcG9uc2UibZJBTwoEVXNlchIIR2V0IHVzZXIaPUdldCBhIHVzZXIgYnkgaWQgc2VhcmNoZWQgb3ZlciBhbGwgb3JnYW5pemF0aW9ucyBpbiBGcm9udGllci6C0+STAhUSEy92MWJldGExL3VzZXJzL3tpZH0S6gIKDkxpc3RVc2VyR3JvdXBzEjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0VXNlckdyb3Vwc1JlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2VyR3JvdXBzUmVzcG9uc2Ui8gGSQcwBCgRVc2VyEhBMaXN0IHVzZXIgZ3JvdXBzGrEBTGlzdHMgYWxsIHRoZSBncm91cHMgYSB1c2VyIGJlbG9uZ3MgdG8gYWNyb3NzIGFsbCBvcmdhbml6YXRpb24gaW4gRnJvbnRpZXIuIFRvIGdldCB0aGUgZ3JvdXBzIG9mIGEgdXNlciBpbiBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiwgdXNlIHRoZSBvcmdfaWQgZmlsdGVyIGluIHRoZSBxdWVyeSBwYXJhbWV0ZXIugtPkkwIcEhovdjFiZXRhMS91c2Vycy97aWR9L2dyb3VwcxLHAQoVTGlzdEN1cnJlbnRVc2VyR3JvdXBzEjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJHcm91cHNSZXF1ZXN0GjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJHcm91cHNSZXNwb25zZSI7kkEWCgRVc2VyEg5MaXN0IG15IGdyb3Vwc4LT5JMCHBIaL3YxYmV0YTEvdXNlcnMvc2VsZi9ncm91cHMSrQEKDkdldEN1cnJlbnRVc2VyEjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRDdXJyZW50VXNlclJlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEN1cnJlbnRVc2VyUmVzcG9uc2UiNpJBGAoEVXNlchIQR2V0IGN1cnJlbnQgdXNlcoLT5JMCFRITL3YxYmV0YTEvdXNlcnMvc2VsZhKiAQoKVXBkYXRlVXNlchIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlVXNlclJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVVzZXJSZXNwb25zZSI3kkETCgRVc2VyEgtVcGRhdGUgdXNlcoLT5JMCGxoTL3YxYmV0YTEvdXNlcnMve2lkfToEYm9keRK/AQoRVXBkYXRlQ3VycmVudFVzZXISMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZUN1cnJlbnRVc2VyUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlQ3VycmVudFVzZXJSZXNwb25zZSI/kkEbCgRVc2VyEhNVcGRhdGUgY3VycmVudCB1c2VygtPkkwIbGhMvdjFiZXRhMS91c2Vycy9zZWxmOgRib2R5EpECCgpFbmFibGVVc2VyEiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVVc2VyUmVxdWVzdBotLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlVXNlclJlc3BvbnNlIqUBkkF9CgRVc2VyEgtFbmFibGUgdXNlchpoU2V0cyB0aGUgc3RhdGUgb2YgdGhlIHVzZXIgYXMgZW5hYmxlZC4gVGhlIHVzZXIgd2lsbCBiZSBhYmxlIHRvIGxvZyBpbiBhbmQgYWNjZXNzIHRoZSBGcm9udGllciBpbnN0YW5jZS6C0+STAh8iGi92MWJldGExL3VzZXJzL3tpZH0vZW5hYmxlOgEqEpADCgtEaXNhYmxlVXNlchItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZVVzZXJSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlVXNlclJlc3BvbnNlIqECkkH3AQoEVXNlchIMRGlzYWJsZSB1c2VyGuABU2V0cyB0aGUgc3RhdGUgb2YgdGhlIHVzZXIgYXMgZGlhYmxlZC5UaGUgdXNlcidzIG1lbWJlcnNoaXAgdG8gZ3JvdXBzIGFuZCBvcmdhbml6YXRpb25zIHdpbGwgc3RpbGwgZXhpc3QgYWxvbmcgd2l0aCBhbGwgaXQncyByb2xlcyBmb3IgYWNjZXNzIGNvbnRyb2wsIGJ1dCB0aGUgdXNlciB3aWxsIG5vdCBiZSBhYmxlIHRvIGxvZyBpbiBhbmQgYWNjZXNzIHRoZSBGcm9udGllciBpbnN0YW5jZS6C0+STAiAiGy92MWJldGExL3VzZXJzL3tpZH0vZGlzYWJsZToBKhL3AQoKRGVsZXRlVXNlchIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlVXNlclJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVVzZXJSZXNwb25zZSKLAZJBbQoEVXNlchILRGVsZXRlIHVzZXIaWERlbGV0ZSBhbiB1c2VyIHBlcm1hbmVudGx5IGZvcmV2ZXIgYW5kIGFsbCBvZiBpdHMgcmVsYXRpb25zIChvcmdhbml6YXRpb25zLCBncm91cHMsIGV0YymC0+STAhUqEy92MWJldGExL3VzZXJzL3tpZH0S/wQKF0xpc3RPcmdhbml6YXRpb25zQnlVc2VyEjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uc0J5VXNlclJlcXVlc3QaOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25zQnlVc2VyUmVzcG9uc2Ui7AOSQb8DCgRVc2VyEhZHZXQgdXNlciBvcmdhbml6YXRpb25zGp4DVGhpcyBBUEkgcmV0dXJucyB0d28gbGlzdCBvZiBvcmdhbml6YXRpb25zIGZvciB0aGUgdXNlci4gaSkgVGhlIGxpc3Qgb2Ygb3JncyB3aGljaCB0aGUgY3VycmVudCB1c2VyIGlzIGFscmVhZHkgYSBwYXJ0IG9mIGlpKSBUaGUgbGlzdCBvZiBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGNhbiBqb2luIGRpcmVjdGx5IChiYXNlZCBvbiBkb21haW4gd2hpdGVsaXN0ZWQgYW5kIHZlcmlmaWVkIGJ5IHRoZSBvcmcpLiBUaGlzIGxpc3Qgd2lsbCBhbHNvIGNvbnRhaW4gb3JncyBvZiB3aGljaCB1c2VyIGlzIGFscmVhZHkgYSBwYXJ0IG9mLiBOb3RlOiB0aGUgZG9tYWluIG5lZWRzIHRvIGJlIHZlcmlmaWVkIGJ5IHRoZSBvcmcgYmVmb3JlIHRoZSBpdCBpcyByZXR1cm5lZCBhcyBvbmUgb2YgdGhlIGpvaW5hYmxlIG9yZ3MgYnkgZG9tYWlugtPkkwIjEiEvdjFiZXRhMS91c2Vycy97aWR9L29yZ2FuaXphdGlvbnMSpAUKHkxpc3RPcmdhbml6YXRpb25zQnlDdXJyZW50VXNlchJALnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVxdWVzdBpBLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbnNCeUN1cnJlbnRVc2VyUmVzcG9uc2Ui/AOSQc8DCgRVc2VyEhRHZXQgbXkgb3JnYW5pemF0aW9ucxqwA1RoaXMgQVBJIHJldHVybnMgdHdvIGxpc3Qgb2Ygb3JnYW5pemF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIuIGkpIFRoZSBsaXN0IG9mIG9yZ3Mgd2hpY2ggdGhlIGN1cnJlbnQgdXNlciBpcyBhbHJlYWR5IGEgcGFydCBvZiBpaSkgVGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9ucyB0aGUgdXNlciBjYW4gam9pbiBkaXJlY3RseSAoYmFzZWQgb24gZG9tYWluIHdoaXRlbGlzdGVkIGFuZCB2ZXJpZmllZCBieSB0aGUgb3JnKS4gVGhpcyBsaXN0IHdpbGwgYWxzbyBjb250YWluIG9yZ3Mgb2Ygd2hpY2ggdXNlciBpcyBhbHJlYWR5IGEgcGFydCBvZi4gTm90ZTogdGhlIGRvbWFpbiBuZWVkcyB0byBiZSB2ZXJpZmllZCBieSB0aGUgb3JnIGJlZm9yZSB0aGUgaXQgaXMgcmV0dXJuZWQgYXMgb25lIG9mIHRoZSBqb2luYWJsZSBvcmdzIGJ5IGRvbWFpboLT5JMCIxIhL3YxYmV0YTEvdXNlcnMvc2VsZi9vcmdhbml6YXRpb25zEuwBChJMaXN0UHJvamVjdHNCeVVzZXISNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0c0J5VXNlclJlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0c0J5VXNlclJlc3BvbnNlImmSQUIKBFVzZXISEUdldCB1c2VyIHByb2plY3RzGidHZXQgYWxsIHRoZSBwcm9qZWN0cyBhIHVzZXIgYmVsb25ncyB0by6C0+STAh4SHC92MWJldGExL3VzZXJzL3tpZH0vcHJvamVjdHMShAIKGUxpc3RQcm9qZWN0c0J5Q3VycmVudFVzZXISOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0c0J5Q3VycmVudFVzZXJSZXF1ZXN0GjwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdHNCeUN1cnJlbnRVc2VyUmVzcG9uc2UibJJBRQoEVXNlchIPR2V0IG15IHByb2plY3RzGixHZXQgYWxsIHByb2plY3RzIHRoZSBjdXJyZW50IHVzZXIgYmVsb25ncyB0b4LT5JMCHhIcL3YxYmV0YTEvdXNlcnMvc2VsZi9wcm9qZWN0cxL3AQoTTGlzdFVzZXJJbnZpdGF0aW9ucxI1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFVzZXJJbnZpdGF0aW9uc1JlcXVlc3QaNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2VySW52aXRhdGlvbnNSZXNwb25zZSJxkkFHCgRVc2VyEhVMaXN0IHVzZXIgaW52aXRhdGlvbnMaKExpc3QgYWxsIHRoZSBpbnZpdGF0aW9ucyBzZW50IHRvIGEgdXNlci6C0+STAiESHy92MWJldGExL3VzZXJzL3tpZH0vaW52aXRhdGlvbnMSkgIKGkxpc3RDdXJyZW50VXNlckludml0YXRpb25zEjwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJJbnZpdGF0aW9uc1JlcXVlc3QaPS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDdXJyZW50VXNlckludml0YXRpb25zUmVzcG9uc2Uid5JBTQoEVXNlchIVTGlzdCB1c2VyIGludml0YXRpb25zGi5MaXN0IGFsbCB0aGUgaW52aXRhdGlvbnMgc2VudCB0byBjdXJyZW50IHVzZXIugtPkkwIhEh8vdjFiZXRhMS91c2Vycy9zZWxmL2ludml0YXRpb25zEqgCChBMaXN0U2VydmljZVVzZXJzEjIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJzUmVxdWVzdBozLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2Vyc1Jlc3BvbnNlIqoBkkGJAQoLU2VydmljZVVzZXISFkxpc3Qgb3JnIHNlcnZpY2UgdXNlcnMaYlJldHVybnMgdGhlIHNlcnZpY2UgdXNlciBvZiBhbiBvcmdhbml6YXRpb24gaW4gYSBGcm9udGllciBpbnN0YW5jZS4gSXQgY2FuIGJlIGZpbHRlciBieSBpdCdzIHN0YXRlgtPkkwIXEhUvdjFiZXRhMS9zZXJ2aWNldXNlcnMS9AEKEUNyZWF0ZVNlcnZpY2VVc2VyEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVTZXJ2aWNlVXNlclJlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VyUmVzcG9uc2UidJJBOgoLU2VydmljZVVzZXISE0NyZWF0ZSBzZXJ2aWNlIHVzZXIaFkNyZWF0ZSBhIHNlcnZpY2UgdXNlci6C0+STAjEiLC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzOgEqEvgBCg5HZXRTZXJ2aWNlVXNlchIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0U2VydmljZVVzZXJSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRTZXJ2aWNlVXNlclJlc3BvbnNlIoABkkFECgtTZXJ2aWNlVXNlchIQR2V0IHNlcnZpY2UgdXNlchojR2V0IHNlcnZpY2UgdXNlciBkZXRhaWxzIGJ5IGl0cyBpZC6C0+STAjMSMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0SvgIKEURlbGV0ZVNlcnZpY2VVc2VyEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVTZXJ2aWNlVXNlclJlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVNlcnZpY2VVc2VyUmVzcG9uc2UivQGSQYABCgtTZXJ2aWNlVXNlchITRGVsZXRlIHNlcnZpY2UgdXNlchpcRGVsZXRlIGEgc2VydmljZSB1c2VyIHBlcm1hbmVudGx5IGFuZCBhbGwgb2YgaXRzIHJlbGF0aW9ucyAoa2V5cywgb3JnYW5pemF0aW9ucywgcm9sZXMsIGV0YymC0+STAjMqMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0SmAMKFENyZWF0ZVNlcnZpY2VVc2VySldLEjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVTZXJ2aWNlVXNlckpXS1JlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VySldLUmVzcG9uc2UijgKSQckBCgtTZXJ2aWNlVXNlchIrQ3JlYXRlIHNlcnZpY2UgdXNlciBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFpchqMAUdlbmVyYXRlIGEgc2VydmljZSB1c2VyIGtleSBhbmQgcmV0dXJuIGl0LCB0aGUgcHJpdmF0ZSBrZXkgcGFydCBvZiB0aGUgcmVzcG9uc2Ugd2lsbCBub3QgYmUgcGVyc2lzdGVkIGFuZCBzaG91bGQgYmUga2VwdCBzZWN1cmVseSBieSBjbGllbnQugtPkkwI7IjYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L2tleXM6ASoSrwIKE0xpc3RTZXJ2aWNlVXNlckpXS3MSNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTZXJ2aWNlVXNlckpXS3NSZXF1ZXN0GjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJKV0tzUmVzcG9uc2UiqAGSQWcKC1NlcnZpY2VVc2VyEhZMaXN0IHNlcnZpY2UgdXNlciBrZXlzGkBMaXN0IGFsbCB0aGUga2V5cyBvZiBhIHNlcnZpY2UgdXNlciB3aXRoIGl0cyBkZXRhaWxzIGV4Y2VwdCBqd2sugtPkkwI4EjYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L2tleXMSlgIKEUdldFNlcnZpY2VVc2VySldLEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRTZXJ2aWNlVXNlckpXS1JlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFNlcnZpY2VVc2VySldLUmVzcG9uc2UilQGSQUsKC1NlcnZpY2VVc2VyEhRHZXQgc2VydmljZSB1c2VyIGtleRomR2V0IGEgc2VydmljZSB1c2VyIHB1YmxpYyBSU0EgSldLIHNldC6C0+STAkESPy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0va2V5cy97a2V5X2lkfRKiAgoURGVsZXRlU2VydmljZVVzZXJKV0sSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVNlcnZpY2VVc2VySldLUmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlU2VydmljZVVzZXJKV0tSZXNwb25zZSKYAZJBTgoLU2VydmljZVVzZXISF0RlbGV0ZSBzZXJ2aWNlIHVzZXIga2V5GiZEZWxldGUgYSBzZXJ2aWNlIHVzZXIga2V5IHBlcm1hbmVudGx5LoLT5JMCQSo/L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS9rZXlzL3trZXlfaWR9EqQDChtDcmVhdGVTZXJ2aWNlVXNlckNyZWRlbnRpYWwSPS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlcXVlc3QaPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVNlcnZpY2VVc2VyQ3JlZGVudGlhbFJlc3BvbnNlIoUCkkG9AQoLU2VydmljZVVzZXISJkNyZWF0ZSBzZXJ2aWNlIHVzZXIgY2xpZW50IGNyZWRlbnRpYWxzGoUBR2VuZXJhdGUgYSBzZXJ2aWNlIHVzZXIgY3JlZGVudGlhbCBhbmQgcmV0dXJuIGl0LiBUaGUgY3JlZGVudGlhbCB2YWx1ZSB3aWxsIG5vdCBiZSBwZXJzaXN0ZWQgYW5kIHNob3VsZCBiZSBzZWN1cmVseSBzdG9yZWQgYnkgY2xpZW50LoLT5JMCPiI5L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS9zZWNyZXRzOgEqErkCChpMaXN0U2VydmljZVVzZXJDcmVkZW50aWFscxI8LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2VyQ3JlZGVudGlhbHNSZXF1ZXN0Gj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJDcmVkZW50aWFsc1Jlc3BvbnNlIp0BkkFZCgtTZXJ2aWNlVXNlchIdTGlzdCBzZXJ2aWNlIHVzZXIgY3JlZGVudGlhbHMaK0xpc3QgYWxsIHRoZSBjcmVkZW50aWFscyBvZiBhIHNlcnZpY2UgdXNlci6C0+STAjsSOS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0vc2VjcmV0cxLAAgobRGVsZXRlU2VydmljZVVzZXJDcmVkZW50aWFsEj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVTZXJ2aWNlVXNlckNyZWRlbnRpYWxSZXF1ZXN0Gj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVTZXJ2aWNlVXNlckNyZWRlbnRpYWxSZXNwb25zZSKhAZJBUQoLU2VydmljZVVzZXISH0RlbGV0ZSBzZXJ2aWNlIHVzZXIgY3JlZGVudGlhbHMaIURlbGV0ZSBhIHNlcnZpY2UgdXNlciBjcmVkZW50aWFsLoLT5JMCRypFL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS9zZWNyZXRzL3tzZWNyZXRfaWR9EvwCChZDcmVhdGVTZXJ2aWNlVXNlclRva2VuEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVTZXJ2aWNlVXNlclRva2VuUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlU2VydmljZVVzZXJUb2tlblJlc3BvbnNlIuwBkkGlAQoLU2VydmljZVVzZXISGUNyZWF0ZSBzZXJ2aWNlIHVzZXIgdG9rZW4ae0dlbmVyYXRlIGEgc2VydmljZSB1c2VyIHRva2VuIGFuZCByZXR1cm4gaXQuIFRoZSB0b2tlbiB2YWx1ZSB3aWxsIG5vdCBiZSBwZXJzaXN0ZWQgYW5kIHNob3VsZCBiZSBzZWN1cmVseSBzdG9yZWQgYnkgY2xpZW50LoLT5JMCPSI4L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9zZXJ2aWNldXNlcnMve2lkfS90b2tlbnM6ASoSnwIKFUxpc3RTZXJ2aWNlVXNlclRva2VucxI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2VyVG9rZW5zUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlcnZpY2VVc2VyVG9rZW5zUmVzcG9uc2UikgGSQU8KC1NlcnZpY2VVc2VyEhhMaXN0IHNlcnZpY2UgdXNlciB0b2tlbnMaJkxpc3QgYWxsIHRoZSB0b2tlbnMgb2YgYSBzZXJ2aWNlIHVzZXIugtPkkwI6EjgvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L3Rva2VucxKkAgoWRGVsZXRlU2VydmljZVVzZXJUb2tlbhI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlU2VydmljZVVzZXJUb2tlblJlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZVNlcnZpY2VVc2VyVG9rZW5SZXNwb25zZSKUAZJBRgoLU2VydmljZVVzZXISGURlbGV0ZSBzZXJ2aWNlIHVzZXIgdG9rZW4aHERlbGV0ZSBhIHNlcnZpY2UgdXNlciB0b2tlbi6C0+STAkUqQy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vc2VydmljZXVzZXJzL3tpZH0vdG9rZW5zL3t0b2tlbl9pZH0SsAIKF0xpc3RTZXJ2aWNlVXNlclByb2plY3RzEjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0U2VydmljZVVzZXJQcm9qZWN0c1JlcXVlc3QaOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTZXJ2aWNlVXNlclByb2plY3RzUmVzcG9uc2UinQGSQVgKC1NlcnZpY2VVc2VyEhpMaXN0IHNlcnZpY2Ugc3NlciBwcm9qZWN0cxotTGlzdCBhbGwgcHJvamVjdHMgdGhlIHNlcnZpY2UgdXNlciBiZWxvbmdzIHRvgtPkkwI8EjovdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3NlcnZpY2V1c2Vycy97aWR9L3Byb2plY3RzEuQCChZMaXN0T3JnYW5pemF0aW9uR3JvdXBzEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uR3JvdXBzUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkdyb3Vwc1Jlc3BvbnNlItQBkkGiAQoFR3JvdXASGExpc3Qgb3JnYW5pemF0aW9uIGdyb3Vwcxp/R2V0IGFsbCBncm91cHMgdGhhdCBiZWxvbmcgdG8gYW4gb3JnYW5pemF0aW9uLiBUaGUgcmVzdWx0cyBjYW4gYmUgZmlsdGVyZWQgYnkgc3RhdGUgd2hpY2ggY2FuIGJlIGVpdGhlciBiZSBlbmFibGVkIG9yIGRpc2FibGVkLoLT5JMCKBImL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9ncm91cHMSnQMKC0NyZWF0ZUdyb3VwEi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVHcm91cFJlcXVlc3QaLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUdyb3VwUmVzcG9uc2UirgKSQfYBCgVHcm91cBIMQ3JlYXRlIGdyb3VwGt4BQ3JlYXRlIGEgbmV3IGdyb3VwIGluIGFuIG9yZ2FuaXphdGlvbiB3aGljaCBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIHVzZXJzLiBUaGUgZ3JvdXAgY2FuIGJlIGFzc2lnbmVkIHJvbGVzIGFuZCBwZXJtaXNzaW9ucyBhbmQgY2FuIGJlIHVzZWQgdG8gbWFuYWdlIGFjY2VzcyB0byByZXNvdXJjZXMuIEFsc28gYSBncm91cCBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBvdGhlciBncm91cHMugtPkkwIuIiYvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3VwczoEYm9keRKtAQoIR2V0R3JvdXASKi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEdyb3VwUmVxdWVzdBorLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0R3JvdXBSZXNwb25zZSJIkkESCgVHcm91cBIJR2V0IGdyb3VwgtPkkwItEisvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3Vwcy97aWR9Er8BCgtVcGRhdGVHcm91cBItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlR3JvdXBSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVHcm91cFJlc3BvbnNlIlGSQRUKBUdyb3VwEgxVcGRhdGUgZ3JvdXCC0+STAjMaKy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZ3JvdXBzL3tpZH06BGJvZHkS/gEKDkxpc3RHcm91cFVzZXJzEjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0R3JvdXBVc2Vyc1JlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RHcm91cFVzZXJzUmVzcG9uc2UihgGSQUoKBUdyb3VwEhBMaXN0IGdyb3VwIHVzZXJzGi9SZXR1cm5zIGEgbGlzdCBvZiB1c2VycyB0aGF0IGJlbG9uZyB0byBhIGdyb3VwLoLT5JMCMxIxL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9ncm91cHMve2lkfS91c2VycxLdAgoNQWRkR3JvdXBVc2VycxIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQWRkR3JvdXBVc2Vyc1JlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkFkZEdyb3VwVXNlcnNSZXNwb25zZSLoAZJBqAEKBUdyb3VwEg5BZGQgZ3JvdXAgdXNlchqOAUFkZHMgYSBwcmluY2lwbGUodXNlciBhbmQgc2VydmljZS11c2VycykgdG8gYSBncm91cCwgZXhpc3RpbmcgdXNlcnMgaW4gdGhlIGdyb3VwIHdpbGwgYmUgaWdub3JlZC4gQSBncm91cCBjYW4ndCBoYXZlIG5lc3RlZCBncm91cHMgYXMgbWVtYmVycy6C0+STAjYiMS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZ3JvdXBzL3tpZH0vdXNlcnM6ASoS7wIKD1JlbW92ZUdyb3VwVXNlchIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVtb3ZlR3JvdXBVc2VyUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVtb3ZlR3JvdXBVc2VyUmVzcG9uc2Ui9AGSQa0BCgVHcm91cBIRUmVtb3ZlIGdyb3VwIHVzZXIakAFSZW1vdmVzIGEgcHJpbmNpcGxlKHVzZXIgYW5kIHNlcnZpY2UtdXNlcnMpIGZyb20gYSBncm91cC4gSWYgdGhlIHVzZXIgaXMgbm90IGluIHRoZSBncm91cCwgdGhlIHJlcXVlc3Qgd2lsbCBzdWNjZWVkIGJ1dCBubyBjaGFuZ2VzIHdpbGwgYmUgbWFkZS6C0+STAj0qOy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZ3JvdXBzL3tpZH0vdXNlcnMve3VzZXJfaWR9EsMCCgtFbmFibGVHcm91cBItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlR3JvdXBSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVHcm91cFJlc3BvbnNlItQBkkGTAQoFR3JvdXASDEVuYWJsZSBncm91cBp8U2V0cyB0aGUgc3RhdGUgb2YgdGhlIGdyb3VwIGFzIGVuYWJsZWQuIFRoZSBgZW5hYmxlZGAgZmxhZyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZ3JvdXAgY2FuIGJlIHVzZWQgZm9yIGFjY2VzcyBjb250cm9sLoLT5JMCNyIyL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9ncm91cHMve2lkfS9lbmFibGU6ASoS1AMKDERpc2FibGVHcm91cBIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZUdyb3VwUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZUdyb3VwUmVzcG9uc2Ui4gKSQaACCgVHcm91cBINRGlzYWJsZSBncm91cBqHAlNldHMgdGhlIHN0YXRlIG9mIHRoZSBncm91cCBhcyBkaXNhYmxlZC4gVGhlIGdyb3VwIHdpbGwgbm90IGJlIGF2YWlsYWJsZSBmb3IgYWNjZXNzIGNvbnRyb2wgYW5kIHRoZSBleGlzdGluZyB1c2VycyBpbiB0aGUgZ3JvdXAgd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgYW55IHJlc291cmNlcyB0aGF0IGFyZSBhc3NpZ25lZCB0byB0aGUgZ3JvdXAuIE5vIG90aGVyIHVzZXJzIGNhbiBiZSBhZGRlZCB0byB0aGUgZ3JvdXAgd2hpbGUgaXQgaXMgZGlzYWJsZWQugtPkkwI4IjMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3Vwcy97aWR9L2Rpc2FibGU6ASoS/QEKC0RlbGV0ZUdyb3VwEi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVHcm91cFJlcXVlc3QaLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZUdyb3VwUmVzcG9uc2UijgGSQVgKBUdyb3VwEgxEZWxldGUgZ3JvdXAaQURlbGV0ZSBhbiBvcmdhbml6YXRpb24gZ3JvdXAgcGVybWFuZW50bHkgYW5kIGFsbCBvZiBpdHMgcmVsYXRpb25zgtPkkwItKisvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2dyb3Vwcy97aWR9EpMCCglMaXN0Um9sZXMSKy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RSb2xlc1JlcXVlc3QaLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RSb2xlc1Jlc3BvbnNlIqoBkkGQAQoEUm9sZRITTGlzdCBwbGF0Zm9ybSByb2xlcxpzUmV0dXJucyBhIGxpc3Qgb2YgcGxhdGZvcm0gd2lkZSByb2xlcyBhdmFpbGFibGUgaW4gZW5pdHJlIEZyb250aWVyIGluc3RhbmNlIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBwZXJtaXNzaW9uc4LT5JMCEBIOL3YxYmV0YTEvcm9sZXMSvAIKFUxpc3RPcmdhbml6YXRpb25Sb2xlcxI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblJvbGVzUmVzcG9uc2UirwGSQX8KBFJvbGUSF0xpc3Qgb3JnYW5pemF0aW9uIHJvbGVzGl5SZXR1cm5zIGEgbGlzdCBvZiBjdXN0b20gcm9sZXMgY3JlYXRlZCB1bmRlciBhbiBvcmdhbml6YXRpb24gd2l0aCB0aGVpciBhc3NvY2lhdGVkIHBlcm1pc3Npb25zgtPkkwInEiUvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3JvbGVzEvcCChZDcmVhdGVPcmdhbml6YXRpb25Sb2xlEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlT3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIucBkkGwAQoEUm9sZRIYQ3JlYXRlIG9yZ2FuaXphdGlvbiByb2xlGo0BQ3JlYXRlIGEgY3VzdG9tIHJvbGUgdW5kZXIgYW4gb3JnYW5pemF0aW9uLiBUaGlzIGN1c3RvbSByb2xlIHdpbGwgb25seSBiZSBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnQgdG8gdGhlIHByaW5jaXBsZXMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24ugtPkkwItIiUvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3JvbGVzOgRib2R5EqwCChNHZXRPcmdhbml6YXRpb25Sb2xlEjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBo2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIqUBkkFwCgRSb2xlEhVHZXQgb3JnYW5pemF0aW9uIHJvbGUaUVJldHVybnMgYSBjdXN0b20gcm9sZSB1bmRlciBhbiBvcmdhbml6YXRpb24gYWxvbmcgd2l0aCBpdHMgYXNzb2NpYXRlZCBwZXJtaXNzaW9uc4LT5JMCLBIqL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9yb2xlcy97aWR9EvwCChZVcGRhdGVPcmdhbml6YXRpb25Sb2xlEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVPcmdhbml6YXRpb25Sb2xlUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlT3JnYW5pemF0aW9uUm9sZVJlc3BvbnNlIuwBkkGwAQoEUm9sZRIYVXBkYXRlIG9yZ2FuaXphdGlvbiByb2xlGo0BVXBkYXRlIGEgY3VzdG9tIHJvbGUgdW5kZXIgYW4gb3JnYW5pemF0aW9uLiBUaGlzIGN1c3RvbSByb2xlIHdpbGwgb25seSBiZSBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnQgdG8gdGhlIHByaW5jaXBsZXMgd2l0aGluIHRoZSBvcmdhbml6YXRpb24ugtPkkwIyGiovdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L3JvbGVzL3tpZH06BGJvZHkStwIKFkRlbGV0ZU9yZ2FuaXphdGlvblJvbGUSOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU9yZ2FuaXphdGlvblJvbGVSZXF1ZXN0GjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25Sb2xlUmVzcG9uc2UipwGSQXIKBFJvbGUSGERlbGV0ZSBvcmdhbml6YXRpb24gcm9sZRpQRGVsZXRlIGEgY3VzdG9tIHJvbGUgYW5kIGFsbCBvZiBpdHMgcmVsYXRpb25zIHVuZGVyIGFuIG9yZ2FuaXphdGlvbiBwZXJtYW5lbnRseS6C0+STAiwqKi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vcm9sZXMve2lkfRKaAgoRTGlzdE9yZ2FuaXphdGlvbnMSMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25zUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbnNSZXNwb25zZSKZAZJBeAoMT3JnYW5pemF0aW9uEhJMaXN0IG9yZ2FuaXphdGlvbnMaVFJldHVybnMgYSBsaXN0IG9mIG9yZ2FuaXphdGlvbnMuIEl0IGNhbiBiZSBmaWx0ZXJlZCBieSB1c2VySUQgb3Igb3JnYW5pemF0aW9uIHN0YXRlLoLT5JMCGBIWL3YxYmV0YTEvb3JnYW5pemF0aW9ucxLNAQoSQ3JlYXRlT3JnYW5pemF0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25SZXNwb25zZSJKkkEjCgxPcmdhbml6YXRpb24SE0NyZWF0ZSBvcmdhbml6YXRpb26C0+STAh4iFi92MWJldGExL29yZ2FuaXphdGlvbnM6BGJvZHkS4AEKD0dldE9yZ2FuaXphdGlvbhIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uUmVzcG9uc2UiZpJBQAoMT3JnYW5pemF0aW9uEhBHZXQgb3JnYW5pemF0aW9uGh5HZXQgb3JnYW5pemF0aW9uIGJ5IElEIG9yIG5hbWWC0+STAh0SGy92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfRLtAQoSVXBkYXRlT3JnYW5pemF0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVPcmdhbml6YXRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVPcmdhbml6YXRpb25SZXNwb25zZSJqkkE+CgxPcmdhbml6YXRpb24SE1VwZGF0ZSBvcmdhbml6YXRpb24aGVVwZGF0ZSBvcmdhbml6YXRpb24gYnkgSUSC0+STAiMaGy92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfToEYm9keRKfAgoYTGlzdE9yZ2FuaXphdGlvblByb2plY3RzEjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uUHJvamVjdHNSZXF1ZXN0GjsucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uUHJvamVjdHNSZXNwb25zZSKJAZJBWgoMT3JnYW5pemF0aW9uEhlHZXQgb3JnYW5pemF0aW9uIHByb2plY3RzGi9HZXQgYWxsIHByb2plY3RzIHRoYXQgYmVsb25nIHRvIGFuIG9yZ2FuaXphdGlvboLT5JMCJhIkL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3Byb2plY3RzEo4CChZMaXN0T3JnYW5pemF0aW9uQWRtaW5zEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uQWRtaW5zUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkFkbWluc1Jlc3BvbnNlIn+SQVIKDE9yZ2FuaXphdGlvbhIYTGlzdCBvcmdhbml6YXRpb24gYWRtaW5zGihSZXR1cm5zIGEgbGlzdCBhZG1pbnMgb2YgYW4gb3JnYW5pemF0aW9ugtPkkwIkEiIvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tpZH0vYWRtaW5zEt8BChVMaXN0T3JnYW5pemF0aW9uVXNlcnMSNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1JlcXVlc3QaOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RPcmdhbml6YXRpb25Vc2Vyc1Jlc3BvbnNlIlOSQScKDE9yZ2FuaXphdGlvbhIXTGlzdCBvcmdhbml6YXRpb24gdXNlcnOC0+STAiMSIS92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfS91c2VycxLtAgoUQWRkT3JnYW5pemF0aW9uVXNlcnMSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkFkZE9yZ2FuaXphdGlvblVzZXJzUmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQWRkT3JnYW5pemF0aW9uVXNlcnNSZXNwb25zZSLjAZJBswEKDE9yZ2FuaXphdGlvbhIVQWRkIG9yZ2FuaXphdGlvbiB1c2VyGosBQWRkIGEgdXNlciB0byBhbiBvcmdhbml6YXRpb24uIEEgdXNlciBtdXN0IGV4aXN0cyBpbiBGcm9udGllciBiZWZvcmUgYWRkaW5nIGl0IHRvIGFuIG9yZy4gVGhpcyByZXF1ZXN0IHdpbGwgZmFpbCBpZiB0aGUgdXNlciBkb2Vzbid0IGV4aXN0c4LT5JMCJiIhL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3VzZXJzOgEqEpICChZSZW1vdmVPcmdhbml6YXRpb25Vc2VyEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZW1vdmVPcmdhbml6YXRpb25Vc2VyUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVtb3ZlT3JnYW5pemF0aW9uVXNlclJlc3BvbnNlIoIBkkFMCgxPcmdhbml6YXRpb24SGFJlbW92ZSBvcmdhbml6YXRpb24gdXNlchoiUmVtb3ZlIGEgdXNlciBmcm9tIGFuIG9yZ2FuaXphdGlvboLT5JMCLSorL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3VzZXJzL3t1c2VyX2lkfRKWAgoSR2V0T3JnYW5pemF0aW9uS3ljEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRPcmdhbml6YXRpb25LeWNSZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRPcmdhbml6YXRpb25LeWNSZXNwb25zZSKSAZJBZAoPT3JnYW5pemF0aW9uS3ljEh9HZXQgS1lDIGluZm8gb2YgYW4gb3JnYW5pemF0aW9uGjBHZXQgS1lDIGluZm8gb2YgYW4gb3JnYW5pemF0aW9uIHVzaW5nIElEIG9yIG5hbWWC0+STAiUSIy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0va3ljEoMCChxMaXN0T3JnYW5pemF0aW9uU2VydmljZVVzZXJzEj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uU2VydmljZVVzZXJzUmVxdWVzdBo/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvblNlcnZpY2VVc2Vyc1Jlc3BvbnNlImKSQS8KDE9yZ2FuaXphdGlvbhIfTGlzdCBvcmdhbml6YXRpb24gc2VydmljZSB1c2Vyc4LT5JMCKhIoL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3NlcnZpY2V1c2VycxK5AgobTGlzdE9yZ2FuaXphdGlvbkludml0YXRpb25zEj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uSW52aXRhdGlvbnNSZXF1ZXN0Gj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uSW52aXRhdGlvbnNSZXNwb25zZSKaAZJBZAoMT3JnYW5pemF0aW9uEhhMaXN0IHBlbmRpbmcgaW52aXRhdGlvbnMaOlJldHVybnMgYWxsIHBlbmRpbmcgaW52aXRhdGlvbnMgcXVldWVkIGZvciBhbiBvcmdhbml6YXRpb26C0+STAi0SKy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vaW52aXRhdGlvbnMS9gIKHENyZWF0ZU9yZ2FuaXphdGlvbkludml0YXRpb24SPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZU9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0Gj8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2Ui1AGSQZoBCgxPcmdhbml6YXRpb24SC0ludml0ZSB1c2VyGn1JbnZpdGUgdXNlcnMgdG8gYW4gb3JnYW5pemF0aW9uLCBpZiB1c2VyIGlzIG5vdCByZWdpc3RlcmVkIG9uIHRoZSBwbGF0Zm9ybSwgaXQgd2lsbCBiZSBub3RpZmllZC4gSW52aXRhdGlvbnMgZXhwaXJlIGluIDcgZGF5c4LT5JMCMCIrL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9pbnZpdGF0aW9uczoBKhKzAgoZR2V0T3JnYW5pemF0aW9uSW52aXRhdGlvbhI7LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uSW52aXRhdGlvblJlcXVlc3QaPC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldE9yZ2FuaXphdGlvbkludml0YXRpb25SZXNwb25zZSKaAZJBXwoMT3JnYW5pemF0aW9uEhZHZXQgcGVuZGluZyBpbnZpdGF0aW9uGjdSZXR1cm5zIGEgcGVuZGluZyBpbnZpdGF0aW9uIHF1ZXVlZCBmb3IgYW4gb3JnYW5pemF0aW9ugtPkkwIyEjAvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2ludml0YXRpb25zL3tpZH0SmQMKHEFjY2VwdE9yZ2FuaXphdGlvbkludml0YXRpb24SPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkFjY2VwdE9yZ2FuaXphdGlvbkludml0YXRpb25SZXF1ZXN0Gj8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BY2NlcHRPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVzcG9uc2Ui9wGSQbEBCgxPcmdhbml6YXRpb24SGUFjY2VwdCBwZW5kaW5nIGludml0YXRpb24ahQFBY2NlcHQgcGVuZGluZyBpbnZpdGF0aW9uIHF1ZXVlZCBmb3IgYW4gb3JnYW5pemF0aW9uLiBUaGUgdXNlciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBvcmdhbml6YXRpb24gYW5kIGdyb3VwcyBkZWZpbmVkIGluIHRoZSBpbnZpdGF0aW9ugtPkkwI8IjcvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2ludml0YXRpb25zL3tpZH0vYWNjZXB0OgEqEr4CChxEZWxldGVPcmdhbml6YXRpb25JbnZpdGF0aW9uEj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25JbnZpdGF0aW9uUmVxdWVzdBo/LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlT3JnYW5pemF0aW9uSW52aXRhdGlvblJlc3BvbnNlIpwBkkFhCgxPcmdhbml6YXRpb24SGURlbGV0ZSBwZW5kaW5nIGludml0YXRpb24aNkRlbGV0ZSBhIHBlbmRpbmcgaW52aXRhdGlvbiBxdWV1ZWQgZm9yIGFuIG9yZ2FuaXphdGlvboLT5JMCMiowL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9pbnZpdGF0aW9ucy97aWR9EtgDChdMaXN0T3JnYW5pemF0aW9uRG9tYWlucxI5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE9yZ2FuaXphdGlvbkRvbWFpbnNSZXF1ZXN0GjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uRG9tYWluc1Jlc3BvbnNlIsUCkkGSAgoMT3JnYW5pemF0aW9uEhBMaXN0IG9yZyBkb21haW5zGu8BUmV0dXJucyBhbGwgZG9tYWlucyB3aGl0ZWxpc3RlZCBmb3IgYW4gb3JnYW5pemF0aW9uIChib3RoIHBlbmRpbmcgYW5kIHZlcmlmaWVkIGlmIG5vIGZpbHRlcnMgYXJlIHByb3ZpZGVkIGZvciB0aGUgc3RhdGUpLiBUaGUgdmVyaWZpZWQgZG9tYWlucyBhbGxvdyB1c2VycyBlbWFpbCB3aXRoIHRoZSBvcmcncyB3aGl0ZWxpc3RlZCBkb21haW4gdG8gam9pbiB0aGUgb3JnYW5pemF0aW9uIHdpdGhvdXQgaW52aXRhdGlvbi6C0+STAikSJy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vZG9tYWlucxL+BAoYQ3JlYXRlT3JnYW5pemF0aW9uRG9tYWluEjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25Eb21haW5SZXF1ZXN0GjsucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25Eb21haW5SZXNwb25zZSLoA5JBsgMKDE9yZ2FuaXphdGlvbhIRQ3JlYXRlIG9yZyBkb21haW4ajgNBZGQgYSBkb21haW4gdG8gYW4gb3JnYW5pemF0aW9uIHdoaWNoIGlmIHZlcmlmaWVkIGFsbG93cyBhbGwgdXNlcnMgb2YgdGhlIHNhbWUgZG9tYWluIHRvIGJlIHNpZ25lZCB1cCB0byB0aGUgb3JnYW5pemF0aW9uIHdpdGhvdXQgaW52aXRhdGlvbi4gVGhpcyBBUEkgZ2VuZXJhdGVzIGEgdmVyaWZpY2F0aW9uIHRva2VuIGZvciBhIGRvbWFpbiB3aGljaCBtdXN0IGJlIGFkZGVkIHRvIHlvdXIgZG9tYWluJ3MgRE5TIHByb3ZpZGVyIGFzIGEgVFhUIHJlY29yZCBzaG91bGQgYmUgdmVyaWZpZWQgd2l0aCBGcm9udGllciBWZXJpZnlPcmdhbml6YXRpb25Eb21haW4gQVBJIGJlZm9yZSBpdCBjYW4gYmUgdXNlZCBhcyBhbiBPcmdhbml6YXRpb24ncyB0cnVzdGVkIGRvbWFpbiB0byBzaWduIHVwIHVzZXJzLoLT5JMCLCInL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9kb21haW5zOgEqErcCChhEZWxldGVPcmdhbml6YXRpb25Eb21haW4SOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU9yZ2FuaXphdGlvbkRvbWFpblJlcXVlc3QaOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU9yZ2FuaXphdGlvbkRvbWFpblJlc3BvbnNlIqEBkkFqCgxPcmdhbml6YXRpb24SEURlbGV0ZSBvcmcgZG9tYWluGkdSZW1vdmUgYSBkb21haW4gZnJvbSB0aGUgbGlzdCBvZiBhbiBvcmdhbml6YXRpb24ncyB0cnVzdGVkIGRvbWFpbnMgbGlzdILT5JMCLiosL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9kb21haW5zL3tpZH0S4gIKFUdldE9yZ2FuaXphdGlvbkRvbWFpbhI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0T3JnYW5pemF0aW9uRG9tYWluUmVzcG9uc2Ui1QGSQZ0BCgxPcmdhbml6YXRpb24SDkdldCBvcmcgZG9tYWluGn1HZXQgYSBkb21haW4gZnJvbSB0aGUgbGlzdCBvZiBhbiBvcmdhbml6YXRpb24ncyB3aGl0ZWxpc3RlZCBkb21haW5zLiBSZXR1cm5zIGJvdGggdmVyaWZpZWQgYW5kIHVudmVyaWZpZWQgZG9tYWlucyBieSB0aGVpciBJRILT5JMCLhIsL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9kb21haW5zL3tpZH0SpQQKGFZlcmlmeU9yZ2FuaXphdGlvbkRvbWFpbhI6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVmVyaWZ5T3JnYW5pemF0aW9uRG9tYWluUmVxdWVzdBo7LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVmVyaWZ5T3JnYW5pemF0aW9uRG9tYWluUmVzcG9uc2UijwOSQc0CCgxPcmdhbml6YXRpb24SEVZlcmlmeSBvcmcgZG9tYWluGqkCVmVyaWZ5IGEgZG9tYWluIGZvciBhbiBvcmdhbml6YXRpb24gd2l0aCBhIHZlcmlmaWNhdGlvbiB0b2tlbiBnZW5lcmF0ZWQgYnkgRnJvbnRpZXIgR2VuZXJhdGVEb21haW5WZXJpZmljYXRpb25Ub2tlbiBBUEkuIFRoZSB0b2tlbiBtdXN0IGJlIGFkZGVkIHRvIHlvdXIgZG9tYWluJ3MgRE5TIHByb3ZpZGVyIGFzIGEgVFhUIHJlY29yZCBiZWZvcmUgaXQgY2FuIGJlIHZlcmlmaWVkLiBUaGlzIEFQSSByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgZG9tYWluIChwZW5kaW5nL3ZlcmlmaWVkKSBhZnRlciB2ZXJpZmljYXRpb24ugtPkkwI4IjMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2RvbWFpbnMve2lkfS92ZXJpZnk6ASoSkgMKEEpvaW5Pcmdhbml6YXRpb24SMi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkpvaW5Pcmdhbml6YXRpb25SZXF1ZXN0GjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5Kb2luT3JnYW5pemF0aW9uUmVzcG9uc2UilAKSQeEBCgxPcmdhbml6YXRpb24SEUpvaW4gb3JnYW5pemF0aW9uGr0BQWxsb3dzIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHRvIGpvaW4gdGhlIE9yZyBpZiBvbmUgaXMgbm90IGEgcGFydCBvZiBpdC4gVGhlIHVzZXIgd2lsbCBvbmx5IGJlIGFibGUgdG8gam9pbiB3aGVuIHRoZSB1c2VyIGVtYWlsJ3MgZG9tYWluIG1hdGNoZXMgdGhlIG9yZ2FuaXphdGlvbidzIHdoaXRlbGlzdGVkIGRvbWFpbnMugtPkkwIpIiQvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2pvaW46ASoS2QIKEkVuYWJsZU9yZ2FuaXphdGlvbhI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlT3JnYW5pemF0aW9uUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlT3JnYW5pemF0aW9uUmVzcG9uc2Ui1QGSQaQBCgxPcmdhbml6YXRpb24SE0VuYWJsZSBvcmdhbml6YXRpb24af1NldHMgdGhlIHN0YXRlIG9mIHRoZSBvcmdhbml6YXRpb24gYXMgZW5hYmxlZC4gVGhlIGV4aXN0aW5nIHVzZXJzIGluIHRoZSBvcmcgd2lsbCBiZSBhYmxlIHRvIGFjY2VzcyBhbnkgb3JnYW5pemF0aW9uIHJlc291cmNlcy6C0+STAiciIi92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfS9lbmFibGU6ASoS5AIKE0Rpc2FibGVPcmdhbml6YXRpb24SNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRpc2FibGVPcmdhbml6YXRpb25SZXF1ZXN0GjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlT3JnYW5pemF0aW9uUmVzcG9uc2Ui3QGSQasBCgxPcmdhbml6YXRpb24SFERpc2FibGUgb3JnYW5pemF0aW9uGoQBU2V0cyB0aGUgc3RhdGUgb2YgdGhlIG9yZ2FuaXphdGlvbiBhcyBkaXNhYmxlZC4gVGhlIGV4aXN0aW5nIHVzZXJzIGluIHRoZSBvcmcgd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgYW55IG9yZ2FuaXphdGlvbiByZXNvdXJjZXMugtPkkwIoIiMvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tpZH0vZGlzYWJsZToBKhLGAgoSRGVsZXRlT3JnYW5pemF0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVPcmdhbml6YXRpb25SZXNwb25zZSLCAZJBmwEKDE9yZ2FuaXphdGlvbhITRGVsZXRlIG9yZ2FuaXphdGlvbhp2RGVsZXRlIGFuIG9yZ2FuaXphdGlvbiBhbmQgYWxsIG9mIGl0cyByZWxhdGlvbnMgcGVybWFuZW50bHkuIFRoZSBvcmdhbml6YXRpb24gdXNlcnMgd2lsbCBub3QgYmUgZGVsZXRlZCBmcm9tIEZyb250aWVyLoLT5JMCHSobL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9Eq8BCg1DcmVhdGVQcm9qZWN0Ei8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9qZWN0UmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUHJvamVjdFJlc3BvbnNlIjuSQRkKB1Byb2plY3QSDkNyZWF0ZSBwcm9qZWN0gtPkkwIZIhEvdjFiZXRhMS9wcm9qZWN0czoEYm9keRK7AQoKR2V0UHJvamVjdBIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvamVjdFJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFByb2plY3RSZXNwb25zZSJQkkEvCgdQcm9qZWN0EgtHZXQgcHJvamVjdBoXUmV0dXJucyBhIHByb2plY3QgYnkgSUSC0+STAhgSFi92MWJldGExL3Byb2plY3RzL3tpZH0SzQEKDVVwZGF0ZVByb2plY3QSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVByb2plY3RSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9qZWN0UmVzcG9uc2UiWZJBMgoHUHJvamVjdBIOVXBkYXRlIHByb2plY3QaF1VwZGF0ZXMgYSBwcm9qZWN0IGJ5IElEgtPkkwIeGhYvdjFiZXRhMS9wcm9qZWN0cy97aWR9OgRib2R5EvMBChFMaXN0UHJvamVjdEFkbWlucxIzLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RBZG1pbnNSZXF1ZXN0GjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdEFkbWluc1Jlc3BvbnNlInOSQUsKB1Byb2plY3QSE0xpc3QgcHJvamVjdCBhZG1pbnMaK1JldHVybnMgYSBjb2xsZWN0aW9uIG9mIGFkbWlucyBvZiBhIHByb2plY3SC0+STAh8SHS92MWJldGExL3Byb2plY3RzL3tpZH0vYWRtaW5zEpgCChBMaXN0UHJvamVjdFVzZXJzEjIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdFVzZXJzUmVxdWVzdBozLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RVc2Vyc1Jlc3BvbnNlIpoBkkFzCgdQcm9qZWN0EhJMaXN0IHByb2plY3QgdXNlcnMaVFJldHVybnMgYSBjb2xsZWN0aW9uIG9mIHVzZXJzIG9mIGEgcHJvamVjdC4gRmlsdGVyIGJ5IHVzZXIgcGVybWlzc2lvbnMgaXMgc3VwcG9ydGVkLoLT5JMCHhIcL3YxYmV0YTEvcHJvamVjdHMve2lkfS91c2VycxKRAgoXTGlzdFByb2plY3RTZXJ2aWNlVXNlcnMSOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0U2VydmljZVVzZXJzUmVxdWVzdBo6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RTZXJ2aWNlVXNlcnNSZXNwb25zZSJ/kkFRCgdQcm9qZWN0EhlMaXN0IHByb2plY3Qgc2VydmljZXVzZXJzGitSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiB1c2VycyBvZiBhIHByb2plY3QugtPkkwIlEiMvdjFiZXRhMS9wcm9qZWN0cy97aWR9L3NlcnZpY2V1c2VycxL0AQoRTGlzdFByb2plY3RHcm91cHMSMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0R3JvdXBzUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RHcm91cHNSZXNwb25zZSJ0kkFMCgdQcm9qZWN0EhNMaXN0IHByb2plY3QgZ3JvdXBzGixSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBncm91cHMgb2YgYSBwcm9qZWN0LoLT5JMCHxIdL3YxYmV0YTEvcHJvamVjdHMve2lkfS9ncm91cHMSuAEKDUVuYWJsZVByb2plY3QSLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkVuYWJsZVByb2plY3RSZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5FbmFibGVQcm9qZWN0UmVzcG9uc2UiRJJBGQoHUHJvamVjdBIORW5hYmxlIHByb2plY3SC0+STAiIiHS92MWJldGExL3Byb2plY3RzL3tpZH0vZW5hYmxlOgEqEr0BCg5EaXNhYmxlUHJvamVjdBIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGlzYWJsZVByb2plY3RSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EaXNhYmxlUHJvamVjdFJlc3BvbnNlIkaSQRoKB1Byb2plY3QSD0Rpc2FibGUgcHJvamVjdILT5JMCIyIeL3YxYmV0YTEvcHJvamVjdHMve2lkfS9kaXNhYmxlOgEqEuIBCg1EZWxldGVQcm9qZWN0Ei8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVQcm9qZWN0UmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUHJvamVjdFJlc3BvbnNlIm6SQU0KB1Byb2plY3QSDkRlbGV0ZSBQcm9qZWN0GjJEZWxldGUgYSBwcm9qZWN0IGFsbCBvZiBpdHMgcmVsYXRpb25zIHBlcm1hbmVudGx5LoLT5JMCGCoWL3YxYmV0YTEvcHJvamVjdHMve2lkfRK9AQoMQ3JlYXRlUG9saWN5Ei4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lSZXNwb25zZSJMkkEqCgZQb2xpY3kSDUNyZWF0ZSBwb2xpY3kaEUNyZWF0ZXMgYSBwb2xpY3kggtPkkwIZIhEvdjFiZXRhMS9wb2xpY2llczoEYm9keRK1AQoJR2V0UG9saWN5EisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQb2xpY3lSZXF1ZXN0GiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQb2xpY3lSZXNwb25zZSJNkkEsCgZQb2xpY3kSCkdldCBwb2xpY3kaFlJldHVybnMgYSBwb2xpY3kgYnkgSUSC0+STAhgSFi92MWJldGExL3BvbGljaWVzL3tpZH0SuQIKDExpc3RQb2xpY2llcxIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBvbGljaWVzUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBvbGljaWVzUmVzcG9uc2UixwGSQaoBCgZQb2xpY3kSEUxpc3QgYWxsIHBvbGljaWVzGowBTGlzdHMgYWxsIHRoZSBwb2xpY2llcyBmcm9tIGFsbCB0aGUgb3JnYW5pemF0aW9ucyBpbiBhIEZyb250aWVyIGluc3RhbmNlLiBJdCBjYW4gYmUgZmlsdGVyZWQgYnkgb3JnYW5pemF0aW9uLCBwcm9qZWN0LCB1c2VyLCByb2xlIGFuZCBncm91cC6C0+STAhMSES92MWJldGExL3BvbGljaWVzEscBCgxVcGRhdGVQb2xpY3kSLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVBvbGljeVJlcXVlc3QaLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVBvbGljeVJlc3BvbnNlIlaSQS8KBlBvbGljeRINVXBkYXRlIHBvbGljeRoWVXBkYXRlcyBhIHBvbGljeSBieSBJRILT5JMCHhoWL3YxYmV0YTEvcG9saWNpZXMve2lkfToEYm9keRLcAQoMRGVsZXRlUG9saWN5Ei4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVQb2xpY3lSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVQb2xpY3lSZXNwb25zZSJrkkFKCgZQb2xpY3kSDURlbGV0ZSBQb2xpY3kaMURlbGV0ZSBhIHBvbGljeSBhbGwgb2YgaXRzIHJlbGF0aW9ucyBwZXJtYW5lbnRseS6C0+STAhgqFi92MWJldGExL3BvbGljaWVzL3tpZH0SiQIKFkNyZWF0ZVBvbGljeUZvclByb2plY3QSOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVBvbGljeUZvclByb2plY3RSZXF1ZXN0GjkucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQb2xpY3lGb3JQcm9qZWN0UmVzcG9uc2UiepJBQgoGUG9saWN5EhlDcmVhdGUgUG9saWN5IGZvciBQcm9qZWN0Gh1DcmVhdGUgYSBwb2xpY3kgZm9yIGEgcHJvamVjdILT5JMCLyInL3YxYmV0YTEvcG9saWNpZXMvcHJvamVjdHMve3Byb2plY3RfaWR9OgRib2R5ErUBCg5DcmVhdGVSZWxhdGlvbhIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUmVsYXRpb25SZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVSZWxhdGlvblJlc3BvbnNlIj6SQRsKCFJlbGF0aW9uEg9DcmVhdGUgcmVsYXRpb26C0+STAhoiEi92MWJldGExL3JlbGF0aW9uczoEYm9keRLCAQoLR2V0UmVsYXRpb24SLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFJlbGF0aW9uUmVxdWVzdBouLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UmVsYXRpb25SZXNwb25zZSJUkkEyCghSZWxhdGlvbhIMR2V0IHJlbGF0aW9uGhhSZXR1cm5zIGEgcmVsYXRpb24gYnkgSUSC0+STAhkSFy92MWJldGExL3JlbGF0aW9ucy97aWR9EpACCg5EZWxldGVSZWxhdGlvbhIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUmVsYXRpb25SZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVSZWxhdGlvblJlc3BvbnNlIpgBkkFOCghSZWxhdGlvbhIPRGVsZXRlIHJlbGF0aW9uGjFSZW1vdmUgYSBzdWJqZWN0IGhhdmluZyBhIHJlbGF0aW9uIGZyb20gYW4gb2JqZWN0gtPkkwJBKj8vdjFiZXRhMS9yZWxhdGlvbnMve3JlbGF0aW9ufS9vYmplY3Qve29iamVjdH0vc3ViamVjdC97c3ViamVjdH0SugEKD0xpc3RQZXJtaXNzaW9ucxIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBlcm1pc3Npb25zUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFBlcm1pc3Npb25zUmVzcG9uc2UiQJJBIQoKUGVybWlzc2lvbhITR2V0IGFsbCBwZXJtaXNzaW9uc4LT5JMCFhIUL3YxYmV0YTEvcGVybWlzc2lvbnMS0AEKDUdldFBlcm1pc3Npb24SLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFBlcm1pc3Npb25SZXF1ZXN0GjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQZXJtaXNzaW9uUmVzcG9uc2UiXJJBOAoKUGVybWlzc2lvbhIOR2V0IHBlcm1pc3Npb24aGlJldHVybnMgYSBwZXJtaXNzaW9uIGJ5IElEgtPkkwIbEhkvdjFiZXRhMS9wZXJtaXNzaW9ucy97aWR9Eu8BCg5MaXN0TmFtZXNwYWNlcxIwLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE5hbWVzcGFjZXNSZXF1ZXN0GjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0TmFtZXNwYWNlc1Jlc3BvbnNlIniSQVoKCU5hbWVzcGFjZRISR2V0IGFsbCBuYW1lc3BhY2VzGjlSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBuYW1lc3BhY2VzIGluIGEgRnJvbnRpZXIgaW5zdGFuY2WC0+STAhUSEy92MWJldGExL25hbWVzcGFjZXMSyQEKDEdldE5hbWVzcGFjZRIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0TmFtZXNwYWNlUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0TmFtZXNwYWNlUmVzcG9uc2UiWJJBNQoJTmFtZXNwYWNlEg1HZXQgbmFtZXNwYWNlGhlSZXR1cm5zIGEgbmFtZXNwYWNlIGJ5IElEgtPkkwIaEhgvdjFiZXRhMS9uYW1lc3BhY2VzL3tpZH0S2QEKFExpc3RQcm9qZWN0UmVzb3VyY2VzEjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvamVjdFJlc291cmNlc1JlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0UmVzb3VyY2VzUmVzcG9uc2UiUJJBHQoIUmVzb3VyY2USEUdldCBhbGwgcmVzb3VyY2VzgtPkkwIqEigvdjFiZXRhMS9wcm9qZWN0cy97cHJvamVjdF9pZH0vcmVzb3VyY2VzEoECChVDcmVhdGVQcm9qZWN0UmVzb3VyY2USNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2plY3RSZXNvdXJjZVJlcXVlc3QaOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2plY3RSZXNvdXJjZVJlc3BvbnNlInWSQTwKCFJlc291cmNlEg9DcmVhdGUgcmVzb3VyY2UaH0NyZWF0ZXMgYSByZXNvdXJjZSBpbiBhIHByb2plY3SC0+STAjAiKC92MWJldGExL3Byb2plY3RzL3twcm9qZWN0X2lkfS9yZXNvdXJjZXM6BGJvZHkS9QEKEkdldFByb2plY3RSZXNvdXJjZRI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvamVjdFJlc291cmNlUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvamVjdFJlc291cmNlUmVzcG9uc2UicpJBOgoIUmVzb3VyY2USDEdldCByZXNvdXJjZRogUmV0dXJucyBhIHByb2plY3QgcmVzb3VyY2UgYnkgSUSC0+STAi8SLS92MWJldGExL3Byb2plY3RzL3twcm9qZWN0X2lkfS9yZXNvdXJjZXMve2lkfRKGAgoVVXBkYXRlUHJvamVjdFJlc291cmNlEjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9qZWN0UmVzb3VyY2VSZXF1ZXN0GjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQcm9qZWN0UmVzb3VyY2VSZXNwb25zZSJ6kkE8CghSZXNvdXJjZRIPVXBkYXRlIHJlc291cmNlGh9VcGRhdGVzIGEgcmVzb3VyY2UgaW4gYSBwcm9qZWN0gtPkkwI1Gi0vdjFiZXRhMS9wcm9qZWN0cy97cHJvamVjdF9pZH0vcmVzb3VyY2VzL3tpZH06BGJvZHkSjwIKFURlbGV0ZVByb2plY3RSZXNvdXJjZRI3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUHJvamVjdFJlc291cmNlUmVxdWVzdBo4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlUHJvamVjdFJlc291cmNlUmVzcG9uc2UiggGSQUoKCFJlc291cmNlEg9EZWxldGUgcmVzb3VyY2UaLURlbGV0ZXMgYSByZXNvdXJjZSBmcm9tIGEgcHJvamVjdCBwZXJtYW5lbnRseYLT5JMCLyotL3YxYmV0YTEvcHJvamVjdHMve3Byb2plY3RfaWR9L3Jlc291cmNlcy97aWR9EvsDChdDaGVja1Jlc291cmNlUGVybWlzc2lvbhI5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tSZXNvdXJjZVBlcm1pc3Npb25SZXF1ZXN0GjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja1Jlc291cmNlUGVybWlzc2lvblJlc3BvbnNlIugCkkHLAgoFQXV0aHoSBUNoZWNrGroCUmV0dXJucyB0cnVlIGlmIGEgcHJpbmNpcGFsIGhhcyByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgYSByZXNvdXJjZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLjxici8+IE5vdGUgdGhlIHByaW5jaXBhbCBjYW4gYmUgYSB1c2VyIG9yIGEgc2VydmljZSBhY2NvdW50LiBGcm9udGllciB3aWxsIGV4dHJhY3QgcHJpbmNpcGFsIGZyb20gdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHNlc3Npb24gY29va2llIChpZiBhbnkpLCBvciB0aGUgY2xpZW50IGlkIGFuZCBzZWNyZXQgKGluIGNhc2Ugb2Ygc2VydmljZSB1c2Vycykgb3IgdGhlIGFjY2VzcyB0b2tlbi6C0+STAhMiDi92MWJldGExL2NoZWNrOgEqErMEChRCYXRjaENoZWNrUGVybWlzc2lvbhI2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmF0Y2hDaGVja1Blcm1pc3Npb25SZXF1ZXN0GjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CYXRjaENoZWNrUGVybWlzc2lvblJlc3BvbnNlIqkDkkGHAwoFQXV0aHoSC0JhdGNoIGNoZWNrGvACUmV0dXJucyB0cnVlIGlmIGEgcHJpbmNpcGFsIGhhcyByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgYSByZXNvdXJjZSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLjxici8+IE5vdGUgdGhlIHByaW5jaXBhbCBjYW4gYmUgYSB1c2VyIG9yIGEgc2VydmljZSBhY2NvdW50LCBhbmQgRnJvbnRpZXIgd2lsbCB0aGUgY3JlZGVudGlhbHMgZnJvbSB0aGUgY3VycmVudCBsb2dnZWQgaW4gcHJpbmNpcGFsIGZyb20gdGhlIHNlc3Npb24gY29va2llIChpZiBhbnkpLCBvciB0aGUgY2xpZW50IGlkIGFuZCBzZWNyZXQgKGluIGNhc2Ugb2Ygc2VydmljZSB1c2Vycykgb3IgdGhlIGFjY2VzcyB0b2tlbiAoaW4gY2FzZSBvZiBodW1hbiB1c2VyIGFjY291bnRzKS6C0+STAhgiEy92MWJldGExL2JhdGNoY2hlY2s6ASoStQEKB0dldEpXS3MSKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEpXS3NSZXF1ZXN0GioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRKV0tzUmVzcG9uc2UiU5JBHAoFQXV0aHoSE0dldCB3ZWxsIGtub3duIEpXS3OC0+STAi4SEi92MWJldGExL2F1dGgvandrc1oYEhYvLndlbGwta25vd24vandrcy5qc29uEnEKDExpc3RTZXNzaW9ucxIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlc3Npb25zUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFNlc3Npb25zUmVzcG9uc2UiABJ0Cg1SZXZva2VTZXNzaW9uEi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZXZva2VTZXNzaW9uUmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmV2b2tlU2Vzc2lvblJlc3BvbnNlIgASegoPUGluZ1VzZXJTZXNzaW9uEjEucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QaW5nVXNlclNlc3Npb25SZXF1ZXN0GjIucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5QaW5nVXNlclNlc3Npb25SZXNwb25zZSIAErcCChJMaXN0QXV0aFN0cmF0ZWdpZXMSNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RBdXRoU3RyYXRlZ2llc1JlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RBdXRoU3RyYXRlZ2llc1Jlc3BvbnNlIrMBkkGaAQoFQXV0aG4SHkxpc3QgYXV0aGVudGljYXRpb24gc3RyYXRlZ2llcxpxUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpdHkgcHJvdmlkZXJzIGNvbmZpZ3VyZWQgb24gYW4gaW5zdGFuY2UgbGV2ZWwgaW4gRnJvbnRpZXIuIGUuZyBHb29nbGUsIEF6dXJlQUQsIEdpdGh1YiBldGOC0+STAg8SDS92MWJldGExL2F1dGgS6QQKDEF1dGhlbnRpY2F0ZRIuLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aGVudGljYXRlUmVxdWVzdBovLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aGVudGljYXRlUmVzcG9uc2Ui9wOSQZgDCgVBdXRobhIcQXV0aGVudGljYXRlIHdpdGggYSBzdHJhdGVneRrwAkF1dGhlbnRpY2F0ZSBhIHVzZXIgd2l0aCBhIHN0cmF0ZWd5LiBCeSBkZWZhdWx0LCBhZnRlciBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uIG5vIG9wZXJhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCB0byBhcHBseSByZWRpcmVjdGlvbiBpbiBjYXNlIG9mIGJyb3dzZXJzLCBwcm92aWRlIGEgdXJsIGluIHRoZSBhdXRoZW50aWNhdGUgcmVxdWVzdCBib2R5IHRoYXQgd2lsbCBiZSB1c2VkIGZvciByZWRpcmVjdGlvbiBhZnRlciBhdXRoZW50aWNhdGlvbi4gQWxzbyBzZXQgcmVkaXJlY3QgYXMgdHJ1ZSBmb3IgcmVkaXJlY3RpbmcgdGhlIHVzZXIgcmVxdWVzdCB0byB0aGUgcmVkaXJlY3RfdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24ugtPkkwJVEiYvdjFiZXRhMS9hdXRoL3JlZ2lzdGVyL3tzdHJhdGVneV9uYW1lfVorIiYvdjFiZXRhMS9hdXRoL3JlZ2lzdGVyL3tzdHJhdGVneV9uYW1lfToBKhK9BAoMQXV0aENhbGxiYWNrEi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoQ2FsbGJhY2tSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoQ2FsbGJhY2tSZXNwb25zZSLLA5JBjAMKBUF1dGhuEhhDYWxsYmFjayBmcm9tIGEgc3RyYXRlZ3ka6AJDYWxsYmFjayBmcm9tIGEgc3RyYXRlZ3kuIFRoaXMgaXMgdGhlIGVuZHBvaW50IHdoZXJlIHRoZSBzdHJhdGVneSB3aWxsIHJlZGlyZWN0IHRoZSB1c2VyIGFmdGVyIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24uIFRoaXMgZW5kcG9pbnQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgY29kZSBhbmQgc3RhdGUgcXVlcnkgcGFyYW1ldGVycy4gVGhlIGNvZGUgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHN0cmF0ZWd5IGFuZCB0aGUgc3RhdGUgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgcmV0dXJuX3RvIHVybCBmcm9tIHRoZSBzZXNzaW9uIGFuZCByZWRpcmVjdCB0aGUgdXNlciB0byB0aGF0IHVybC6C0+STAjUSFi92MWJldGExL2F1dGgvY2FsbGJhY2taGyIWL3YxYmV0YTEvYXV0aC9jYWxsYmFjazoBKhLCAwoJQXV0aFRva2VuEisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoVG9rZW5SZXF1ZXN0GiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5BdXRoVG9rZW5SZXNwb25zZSLZApJBtwIKBUF1dGhuEipHZW5lcmF0ZSBhY2Nlc3MgdG9rZW4gYnkgZ2l2ZW4gY3JlZGVudGlhbHMagQJBY2Nlc3MgdG9rZW4gY2FuIGJlIGdlbmVyYXRlZCBieSBwcm92aWRpbmcgdGhlIGNyZWRlbnRpYWxzIGluIHRoZSByZXF1ZXN0IGJvZHkvaGVhZGVyLiBUaGUgY3JlZGVudGlhbHMgY2FuIGJlIGNsaWVudCBpZCBhbmQgc2VjcmV0IG9yIHNlcnZpY2UgYWNjb3VudCBnZW5lcmF0ZWQga2V5IGp3dC4gVXNlIHRoZSBnZW5lcmF0ZWQgYWNjZXNzIHRva2VuIGluIEF1dGhvcml6YXRpb24gaGVhZGVyIHRvIGFjY2VzcyB0aGUgZnJvbnRpZXIgcmVzb3VyY2VzLoLT5JMCGCITL3YxYmV0YTEvYXV0aC90b2tlbjoBKhLBAQoKQXV0aExvZ291dBIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQXV0aExvZ291dFJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkF1dGhMb2dvdXRSZXNwb25zZSJWkkEfCgVBdXRobhIWTG9nb3V0IGZyb20gYSBzdHJhdGVneYLT5JMCLhIUL3YxYmV0YTEvYXV0aC9sb2dvdXRaFioUL3YxYmV0YTEvYXV0aC9sb2dvdXQSrgIKD0xpc3RNZXRhU2NoZW1hcxIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE1ldGFTY2hlbWFzUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdE1ldGFTY2hlbWFzUmVzcG9uc2UiswGSQZIBCgpNZXRhU2NoZW1hEhBMaXN0IG1ldGFzY2hlbWFzGnJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgbWV0YXNjaGVtYXMgY29uZmlndXJlZCBvbiBhbiBpbnN0YW5jZSBsZXZlbCBpbiBGcm9udGllci4gZS5nIHVzZXIsIHByb2plY3QsIG9yZ2FuaXphdGlvbiBldGOC0+STAhcSFS92MWJldGExL21ldGEvc2NoZW1hcxKfBQoQQ3JlYXRlTWV0YVNjaGVtYRIyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlTWV0YVNjaGVtYVJlcXVlc3QaMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZU1ldGFTY2hlbWFSZXNwb25zZSKhBJJB+gMKCk1ldGFTY2hlbWESEUNyZWF0ZSBtZXRhc2NoZW1hGtgDQ3JlYXRlIGEgbmV3IG1ldGFkYXRhIHNjaGVtYS4gVGhlIG1ldGFzY2hlbWEgKipuYW1lKiogbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnRpcmUgRnJvbnRpZXIgaW5zdGFuY2UgYW5kIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMuIFRoZSBtZXRhc2NoZW1hICoqc2NoZW1hKiogbXVzdCBiZSBhIHZhbGlkIEpTT04gc2NoZW1hLlBsZWFzZSByZWZlciB0byBodHRwczovL2pzb24tc2NoZW1hLm9yZy8gdG8ga25vdyBtb3JlIGFib3V0IGpzb24gc2NoZW1hLiA8YnIvPipFeGFtcGxlOiogYHtuYW1lOiJ1c2VyIixzY2hlbWE6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJsYWJlbCI6eyJ0eXBlIjoib2JqZWN0IiwiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9fSwiZGVzY3JpcHRpb24iOnsidHlwZSI6InN0cmluZyJ9fX19YILT5JMCHSIVL3YxYmV0YTEvbWV0YS9zY2hlbWFzOgRib2R5EtMBCg1HZXRNZXRhU2NoZW1hEi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRNZXRhU2NoZW1hUmVxdWVzdBowLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0TWV0YVNjaGVtYVJlc3BvbnNlIl+SQToKCk1ldGFTY2hlbWESDkdldCBtZXRhc2NoZW1hGhxHZXQgYSBtZXRhZGF0YSBzY2hlbWEgYnkgSUQugtPkkwIcEhovdjFiZXRhMS9tZXRhL3NjaGVtYXMve2lkfRLBBAoQVXBkYXRlTWV0YVNjaGVtYRIyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlTWV0YVNjaGVtYVJlcXVlc3QaMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZU1ldGFTY2hlbWFSZXNwb25zZSLDA5JBlwMKCk1ldGFTY2hlbWESEVVwZGF0ZSBtZXRhc2NoZW1hGvUCVXBkYXRlIGEgbWV0YWRhdGEgc2NoZW1hLiBPbmx5IGBzY2hlbWFgIGZpZWxkIG9mIGEgbWV0YXNjaGVtYSBjYW4gYmUgdXBkYXRlZC4gVGhlIG1ldGFzY2hlbWEgYHNjaGVtYWAgbXVzdCBiZSBhIHZhbGlkIEpTT04gc2NoZW1hLlBsZWFzZSByZWZlciB0byBodHRwczovL2pzb24tc2NoZW1hLm9yZy8gdG8ga25vdyBtb3JlIGFib3V0IGpzb24gc2NoZW1hLiA8YnIvPipFeGFtcGxlOiogYHtuYW1lOiJ1c2VyIixzY2hlbWE6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJsYWJlbCI6eyJ0eXBlIjoib2JqZWN0IiwiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9fSwiZGVzY3JpcHRpb24iOnsidHlwZSI6InN0cmluZyJ9fX19YILT5JMCIhoaL3YxYmV0YTEvbWV0YS9zY2hlbWFzL3tpZH06BGJvZHkS4wQKEERlbGV0ZU1ldGFTY2hlbWESMi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZU1ldGFTY2hlbWFSZXF1ZXN0GjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5EZWxldGVNZXRhU2NoZW1hUmVzcG9uc2Ui5QOSQb8DCgpNZXRhU2NoZW1hEhFEZWxldGUgbWV0YXNjaGVtYRqdA0RlbGV0ZSBhIG1ldGFkYXRhIHNjaGVtYSBwZXJtYW5lbnRseS4gT25jZSBkZWxldGVkIHRoZSBtZXRhc2NoZW1hIHdvbid0IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG1ldGFkYXRhLiBGb3IgZXhhbXBsZSwgaWYgYSBtZXRhc2NoZW1hKHdpdGggYGxhYmVsYCBhbmQgYGRlc2NyaXB0aW9uYCBmaWVsZHMpIGlzIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG1ldGFkYXRhIG9mIGEgdXNlciwgdGhlbiBkZWxldGluZyB0aGUgbWV0YXNjaGVtYSB3aWxsIG5vdCB2YWxpZGF0ZSB0aGUgbWV0YWRhdGEgb2YgdGhlIHVzZXIgYW5kIG1ldGFkYXRhIGZpZWxkIGNhbiBjb250YWluIGFueSBrZXktdmFsdWUgcGFpcihhbmQgc2F5IGFub3RoZXIgZmllbGQgY2FsbGVkIGBmb29gIGNhbiBiZSBpbnNlcnRlZCBpbiBhIHVzZXIncyBtZXRhZGF0YSkugtPkkwIcKhovdjFiZXRhMS9tZXRhL3NjaGVtYXMve2lkfRKJAgoTRGVzY3JpYmVQcmVmZXJlbmNlcxI1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVzY3JpYmVQcmVmZXJlbmNlc1JlcXVlc3QaNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlc2NyaWJlUHJlZmVyZW5jZXNSZXNwb25zZSKCAZJBXAoKUHJlZmVyZW5jZRIURGVzY3JpYmUgcHJlZmVyZW5jZXMaOFJldHVybnMgYSBsaXN0IG9mIGFsbCBwcmVmZXJlbmNlcyBzdXBwb3J0ZWQgYnkgRnJvbnRpZXIugtPkkwIdEhsvdjFiZXRhMS9wcmVmZXJlbmNlcy90cmFpdHMSxAMKHUNyZWF0ZU9yZ2FuaXphdGlvblByZWZlcmVuY2VzEj8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVPcmdhbml6YXRpb25QcmVmZXJlbmNlc1JlcXVlc3QaQC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZU9yZ2FuaXphdGlvblByZWZlcmVuY2VzUmVzcG9uc2UinwKSQekBCgpQcmVmZXJlbmNlEh9DcmVhdGUgb3JnYW5pemF0aW9uIHByZWZlcmVuY2VzGrkBQ3JlYXRlIGEgbmV3IG9yZ2FuaXphdGlvbiBwcmVmZXJlbmNlcy4gVGhlIG9yZ2FuaXphdGlvbiBwcmVmZXJlbmNlcyAqKm5hbWUqKiBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbiBhbmQgY2FuIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgZGFzaGVzIGFuZCB1bmRlcnNjb3Jlcy6C0+STAiwiJy92MWJldGExL29yZ2FuaXphdGlvbnMve2lkfS9wcmVmZXJlbmNlczoBKhKlAgobTGlzdE9yZ2FuaXphdGlvblByZWZlcmVuY2VzEj0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0Gj4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0T3JnYW5pemF0aW9uUHJlZmVyZW5jZXNSZXNwb25zZSKGAZJBVAoKUHJlZmVyZW5jZRIdTGlzdCBvcmdhbml6YXRpb24gcHJlZmVyZW5jZXMaJ0xpc3QgYW4gb3JnYW5pemF0aW9uIHByZWZlcmVuY2VzIGJ5IElELoLT5JMCKRInL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97aWR9L3ByZWZlcmVuY2VzEpwDChhDcmVhdGVQcm9qZWN0UHJlZmVyZW5jZXMSOi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2plY3RQcmVmZXJlbmNlc1JlcXVlc3QaOy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2plY3RQcmVmZXJlbmNlc1Jlc3BvbnNlIoYCkkHVAQoKUHJlZmVyZW5jZRIaQ3JlYXRlIHByb2plY3QgcHJlZmVyZW5jZXMaqgFDcmVhdGUgYSBuZXcgcHJvamVjdCBwcmVmZXJlbmNlcy4gVGhlIHByb2plY3QgcHJlZmVyZW5jZXMgKipuYW1lKiogbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBwcm9qZWN0IGFuZCBjYW4gY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzLoLT5JMCJyIiL3YxYmV0YTEvcHJvamVjdHMve2lkfS9wcmVmZXJlbmNlczoBKhKFAgoWTGlzdFByb2plY3RQcmVmZXJlbmNlcxI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFByb2plY3RQcmVmZXJlbmNlc1JlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RQcm9qZWN0UHJlZmVyZW5jZXNSZXNwb25zZSJ2kkFJCgpQcmVmZXJlbmNlEhhMaXN0IHByb2plY3QgcHJlZmVyZW5jZXMaIUxpc3QgYSBwcm9qZWN0IHByZWZlcmVuY2VzIGJ5IElELoLT5JMCJBIiL3YxYmV0YTEvcHJvamVjdHMve2lkfS9wcmVmZXJlbmNlcxKMAwoWQ3JlYXRlR3JvdXBQcmVmZXJlbmNlcxI4LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlR3JvdXBQcmVmZXJlbmNlc1JlcXVlc3QaOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUdyb3VwUHJlZmVyZW5jZXNSZXNwb25zZSL8AZJBzQEKClByZWZlcmVuY2USGENyZWF0ZSBncm91cCBwcmVmZXJlbmNlcxqkAUNyZWF0ZSBhIG5ldyBncm91cCBwcmVmZXJlbmNlcy4gVGhlIGdyb3VwIHByZWZlcmVuY2VzICoqbmFtZSoqIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZ3JvdXAgYW5kIGNhbiBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMugtPkkwIlIiAvdjFiZXRhMS9ncm91cHMve2lkfS9wcmVmZXJlbmNlczoBKhL5AQoUTGlzdEdyb3VwUHJlZmVyZW5jZXMSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RHcm91cFByZWZlcmVuY2VzUmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEdyb3VwUHJlZmVyZW5jZXNSZXNwb25zZSJwkkFFCgpQcmVmZXJlbmNlEhZMaXN0IGdyb3VwIHByZWZlcmVuY2VzGh9MaXN0IGEgZ3JvdXAgcHJlZmVyZW5jZXMgYnkgSUQugtPkkwIiEiAvdjFiZXRhMS9ncm91cHMve2lkfS9wcmVmZXJlbmNlcxKEAwoVQ3JlYXRlVXNlclByZWZlcmVuY2VzEjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0GjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVVc2VyUHJlZmVyZW5jZXNSZXNwb25zZSL3AZJByQEKClByZWZlcmVuY2USF0NyZWF0ZSB1c2VyIHByZWZlcmVuY2VzGqEBQ3JlYXRlIGEgbmV3IHVzZXIgcHJlZmVyZW5jZXMuIFRoZSB1c2VyIHByZWZlcmVuY2VzICoqbmFtZSoqIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgdXNlciBhbmQgY2FuIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgZGFzaGVzIGFuZCB1bmRlcnNjb3Jlcy6C0+STAiQiHy92MWJldGExL3VzZXJzL3tpZH0vcHJlZmVyZW5jZXM6ASoS8wEKE0xpc3RVc2VyUHJlZmVyZW5jZXMSNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0GjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0VXNlclByZWZlcmVuY2VzUmVzcG9uc2UibZJBQwoKUHJlZmVyZW5jZRIVTGlzdCB1c2VyIHByZWZlcmVuY2VzGh5MaXN0IGEgdXNlciBwcmVmZXJlbmNlcyBieSBJRC6C0+STAiESHy92MWJldGExL3VzZXJzL3tpZH0vcHJlZmVyZW5jZXMSoQMKHENyZWF0ZUN1cnJlbnRVc2VyUHJlZmVyZW5jZXMSPi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUN1cnJlbnRVc2VyUHJlZmVyZW5jZXNSZXF1ZXN0Gj8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVDdXJyZW50VXNlclByZWZlcmVuY2VzUmVzcG9uc2Ui/wGSQdEBCgpQcmVmZXJlbmNlEh9DcmVhdGUgY3VycmVudCB1c2VyIHByZWZlcmVuY2VzGqEBQ3JlYXRlIGEgbmV3IHVzZXIgcHJlZmVyZW5jZXMuIFRoZSB1c2VyIHByZWZlcmVuY2VzICoqbmFtZSoqIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgdXNlciBhbmQgY2FuIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgZGFzaGVzIGFuZCB1bmRlcnNjb3Jlcy6C0+STAiQiHy92MWJldGExL3VzZXJzL3NlbGYvcHJlZmVyZW5jZXM6ASoSkAIKGkxpc3RDdXJyZW50VXNlclByZWZlcmVuY2VzEjwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0Q3VycmVudFVzZXJQcmVmZXJlbmNlc1JlcXVlc3QaPS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDdXJyZW50VXNlclByZWZlcmVuY2VzUmVzcG9uc2UidZJBSwoKUHJlZmVyZW5jZRIdTGlzdCBjdXJyZW50IHVzZXIgcHJlZmVyZW5jZXMaHkxpc3QgYSB1c2VyIHByZWZlcmVuY2VzIGJ5IElELoLT5JMCIRIfL3YxYmV0YTEvdXNlcnMvc2VsZi9wcmVmZXJlbmNlcxKTAgoUQ3JlYXRlQmlsbGluZ0FjY291bnQSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlQmlsbGluZ0FjY291bnRSZXNwb25zZSKJAZJBVAoHQmlsbGluZxIWQ3JlYXRlIGJpbGxpbmcgYWNjb3VudBoxQ3JlYXRlIGEgbmV3IGJpbGxpbmcgYWNjb3VudCBmb3IgYW4gb3JnYW5pemF0aW9uLoLT5JMCLCInL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nOgEqEvMBChFHZXRCaWxsaW5nQWNjb3VudBIzLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0QmlsbGluZ0FjY291bnRSZXF1ZXN0GjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRCaWxsaW5nQWNjb3VudFJlc3BvbnNlInOSQTwKB0JpbGxpbmcSE0dldCBiaWxsaW5nIGFjY291bnQaHEdldCBhIGJpbGxpbmcgYWNjb3VudCBieSBJRC6C0+STAi4SLC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9EoUCChRVcGRhdGVCaWxsaW5nQWNjb3VudBI2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlQmlsbGluZ0FjY291bnRSZXF1ZXN0GjcucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVCaWxsaW5nQWNjb3VudFJlc3BvbnNlInySQUIKB0JpbGxpbmcSFlVwZGF0ZSBiaWxsaW5nIGFjY291bnQaH1VwZGF0ZSBhIGJpbGxpbmcgYWNjb3VudCBieSBJRC6C0+STAjEaLC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9OgEqEsECChZSZWdpc3RlckJpbGxpbmdBY2NvdW50EjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5SZWdpc3RlckJpbGxpbmdBY2NvdW50UmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuUmVnaXN0ZXJCaWxsaW5nQWNjb3VudFJlc3BvbnNlIrEBkkFuCgdCaWxsaW5nEiRSZWdpc3RlciBiaWxsaW5nIGFjY291bnQgdG8gcHJvdmlkZXIaPVJlZ2lzdGVyIGEgYmlsbGluZyBhY2NvdW50IHRvIGEgcHJvdmlkZXIgaWYgaXQncyBub3QgYWxyZWFkeS6C0+STAjoiNS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97aWR9L3JlZ2lzdGVyOgEqEoMCChNMaXN0QmlsbGluZ0FjY291bnRzEjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0QmlsbGluZ0FjY291bnRzUmVxdWVzdBo2LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEJpbGxpbmdBY2NvdW50c1Jlc3BvbnNlIn2SQUsKB0JpbGxpbmcSFUxpc3QgYmlsbGluZyBhY2NvdW50cxopTGlzdCBiaWxsaW5nIGFjY291bnRzIG9mIGFuIG9yZ2FuaXphdGlvbi6C0+STAikSJy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZxKCAgoURGVsZXRlQmlsbGluZ0FjY291bnQSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRlbGV0ZUJpbGxpbmdBY2NvdW50UmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRGVsZXRlQmlsbGluZ0FjY291bnRSZXNwb25zZSJ5kkFCCgdCaWxsaW5nEhZEZWxldGUgYmlsbGluZyBhY2NvdW50Gh9EZWxldGUgYSBiaWxsaW5nIGFjY291bnQgYnkgSUQugtPkkwIuKiwvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2lkfRKNAgoURW5hYmxlQmlsbGluZ0FjY291bnQSNi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkVuYWJsZUJpbGxpbmdBY2NvdW50UmVxdWVzdBo3LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuRW5hYmxlQmlsbGluZ0FjY291bnRSZXNwb25zZSKDAZJBQgoHQmlsbGluZxIWRW5hYmxlIGJpbGxpbmcgYWNjb3VudBofRW5hYmxlIGEgYmlsbGluZyBhY2NvdW50IGJ5IElELoLT5JMCOCIzL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tpZH0vZW5hYmxlOgEqEukCChVEaXNhYmxlQmlsbGluZ0FjY291bnQSNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRpc2FibGVCaWxsaW5nQWNjb3VudFJlcXVlc3QaOC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkRpc2FibGVCaWxsaW5nQWNjb3VudFJlc3BvbnNlItwBkkGZAQoHQmlsbGluZxIXRGlzYWJsZSBiaWxsaW5nIGFjY291bnQadURpc2FibGUgYSBiaWxsaW5nIGFjY291bnQgYnkgSUQuIERpc2FibGluZyBhIGJpbGxpbmcgYWNjb3VudCBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgZGlzYWJsZSBpdCdzIGFjdGl2ZSBzdWJzY3JpcHRpb25zLoLT5JMCOSI0L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tpZH0vZGlzYWJsZToBKhKLAgoRR2V0QmlsbGluZ0JhbGFuY2USMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEJpbGxpbmdCYWxhbmNlUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0QmlsbGluZ0JhbGFuY2VSZXNwb25zZSKKAZJBSwoHQmlsbGluZxITR2V0IGJpbGxpbmcgYmFsYW5jZRorR2V0IHRoZSBiYWxhbmNlIG9mIGEgYmlsbGluZyBhY2NvdW50IGJ5IElELoLT5JMCNhI0L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tpZH0vYmFsYW5jZRL6AQoKSGFzVHJpYWxlZBIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuSGFzVHJpYWxlZFJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkhhc1RyaWFsZWRSZXNwb25zZSKOAZJBPwoHQmlsbGluZxILSGFzIHRyaWFsZWQaJ0NoZWNrIGlmIGEgYmlsbGluZyBhY2NvdW50IGhhcyB0cmlhbGVkLoLT5JMCRhJEL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tpZH0vcGxhbnMve3BsYW5faWR9L3RyaWFsZWQSxwIKD0dldFN1YnNjcmlwdGlvbhIxLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBoyLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2UizAGSQTsKDFN1YnNjcmlwdGlvbhIQR2V0IHN1YnNjcmlwdGlvbhoZR2V0IGEgc3Vic2NyaXB0aW9uIGJ5IElELoLT5JMChwESRy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vc3Vic2NyaXB0aW9ucy97aWR9WjwSOi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy9zdWJzY3JpcHRpb25zL3tpZH0S6gIKEkNhbmNlbFN1YnNjcmlwdGlvbhI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2FuY2VsU3Vic2NyaXB0aW9uUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2FuY2VsU3Vic2NyaXB0aW9uUmVzcG9uc2Ui5gGSQUEKDFN1YnNjcmlwdGlvbhITQ2FuY2VsIHN1YnNjcmlwdGlvbhocQ2FuY2VsIGEgc3Vic2NyaXB0aW9uIGJ5IElELoLT5JMCmwEiTi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vc3Vic2NyaXB0aW9ucy97aWR9L2NhbmNlbDoBKlpGIkEvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcvc3Vic2NyaXB0aW9ucy97aWR9L2NhbmNlbDoBKhLTAgoRTGlzdFN1YnNjcmlwdGlvbnMSMy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdBo0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZSLSAZJBTAoMU3Vic2NyaXB0aW9uEhJMaXN0IHN1YnNjcmlwdGlvbnMaKExpc3Qgc3Vic2NyaXB0aW9ucyBvZiBhIGJpbGxpbmcgYWNjb3VudC6C0+STAn0SQi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vc3Vic2NyaXB0aW9uc1o3EjUvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcvc3Vic2NyaXB0aW9ucxL0AgoSQ2hhbmdlU3Vic2NyaXB0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGFuZ2VTdWJzY3JpcHRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGFuZ2VTdWJzY3JpcHRpb25SZXNwb25zZSLwAZJBSwoMU3Vic2NyaXB0aW9uEhhDaGFuZ2Ugc3Vic2NyaXB0aW9uIHBsYW4aIUNoYW5nZSBhIHN1YnNjcmlwdGlvbiBwbGFuIGJ5IElELoLT5JMCmwEiTi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vc3Vic2NyaXB0aW9ucy97aWR9L2NoYW5nZToBKlpGIkEvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcvc3Vic2NyaXB0aW9ucy97aWR9L2NoYW5nZToBKhLcAgoSVXBkYXRlU3Vic2NyaXB0aW9uEjQucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVTdWJzY3JpcHRpb25SZXF1ZXN0GjUucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVTdWJzY3JpcHRpb25SZXNwb25zZSLYAZJBQQoMU3Vic2NyaXB0aW9uEhNVcGRhdGUgc3Vic2NyaXB0aW9uGhxVcGRhdGUgYSBzdWJzY3JpcHRpb24gYnkgSUQugtPkkwKNARpHL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tiaWxsaW5nX2lkfS9zdWJzY3JpcHRpb25zL3tpZH06ASpaPyI6L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3N1YnNjcmlwdGlvbnMve2lkfToBKhLYAQoNQ3JlYXRlUHJvZHVjdBIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUHJvZHVjdFJlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb2R1Y3RSZXNwb25zZSJkkkE9CgdQcm9kdWN0Eg5DcmVhdGUgcHJvZHVjdBoiQ3JlYXRlIGEgbmV3IHByb2R1Y3QgZm9yIHBsYXRmb3JtLoLT5JMCHiIZL3YxYmV0YTEvYmlsbGluZy9wcm9kdWN0czoBKhLAAQoKR2V0UHJvZHVjdBIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0UHJvZHVjdFJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFByb2R1Y3RSZXNwb25zZSJVkkEsCgdQcm9kdWN0EgtHZXQgcHJvZHVjdBoUR2V0IGEgcHJvZHVjdCBieSBJRC6C0+STAiASHi92MWJldGExL2JpbGxpbmcvcHJvZHVjdHMve2lkfRLPAQoMTGlzdFByb2R1Y3RzEi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvZHVjdHNSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UHJvZHVjdHNSZXNwb25zZSJekkE6CgdQcm9kdWN0Eg1MaXN0IHByb2R1Y3RzGiBMaXN0IGFsbCBwcm9kdWN0cyBvZiBhIHBsYXRmb3JtLoLT5JMCGxIZL3YxYmV0YTEvYmlsbGluZy9wcm9kdWN0cxLSAQoNVXBkYXRlUHJvZHVjdBIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlUHJvZHVjdFJlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVByb2R1Y3RSZXNwb25zZSJekkEyCgdQcm9kdWN0Eg5VcGRhdGUgcHJvZHVjdBoXVXBkYXRlIGEgcHJvZHVjdCBieSBJRC6C0+STAiMaHi92MWJldGExL2JpbGxpbmcvcHJvZHVjdHMve2lkfToBKhLYAQoNQ3JlYXRlRmVhdHVyZRIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlRmVhdHVyZVJlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUZlYXR1cmVSZXNwb25zZSJkkkE9CgdGZWF0dXJlEg5DcmVhdGUgZmVhdHVyZRoiQ3JlYXRlIGEgbmV3IGZlYXR1cmUgZm9yIHBsYXRmb3JtLoLT5JMCHiIZL3YxYmV0YTEvYmlsbGluZy9mZWF0dXJlczoBKhLAAQoKR2V0RmVhdHVyZRIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0RmVhdHVyZVJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldEZlYXR1cmVSZXNwb25zZSJVkkEsCgdGZWF0dXJlEgtHZXQgZmVhdHVyZRoUR2V0IGEgZmVhdHVyZSBieSBJRC6C0+STAiASHi92MWJldGExL2JpbGxpbmcvZmVhdHVyZXMve2lkfRLSAQoNVXBkYXRlRmVhdHVyZRIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVXBkYXRlRmVhdHVyZVJlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZUZlYXR1cmVSZXNwb25zZSJekkEyCgdGZWF0dXJlEg5VcGRhdGUgZmVhdHVyZRoXVXBkYXRlIGEgZmVhdHVyZSBieSBJRC6C0+STAiMaHi92MWJldGExL2JpbGxpbmcvZmVhdHVyZXMve2lkfToBKhLAAQoMTGlzdEZlYXR1cmVzEi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0RmVhdHVyZXNSZXF1ZXN0Gi8ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0RmVhdHVyZXNSZXNwb25zZSJPkkErCgdGZWF0dXJlEg1MaXN0IGZlYXR1cmVzGhFMaXN0IGFsbCBmZWF0dXJlc4LT5JMCGxIZL3YxYmV0YTEvYmlsbGluZy9mZWF0dXJlcxLDAQoKQ3JlYXRlUGxhbhIsLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlUGxhblJlcXVlc3QaLS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVBsYW5SZXNwb25zZSJYkkE0CgRQbGFuEgtDcmVhdGUgcGxhbhofQ3JlYXRlIGEgbmV3IHBsYW4gZm9yIHBsYXRmb3JtLoLT5JMCGyIWL3YxYmV0YTEvYmlsbGluZy9wbGFuczoBKhKsAQoJTGlzdFBsYW5zEisucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UGxhbnNSZXF1ZXN0GiwucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5MaXN0UGxhbnNSZXNwb25zZSJEkkEjCgRQbGFuEgpMaXN0IHBsYW5zGg9MaXN0IGFsbCBwbGFucy6C0+STAhgSFi92MWJldGExL2JpbGxpbmcvcGxhbnMSqwEKB0dldFBsYW4SKS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFBsYW5SZXF1ZXN0GioucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRQbGFuUmVzcG9uc2UiSZJBIwoEUGxhbhIIR2V0IHBsYW4aEUdldCBhIHBsYW4gYnkgSUQugtPkkwIdEhsvdjFiZXRhMS9iaWxsaW5nL3BsYW5zL3tpZH0SvQEKClVwZGF0ZVBsYW4SLC5yYXlzdGFjay5mcm9udGllci52MWJldGExLlVwZGF0ZVBsYW5SZXF1ZXN0Gi0ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5VcGRhdGVQbGFuUmVzcG9uc2UiUpJBKQoEUGxhbhILVXBkYXRlIHBsYW4aFFVwZGF0ZSBhIHBsYW4gYnkgSUQugtPkkwIgGhsvdjFiZXRhMS9iaWxsaW5nL3BsYW5zL3tpZH06ASoShQMKDkNyZWF0ZUNoZWNrb3V0EjAucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVDaGVja291dFJlcXVlc3QaMS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUNoZWNrb3V0UmVzcG9uc2UijQKSQYgBCghDaGVja291dBIiQ2hlY2tvdXQgYSBwcm9kdWN0IG9yIHN1YnNjcmlwdGlvbhpYQ2hlY2tvdXQgYSBwcm9kdWN0IHRvIGJ1eSBpdCBvbmUgdGltZSBvciBzdGFydCBhIHN1YnNjcmlwdGlvbiBwbGFuIG9uIGEgYmlsbGluZyBhY2NvdW50LoLT5JMCeyI+L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tiaWxsaW5nX2lkfS9jaGVja291dHM6ASpaNiIxL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL2NoZWNrb3V0czoBKhK3AgoNTGlzdENoZWNrb3V0cxIvLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdENoZWNrb3V0c1JlcXVlc3QaMC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RDaGVja291dHNSZXNwb25zZSLCAZJBRAoIQ2hlY2tvdXQSDkxpc3QgY2hlY2tvdXRzGihMaXN0IGFsbCBjaGVja291dHMgb2YgYSBiaWxsaW5nIGFjY291bnQugtPkkwJ1Ej4vdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L2NoZWNrb3V0c1ozEjEvdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcvY2hlY2tvdXRzEqYCCgtHZXRDaGVja291dBItLnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuR2V0Q2hlY2tvdXRSZXF1ZXN0Gi4ucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5HZXRDaGVja291dFJlc3BvbnNlIrcBkkEvCghDaGVja291dBIMR2V0IGNoZWNrb3V0GhVHZXQgYSBjaGVja291dCBieSBJRC6C0+STAn8SQy92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vY2hlY2tvdXRzL3tpZH1aOBI2L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL2NoZWNrb3V0cy97aWR9EtwCChdDaGVja0ZlYXR1cmVFbnRpdGxlbWVudBI5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tGZWF0dXJlRW50aXRsZW1lbnRSZXF1ZXN0GjoucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja0ZlYXR1cmVFbnRpdGxlbWVudFJlc3BvbnNlIskBkkFWCgtFbnRpdGxlbWVudBIRQ2hlY2sgZW50aXRsZW1lbnQaNENoZWNrIGlmIGEgYmlsbGluZyBhY2NvdW50IGlzIGVudGl0bGVkIHRvIGEgZmVhdHVyZS6C0+STAmoiOi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vY2hlY2s6ASpaKSIkL3YxYmV0YTEvb3JnYW5pemF0aW9ucy9iaWxsaW5nL2NoZWNrOgEqEp8CChZDaGVja0NyZWRpdEVudGl0bGVtZW50EjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DaGVja0NyZWRpdEVudGl0bGVtZW50UmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ2hlY2tDcmVkaXRFbnRpdGxlbWVudFJlc3BvbnNlIo8BkkFrCgtFbnRpdGxlbWVudBIYQ2hlY2sgY3JlZGl0IGVudGl0bGVtZW50GkJDaGVjayBpZiBhIGJpbGxpbmcgYWNjb3VudCBoYXMgZW5vdWdoIGNyZWRpdHMgdG8gY292ZXIgdGhlIGFtb3VudC6C0+STAhsiFi92MWJldGExL2JpbGxpbmcvY2hlY2s6ASoSyQIKEkNyZWF0ZUJpbGxpbmdVc2FnZRI0LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlQmlsbGluZ1VzYWdlUmVxdWVzdBo1LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQ3JlYXRlQmlsbGluZ1VzYWdlUmVzcG9uc2UixQGSQVAKBVVzYWdlEhRDcmVhdGUgYmlsbGluZyB1c2FnZRoxUmVwb3J0IGEgbmV3IGJpbGxpbmcgdXNhZ2UgZm9yIGEgYmlsbGluZyBhY2NvdW50LoLT5JMCbCI7L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL3tiaWxsaW5nX2lkfS91c2FnZXM6ASpaKiIlL3YxYmV0YTEvb3JnYW5pemF0aW9ucy9iaWxsaW5nL3VzYWdlczoBKhLsAgoXTGlzdEJpbGxpbmdUcmFuc2FjdGlvbnMSOS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RCaWxsaW5nVHJhbnNhY3Rpb25zUmVxdWVzdBo6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuTGlzdEJpbGxpbmdUcmFuc2FjdGlvbnNSZXNwb25zZSLZAZJBVQoLVHJhbnNhY3Rpb24SGUxpc3QgYmlsbGluZyB0cmFuc2FjdGlvbnMaK0xpc3QgYWxsIHRyYW5zYWN0aW9ucyBvZiBhIGJpbGxpbmcgYWNjb3VudC6C0+STAnsSQS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vdHJhbnNhY3Rpb25zWjYSNC92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy90cmFuc2FjdGlvbnMS7wIKGFRvdGFsRGViaXRlZFRyYW5zYWN0aW9ucxI6LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVG90YWxEZWJpdGVkVHJhbnNhY3Rpb25zUmVxdWVzdBo7LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuVG90YWxEZWJpdGVkVHJhbnNhY3Rpb25zUmVzcG9uc2Ui2QGSQX8KC1RyYW5zYWN0aW9uEjdTdW0gb2YgYW1vdW50IG9mIGRlYml0ZWQgdHJhbnNhY3Rpb25zIGluY2x1ZGluZyByZWZ1bmRzGjdTdW0gb2YgYW1vdW50IG9mIGRlYml0ZWQgdHJhbnNhY3Rpb25zIGluY2x1ZGluZyByZWZ1bmRzgtPkkwJREk8vdjFiZXRhMS9vcmdhbml6YXRpb25zL3tvcmdfaWR9L2JpbGxpbmcve2JpbGxpbmdfaWR9L2RlYml0ZWRfdHJhbnNhY3Rpb25zX3RvdGFsEq8CCgxMaXN0SW52b2ljZXMSLi5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RJbnZvaWNlc1JlcXVlc3QaLy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkxpc3RJbnZvaWNlc1Jlc3BvbnNlIr0BkkFBCgdJbnZvaWNlEg1MaXN0IGludm9pY2VzGidMaXN0IGFsbCBpbnZvaWNlcyBvZiBhIGJpbGxpbmcgYWNjb3VudC6C0+STAnMSPS92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vaW52b2ljZXNaMhIwL3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL2ludm9pY2VzEuICChJHZXRVcGNvbWluZ0ludm9pY2USNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFVwY29taW5nSW52b2ljZVJlcXVlc3QaNS5yYXlzdGFjay5mcm9udGllci52MWJldGExLkdldFVwY29taW5nSW52b2ljZVJlc3BvbnNlIt4BkkFPCgdJbnZvaWNlEhRHZXQgdXBjb21pbmcgaW52b2ljZRouR2V0IHRoZSB1cGNvbWluZyBpbnZvaWNlIG9mIGEgYmlsbGluZyBhY2NvdW50LoLT5JMChQESRi92MWJldGExL29yZ2FuaXphdGlvbnMve29yZ19pZH0vYmlsbGluZy97YmlsbGluZ19pZH0vaW52b2ljZXMvdXBjb21pbmdaOxI5L3YxYmV0YTEvb3JnYW5pemF0aW9ucy97b3JnX2lkfS9iaWxsaW5nL2ludm9pY2VzL3VwY29taW5nEpwCChZCaWxsaW5nV2ViaG9va0NhbGxiYWNrEjgucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5CaWxsaW5nV2ViaG9va0NhbGxiYWNrUmVxdWVzdBo5LnJheXN0YWNrLmZyb250aWVyLnYxYmV0YTEuQmlsbGluZ1dlYmhvb2tDYWxsYmFja1Jlc3BvbnNlIowBkkFOCgdXZWJob29rEhZBY2NlcHQgQmlsbGluZyB3ZWJob29rGitBY2NlcHRzIGEgQmlsbGluZyB3ZWJob29rIGFuZCBwcm9jZXNzZXMgaXQugtPkkwI1Ii0vdjFiZXRhMS9iaWxsaW5nL3dlYmhvb2tzL2NhbGxiYWNrL3twcm92aWRlcn06BGJvZHkSkQIKFENyZWF0ZVByb3NwZWN0UHVibGljEjYucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVQcm9zcGVjdFB1YmxpY1JlcXVlc3QaNy5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZVByb3NwZWN0UHVibGljUmVzcG9uc2UihwGSQWcKCFByb3NwZWN0Eg9DcmVhdGUgcHJvc3BlY3QaSkNyZWF0ZSBwcm9zcGVjdCBmb3IgZ2l2ZW4gZW1haWwgYW5kIGFjdGl2aXR5LiBBdmFpbGFibGUgZm9yIHB1YmxpYyBhY2Nlc3MugtPkkwIXIhIvdjFiZXRhMS9wcm9zcGVjdHM6ASoSgAEKEUNyZWF0ZUF1ZGl0UmVjb3JkEjMucmF5c3RhY2suZnJvbnRpZXIudjFiZXRhMS5DcmVhdGVBdWRpdFJlY29yZFJlcXVlc3QaNC5yYXlzdGFjay5mcm9udGllci52MWJldGExLkNyZWF0ZUF1ZGl0UmVjb3JkUmVzcG9uc2UiAELyDQojaW8ucmF5c3RhY2sucHJvdG9uLmZyb250aWVyLnYxYmV0YTFCCEZyb250aWVyWjtnaXRodWIuY29tL3JheXN0YWNrL3Byb3Rvbi9mcm9udGllci92MWJldGExO2Zyb250aWVydjFiZXRhMZJBgg0SHgoVRnJvbnRpZXIgR2VuZXJhbCBBUElzMgUwLjIuMBoOMTI3LjAuMC4xOjc0MDAqAQEyEGFwcGxpY2F0aW9uL2pzb246EGFwcGxpY2F0aW9uL2pzb25SPAoDMjAwEjUKG09LIC0gQSBzdWNjZXNzZnVsIHJlc3BvbnNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1c1JpCgM0MDASYgpIQmFkIFJlcXVlc3QgLSBUaGUgcmVxdWVzdCB3YXMgbWFsZm9ybWVkIG9yIGNvbnRhaW5lZCBpbnZhbGlkIHBhcmFtZXRlcnMuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzUkoKAzQwMRJDCilVbmF1dGhvcml6ZWQgLSBBdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZBIWChQaEi5nb29nbGUucnBjLlN0YXR1c1JhCgM0MDMSWgpARm9yYmlkZGVuIC0gVXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZRIWChQaEi5nb29nbGUucnBjLlN0YXR1c1JRCgM0MDQSSgowTm90IEZvdW5kIC0gVGhlIHJlcXVlc3RlZCByZXNvdXJjZSB3YXMgbm90IGZvdW5kEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzUnUKAzUwMBJuClRJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IuIFJldHVybmVkIHdoZW4gdGhlcmVzIGlzIHNvbWV0aGluZyB3cm9uZyB3aXRoIEZyb250aWVyIHNlcnZlci4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXNatgEKRAoFQmFzaWMSOwgBEh9DbGllbnQgSUQvU2VjcmV0IGF1dGhlbnRpY2F0aW9uGhRCYXNpYyBBdXRoZW50aWNhdGlvbiACCm4KBkJlYXJlchJkCAIST1RoZSBBdXRob3JpemF0aW9uIGhlYWRlciBtdXN0IGJlIHNldCB0byBCZWFyZXIgZm9sbG93ZWQgYnkgYSBzcGFjZSBhbmQgYSB0b2tlbi4aDUF1dGhvcml6YXRpb24gAmITCgcKBUJhc2ljCggKBkJlYXJlcmoGCgRVc2VyaoIDCgVHcm91cBL4Akdyb3VwcyBpbiBGcm9udGllciBhcmUgdXNlZCB0byBtYW5hZ2UgdXNlcnMgYW5kIHRoZWlyIGFjY2VzcyB0byByZXNvdXJjZXMuIEVhY2ggZ3JvdXAgaGFzIGEgdW5pcXVlIG5hbWUgYW5kIGlkIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ3JhbnQgYWNjZXNzIHRvIHJlc291cmNlcy4gV2hlbiBhIHVzZXIgaXMgYWRkZWQgdG8gYSBncm91cCwgdGhleSBpbmhlcml0IHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgdGhhdCBoYXZlIGJlZW4gZ3JhbnRlZCB0byB0aGUgZ3JvdXAuIFRoaXMgYWxsb3dzIHlvdSB0byBtYW5hZ2UgYWNjZXNzIHRvIHJlc291cmNlcyBhdCBzY2FsZSwgd2l0aG91dCBoYXZpbmcgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG8gaW5kaXZpZHVhbCB1c2Vycy5qBgoEUm9sZWoOCgxPcmdhbml6YXRpb25qCQoHUHJvamVjdGoICgZQb2xpY3lqCgoIUmVsYXRpb25qDAoKUGVybWlzc2lvbmoLCglOYW1lc3BhY2VqCgoIUmVzb3VyY2VqGwoFQXV0aHoSEkF1dGhvcml6YXRpb24gQVBJc2ocCgVBdXRobhITQXV0aGVudGljYXRpb24gQVBJc2qQAgoKTWV0YVNjaGVtYRKBAk1hbmFnZSBNZXRhZGF0YSBTY2hlbWFzIHdoaWNoIGFyZSB1c2VkIHRvIHZhbGlkYXRlIG1ldGFkYXRhIG9iamVjdCB3aGlsZSBjcmVhdGluZyB1c2VyL29yZy9ncm91cC9yb2xlLiBGcm9udGllciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBkZWZhdWx0IG1ldGFzY2hlbWFzIHdpdGggYGxhYmVsYCBhbmQgYGRlc2NyaXB0aW9uYCBmaWVsZHMuIFlvdSBjYW4gYWxzbyB1cGRhdGUgdGhlc2UgbWV0YXNjaGVtYXMgdG8gYWRkL2VkaXQgbW9yZSBmaWVsZHMuYgZwcm90bzM", [file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_struct, file_google_protobuf_timestamp, file_protoc_gen_openapiv2_options_annotations, file_raystack_frontier_v1beta1_models, file_validate_validate]);
22
22
 
23
23
  /**
24
24
  * @generated from message raystack.frontier.v1beta1.BillingAccountRequestBody
@@ -535,17 +535,18 @@ export type CreateBillingUsageRequest = Message<"raystack.frontier.v1beta1.Creat
535
535
  orgId: string;
536
536
 
537
537
  /**
538
- * ID of the billing account to update the subscription for
538
+ * DEPRECATED: billing_id will be inferred from org_id
539
539
  *
540
- * @generated from field: string billing_id = 2;
540
+ * @generated from field: string billing_id = 2 [deprecated = true];
541
+ * @deprecated
541
542
  */
542
543
  billingId: string;
543
544
 
544
545
  /**
545
- * either provide billing_id of the org or API can infer the default
546
- * billing ID from either org_id or project_id, not both
546
+ * DEPRECATED
547
547
  *
548
- * @generated from field: string project_id = 4;
548
+ * @generated from field: string project_id = 4 [deprecated = true];
549
+ * @deprecated
549
550
  */
550
551
  projectId: string;
551
552
 
@@ -587,9 +588,10 @@ export type ListBillingTransactionsRequest = Message<"raystack.frontier.v1beta1.
587
588
  orgId: string;
588
589
 
589
590
  /**
590
- * ID of the billing account to update the subscription for
591
+ * DEPRECATED: billing_id will be inferred from org_id
591
592
  *
592
- * @generated from field: string billing_id = 2;
593
+ * @generated from field: string billing_id = 2 [deprecated = true];
594
+ * @deprecated
593
595
  */
594
596
  billingId: string;
595
597
 
@@ -651,9 +653,10 @@ export type TotalDebitedTransactionsRequest = Message<"raystack.frontier.v1beta1
651
653
  orgId: string;
652
654
 
653
655
  /**
654
- * ID of the billing account
656
+ * DEPRECATED: billing_id will be inferred from org_id
655
657
  *
656
- * @generated from field: string billing_id = 2;
658
+ * @generated from field: string billing_id = 2 [deprecated = true];
659
+ * @deprecated
657
660
  */
658
661
  billingId: string;
659
662
  };
@@ -689,14 +692,19 @@ export const TotalDebitedTransactionsResponseSchema: GenMessage<TotalDebitedTran
689
692
  */
690
693
  export type GetSubscriptionRequest = Message<"raystack.frontier.v1beta1.GetSubscriptionRequest"> & {
691
694
  /**
692
- * @generated from field: string org_id = 1;
695
+ * DEPRECATED: org_id will be inferred from subscription id
696
+ *
697
+ * @generated from field: string org_id = 1 [deprecated = true];
698
+ * @deprecated
693
699
  */
694
700
  orgId: string;
695
701
 
696
702
  /**
703
+ * DEPRECATED: billing_id will be inferred from subscription id
697
704
  * ID of the billing account to get the subscription for
698
705
  *
699
- * @generated from field: string billing_id = 2;
706
+ * @generated from field: string billing_id = 2 [deprecated = true];
707
+ * @deprecated
700
708
  */
701
709
  billingId: string;
702
710
 
@@ -747,9 +755,11 @@ export type ListSubscriptionsRequest = Message<"raystack.frontier.v1beta1.ListSu
747
755
  orgId: string;
748
756
 
749
757
  /**
758
+ * DEPRECATED: billing_id will be inferred from org_id
750
759
  * ID of the billing account to list subscriptions for
751
760
  *
752
- * @generated from field: string billing_id = 2;
761
+ * @generated from field: string billing_id = 2 [deprecated = true];
762
+ * @deprecated
753
763
  */
754
764
  billingId: string;
755
765
 
@@ -802,14 +812,19 @@ export const ListSubscriptionsResponseSchema: GenMessage<ListSubscriptionsRespon
802
812
  */
803
813
  export type UpdateSubscriptionRequest = Message<"raystack.frontier.v1beta1.UpdateSubscriptionRequest"> & {
804
814
  /**
805
- * @generated from field: string org_id = 1;
815
+ * DEPRECATED: org_id will be inferred from subscription id
816
+ *
817
+ * @generated from field: string org_id = 1 [deprecated = true];
818
+ * @deprecated
806
819
  */
807
820
  orgId: string;
808
821
 
809
822
  /**
823
+ * DEPRECATED: billing_id will be inferred from subscription id
810
824
  * ID of the billing account to update the subscription for
811
825
  *
812
- * @generated from field: string billing_id = 2;
826
+ * @generated from field: string billing_id = 2 [deprecated = true];
827
+ * @deprecated
813
828
  */
814
829
  billingId: string;
815
830
 
@@ -857,14 +872,19 @@ export const UpdateSubscriptionResponseSchema: GenMessage<UpdateSubscriptionResp
857
872
  */
858
873
  export type ChangeSubscriptionRequest = Message<"raystack.frontier.v1beta1.ChangeSubscriptionRequest"> & {
859
874
  /**
860
- * @generated from field: string org_id = 1;
875
+ * DEPRECATED: org_id will be inferred from subscription id
876
+ *
877
+ * @generated from field: string org_id = 1 [deprecated = true];
878
+ * @deprecated
861
879
  */
862
880
  orgId: string;
863
881
 
864
882
  /**
883
+ * DEPRECATED: billing_id will be inferred from subscription id
865
884
  * ID of the billing account to update the subscription for
866
885
  *
867
- * @generated from field: string billing_id = 2;
886
+ * @generated from field: string billing_id = 2 [deprecated = true];
887
+ * @deprecated
868
888
  */
869
889
  billingId: string;
870
890
 
@@ -985,14 +1005,19 @@ export const ChangeSubscriptionResponseSchema: GenMessage<ChangeSubscriptionResp
985
1005
  */
986
1006
  export type CancelSubscriptionRequest = Message<"raystack.frontier.v1beta1.CancelSubscriptionRequest"> & {
987
1007
  /**
988
- * @generated from field: string org_id = 1;
1008
+ * DEPRECATED: org_id will be inferred from subscription id
1009
+ *
1010
+ * @generated from field: string org_id = 1 [deprecated = true];
1011
+ * @deprecated
989
1012
  */
990
1013
  orgId: string;
991
1014
 
992
1015
  /**
1016
+ * DEPRECATED: billing_id will be inferred from subscription id
993
1017
  * ID of the billing account to update the subscription for
994
1018
  *
995
- * @generated from field: string billing_id = 2;
1019
+ * @generated from field: string billing_id = 2 [deprecated = true];
1020
+ * @deprecated
996
1021
  */
997
1022
  billingId: string;
998
1023
 
@@ -1071,17 +1096,18 @@ export type CheckFeatureEntitlementRequest = Message<"raystack.frontier.v1beta1.
1071
1096
  orgId: string;
1072
1097
 
1073
1098
  /**
1074
- * ID of the billing account to update the subscription for
1099
+ * DEPRECATED: billing_id will be inferred from org_id
1075
1100
  *
1076
- * @generated from field: string billing_id = 2;
1101
+ * @generated from field: string billing_id = 2 [deprecated = true];
1102
+ * @deprecated
1077
1103
  */
1078
1104
  billingId: string;
1079
1105
 
1080
1106
  /**
1081
- * either provide billing_id of the org or API can infer the default
1082
- * billing ID from either org_id or project_id, not both
1107
+ * DEPRECATED
1083
1108
  *
1084
- * @generated from field: string project_id = 4;
1109
+ * @generated from field: string project_id = 4 [deprecated = true];
1110
+ * @deprecated
1085
1111
  */
1086
1112
  projectId: string;
1087
1113
 
@@ -1166,9 +1192,11 @@ export type CreateCheckoutRequest = Message<"raystack.frontier.v1beta1.CreateChe
1166
1192
  orgId: string;
1167
1193
 
1168
1194
  /**
1195
+ * DEPRECATED: billing_id will be inferred from org_id
1169
1196
  * ID of the billing account to update the subscription for
1170
1197
  *
1171
- * @generated from field: string billing_id = 2;
1198
+ * @generated from field: string billing_id = 2 [deprecated = true];
1199
+ * @deprecated
1172
1200
  */
1173
1201
  billingId: string;
1174
1202
 
@@ -1240,9 +1268,11 @@ export type ListCheckoutsRequest = Message<"raystack.frontier.v1beta1.ListChecko
1240
1268
  orgId: string;
1241
1269
 
1242
1270
  /**
1271
+ * DEPRECATED: billing_id will be inferred from org_id
1243
1272
  * ID of the billing account to get the subscriptions for
1244
1273
  *
1245
- * @generated from field: string billing_id = 2;
1274
+ * @generated from field: string billing_id = 2 [deprecated = true];
1275
+ * @deprecated
1246
1276
  */
1247
1277
  billingId: string;
1248
1278
  };
@@ -1278,14 +1308,18 @@ export const ListCheckoutsResponseSchema: GenMessage<ListCheckoutsResponse> = /*
1278
1308
  */
1279
1309
  export type GetCheckoutRequest = Message<"raystack.frontier.v1beta1.GetCheckoutRequest"> & {
1280
1310
  /**
1281
- * @generated from field: string org_id = 1;
1311
+ * DEPRECATED: org_id is not needed, checkout can be fetched by id alone
1312
+ *
1313
+ * @generated from field: string org_id = 1 [deprecated = true];
1314
+ * @deprecated
1282
1315
  */
1283
1316
  orgId: string;
1284
1317
 
1285
1318
  /**
1286
- * ID of the billing account to get the subscriptions for
1319
+ * DEPRECATED: billing_id is not needed, checkout can be fetched by id alone
1287
1320
  *
1288
- * @generated from field: string billing_id = 2;
1321
+ * @generated from field: string billing_id = 2 [deprecated = true];
1322
+ * @deprecated
1289
1323
  */
1290
1324
  billingId: string;
1291
1325
 
@@ -1905,9 +1939,10 @@ export type ListInvoicesRequest = Message<"raystack.frontier.v1beta1.ListInvoice
1905
1939
  orgId: string;
1906
1940
 
1907
1941
  /**
1908
- * ID of the billing account to list invoices for
1942
+ * DEPRECATED: billing_id will be inferred from org_id
1909
1943
  *
1910
- * @generated from field: string billing_id = 2;
1944
+ * @generated from field: string billing_id = 2 [deprecated = true];
1945
+ * @deprecated
1911
1946
  */
1912
1947
  billingId: string;
1913
1948
 
@@ -1958,9 +1993,10 @@ export type GetUpcomingInvoiceRequest = Message<"raystack.frontier.v1beta1.GetUp
1958
1993
  orgId: string;
1959
1994
 
1960
1995
  /**
1961
- * ID of the billing account to get the upcoming invoice for
1996
+ * DEPRECATED: billing_id will be inferred from org_id
1962
1997
  *
1963
- * @generated from field: string billing_id = 2;
1998
+ * @generated from field: string billing_id = 2 [deprecated = true];
1999
+ * @deprecated
1964
2000
  */
1965
2001
  billingId: string;
1966
2002
  };
@@ -3212,50 +3248,6 @@ export type GetServiceUserResponse = Message<"raystack.frontier.v1beta1.GetServi
3212
3248
  export const GetServiceUserResponseSchema: GenMessage<GetServiceUserResponse> = /*@__PURE__*/
3213
3249
  messageDesc(file_raystack_frontier_v1beta1_frontier, 132);
3214
3250
 
3215
- /**
3216
- * @generated from message raystack.frontier.v1beta1.UpdateServiceUserRequest
3217
- */
3218
- export type UpdateServiceUserRequest = Message<"raystack.frontier.v1beta1.UpdateServiceUserRequest"> & {
3219
- /**
3220
- * @generated from field: string id = 1;
3221
- */
3222
- id: string;
3223
-
3224
- /**
3225
- * @generated from field: raystack.frontier.v1beta1.ServiceUserRequestBody body = 2;
3226
- */
3227
- body?: ServiceUserRequestBody;
3228
-
3229
- /**
3230
- * @generated from field: string org_id = 3;
3231
- */
3232
- orgId: string;
3233
- };
3234
-
3235
- /**
3236
- * Describes the message raystack.frontier.v1beta1.UpdateServiceUserRequest.
3237
- * Use `create(UpdateServiceUserRequestSchema)` to create a new message.
3238
- */
3239
- export const UpdateServiceUserRequestSchema: GenMessage<UpdateServiceUserRequest> = /*@__PURE__*/
3240
- messageDesc(file_raystack_frontier_v1beta1_frontier, 133);
3241
-
3242
- /**
3243
- * @generated from message raystack.frontier.v1beta1.UpdateServiceUserResponse
3244
- */
3245
- export type UpdateServiceUserResponse = Message<"raystack.frontier.v1beta1.UpdateServiceUserResponse"> & {
3246
- /**
3247
- * @generated from field: raystack.frontier.v1beta1.ServiceUser serviceuser = 1;
3248
- */
3249
- serviceuser?: ServiceUser;
3250
- };
3251
-
3252
- /**
3253
- * Describes the message raystack.frontier.v1beta1.UpdateServiceUserResponse.
3254
- * Use `create(UpdateServiceUserResponseSchema)` to create a new message.
3255
- */
3256
- export const UpdateServiceUserResponseSchema: GenMessage<UpdateServiceUserResponse> = /*@__PURE__*/
3257
- messageDesc(file_raystack_frontier_v1beta1_frontier, 134);
3258
-
3259
3251
  /**
3260
3252
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserRequest
3261
3253
  */
@@ -3276,7 +3268,7 @@ export type DeleteServiceUserRequest = Message<"raystack.frontier.v1beta1.Delete
3276
3268
  * Use `create(DeleteServiceUserRequestSchema)` to create a new message.
3277
3269
  */
3278
3270
  export const DeleteServiceUserRequestSchema: GenMessage<DeleteServiceUserRequest> = /*@__PURE__*/
3279
- messageDesc(file_raystack_frontier_v1beta1_frontier, 135);
3271
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 133);
3280
3272
 
3281
3273
  /**
3282
3274
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserResponse
@@ -3289,7 +3281,7 @@ export type DeleteServiceUserResponse = Message<"raystack.frontier.v1beta1.Delet
3289
3281
  * Use `create(DeleteServiceUserResponseSchema)` to create a new message.
3290
3282
  */
3291
3283
  export const DeleteServiceUserResponseSchema: GenMessage<DeleteServiceUserResponse> = /*@__PURE__*/
3292
- messageDesc(file_raystack_frontier_v1beta1_frontier, 136);
3284
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 134);
3293
3285
 
3294
3286
  /**
3295
3287
  * @generated from message raystack.frontier.v1beta1.CreateServiceUserJWKRequest
@@ -3316,7 +3308,7 @@ export type CreateServiceUserJWKRequest = Message<"raystack.frontier.v1beta1.Cre
3316
3308
  * Use `create(CreateServiceUserJWKRequestSchema)` to create a new message.
3317
3309
  */
3318
3310
  export const CreateServiceUserJWKRequestSchema: GenMessage<CreateServiceUserJWKRequest> = /*@__PURE__*/
3319
- messageDesc(file_raystack_frontier_v1beta1_frontier, 137);
3311
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 135);
3320
3312
 
3321
3313
  /**
3322
3314
  * @generated from message raystack.frontier.v1beta1.CreateServiceUserJWKResponse
@@ -3333,7 +3325,7 @@ export type CreateServiceUserJWKResponse = Message<"raystack.frontier.v1beta1.Cr
3333
3325
  * Use `create(CreateServiceUserJWKResponseSchema)` to create a new message.
3334
3326
  */
3335
3327
  export const CreateServiceUserJWKResponseSchema: GenMessage<CreateServiceUserJWKResponse> = /*@__PURE__*/
3336
- messageDesc(file_raystack_frontier_v1beta1_frontier, 138);
3328
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 136);
3337
3329
 
3338
3330
  /**
3339
3331
  * @generated from message raystack.frontier.v1beta1.GetServiceUserJWKRequest
@@ -3360,7 +3352,7 @@ export type GetServiceUserJWKRequest = Message<"raystack.frontier.v1beta1.GetSer
3360
3352
  * Use `create(GetServiceUserJWKRequestSchema)` to create a new message.
3361
3353
  */
3362
3354
  export const GetServiceUserJWKRequestSchema: GenMessage<GetServiceUserJWKRequest> = /*@__PURE__*/
3363
- messageDesc(file_raystack_frontier_v1beta1_frontier, 139);
3355
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 137);
3364
3356
 
3365
3357
  /**
3366
3358
  * @generated from message raystack.frontier.v1beta1.GetServiceUserJWKResponse
@@ -3377,7 +3369,7 @@ export type GetServiceUserJWKResponse = Message<"raystack.frontier.v1beta1.GetSe
3377
3369
  * Use `create(GetServiceUserJWKResponseSchema)` to create a new message.
3378
3370
  */
3379
3371
  export const GetServiceUserJWKResponseSchema: GenMessage<GetServiceUserJWKResponse> = /*@__PURE__*/
3380
- messageDesc(file_raystack_frontier_v1beta1_frontier, 140);
3372
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 138);
3381
3373
 
3382
3374
  /**
3383
3375
  * @generated from message raystack.frontier.v1beta1.ListServiceUserJWKsRequest
@@ -3399,7 +3391,7 @@ export type ListServiceUserJWKsRequest = Message<"raystack.frontier.v1beta1.List
3399
3391
  * Use `create(ListServiceUserJWKsRequestSchema)` to create a new message.
3400
3392
  */
3401
3393
  export const ListServiceUserJWKsRequestSchema: GenMessage<ListServiceUserJWKsRequest> = /*@__PURE__*/
3402
- messageDesc(file_raystack_frontier_v1beta1_frontier, 141);
3394
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 139);
3403
3395
 
3404
3396
  /**
3405
3397
  * @generated from message raystack.frontier.v1beta1.ListServiceUserJWKsResponse
@@ -3416,7 +3408,7 @@ export type ListServiceUserJWKsResponse = Message<"raystack.frontier.v1beta1.Lis
3416
3408
  * Use `create(ListServiceUserJWKsResponseSchema)` to create a new message.
3417
3409
  */
3418
3410
  export const ListServiceUserJWKsResponseSchema: GenMessage<ListServiceUserJWKsResponse> = /*@__PURE__*/
3419
- messageDesc(file_raystack_frontier_v1beta1_frontier, 142);
3411
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 140);
3420
3412
 
3421
3413
  /**
3422
3414
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserJWKRequest
@@ -3443,7 +3435,7 @@ export type DeleteServiceUserJWKRequest = Message<"raystack.frontier.v1beta1.Del
3443
3435
  * Use `create(DeleteServiceUserJWKRequestSchema)` to create a new message.
3444
3436
  */
3445
3437
  export const DeleteServiceUserJWKRequestSchema: GenMessage<DeleteServiceUserJWKRequest> = /*@__PURE__*/
3446
- messageDesc(file_raystack_frontier_v1beta1_frontier, 143);
3438
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 141);
3447
3439
 
3448
3440
  /**
3449
3441
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserJWKResponse
@@ -3456,7 +3448,7 @@ export type DeleteServiceUserJWKResponse = Message<"raystack.frontier.v1beta1.De
3456
3448
  * Use `create(DeleteServiceUserJWKResponseSchema)` to create a new message.
3457
3449
  */
3458
3450
  export const DeleteServiceUserJWKResponseSchema: GenMessage<DeleteServiceUserJWKResponse> = /*@__PURE__*/
3459
- messageDesc(file_raystack_frontier_v1beta1_frontier, 144);
3451
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 142);
3460
3452
 
3461
3453
  /**
3462
3454
  * @generated from message raystack.frontier.v1beta1.CreateServiceUserCredentialRequest
@@ -3483,7 +3475,7 @@ export type CreateServiceUserCredentialRequest = Message<"raystack.frontier.v1be
3483
3475
  * Use `create(CreateServiceUserCredentialRequestSchema)` to create a new message.
3484
3476
  */
3485
3477
  export const CreateServiceUserCredentialRequestSchema: GenMessage<CreateServiceUserCredentialRequest> = /*@__PURE__*/
3486
- messageDesc(file_raystack_frontier_v1beta1_frontier, 145);
3478
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 143);
3487
3479
 
3488
3480
  /**
3489
3481
  * @generated from message raystack.frontier.v1beta1.CreateServiceUserCredentialResponse
@@ -3500,7 +3492,7 @@ export type CreateServiceUserCredentialResponse = Message<"raystack.frontier.v1b
3500
3492
  * Use `create(CreateServiceUserCredentialResponseSchema)` to create a new message.
3501
3493
  */
3502
3494
  export const CreateServiceUserCredentialResponseSchema: GenMessage<CreateServiceUserCredentialResponse> = /*@__PURE__*/
3503
- messageDesc(file_raystack_frontier_v1beta1_frontier, 146);
3495
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 144);
3504
3496
 
3505
3497
  /**
3506
3498
  * @generated from message raystack.frontier.v1beta1.ListServiceUserCredentialsRequest
@@ -3522,7 +3514,7 @@ export type ListServiceUserCredentialsRequest = Message<"raystack.frontier.v1bet
3522
3514
  * Use `create(ListServiceUserCredentialsRequestSchema)` to create a new message.
3523
3515
  */
3524
3516
  export const ListServiceUserCredentialsRequestSchema: GenMessage<ListServiceUserCredentialsRequest> = /*@__PURE__*/
3525
- messageDesc(file_raystack_frontier_v1beta1_frontier, 147);
3517
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 145);
3526
3518
 
3527
3519
  /**
3528
3520
  * @generated from message raystack.frontier.v1beta1.ListServiceUserCredentialsResponse
@@ -3541,7 +3533,7 @@ export type ListServiceUserCredentialsResponse = Message<"raystack.frontier.v1be
3541
3533
  * Use `create(ListServiceUserCredentialsResponseSchema)` to create a new message.
3542
3534
  */
3543
3535
  export const ListServiceUserCredentialsResponseSchema: GenMessage<ListServiceUserCredentialsResponse> = /*@__PURE__*/
3544
- messageDesc(file_raystack_frontier_v1beta1_frontier, 148);
3536
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 146);
3545
3537
 
3546
3538
  /**
3547
3539
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserCredentialRequest
@@ -3568,7 +3560,7 @@ export type DeleteServiceUserCredentialRequest = Message<"raystack.frontier.v1be
3568
3560
  * Use `create(DeleteServiceUserCredentialRequestSchema)` to create a new message.
3569
3561
  */
3570
3562
  export const DeleteServiceUserCredentialRequestSchema: GenMessage<DeleteServiceUserCredentialRequest> = /*@__PURE__*/
3571
- messageDesc(file_raystack_frontier_v1beta1_frontier, 149);
3563
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 147);
3572
3564
 
3573
3565
  /**
3574
3566
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserCredentialResponse
@@ -3581,7 +3573,7 @@ export type DeleteServiceUserCredentialResponse = Message<"raystack.frontier.v1b
3581
3573
  * Use `create(DeleteServiceUserCredentialResponseSchema)` to create a new message.
3582
3574
  */
3583
3575
  export const DeleteServiceUserCredentialResponseSchema: GenMessage<DeleteServiceUserCredentialResponse> = /*@__PURE__*/
3584
- messageDesc(file_raystack_frontier_v1beta1_frontier, 150);
3576
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 148);
3585
3577
 
3586
3578
  /**
3587
3579
  * @generated from message raystack.frontier.v1beta1.CreateServiceUserTokenRequest
@@ -3608,7 +3600,7 @@ export type CreateServiceUserTokenRequest = Message<"raystack.frontier.v1beta1.C
3608
3600
  * Use `create(CreateServiceUserTokenRequestSchema)` to create a new message.
3609
3601
  */
3610
3602
  export const CreateServiceUserTokenRequestSchema: GenMessage<CreateServiceUserTokenRequest> = /*@__PURE__*/
3611
- messageDesc(file_raystack_frontier_v1beta1_frontier, 151);
3603
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 149);
3612
3604
 
3613
3605
  /**
3614
3606
  * @generated from message raystack.frontier.v1beta1.CreateServiceUserTokenResponse
@@ -3625,7 +3617,7 @@ export type CreateServiceUserTokenResponse = Message<"raystack.frontier.v1beta1.
3625
3617
  * Use `create(CreateServiceUserTokenResponseSchema)` to create a new message.
3626
3618
  */
3627
3619
  export const CreateServiceUserTokenResponseSchema: GenMessage<CreateServiceUserTokenResponse> = /*@__PURE__*/
3628
- messageDesc(file_raystack_frontier_v1beta1_frontier, 152);
3620
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 150);
3629
3621
 
3630
3622
  /**
3631
3623
  * @generated from message raystack.frontier.v1beta1.ListServiceUserTokensRequest
@@ -3647,7 +3639,7 @@ export type ListServiceUserTokensRequest = Message<"raystack.frontier.v1beta1.Li
3647
3639
  * Use `create(ListServiceUserTokensRequestSchema)` to create a new message.
3648
3640
  */
3649
3641
  export const ListServiceUserTokensRequestSchema: GenMessage<ListServiceUserTokensRequest> = /*@__PURE__*/
3650
- messageDesc(file_raystack_frontier_v1beta1_frontier, 153);
3642
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 151);
3651
3643
 
3652
3644
  /**
3653
3645
  * @generated from message raystack.frontier.v1beta1.ListServiceUserTokensResponse
@@ -3664,7 +3656,7 @@ export type ListServiceUserTokensResponse = Message<"raystack.frontier.v1beta1.L
3664
3656
  * Use `create(ListServiceUserTokensResponseSchema)` to create a new message.
3665
3657
  */
3666
3658
  export const ListServiceUserTokensResponseSchema: GenMessage<ListServiceUserTokensResponse> = /*@__PURE__*/
3667
- messageDesc(file_raystack_frontier_v1beta1_frontier, 154);
3659
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 152);
3668
3660
 
3669
3661
  /**
3670
3662
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserTokenRequest
@@ -3691,7 +3683,7 @@ export type DeleteServiceUserTokenRequest = Message<"raystack.frontier.v1beta1.D
3691
3683
  * Use `create(DeleteServiceUserTokenRequestSchema)` to create a new message.
3692
3684
  */
3693
3685
  export const DeleteServiceUserTokenRequestSchema: GenMessage<DeleteServiceUserTokenRequest> = /*@__PURE__*/
3694
- messageDesc(file_raystack_frontier_v1beta1_frontier, 155);
3686
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 153);
3695
3687
 
3696
3688
  /**
3697
3689
  * @generated from message raystack.frontier.v1beta1.DeleteServiceUserTokenResponse
@@ -3704,7 +3696,7 @@ export type DeleteServiceUserTokenResponse = Message<"raystack.frontier.v1beta1.
3704
3696
  * Use `create(DeleteServiceUserTokenResponseSchema)` to create a new message.
3705
3697
  */
3706
3698
  export const DeleteServiceUserTokenResponseSchema: GenMessage<DeleteServiceUserTokenResponse> = /*@__PURE__*/
3707
- messageDesc(file_raystack_frontier_v1beta1_frontier, 156);
3699
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 154);
3708
3700
 
3709
3701
  /**
3710
3702
  * @generated from message raystack.frontier.v1beta1.ListServiceUserProjectsRequest
@@ -3735,7 +3727,7 @@ export type ListServiceUserProjectsRequest = Message<"raystack.frontier.v1beta1.
3735
3727
  * Use `create(ListServiceUserProjectsRequestSchema)` to create a new message.
3736
3728
  */
3737
3729
  export const ListServiceUserProjectsRequestSchema: GenMessage<ListServiceUserProjectsRequest> = /*@__PURE__*/
3738
- messageDesc(file_raystack_frontier_v1beta1_frontier, 157);
3730
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 155);
3739
3731
 
3740
3732
  /**
3741
3733
  * @generated from message raystack.frontier.v1beta1.ListServiceUserProjectsResponse
@@ -3757,7 +3749,7 @@ export type ListServiceUserProjectsResponse = Message<"raystack.frontier.v1beta1
3757
3749
  * Use `create(ListServiceUserProjectsResponseSchema)` to create a new message.
3758
3750
  */
3759
3751
  export const ListServiceUserProjectsResponseSchema: GenMessage<ListServiceUserProjectsResponse> = /*@__PURE__*/
3760
- messageDesc(file_raystack_frontier_v1beta1_frontier, 158);
3752
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 156);
3761
3753
 
3762
3754
  /**
3763
3755
  * @generated from message raystack.frontier.v1beta1.ListServiceUserProjectsResponse.AccessPair
@@ -3779,7 +3771,7 @@ export type ListServiceUserProjectsResponse_AccessPair = Message<"raystack.front
3779
3771
  * Use `create(ListServiceUserProjectsResponse_AccessPairSchema)` to create a new message.
3780
3772
  */
3781
3773
  export const ListServiceUserProjectsResponse_AccessPairSchema: GenMessage<ListServiceUserProjectsResponse_AccessPair> = /*@__PURE__*/
3782
- messageDesc(file_raystack_frontier_v1beta1_frontier, 158, 0);
3774
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 156, 0);
3783
3775
 
3784
3776
  /**
3785
3777
  * @generated from message raystack.frontier.v1beta1.ListOrganizationGroupsRequest
@@ -3816,7 +3808,7 @@ export type ListOrganizationGroupsRequest = Message<"raystack.frontier.v1beta1.L
3816
3808
  * Use `create(ListOrganizationGroupsRequestSchema)` to create a new message.
3817
3809
  */
3818
3810
  export const ListOrganizationGroupsRequestSchema: GenMessage<ListOrganizationGroupsRequest> = /*@__PURE__*/
3819
- messageDesc(file_raystack_frontier_v1beta1_frontier, 159);
3811
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 157);
3820
3812
 
3821
3813
  /**
3822
3814
  * @generated from message raystack.frontier.v1beta1.ListOrganizationGroupsResponse
@@ -3833,7 +3825,7 @@ export type ListOrganizationGroupsResponse = Message<"raystack.frontier.v1beta1.
3833
3825
  * Use `create(ListOrganizationGroupsResponseSchema)` to create a new message.
3834
3826
  */
3835
3827
  export const ListOrganizationGroupsResponseSchema: GenMessage<ListOrganizationGroupsResponse> = /*@__PURE__*/
3836
- messageDesc(file_raystack_frontier_v1beta1_frontier, 160);
3828
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 158);
3837
3829
 
3838
3830
  /**
3839
3831
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationRoleRequest
@@ -3855,7 +3847,7 @@ export type CreateOrganizationRoleRequest = Message<"raystack.frontier.v1beta1.C
3855
3847
  * Use `create(CreateOrganizationRoleRequestSchema)` to create a new message.
3856
3848
  */
3857
3849
  export const CreateOrganizationRoleRequestSchema: GenMessage<CreateOrganizationRoleRequest> = /*@__PURE__*/
3858
- messageDesc(file_raystack_frontier_v1beta1_frontier, 161);
3850
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 159);
3859
3851
 
3860
3852
  /**
3861
3853
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationRoleResponse
@@ -3872,7 +3864,7 @@ export type CreateOrganizationRoleResponse = Message<"raystack.frontier.v1beta1.
3872
3864
  * Use `create(CreateOrganizationRoleResponseSchema)` to create a new message.
3873
3865
  */
3874
3866
  export const CreateOrganizationRoleResponseSchema: GenMessage<CreateOrganizationRoleResponse> = /*@__PURE__*/
3875
- messageDesc(file_raystack_frontier_v1beta1_frontier, 162);
3867
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 160);
3876
3868
 
3877
3869
  /**
3878
3870
  * @generated from message raystack.frontier.v1beta1.GetOrganizationRoleRequest
@@ -3894,7 +3886,7 @@ export type GetOrganizationRoleRequest = Message<"raystack.frontier.v1beta1.GetO
3894
3886
  * Use `create(GetOrganizationRoleRequestSchema)` to create a new message.
3895
3887
  */
3896
3888
  export const GetOrganizationRoleRequestSchema: GenMessage<GetOrganizationRoleRequest> = /*@__PURE__*/
3897
- messageDesc(file_raystack_frontier_v1beta1_frontier, 163);
3889
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 161);
3898
3890
 
3899
3891
  /**
3900
3892
  * @generated from message raystack.frontier.v1beta1.GetOrganizationRoleResponse
@@ -3911,7 +3903,7 @@ export type GetOrganizationRoleResponse = Message<"raystack.frontier.v1beta1.Get
3911
3903
  * Use `create(GetOrganizationRoleResponseSchema)` to create a new message.
3912
3904
  */
3913
3905
  export const GetOrganizationRoleResponseSchema: GenMessage<GetOrganizationRoleResponse> = /*@__PURE__*/
3914
- messageDesc(file_raystack_frontier_v1beta1_frontier, 164);
3906
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 162);
3915
3907
 
3916
3908
  /**
3917
3909
  * @generated from message raystack.frontier.v1beta1.UpdateOrganizationRoleRequest
@@ -3938,7 +3930,7 @@ export type UpdateOrganizationRoleRequest = Message<"raystack.frontier.v1beta1.U
3938
3930
  * Use `create(UpdateOrganizationRoleRequestSchema)` to create a new message.
3939
3931
  */
3940
3932
  export const UpdateOrganizationRoleRequestSchema: GenMessage<UpdateOrganizationRoleRequest> = /*@__PURE__*/
3941
- messageDesc(file_raystack_frontier_v1beta1_frontier, 165);
3933
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 163);
3942
3934
 
3943
3935
  /**
3944
3936
  * @generated from message raystack.frontier.v1beta1.UpdateOrganizationRoleResponse
@@ -3955,7 +3947,7 @@ export type UpdateOrganizationRoleResponse = Message<"raystack.frontier.v1beta1.
3955
3947
  * Use `create(UpdateOrganizationRoleResponseSchema)` to create a new message.
3956
3948
  */
3957
3949
  export const UpdateOrganizationRoleResponseSchema: GenMessage<UpdateOrganizationRoleResponse> = /*@__PURE__*/
3958
- messageDesc(file_raystack_frontier_v1beta1_frontier, 166);
3950
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 164);
3959
3951
 
3960
3952
  /**
3961
3953
  * @generated from message raystack.frontier.v1beta1.ListRolesRequest
@@ -3977,7 +3969,7 @@ export type ListRolesRequest = Message<"raystack.frontier.v1beta1.ListRolesReque
3977
3969
  * Use `create(ListRolesRequestSchema)` to create a new message.
3978
3970
  */
3979
3971
  export const ListRolesRequestSchema: GenMessage<ListRolesRequest> = /*@__PURE__*/
3980
- messageDesc(file_raystack_frontier_v1beta1_frontier, 167);
3972
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 165);
3981
3973
 
3982
3974
  /**
3983
3975
  * @generated from message raystack.frontier.v1beta1.ListRolesResponse
@@ -3994,7 +3986,7 @@ export type ListRolesResponse = Message<"raystack.frontier.v1beta1.ListRolesResp
3994
3986
  * Use `create(ListRolesResponseSchema)` to create a new message.
3995
3987
  */
3996
3988
  export const ListRolesResponseSchema: GenMessage<ListRolesResponse> = /*@__PURE__*/
3997
- messageDesc(file_raystack_frontier_v1beta1_frontier, 168);
3989
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 166);
3998
3990
 
3999
3991
  /**
4000
3992
  * @generated from message raystack.frontier.v1beta1.ListOrganizationRolesRequest
@@ -4021,7 +4013,7 @@ export type ListOrganizationRolesRequest = Message<"raystack.frontier.v1beta1.Li
4021
4013
  * Use `create(ListOrganizationRolesRequestSchema)` to create a new message.
4022
4014
  */
4023
4015
  export const ListOrganizationRolesRequestSchema: GenMessage<ListOrganizationRolesRequest> = /*@__PURE__*/
4024
- messageDesc(file_raystack_frontier_v1beta1_frontier, 169);
4016
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 167);
4025
4017
 
4026
4018
  /**
4027
4019
  * @generated from message raystack.frontier.v1beta1.ListOrganizationRolesResponse
@@ -4038,7 +4030,7 @@ export type ListOrganizationRolesResponse = Message<"raystack.frontier.v1beta1.L
4038
4030
  * Use `create(ListOrganizationRolesResponseSchema)` to create a new message.
4039
4031
  */
4040
4032
  export const ListOrganizationRolesResponseSchema: GenMessage<ListOrganizationRolesResponse> = /*@__PURE__*/
4041
- messageDesc(file_raystack_frontier_v1beta1_frontier, 170);
4033
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 168);
4042
4034
 
4043
4035
  /**
4044
4036
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationRoleRequest
@@ -4060,7 +4052,7 @@ export type DeleteOrganizationRoleRequest = Message<"raystack.frontier.v1beta1.D
4060
4052
  * Use `create(DeleteOrganizationRoleRequestSchema)` to create a new message.
4061
4053
  */
4062
4054
  export const DeleteOrganizationRoleRequestSchema: GenMessage<DeleteOrganizationRoleRequest> = /*@__PURE__*/
4063
- messageDesc(file_raystack_frontier_v1beta1_frontier, 171);
4055
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 169);
4064
4056
 
4065
4057
  /**
4066
4058
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationRoleResponse
@@ -4073,7 +4065,7 @@ export type DeleteOrganizationRoleResponse = Message<"raystack.frontier.v1beta1.
4073
4065
  * Use `create(DeleteOrganizationRoleResponseSchema)` to create a new message.
4074
4066
  */
4075
4067
  export const DeleteOrganizationRoleResponseSchema: GenMessage<DeleteOrganizationRoleResponse> = /*@__PURE__*/
4076
- messageDesc(file_raystack_frontier_v1beta1_frontier, 172);
4068
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 170);
4077
4069
 
4078
4070
  /**
4079
4071
  * @generated from message raystack.frontier.v1beta1.OrganizationRequestBody
@@ -4105,7 +4097,7 @@ export type OrganizationRequestBody = Message<"raystack.frontier.v1beta1.Organiz
4105
4097
  * Use `create(OrganizationRequestBodySchema)` to create a new message.
4106
4098
  */
4107
4099
  export const OrganizationRequestBodySchema: GenMessage<OrganizationRequestBody> = /*@__PURE__*/
4108
- messageDesc(file_raystack_frontier_v1beta1_frontier, 173);
4100
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 171);
4109
4101
 
4110
4102
  /**
4111
4103
  * @generated from message raystack.frontier.v1beta1.ListOrganizationsRequest
@@ -4137,7 +4129,7 @@ export type ListOrganizationsRequest = Message<"raystack.frontier.v1beta1.ListOr
4137
4129
  * Use `create(ListOrganizationsRequestSchema)` to create a new message.
4138
4130
  */
4139
4131
  export const ListOrganizationsRequestSchema: GenMessage<ListOrganizationsRequest> = /*@__PURE__*/
4140
- messageDesc(file_raystack_frontier_v1beta1_frontier, 174);
4132
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 172);
4141
4133
 
4142
4134
  /**
4143
4135
  * @generated from message raystack.frontier.v1beta1.ListOrganizationsResponse
@@ -4154,7 +4146,7 @@ export type ListOrganizationsResponse = Message<"raystack.frontier.v1beta1.ListO
4154
4146
  * Use `create(ListOrganizationsResponseSchema)` to create a new message.
4155
4147
  */
4156
4148
  export const ListOrganizationsResponseSchema: GenMessage<ListOrganizationsResponse> = /*@__PURE__*/
4157
- messageDesc(file_raystack_frontier_v1beta1_frontier, 175);
4149
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 173);
4158
4150
 
4159
4151
  /**
4160
4152
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationRequest
@@ -4171,7 +4163,7 @@ export type CreateOrganizationRequest = Message<"raystack.frontier.v1beta1.Creat
4171
4163
  * Use `create(CreateOrganizationRequestSchema)` to create a new message.
4172
4164
  */
4173
4165
  export const CreateOrganizationRequestSchema: GenMessage<CreateOrganizationRequest> = /*@__PURE__*/
4174
- messageDesc(file_raystack_frontier_v1beta1_frontier, 176);
4166
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 174);
4175
4167
 
4176
4168
  /**
4177
4169
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationResponse
@@ -4188,7 +4180,7 @@ export type CreateOrganizationResponse = Message<"raystack.frontier.v1beta1.Crea
4188
4180
  * Use `create(CreateOrganizationResponseSchema)` to create a new message.
4189
4181
  */
4190
4182
  export const CreateOrganizationResponseSchema: GenMessage<CreateOrganizationResponse> = /*@__PURE__*/
4191
- messageDesc(file_raystack_frontier_v1beta1_frontier, 177);
4183
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 175);
4192
4184
 
4193
4185
  /**
4194
4186
  * @generated from message raystack.frontier.v1beta1.GetOrganizationResponse
@@ -4205,7 +4197,7 @@ export type GetOrganizationResponse = Message<"raystack.frontier.v1beta1.GetOrga
4205
4197
  * Use `create(GetOrganizationResponseSchema)` to create a new message.
4206
4198
  */
4207
4199
  export const GetOrganizationResponseSchema: GenMessage<GetOrganizationResponse> = /*@__PURE__*/
4208
- messageDesc(file_raystack_frontier_v1beta1_frontier, 178);
4200
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 176);
4209
4201
 
4210
4202
  /**
4211
4203
  * @generated from message raystack.frontier.v1beta1.UpdateOrganizationResponse
@@ -4222,7 +4214,7 @@ export type UpdateOrganizationResponse = Message<"raystack.frontier.v1beta1.Upda
4222
4214
  * Use `create(UpdateOrganizationResponseSchema)` to create a new message.
4223
4215
  */
4224
4216
  export const UpdateOrganizationResponseSchema: GenMessage<UpdateOrganizationResponse> = /*@__PURE__*/
4225
- messageDesc(file_raystack_frontier_v1beta1_frontier, 179);
4217
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 177);
4226
4218
 
4227
4219
  /**
4228
4220
  * @generated from message raystack.frontier.v1beta1.GetOrganizationRequest
@@ -4239,7 +4231,7 @@ export type GetOrganizationRequest = Message<"raystack.frontier.v1beta1.GetOrgan
4239
4231
  * Use `create(GetOrganizationRequestSchema)` to create a new message.
4240
4232
  */
4241
4233
  export const GetOrganizationRequestSchema: GenMessage<GetOrganizationRequest> = /*@__PURE__*/
4242
- messageDesc(file_raystack_frontier_v1beta1_frontier, 180);
4234
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 178);
4243
4235
 
4244
4236
  /**
4245
4237
  * @generated from message raystack.frontier.v1beta1.UpdateOrganizationRequest
@@ -4261,7 +4253,7 @@ export type UpdateOrganizationRequest = Message<"raystack.frontier.v1beta1.Updat
4261
4253
  * Use `create(UpdateOrganizationRequestSchema)` to create a new message.
4262
4254
  */
4263
4255
  export const UpdateOrganizationRequestSchema: GenMessage<UpdateOrganizationRequest> = /*@__PURE__*/
4264
- messageDesc(file_raystack_frontier_v1beta1_frontier, 181);
4256
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 179);
4265
4257
 
4266
4258
  /**
4267
4259
  * @generated from message raystack.frontier.v1beta1.ListOrganizationAdminsRequest
@@ -4278,7 +4270,7 @@ export type ListOrganizationAdminsRequest = Message<"raystack.frontier.v1beta1.L
4278
4270
  * Use `create(ListOrganizationAdminsRequestSchema)` to create a new message.
4279
4271
  */
4280
4272
  export const ListOrganizationAdminsRequestSchema: GenMessage<ListOrganizationAdminsRequest> = /*@__PURE__*/
4281
- messageDesc(file_raystack_frontier_v1beta1_frontier, 182);
4273
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 180);
4282
4274
 
4283
4275
  /**
4284
4276
  * @generated from message raystack.frontier.v1beta1.ListOrganizationAdminsResponse
@@ -4295,7 +4287,7 @@ export type ListOrganizationAdminsResponse = Message<"raystack.frontier.v1beta1.
4295
4287
  * Use `create(ListOrganizationAdminsResponseSchema)` to create a new message.
4296
4288
  */
4297
4289
  export const ListOrganizationAdminsResponseSchema: GenMessage<ListOrganizationAdminsResponse> = /*@__PURE__*/
4298
- messageDesc(file_raystack_frontier_v1beta1_frontier, 183);
4290
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 181);
4299
4291
 
4300
4292
  /**
4301
4293
  * @generated from message raystack.frontier.v1beta1.ListOrganizationUsersRequest
@@ -4328,7 +4320,7 @@ export type ListOrganizationUsersRequest = Message<"raystack.frontier.v1beta1.Li
4328
4320
  * Use `create(ListOrganizationUsersRequestSchema)` to create a new message.
4329
4321
  */
4330
4322
  export const ListOrganizationUsersRequestSchema: GenMessage<ListOrganizationUsersRequest> = /*@__PURE__*/
4331
- messageDesc(file_raystack_frontier_v1beta1_frontier, 184);
4323
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 182);
4332
4324
 
4333
4325
  /**
4334
4326
  * @generated from message raystack.frontier.v1beta1.ListOrganizationUsersResponse
@@ -4350,7 +4342,7 @@ export type ListOrganizationUsersResponse = Message<"raystack.frontier.v1beta1.L
4350
4342
  * Use `create(ListOrganizationUsersResponseSchema)` to create a new message.
4351
4343
  */
4352
4344
  export const ListOrganizationUsersResponseSchema: GenMessage<ListOrganizationUsersResponse> = /*@__PURE__*/
4353
- messageDesc(file_raystack_frontier_v1beta1_frontier, 185);
4345
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 183);
4354
4346
 
4355
4347
  /**
4356
4348
  * @generated from message raystack.frontier.v1beta1.ListOrganizationUsersResponse.RolePair
@@ -4372,7 +4364,7 @@ export type ListOrganizationUsersResponse_RolePair = Message<"raystack.frontier.
4372
4364
  * Use `create(ListOrganizationUsersResponse_RolePairSchema)` to create a new message.
4373
4365
  */
4374
4366
  export const ListOrganizationUsersResponse_RolePairSchema: GenMessage<ListOrganizationUsersResponse_RolePair> = /*@__PURE__*/
4375
- messageDesc(file_raystack_frontier_v1beta1_frontier, 185, 0);
4367
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 183, 0);
4376
4368
 
4377
4369
  /**
4378
4370
  * @generated from message raystack.frontier.v1beta1.AddOrganizationUsersRequest
@@ -4394,7 +4386,7 @@ export type AddOrganizationUsersRequest = Message<"raystack.frontier.v1beta1.Add
4394
4386
  * Use `create(AddOrganizationUsersRequestSchema)` to create a new message.
4395
4387
  */
4396
4388
  export const AddOrganizationUsersRequestSchema: GenMessage<AddOrganizationUsersRequest> = /*@__PURE__*/
4397
- messageDesc(file_raystack_frontier_v1beta1_frontier, 186);
4389
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 184);
4398
4390
 
4399
4391
  /**
4400
4392
  * @generated from message raystack.frontier.v1beta1.AddOrganizationUsersResponse
@@ -4407,7 +4399,7 @@ export type AddOrganizationUsersResponse = Message<"raystack.frontier.v1beta1.Ad
4407
4399
  * Use `create(AddOrganizationUsersResponseSchema)` to create a new message.
4408
4400
  */
4409
4401
  export const AddOrganizationUsersResponseSchema: GenMessage<AddOrganizationUsersResponse> = /*@__PURE__*/
4410
- messageDesc(file_raystack_frontier_v1beta1_frontier, 187);
4402
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 185);
4411
4403
 
4412
4404
  /**
4413
4405
  * @generated from message raystack.frontier.v1beta1.RemoveOrganizationUserRequest
@@ -4429,7 +4421,7 @@ export type RemoveOrganizationUserRequest = Message<"raystack.frontier.v1beta1.R
4429
4421
  * Use `create(RemoveOrganizationUserRequestSchema)` to create a new message.
4430
4422
  */
4431
4423
  export const RemoveOrganizationUserRequestSchema: GenMessage<RemoveOrganizationUserRequest> = /*@__PURE__*/
4432
- messageDesc(file_raystack_frontier_v1beta1_frontier, 188);
4424
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 186);
4433
4425
 
4434
4426
  /**
4435
4427
  * @generated from message raystack.frontier.v1beta1.RemoveOrganizationUserResponse
@@ -4442,7 +4434,7 @@ export type RemoveOrganizationUserResponse = Message<"raystack.frontier.v1beta1.
4442
4434
  * Use `create(RemoveOrganizationUserResponseSchema)` to create a new message.
4443
4435
  */
4444
4436
  export const RemoveOrganizationUserResponseSchema: GenMessage<RemoveOrganizationUserResponse> = /*@__PURE__*/
4445
- messageDesc(file_raystack_frontier_v1beta1_frontier, 189);
4437
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 187);
4446
4438
 
4447
4439
  /**
4448
4440
  * @generated from message raystack.frontier.v1beta1.ListOrganizationServiceUsersRequest
@@ -4459,7 +4451,7 @@ export type ListOrganizationServiceUsersRequest = Message<"raystack.frontier.v1b
4459
4451
  * Use `create(ListOrganizationServiceUsersRequestSchema)` to create a new message.
4460
4452
  */
4461
4453
  export const ListOrganizationServiceUsersRequestSchema: GenMessage<ListOrganizationServiceUsersRequest> = /*@__PURE__*/
4462
- messageDesc(file_raystack_frontier_v1beta1_frontier, 190);
4454
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 188);
4463
4455
 
4464
4456
  /**
4465
4457
  * @generated from message raystack.frontier.v1beta1.ListOrganizationServiceUsersResponse
@@ -4476,7 +4468,7 @@ export type ListOrganizationServiceUsersResponse = Message<"raystack.frontier.v1
4476
4468
  * Use `create(ListOrganizationServiceUsersResponseSchema)` to create a new message.
4477
4469
  */
4478
4470
  export const ListOrganizationServiceUsersResponseSchema: GenMessage<ListOrganizationServiceUsersResponse> = /*@__PURE__*/
4479
- messageDesc(file_raystack_frontier_v1beta1_frontier, 191);
4471
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 189);
4480
4472
 
4481
4473
  /**
4482
4474
  * @generated from message raystack.frontier.v1beta1.ListOrganizationInvitationsRequest
@@ -4498,7 +4490,7 @@ export type ListOrganizationInvitationsRequest = Message<"raystack.frontier.v1be
4498
4490
  * Use `create(ListOrganizationInvitationsRequestSchema)` to create a new message.
4499
4491
  */
4500
4492
  export const ListOrganizationInvitationsRequestSchema: GenMessage<ListOrganizationInvitationsRequest> = /*@__PURE__*/
4501
- messageDesc(file_raystack_frontier_v1beta1_frontier, 192);
4493
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 190);
4502
4494
 
4503
4495
  /**
4504
4496
  * @generated from message raystack.frontier.v1beta1.ListOrganizationInvitationsResponse
@@ -4515,7 +4507,7 @@ export type ListOrganizationInvitationsResponse = Message<"raystack.frontier.v1b
4515
4507
  * Use `create(ListOrganizationInvitationsResponseSchema)` to create a new message.
4516
4508
  */
4517
4509
  export const ListOrganizationInvitationsResponseSchema: GenMessage<ListOrganizationInvitationsResponse> = /*@__PURE__*/
4518
- messageDesc(file_raystack_frontier_v1beta1_frontier, 193);
4510
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 191);
4519
4511
 
4520
4512
  /**
4521
4513
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationInvitationRequest
@@ -4547,7 +4539,7 @@ export type CreateOrganizationInvitationRequest = Message<"raystack.frontier.v1b
4547
4539
  * Use `create(CreateOrganizationInvitationRequestSchema)` to create a new message.
4548
4540
  */
4549
4541
  export const CreateOrganizationInvitationRequestSchema: GenMessage<CreateOrganizationInvitationRequest> = /*@__PURE__*/
4550
- messageDesc(file_raystack_frontier_v1beta1_frontier, 194);
4542
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 192);
4551
4543
 
4552
4544
  /**
4553
4545
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationInvitationResponse
@@ -4564,7 +4556,7 @@ export type CreateOrganizationInvitationResponse = Message<"raystack.frontier.v1
4564
4556
  * Use `create(CreateOrganizationInvitationResponseSchema)` to create a new message.
4565
4557
  */
4566
4558
  export const CreateOrganizationInvitationResponseSchema: GenMessage<CreateOrganizationInvitationResponse> = /*@__PURE__*/
4567
- messageDesc(file_raystack_frontier_v1beta1_frontier, 195);
4559
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 193);
4568
4560
 
4569
4561
  /**
4570
4562
  * @generated from message raystack.frontier.v1beta1.GetOrganizationInvitationRequest
@@ -4586,7 +4578,7 @@ export type GetOrganizationInvitationRequest = Message<"raystack.frontier.v1beta
4586
4578
  * Use `create(GetOrganizationInvitationRequestSchema)` to create a new message.
4587
4579
  */
4588
4580
  export const GetOrganizationInvitationRequestSchema: GenMessage<GetOrganizationInvitationRequest> = /*@__PURE__*/
4589
- messageDesc(file_raystack_frontier_v1beta1_frontier, 196);
4581
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 194);
4590
4582
 
4591
4583
  /**
4592
4584
  * @generated from message raystack.frontier.v1beta1.GetOrganizationInvitationResponse
@@ -4603,7 +4595,7 @@ export type GetOrganizationInvitationResponse = Message<"raystack.frontier.v1bet
4603
4595
  * Use `create(GetOrganizationInvitationResponseSchema)` to create a new message.
4604
4596
  */
4605
4597
  export const GetOrganizationInvitationResponseSchema: GenMessage<GetOrganizationInvitationResponse> = /*@__PURE__*/
4606
- messageDesc(file_raystack_frontier_v1beta1_frontier, 197);
4598
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 195);
4607
4599
 
4608
4600
  /**
4609
4601
  * @generated from message raystack.frontier.v1beta1.AcceptOrganizationInvitationRequest
@@ -4625,7 +4617,7 @@ export type AcceptOrganizationInvitationRequest = Message<"raystack.frontier.v1b
4625
4617
  * Use `create(AcceptOrganizationInvitationRequestSchema)` to create a new message.
4626
4618
  */
4627
4619
  export const AcceptOrganizationInvitationRequestSchema: GenMessage<AcceptOrganizationInvitationRequest> = /*@__PURE__*/
4628
- messageDesc(file_raystack_frontier_v1beta1_frontier, 198);
4620
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 196);
4629
4621
 
4630
4622
  /**
4631
4623
  * @generated from message raystack.frontier.v1beta1.AcceptOrganizationInvitationResponse
@@ -4638,7 +4630,7 @@ export type AcceptOrganizationInvitationResponse = Message<"raystack.frontier.v1
4638
4630
  * Use `create(AcceptOrganizationInvitationResponseSchema)` to create a new message.
4639
4631
  */
4640
4632
  export const AcceptOrganizationInvitationResponseSchema: GenMessage<AcceptOrganizationInvitationResponse> = /*@__PURE__*/
4641
- messageDesc(file_raystack_frontier_v1beta1_frontier, 199);
4633
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 197);
4642
4634
 
4643
4635
  /**
4644
4636
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationInvitationRequest
@@ -4660,7 +4652,7 @@ export type DeleteOrganizationInvitationRequest = Message<"raystack.frontier.v1b
4660
4652
  * Use `create(DeleteOrganizationInvitationRequestSchema)` to create a new message.
4661
4653
  */
4662
4654
  export const DeleteOrganizationInvitationRequestSchema: GenMessage<DeleteOrganizationInvitationRequest> = /*@__PURE__*/
4663
- messageDesc(file_raystack_frontier_v1beta1_frontier, 200);
4655
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 198);
4664
4656
 
4665
4657
  /**
4666
4658
  * @generated from message raystack.frontier.v1beta1.ListOrganizationDomainsRequest
@@ -4682,7 +4674,7 @@ export type ListOrganizationDomainsRequest = Message<"raystack.frontier.v1beta1.
4682
4674
  * Use `create(ListOrganizationDomainsRequestSchema)` to create a new message.
4683
4675
  */
4684
4676
  export const ListOrganizationDomainsRequestSchema: GenMessage<ListOrganizationDomainsRequest> = /*@__PURE__*/
4685
- messageDesc(file_raystack_frontier_v1beta1_frontier, 201);
4677
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 199);
4686
4678
 
4687
4679
  /**
4688
4680
  * @generated from message raystack.frontier.v1beta1.ListOrganizationDomainsResponse
@@ -4699,7 +4691,7 @@ export type ListOrganizationDomainsResponse = Message<"raystack.frontier.v1beta1
4699
4691
  * Use `create(ListOrganizationDomainsResponseSchema)` to create a new message.
4700
4692
  */
4701
4693
  export const ListOrganizationDomainsResponseSchema: GenMessage<ListOrganizationDomainsResponse> = /*@__PURE__*/
4702
- messageDesc(file_raystack_frontier_v1beta1_frontier, 202);
4694
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 200);
4703
4695
 
4704
4696
  /**
4705
4697
  * @generated from message raystack.frontier.v1beta1.ListOrganizationsByDomainRequest
@@ -4716,7 +4708,7 @@ export type ListOrganizationsByDomainRequest = Message<"raystack.frontier.v1beta
4716
4708
  * Use `create(ListOrganizationsByDomainRequestSchema)` to create a new message.
4717
4709
  */
4718
4710
  export const ListOrganizationsByDomainRequestSchema: GenMessage<ListOrganizationsByDomainRequest> = /*@__PURE__*/
4719
- messageDesc(file_raystack_frontier_v1beta1_frontier, 203);
4711
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 201);
4720
4712
 
4721
4713
  /**
4722
4714
  * @generated from message raystack.frontier.v1beta1.ListOrganizationsByDomainResponse
@@ -4733,7 +4725,7 @@ export type ListOrganizationsByDomainResponse = Message<"raystack.frontier.v1bet
4733
4725
  * Use `create(ListOrganizationsByDomainResponseSchema)` to create a new message.
4734
4726
  */
4735
4727
  export const ListOrganizationsByDomainResponseSchema: GenMessage<ListOrganizationsByDomainResponse> = /*@__PURE__*/
4736
- messageDesc(file_raystack_frontier_v1beta1_frontier, 204);
4728
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 202);
4737
4729
 
4738
4730
  /**
4739
4731
  * @generated from message raystack.frontier.v1beta1.JoinOrganizationRequest
@@ -4750,7 +4742,7 @@ export type JoinOrganizationRequest = Message<"raystack.frontier.v1beta1.JoinOrg
4750
4742
  * Use `create(JoinOrganizationRequestSchema)` to create a new message.
4751
4743
  */
4752
4744
  export const JoinOrganizationRequestSchema: GenMessage<JoinOrganizationRequest> = /*@__PURE__*/
4753
- messageDesc(file_raystack_frontier_v1beta1_frontier, 205);
4745
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 203);
4754
4746
 
4755
4747
  /**
4756
4748
  * @generated from message raystack.frontier.v1beta1.JoinOrganizationResponse
@@ -4763,7 +4755,7 @@ export type JoinOrganizationResponse = Message<"raystack.frontier.v1beta1.JoinOr
4763
4755
  * Use `create(JoinOrganizationResponseSchema)` to create a new message.
4764
4756
  */
4765
4757
  export const JoinOrganizationResponseSchema: GenMessage<JoinOrganizationResponse> = /*@__PURE__*/
4766
- messageDesc(file_raystack_frontier_v1beta1_frontier, 206);
4758
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 204);
4767
4759
 
4768
4760
  /**
4769
4761
  * @generated from message raystack.frontier.v1beta1.GetOrganizationDomainRequest
@@ -4785,7 +4777,7 @@ export type GetOrganizationDomainRequest = Message<"raystack.frontier.v1beta1.Ge
4785
4777
  * Use `create(GetOrganizationDomainRequestSchema)` to create a new message.
4786
4778
  */
4787
4779
  export const GetOrganizationDomainRequestSchema: GenMessage<GetOrganizationDomainRequest> = /*@__PURE__*/
4788
- messageDesc(file_raystack_frontier_v1beta1_frontier, 207);
4780
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 205);
4789
4781
 
4790
4782
  /**
4791
4783
  * @generated from message raystack.frontier.v1beta1.GetOrganizationDomainResponse
@@ -4802,7 +4794,7 @@ export type GetOrganizationDomainResponse = Message<"raystack.frontier.v1beta1.G
4802
4794
  * Use `create(GetOrganizationDomainResponseSchema)` to create a new message.
4803
4795
  */
4804
4796
  export const GetOrganizationDomainResponseSchema: GenMessage<GetOrganizationDomainResponse> = /*@__PURE__*/
4805
- messageDesc(file_raystack_frontier_v1beta1_frontier, 208);
4797
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 206);
4806
4798
 
4807
4799
  /**
4808
4800
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationDomainRequest
@@ -4824,7 +4816,7 @@ export type CreateOrganizationDomainRequest = Message<"raystack.frontier.v1beta1
4824
4816
  * Use `create(CreateOrganizationDomainRequestSchema)` to create a new message.
4825
4817
  */
4826
4818
  export const CreateOrganizationDomainRequestSchema: GenMessage<CreateOrganizationDomainRequest> = /*@__PURE__*/
4827
- messageDesc(file_raystack_frontier_v1beta1_frontier, 209);
4819
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 207);
4828
4820
 
4829
4821
  /**
4830
4822
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationDomainResponse
@@ -4841,7 +4833,7 @@ export type CreateOrganizationDomainResponse = Message<"raystack.frontier.v1beta
4841
4833
  * Use `create(CreateOrganizationDomainResponseSchema)` to create a new message.
4842
4834
  */
4843
4835
  export const CreateOrganizationDomainResponseSchema: GenMessage<CreateOrganizationDomainResponse> = /*@__PURE__*/
4844
- messageDesc(file_raystack_frontier_v1beta1_frontier, 210);
4836
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 208);
4845
4837
 
4846
4838
  /**
4847
4839
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationDomainRequest
@@ -4863,7 +4855,7 @@ export type DeleteOrganizationDomainRequest = Message<"raystack.frontier.v1beta1
4863
4855
  * Use `create(DeleteOrganizationDomainRequestSchema)` to create a new message.
4864
4856
  */
4865
4857
  export const DeleteOrganizationDomainRequestSchema: GenMessage<DeleteOrganizationDomainRequest> = /*@__PURE__*/
4866
- messageDesc(file_raystack_frontier_v1beta1_frontier, 211);
4858
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 209);
4867
4859
 
4868
4860
  /**
4869
4861
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationDomainResponse
@@ -4876,7 +4868,7 @@ export type DeleteOrganizationDomainResponse = Message<"raystack.frontier.v1beta
4876
4868
  * Use `create(DeleteOrganizationDomainResponseSchema)` to create a new message.
4877
4869
  */
4878
4870
  export const DeleteOrganizationDomainResponseSchema: GenMessage<DeleteOrganizationDomainResponse> = /*@__PURE__*/
4879
- messageDesc(file_raystack_frontier_v1beta1_frontier, 212);
4871
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 210);
4880
4872
 
4881
4873
  /**
4882
4874
  * @generated from message raystack.frontier.v1beta1.VerifyOrganizationDomainRequest
@@ -4898,7 +4890,7 @@ export type VerifyOrganizationDomainRequest = Message<"raystack.frontier.v1beta1
4898
4890
  * Use `create(VerifyOrganizationDomainRequestSchema)` to create a new message.
4899
4891
  */
4900
4892
  export const VerifyOrganizationDomainRequestSchema: GenMessage<VerifyOrganizationDomainRequest> = /*@__PURE__*/
4901
- messageDesc(file_raystack_frontier_v1beta1_frontier, 213);
4893
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 211);
4902
4894
 
4903
4895
  /**
4904
4896
  * @generated from message raystack.frontier.v1beta1.VerifyOrganizationDomainResponse
@@ -4915,7 +4907,7 @@ export type VerifyOrganizationDomainResponse = Message<"raystack.frontier.v1beta
4915
4907
  * Use `create(VerifyOrganizationDomainResponseSchema)` to create a new message.
4916
4908
  */
4917
4909
  export const VerifyOrganizationDomainResponseSchema: GenMessage<VerifyOrganizationDomainResponse> = /*@__PURE__*/
4918
- messageDesc(file_raystack_frontier_v1beta1_frontier, 214);
4910
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 212);
4919
4911
 
4920
4912
  /**
4921
4913
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationInvitationResponse
@@ -4928,7 +4920,7 @@ export type DeleteOrganizationInvitationResponse = Message<"raystack.frontier.v1
4928
4920
  * Use `create(DeleteOrganizationInvitationResponseSchema)` to create a new message.
4929
4921
  */
4930
4922
  export const DeleteOrganizationInvitationResponseSchema: GenMessage<DeleteOrganizationInvitationResponse> = /*@__PURE__*/
4931
- messageDesc(file_raystack_frontier_v1beta1_frontier, 215);
4923
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 213);
4932
4924
 
4933
4925
  /**
4934
4926
  * @generated from message raystack.frontier.v1beta1.EnableOrganizationRequest
@@ -4945,7 +4937,7 @@ export type EnableOrganizationRequest = Message<"raystack.frontier.v1beta1.Enabl
4945
4937
  * Use `create(EnableOrganizationRequestSchema)` to create a new message.
4946
4938
  */
4947
4939
  export const EnableOrganizationRequestSchema: GenMessage<EnableOrganizationRequest> = /*@__PURE__*/
4948
- messageDesc(file_raystack_frontier_v1beta1_frontier, 216);
4940
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 214);
4949
4941
 
4950
4942
  /**
4951
4943
  * @generated from message raystack.frontier.v1beta1.EnableOrganizationResponse
@@ -4958,7 +4950,7 @@ export type EnableOrganizationResponse = Message<"raystack.frontier.v1beta1.Enab
4958
4950
  * Use `create(EnableOrganizationResponseSchema)` to create a new message.
4959
4951
  */
4960
4952
  export const EnableOrganizationResponseSchema: GenMessage<EnableOrganizationResponse> = /*@__PURE__*/
4961
- messageDesc(file_raystack_frontier_v1beta1_frontier, 217);
4953
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 215);
4962
4954
 
4963
4955
  /**
4964
4956
  * @generated from message raystack.frontier.v1beta1.DisableOrganizationRequest
@@ -4975,7 +4967,7 @@ export type DisableOrganizationRequest = Message<"raystack.frontier.v1beta1.Disa
4975
4967
  * Use `create(DisableOrganizationRequestSchema)` to create a new message.
4976
4968
  */
4977
4969
  export const DisableOrganizationRequestSchema: GenMessage<DisableOrganizationRequest> = /*@__PURE__*/
4978
- messageDesc(file_raystack_frontier_v1beta1_frontier, 218);
4970
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 216);
4979
4971
 
4980
4972
  /**
4981
4973
  * @generated from message raystack.frontier.v1beta1.DisableOrganizationResponse
@@ -4988,7 +4980,7 @@ export type DisableOrganizationResponse = Message<"raystack.frontier.v1beta1.Dis
4988
4980
  * Use `create(DisableOrganizationResponseSchema)` to create a new message.
4989
4981
  */
4990
4982
  export const DisableOrganizationResponseSchema: GenMessage<DisableOrganizationResponse> = /*@__PURE__*/
4991
- messageDesc(file_raystack_frontier_v1beta1_frontier, 219);
4983
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 217);
4992
4984
 
4993
4985
  /**
4994
4986
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationRequest
@@ -5005,7 +4997,7 @@ export type DeleteOrganizationRequest = Message<"raystack.frontier.v1beta1.Delet
5005
4997
  * Use `create(DeleteOrganizationRequestSchema)` to create a new message.
5006
4998
  */
5007
4999
  export const DeleteOrganizationRequestSchema: GenMessage<DeleteOrganizationRequest> = /*@__PURE__*/
5008
- messageDesc(file_raystack_frontier_v1beta1_frontier, 220);
5000
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 218);
5009
5001
 
5010
5002
  /**
5011
5003
  * @generated from message raystack.frontier.v1beta1.DeleteOrganizationResponse
@@ -5018,7 +5010,7 @@ export type DeleteOrganizationResponse = Message<"raystack.frontier.v1beta1.Dele
5018
5010
  * Use `create(DeleteOrganizationResponseSchema)` to create a new message.
5019
5011
  */
5020
5012
  export const DeleteOrganizationResponseSchema: GenMessage<DeleteOrganizationResponse> = /*@__PURE__*/
5021
- messageDesc(file_raystack_frontier_v1beta1_frontier, 221);
5013
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 219);
5022
5014
 
5023
5015
  /**
5024
5016
  * @generated from message raystack.frontier.v1beta1.GetOrganizationKycRequest
@@ -5035,7 +5027,7 @@ export type GetOrganizationKycRequest = Message<"raystack.frontier.v1beta1.GetOr
5035
5027
  * Use `create(GetOrganizationKycRequestSchema)` to create a new message.
5036
5028
  */
5037
5029
  export const GetOrganizationKycRequestSchema: GenMessage<GetOrganizationKycRequest> = /*@__PURE__*/
5038
- messageDesc(file_raystack_frontier_v1beta1_frontier, 222);
5030
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 220);
5039
5031
 
5040
5032
  /**
5041
5033
  * @generated from message raystack.frontier.v1beta1.GetOrganizationKycResponse
@@ -5052,7 +5044,7 @@ export type GetOrganizationKycResponse = Message<"raystack.frontier.v1beta1.GetO
5052
5044
  * Use `create(GetOrganizationKycResponseSchema)` to create a new message.
5053
5045
  */
5054
5046
  export const GetOrganizationKycResponseSchema: GenMessage<GetOrganizationKycResponse> = /*@__PURE__*/
5055
- messageDesc(file_raystack_frontier_v1beta1_frontier, 223);
5047
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 221);
5056
5048
 
5057
5049
  /**
5058
5050
  * @generated from message raystack.frontier.v1beta1.ProjectRequestBody
@@ -5084,7 +5076,7 @@ export type ProjectRequestBody = Message<"raystack.frontier.v1beta1.ProjectReque
5084
5076
  * Use `create(ProjectRequestBodySchema)` to create a new message.
5085
5077
  */
5086
5078
  export const ProjectRequestBodySchema: GenMessage<ProjectRequestBody> = /*@__PURE__*/
5087
- messageDesc(file_raystack_frontier_v1beta1_frontier, 224);
5079
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 222);
5088
5080
 
5089
5081
  /**
5090
5082
  * @generated from message raystack.frontier.v1beta1.CreateProjectRequest
@@ -5101,7 +5093,7 @@ export type CreateProjectRequest = Message<"raystack.frontier.v1beta1.CreateProj
5101
5093
  * Use `create(CreateProjectRequestSchema)` to create a new message.
5102
5094
  */
5103
5095
  export const CreateProjectRequestSchema: GenMessage<CreateProjectRequest> = /*@__PURE__*/
5104
- messageDesc(file_raystack_frontier_v1beta1_frontier, 225);
5096
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 223);
5105
5097
 
5106
5098
  /**
5107
5099
  * @generated from message raystack.frontier.v1beta1.CreateProjectResponse
@@ -5118,7 +5110,7 @@ export type CreateProjectResponse = Message<"raystack.frontier.v1beta1.CreatePro
5118
5110
  * Use `create(CreateProjectResponseSchema)` to create a new message.
5119
5111
  */
5120
5112
  export const CreateProjectResponseSchema: GenMessage<CreateProjectResponse> = /*@__PURE__*/
5121
- messageDesc(file_raystack_frontier_v1beta1_frontier, 226);
5113
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 224);
5122
5114
 
5123
5115
  /**
5124
5116
  * @generated from message raystack.frontier.v1beta1.ListOrganizationProjectsRequest
@@ -5145,7 +5137,7 @@ export type ListOrganizationProjectsRequest = Message<"raystack.frontier.v1beta1
5145
5137
  * Use `create(ListOrganizationProjectsRequestSchema)` to create a new message.
5146
5138
  */
5147
5139
  export const ListOrganizationProjectsRequestSchema: GenMessage<ListOrganizationProjectsRequest> = /*@__PURE__*/
5148
- messageDesc(file_raystack_frontier_v1beta1_frontier, 227);
5140
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 225);
5149
5141
 
5150
5142
  /**
5151
5143
  * @generated from message raystack.frontier.v1beta1.ListOrganizationProjectsResponse
@@ -5162,7 +5154,7 @@ export type ListOrganizationProjectsResponse = Message<"raystack.frontier.v1beta
5162
5154
  * Use `create(ListOrganizationProjectsResponseSchema)` to create a new message.
5163
5155
  */
5164
5156
  export const ListOrganizationProjectsResponseSchema: GenMessage<ListOrganizationProjectsResponse> = /*@__PURE__*/
5165
- messageDesc(file_raystack_frontier_v1beta1_frontier, 228);
5157
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 226);
5166
5158
 
5167
5159
  /**
5168
5160
  * @generated from message raystack.frontier.v1beta1.GetProjectRequest
@@ -5179,7 +5171,7 @@ export type GetProjectRequest = Message<"raystack.frontier.v1beta1.GetProjectReq
5179
5171
  * Use `create(GetProjectRequestSchema)` to create a new message.
5180
5172
  */
5181
5173
  export const GetProjectRequestSchema: GenMessage<GetProjectRequest> = /*@__PURE__*/
5182
- messageDesc(file_raystack_frontier_v1beta1_frontier, 229);
5174
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 227);
5183
5175
 
5184
5176
  /**
5185
5177
  * @generated from message raystack.frontier.v1beta1.GetProjectResponse
@@ -5196,7 +5188,7 @@ export type GetProjectResponse = Message<"raystack.frontier.v1beta1.GetProjectRe
5196
5188
  * Use `create(GetProjectResponseSchema)` to create a new message.
5197
5189
  */
5198
5190
  export const GetProjectResponseSchema: GenMessage<GetProjectResponse> = /*@__PURE__*/
5199
- messageDesc(file_raystack_frontier_v1beta1_frontier, 230);
5191
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 228);
5200
5192
 
5201
5193
  /**
5202
5194
  * @generated from message raystack.frontier.v1beta1.UpdateProjectRequest
@@ -5218,7 +5210,7 @@ export type UpdateProjectRequest = Message<"raystack.frontier.v1beta1.UpdateProj
5218
5210
  * Use `create(UpdateProjectRequestSchema)` to create a new message.
5219
5211
  */
5220
5212
  export const UpdateProjectRequestSchema: GenMessage<UpdateProjectRequest> = /*@__PURE__*/
5221
- messageDesc(file_raystack_frontier_v1beta1_frontier, 231);
5213
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 229);
5222
5214
 
5223
5215
  /**
5224
5216
  * @generated from message raystack.frontier.v1beta1.UpdateProjectResponse
@@ -5235,7 +5227,7 @@ export type UpdateProjectResponse = Message<"raystack.frontier.v1beta1.UpdatePro
5235
5227
  * Use `create(UpdateProjectResponseSchema)` to create a new message.
5236
5228
  */
5237
5229
  export const UpdateProjectResponseSchema: GenMessage<UpdateProjectResponse> = /*@__PURE__*/
5238
- messageDesc(file_raystack_frontier_v1beta1_frontier, 232);
5230
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 230);
5239
5231
 
5240
5232
  /**
5241
5233
  * @generated from message raystack.frontier.v1beta1.ListProjectAdminsRequest
@@ -5252,7 +5244,7 @@ export type ListProjectAdminsRequest = Message<"raystack.frontier.v1beta1.ListPr
5252
5244
  * Use `create(ListProjectAdminsRequestSchema)` to create a new message.
5253
5245
  */
5254
5246
  export const ListProjectAdminsRequestSchema: GenMessage<ListProjectAdminsRequest> = /*@__PURE__*/
5255
- messageDesc(file_raystack_frontier_v1beta1_frontier, 233);
5247
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 231);
5256
5248
 
5257
5249
  /**
5258
5250
  * @generated from message raystack.frontier.v1beta1.ListProjectAdminsResponse
@@ -5269,7 +5261,7 @@ export type ListProjectAdminsResponse = Message<"raystack.frontier.v1beta1.ListP
5269
5261
  * Use `create(ListProjectAdminsResponseSchema)` to create a new message.
5270
5262
  */
5271
5263
  export const ListProjectAdminsResponseSchema: GenMessage<ListProjectAdminsResponse> = /*@__PURE__*/
5272
- messageDesc(file_raystack_frontier_v1beta1_frontier, 234);
5264
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 232);
5273
5265
 
5274
5266
  /**
5275
5267
  * @generated from message raystack.frontier.v1beta1.ListProjectUsersRequest
@@ -5296,7 +5288,7 @@ export type ListProjectUsersRequest = Message<"raystack.frontier.v1beta1.ListPro
5296
5288
  * Use `create(ListProjectUsersRequestSchema)` to create a new message.
5297
5289
  */
5298
5290
  export const ListProjectUsersRequestSchema: GenMessage<ListProjectUsersRequest> = /*@__PURE__*/
5299
- messageDesc(file_raystack_frontier_v1beta1_frontier, 235);
5291
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 233);
5300
5292
 
5301
5293
  /**
5302
5294
  * @generated from message raystack.frontier.v1beta1.ListProjectUsersResponse
@@ -5318,7 +5310,7 @@ export type ListProjectUsersResponse = Message<"raystack.frontier.v1beta1.ListPr
5318
5310
  * Use `create(ListProjectUsersResponseSchema)` to create a new message.
5319
5311
  */
5320
5312
  export const ListProjectUsersResponseSchema: GenMessage<ListProjectUsersResponse> = /*@__PURE__*/
5321
- messageDesc(file_raystack_frontier_v1beta1_frontier, 236);
5313
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 234);
5322
5314
 
5323
5315
  /**
5324
5316
  * @generated from message raystack.frontier.v1beta1.ListProjectUsersResponse.RolePair
@@ -5340,7 +5332,7 @@ export type ListProjectUsersResponse_RolePair = Message<"raystack.frontier.v1bet
5340
5332
  * Use `create(ListProjectUsersResponse_RolePairSchema)` to create a new message.
5341
5333
  */
5342
5334
  export const ListProjectUsersResponse_RolePairSchema: GenMessage<ListProjectUsersResponse_RolePair> = /*@__PURE__*/
5343
- messageDesc(file_raystack_frontier_v1beta1_frontier, 236, 0);
5335
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 234, 0);
5344
5336
 
5345
5337
  /**
5346
5338
  * @generated from message raystack.frontier.v1beta1.ListProjectServiceUsersRequest
@@ -5362,7 +5354,7 @@ export type ListProjectServiceUsersRequest = Message<"raystack.frontier.v1beta1.
5362
5354
  * Use `create(ListProjectServiceUsersRequestSchema)` to create a new message.
5363
5355
  */
5364
5356
  export const ListProjectServiceUsersRequestSchema: GenMessage<ListProjectServiceUsersRequest> = /*@__PURE__*/
5365
- messageDesc(file_raystack_frontier_v1beta1_frontier, 237);
5357
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 235);
5366
5358
 
5367
5359
  /**
5368
5360
  * @generated from message raystack.frontier.v1beta1.ListProjectServiceUsersResponse
@@ -5384,7 +5376,7 @@ export type ListProjectServiceUsersResponse = Message<"raystack.frontier.v1beta1
5384
5376
  * Use `create(ListProjectServiceUsersResponseSchema)` to create a new message.
5385
5377
  */
5386
5378
  export const ListProjectServiceUsersResponseSchema: GenMessage<ListProjectServiceUsersResponse> = /*@__PURE__*/
5387
- messageDesc(file_raystack_frontier_v1beta1_frontier, 238);
5379
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 236);
5388
5380
 
5389
5381
  /**
5390
5382
  * @generated from message raystack.frontier.v1beta1.ListProjectServiceUsersResponse.RolePair
@@ -5406,7 +5398,7 @@ export type ListProjectServiceUsersResponse_RolePair = Message<"raystack.frontie
5406
5398
  * Use `create(ListProjectServiceUsersResponse_RolePairSchema)` to create a new message.
5407
5399
  */
5408
5400
  export const ListProjectServiceUsersResponse_RolePairSchema: GenMessage<ListProjectServiceUsersResponse_RolePair> = /*@__PURE__*/
5409
- messageDesc(file_raystack_frontier_v1beta1_frontier, 238, 0);
5401
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 236, 0);
5410
5402
 
5411
5403
  /**
5412
5404
  * @generated from message raystack.frontier.v1beta1.ListProjectGroupsRequest
@@ -5428,7 +5420,7 @@ export type ListProjectGroupsRequest = Message<"raystack.frontier.v1beta1.ListPr
5428
5420
  * Use `create(ListProjectGroupsRequestSchema)` to create a new message.
5429
5421
  */
5430
5422
  export const ListProjectGroupsRequestSchema: GenMessage<ListProjectGroupsRequest> = /*@__PURE__*/
5431
- messageDesc(file_raystack_frontier_v1beta1_frontier, 239);
5423
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 237);
5432
5424
 
5433
5425
  /**
5434
5426
  * @generated from message raystack.frontier.v1beta1.ListProjectGroupsResponse
@@ -5450,7 +5442,7 @@ export type ListProjectGroupsResponse = Message<"raystack.frontier.v1beta1.ListP
5450
5442
  * Use `create(ListProjectGroupsResponseSchema)` to create a new message.
5451
5443
  */
5452
5444
  export const ListProjectGroupsResponseSchema: GenMessage<ListProjectGroupsResponse> = /*@__PURE__*/
5453
- messageDesc(file_raystack_frontier_v1beta1_frontier, 240);
5445
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 238);
5454
5446
 
5455
5447
  /**
5456
5448
  * @generated from message raystack.frontier.v1beta1.ListProjectGroupsResponse.RolePair
@@ -5472,7 +5464,7 @@ export type ListProjectGroupsResponse_RolePair = Message<"raystack.frontier.v1be
5472
5464
  * Use `create(ListProjectGroupsResponse_RolePairSchema)` to create a new message.
5473
5465
  */
5474
5466
  export const ListProjectGroupsResponse_RolePairSchema: GenMessage<ListProjectGroupsResponse_RolePair> = /*@__PURE__*/
5475
- messageDesc(file_raystack_frontier_v1beta1_frontier, 240, 0);
5467
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 238, 0);
5476
5468
 
5477
5469
  /**
5478
5470
  * @generated from message raystack.frontier.v1beta1.EnableProjectRequest
@@ -5489,7 +5481,7 @@ export type EnableProjectRequest = Message<"raystack.frontier.v1beta1.EnableProj
5489
5481
  * Use `create(EnableProjectRequestSchema)` to create a new message.
5490
5482
  */
5491
5483
  export const EnableProjectRequestSchema: GenMessage<EnableProjectRequest> = /*@__PURE__*/
5492
- messageDesc(file_raystack_frontier_v1beta1_frontier, 241);
5484
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 239);
5493
5485
 
5494
5486
  /**
5495
5487
  * @generated from message raystack.frontier.v1beta1.EnableProjectResponse
@@ -5502,7 +5494,7 @@ export type EnableProjectResponse = Message<"raystack.frontier.v1beta1.EnablePro
5502
5494
  * Use `create(EnableProjectResponseSchema)` to create a new message.
5503
5495
  */
5504
5496
  export const EnableProjectResponseSchema: GenMessage<EnableProjectResponse> = /*@__PURE__*/
5505
- messageDesc(file_raystack_frontier_v1beta1_frontier, 242);
5497
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 240);
5506
5498
 
5507
5499
  /**
5508
5500
  * @generated from message raystack.frontier.v1beta1.DisableProjectRequest
@@ -5519,7 +5511,7 @@ export type DisableProjectRequest = Message<"raystack.frontier.v1beta1.DisablePr
5519
5511
  * Use `create(DisableProjectRequestSchema)` to create a new message.
5520
5512
  */
5521
5513
  export const DisableProjectRequestSchema: GenMessage<DisableProjectRequest> = /*@__PURE__*/
5522
- messageDesc(file_raystack_frontier_v1beta1_frontier, 243);
5514
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 241);
5523
5515
 
5524
5516
  /**
5525
5517
  * @generated from message raystack.frontier.v1beta1.DisableProjectResponse
@@ -5532,7 +5524,7 @@ export type DisableProjectResponse = Message<"raystack.frontier.v1beta1.DisableP
5532
5524
  * Use `create(DisableProjectResponseSchema)` to create a new message.
5533
5525
  */
5534
5526
  export const DisableProjectResponseSchema: GenMessage<DisableProjectResponse> = /*@__PURE__*/
5535
- messageDesc(file_raystack_frontier_v1beta1_frontier, 244);
5527
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 242);
5536
5528
 
5537
5529
  /**
5538
5530
  * @generated from message raystack.frontier.v1beta1.DeleteProjectRequest
@@ -5549,7 +5541,7 @@ export type DeleteProjectRequest = Message<"raystack.frontier.v1beta1.DeleteProj
5549
5541
  * Use `create(DeleteProjectRequestSchema)` to create a new message.
5550
5542
  */
5551
5543
  export const DeleteProjectRequestSchema: GenMessage<DeleteProjectRequest> = /*@__PURE__*/
5552
- messageDesc(file_raystack_frontier_v1beta1_frontier, 245);
5544
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 243);
5553
5545
 
5554
5546
  /**
5555
5547
  * @generated from message raystack.frontier.v1beta1.DeleteProjectResponse
@@ -5562,7 +5554,7 @@ export type DeleteProjectResponse = Message<"raystack.frontier.v1beta1.DeletePro
5562
5554
  * Use `create(DeleteProjectResponseSchema)` to create a new message.
5563
5555
  */
5564
5556
  export const DeleteProjectResponseSchema: GenMessage<DeleteProjectResponse> = /*@__PURE__*/
5565
- messageDesc(file_raystack_frontier_v1beta1_frontier, 246);
5557
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 244);
5566
5558
 
5567
5559
  /**
5568
5560
  * @generated from message raystack.frontier.v1beta1.PolicyRequestBody
@@ -5599,7 +5591,7 @@ export type PolicyRequestBody = Message<"raystack.frontier.v1beta1.PolicyRequest
5599
5591
  * Use `create(PolicyRequestBodySchema)` to create a new message.
5600
5592
  */
5601
5593
  export const PolicyRequestBodySchema: GenMessage<PolicyRequestBody> = /*@__PURE__*/
5602
- messageDesc(file_raystack_frontier_v1beta1_frontier, 247);
5594
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 245);
5603
5595
 
5604
5596
  /**
5605
5597
  * @generated from message raystack.frontier.v1beta1.CreatePolicyForProjectBody
@@ -5626,7 +5618,7 @@ export type CreatePolicyForProjectBody = Message<"raystack.frontier.v1beta1.Crea
5626
5618
  * Use `create(CreatePolicyForProjectBodySchema)` to create a new message.
5627
5619
  */
5628
5620
  export const CreatePolicyForProjectBodySchema: GenMessage<CreatePolicyForProjectBody> = /*@__PURE__*/
5629
- messageDesc(file_raystack_frontier_v1beta1_frontier, 248);
5621
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 246);
5630
5622
 
5631
5623
  /**
5632
5624
  * @generated from message raystack.frontier.v1beta1.GetPermissionRequest
@@ -5643,7 +5635,7 @@ export type GetPermissionRequest = Message<"raystack.frontier.v1beta1.GetPermiss
5643
5635
  * Use `create(GetPermissionRequestSchema)` to create a new message.
5644
5636
  */
5645
5637
  export const GetPermissionRequestSchema: GenMessage<GetPermissionRequest> = /*@__PURE__*/
5646
- messageDesc(file_raystack_frontier_v1beta1_frontier, 249);
5638
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 247);
5647
5639
 
5648
5640
  /**
5649
5641
  * @generated from message raystack.frontier.v1beta1.GetPermissionResponse
@@ -5660,7 +5652,7 @@ export type GetPermissionResponse = Message<"raystack.frontier.v1beta1.GetPermis
5660
5652
  * Use `create(GetPermissionResponseSchema)` to create a new message.
5661
5653
  */
5662
5654
  export const GetPermissionResponseSchema: GenMessage<GetPermissionResponse> = /*@__PURE__*/
5663
- messageDesc(file_raystack_frontier_v1beta1_frontier, 250);
5655
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 248);
5664
5656
 
5665
5657
  /**
5666
5658
  * @generated from message raystack.frontier.v1beta1.ListPermissionsRequest
@@ -5673,7 +5665,7 @@ export type ListPermissionsRequest = Message<"raystack.frontier.v1beta1.ListPerm
5673
5665
  * Use `create(ListPermissionsRequestSchema)` to create a new message.
5674
5666
  */
5675
5667
  export const ListPermissionsRequestSchema: GenMessage<ListPermissionsRequest> = /*@__PURE__*/
5676
- messageDesc(file_raystack_frontier_v1beta1_frontier, 251);
5668
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 249);
5677
5669
 
5678
5670
  /**
5679
5671
  * @generated from message raystack.frontier.v1beta1.ListPermissionsResponse
@@ -5690,7 +5682,7 @@ export type ListPermissionsResponse = Message<"raystack.frontier.v1beta1.ListPer
5690
5682
  * Use `create(ListPermissionsResponseSchema)` to create a new message.
5691
5683
  */
5692
5684
  export const ListPermissionsResponseSchema: GenMessage<ListPermissionsResponse> = /*@__PURE__*/
5693
- messageDesc(file_raystack_frontier_v1beta1_frontier, 252);
5685
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 250);
5694
5686
 
5695
5687
  /**
5696
5688
  * @generated from message raystack.frontier.v1beta1.ListNamespacesRequest
@@ -5703,7 +5695,7 @@ export type ListNamespacesRequest = Message<"raystack.frontier.v1beta1.ListNames
5703
5695
  * Use `create(ListNamespacesRequestSchema)` to create a new message.
5704
5696
  */
5705
5697
  export const ListNamespacesRequestSchema: GenMessage<ListNamespacesRequest> = /*@__PURE__*/
5706
- messageDesc(file_raystack_frontier_v1beta1_frontier, 253);
5698
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 251);
5707
5699
 
5708
5700
  /**
5709
5701
  * @generated from message raystack.frontier.v1beta1.ListNamespacesResponse
@@ -5720,7 +5712,7 @@ export type ListNamespacesResponse = Message<"raystack.frontier.v1beta1.ListName
5720
5712
  * Use `create(ListNamespacesResponseSchema)` to create a new message.
5721
5713
  */
5722
5714
  export const ListNamespacesResponseSchema: GenMessage<ListNamespacesResponse> = /*@__PURE__*/
5723
- messageDesc(file_raystack_frontier_v1beta1_frontier, 254);
5715
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 252);
5724
5716
 
5725
5717
  /**
5726
5718
  * @generated from message raystack.frontier.v1beta1.GetNamespaceRequest
@@ -5737,7 +5729,7 @@ export type GetNamespaceRequest = Message<"raystack.frontier.v1beta1.GetNamespac
5737
5729
  * Use `create(GetNamespaceRequestSchema)` to create a new message.
5738
5730
  */
5739
5731
  export const GetNamespaceRequestSchema: GenMessage<GetNamespaceRequest> = /*@__PURE__*/
5740
- messageDesc(file_raystack_frontier_v1beta1_frontier, 255);
5732
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 253);
5741
5733
 
5742
5734
  /**
5743
5735
  * @generated from message raystack.frontier.v1beta1.GetNamespaceResponse
@@ -5754,7 +5746,7 @@ export type GetNamespaceResponse = Message<"raystack.frontier.v1beta1.GetNamespa
5754
5746
  * Use `create(GetNamespaceResponseSchema)` to create a new message.
5755
5747
  */
5756
5748
  export const GetNamespaceResponseSchema: GenMessage<GetNamespaceResponse> = /*@__PURE__*/
5757
- messageDesc(file_raystack_frontier_v1beta1_frontier, 256);
5749
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 254);
5758
5750
 
5759
5751
  /**
5760
5752
  * @generated from message raystack.frontier.v1beta1.CreatePolicyRequest
@@ -5771,7 +5763,7 @@ export type CreatePolicyRequest = Message<"raystack.frontier.v1beta1.CreatePolic
5771
5763
  * Use `create(CreatePolicyRequestSchema)` to create a new message.
5772
5764
  */
5773
5765
  export const CreatePolicyRequestSchema: GenMessage<CreatePolicyRequest> = /*@__PURE__*/
5774
- messageDesc(file_raystack_frontier_v1beta1_frontier, 257);
5766
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 255);
5775
5767
 
5776
5768
  /**
5777
5769
  * @generated from message raystack.frontier.v1beta1.CreatePolicyResponse
@@ -5788,7 +5780,7 @@ export type CreatePolicyResponse = Message<"raystack.frontier.v1beta1.CreatePoli
5788
5780
  * Use `create(CreatePolicyResponseSchema)` to create a new message.
5789
5781
  */
5790
5782
  export const CreatePolicyResponseSchema: GenMessage<CreatePolicyResponse> = /*@__PURE__*/
5791
- messageDesc(file_raystack_frontier_v1beta1_frontier, 258);
5783
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 256);
5792
5784
 
5793
5785
  /**
5794
5786
  * @generated from message raystack.frontier.v1beta1.GetPolicyRequest
@@ -5805,7 +5797,7 @@ export type GetPolicyRequest = Message<"raystack.frontier.v1beta1.GetPolicyReque
5805
5797
  * Use `create(GetPolicyRequestSchema)` to create a new message.
5806
5798
  */
5807
5799
  export const GetPolicyRequestSchema: GenMessage<GetPolicyRequest> = /*@__PURE__*/
5808
- messageDesc(file_raystack_frontier_v1beta1_frontier, 259);
5800
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 257);
5809
5801
 
5810
5802
  /**
5811
5803
  * @generated from message raystack.frontier.v1beta1.GetPolicyResponse
@@ -5822,7 +5814,7 @@ export type GetPolicyResponse = Message<"raystack.frontier.v1beta1.GetPolicyResp
5822
5814
  * Use `create(GetPolicyResponseSchema)` to create a new message.
5823
5815
  */
5824
5816
  export const GetPolicyResponseSchema: GenMessage<GetPolicyResponse> = /*@__PURE__*/
5825
- messageDesc(file_raystack_frontier_v1beta1_frontier, 260);
5817
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 258);
5826
5818
 
5827
5819
  /**
5828
5820
  * @generated from message raystack.frontier.v1beta1.ListPoliciesRequest
@@ -5859,7 +5851,7 @@ export type ListPoliciesRequest = Message<"raystack.frontier.v1beta1.ListPolicie
5859
5851
  * Use `create(ListPoliciesRequestSchema)` to create a new message.
5860
5852
  */
5861
5853
  export const ListPoliciesRequestSchema: GenMessage<ListPoliciesRequest> = /*@__PURE__*/
5862
- messageDesc(file_raystack_frontier_v1beta1_frontier, 261);
5854
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 259);
5863
5855
 
5864
5856
  /**
5865
5857
  * @generated from message raystack.frontier.v1beta1.ListPoliciesResponse
@@ -5876,7 +5868,7 @@ export type ListPoliciesResponse = Message<"raystack.frontier.v1beta1.ListPolici
5876
5868
  * Use `create(ListPoliciesResponseSchema)` to create a new message.
5877
5869
  */
5878
5870
  export const ListPoliciesResponseSchema: GenMessage<ListPoliciesResponse> = /*@__PURE__*/
5879
- messageDesc(file_raystack_frontier_v1beta1_frontier, 262);
5871
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 260);
5880
5872
 
5881
5873
  /**
5882
5874
  * @generated from message raystack.frontier.v1beta1.UpdatePolicyRequest
@@ -5898,7 +5890,7 @@ export type UpdatePolicyRequest = Message<"raystack.frontier.v1beta1.UpdatePolic
5898
5890
  * Use `create(UpdatePolicyRequestSchema)` to create a new message.
5899
5891
  */
5900
5892
  export const UpdatePolicyRequestSchema: GenMessage<UpdatePolicyRequest> = /*@__PURE__*/
5901
- messageDesc(file_raystack_frontier_v1beta1_frontier, 263);
5893
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 261);
5902
5894
 
5903
5895
  /**
5904
5896
  * @generated from message raystack.frontier.v1beta1.UpdatePolicyResponse
@@ -5915,7 +5907,7 @@ export type UpdatePolicyResponse = Message<"raystack.frontier.v1beta1.UpdatePoli
5915
5907
  * Use `create(UpdatePolicyResponseSchema)` to create a new message.
5916
5908
  */
5917
5909
  export const UpdatePolicyResponseSchema: GenMessage<UpdatePolicyResponse> = /*@__PURE__*/
5918
- messageDesc(file_raystack_frontier_v1beta1_frontier, 264);
5910
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 262);
5919
5911
 
5920
5912
  /**
5921
5913
  * @generated from message raystack.frontier.v1beta1.DeletePolicyRequest
@@ -5932,7 +5924,7 @@ export type DeletePolicyRequest = Message<"raystack.frontier.v1beta1.DeletePolic
5932
5924
  * Use `create(DeletePolicyRequestSchema)` to create a new message.
5933
5925
  */
5934
5926
  export const DeletePolicyRequestSchema: GenMessage<DeletePolicyRequest> = /*@__PURE__*/
5935
- messageDesc(file_raystack_frontier_v1beta1_frontier, 265);
5927
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 263);
5936
5928
 
5937
5929
  /**
5938
5930
  * @generated from message raystack.frontier.v1beta1.DeletePolicyResponse
@@ -5945,7 +5937,7 @@ export type DeletePolicyResponse = Message<"raystack.frontier.v1beta1.DeletePoli
5945
5937
  * Use `create(DeletePolicyResponseSchema)` to create a new message.
5946
5938
  */
5947
5939
  export const DeletePolicyResponseSchema: GenMessage<DeletePolicyResponse> = /*@__PURE__*/
5948
- messageDesc(file_raystack_frontier_v1beta1_frontier, 266);
5940
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 264);
5949
5941
 
5950
5942
  /**
5951
5943
  * @generated from message raystack.frontier.v1beta1.CreatePolicyForProjectRequest
@@ -5967,7 +5959,7 @@ export type CreatePolicyForProjectRequest = Message<"raystack.frontier.v1beta1.C
5967
5959
  * Use `create(CreatePolicyForProjectRequestSchema)` to create a new message.
5968
5960
  */
5969
5961
  export const CreatePolicyForProjectRequestSchema: GenMessage<CreatePolicyForProjectRequest> = /*@__PURE__*/
5970
- messageDesc(file_raystack_frontier_v1beta1_frontier, 267);
5962
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 265);
5971
5963
 
5972
5964
  /**
5973
5965
  * @generated from message raystack.frontier.v1beta1.CreatePolicyForProjectResponse
@@ -5980,7 +5972,7 @@ export type CreatePolicyForProjectResponse = Message<"raystack.frontier.v1beta1.
5980
5972
  * Use `create(CreatePolicyForProjectResponseSchema)` to create a new message.
5981
5973
  */
5982
5974
  export const CreatePolicyForProjectResponseSchema: GenMessage<CreatePolicyForProjectResponse> = /*@__PURE__*/
5983
- messageDesc(file_raystack_frontier_v1beta1_frontier, 268);
5975
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 266);
5984
5976
 
5985
5977
  /**
5986
5978
  * @generated from message raystack.frontier.v1beta1.RelationRequestBody
@@ -6016,7 +6008,7 @@ export type RelationRequestBody = Message<"raystack.frontier.v1beta1.RelationReq
6016
6008
  * Use `create(RelationRequestBodySchema)` to create a new message.
6017
6009
  */
6018
6010
  export const RelationRequestBodySchema: GenMessage<RelationRequestBody> = /*@__PURE__*/
6019
- messageDesc(file_raystack_frontier_v1beta1_frontier, 269);
6011
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 267);
6020
6012
 
6021
6013
  /**
6022
6014
  * @generated from message raystack.frontier.v1beta1.CreateRelationRequest
@@ -6033,7 +6025,7 @@ export type CreateRelationRequest = Message<"raystack.frontier.v1beta1.CreateRel
6033
6025
  * Use `create(CreateRelationRequestSchema)` to create a new message.
6034
6026
  */
6035
6027
  export const CreateRelationRequestSchema: GenMessage<CreateRelationRequest> = /*@__PURE__*/
6036
- messageDesc(file_raystack_frontier_v1beta1_frontier, 270);
6028
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 268);
6037
6029
 
6038
6030
  /**
6039
6031
  * @generated from message raystack.frontier.v1beta1.CreateRelationResponse
@@ -6050,7 +6042,7 @@ export type CreateRelationResponse = Message<"raystack.frontier.v1beta1.CreateRe
6050
6042
  * Use `create(CreateRelationResponseSchema)` to create a new message.
6051
6043
  */
6052
6044
  export const CreateRelationResponseSchema: GenMessage<CreateRelationResponse> = /*@__PURE__*/
6053
- messageDesc(file_raystack_frontier_v1beta1_frontier, 271);
6045
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 269);
6054
6046
 
6055
6047
  /**
6056
6048
  * @generated from message raystack.frontier.v1beta1.GetRelationRequest
@@ -6067,7 +6059,7 @@ export type GetRelationRequest = Message<"raystack.frontier.v1beta1.GetRelationR
6067
6059
  * Use `create(GetRelationRequestSchema)` to create a new message.
6068
6060
  */
6069
6061
  export const GetRelationRequestSchema: GenMessage<GetRelationRequest> = /*@__PURE__*/
6070
- messageDesc(file_raystack_frontier_v1beta1_frontier, 272);
6062
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 270);
6071
6063
 
6072
6064
  /**
6073
6065
  * @generated from message raystack.frontier.v1beta1.GetRelationResponse
@@ -6084,7 +6076,7 @@ export type GetRelationResponse = Message<"raystack.frontier.v1beta1.GetRelation
6084
6076
  * Use `create(GetRelationResponseSchema)` to create a new message.
6085
6077
  */
6086
6078
  export const GetRelationResponseSchema: GenMessage<GetRelationResponse> = /*@__PURE__*/
6087
- messageDesc(file_raystack_frontier_v1beta1_frontier, 273);
6079
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 271);
6088
6080
 
6089
6081
  /**
6090
6082
  * @generated from message raystack.frontier.v1beta1.UpdateRelationRequest
@@ -6106,7 +6098,7 @@ export type UpdateRelationRequest = Message<"raystack.frontier.v1beta1.UpdateRel
6106
6098
  * Use `create(UpdateRelationRequestSchema)` to create a new message.
6107
6099
  */
6108
6100
  export const UpdateRelationRequestSchema: GenMessage<UpdateRelationRequest> = /*@__PURE__*/
6109
- messageDesc(file_raystack_frontier_v1beta1_frontier, 274);
6101
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 272);
6110
6102
 
6111
6103
  /**
6112
6104
  * @generated from message raystack.frontier.v1beta1.UpdateRelationResponse
@@ -6123,7 +6115,7 @@ export type UpdateRelationResponse = Message<"raystack.frontier.v1beta1.UpdateRe
6123
6115
  * Use `create(UpdateRelationResponseSchema)` to create a new message.
6124
6116
  */
6125
6117
  export const UpdateRelationResponseSchema: GenMessage<UpdateRelationResponse> = /*@__PURE__*/
6126
- messageDesc(file_raystack_frontier_v1beta1_frontier, 275);
6118
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 273);
6127
6119
 
6128
6120
  /**
6129
6121
  * @generated from message raystack.frontier.v1beta1.GroupRequestBody
@@ -6150,7 +6142,7 @@ export type GroupRequestBody = Message<"raystack.frontier.v1beta1.GroupRequestBo
6150
6142
  * Use `create(GroupRequestBodySchema)` to create a new message.
6151
6143
  */
6152
6144
  export const GroupRequestBodySchema: GenMessage<GroupRequestBody> = /*@__PURE__*/
6153
- messageDesc(file_raystack_frontier_v1beta1_frontier, 276);
6145
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 274);
6154
6146
 
6155
6147
  /**
6156
6148
  * @generated from message raystack.frontier.v1beta1.CreateGroupRequest
@@ -6172,7 +6164,7 @@ export type CreateGroupRequest = Message<"raystack.frontier.v1beta1.CreateGroupR
6172
6164
  * Use `create(CreateGroupRequestSchema)` to create a new message.
6173
6165
  */
6174
6166
  export const CreateGroupRequestSchema: GenMessage<CreateGroupRequest> = /*@__PURE__*/
6175
- messageDesc(file_raystack_frontier_v1beta1_frontier, 277);
6167
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 275);
6176
6168
 
6177
6169
  /**
6178
6170
  * @generated from message raystack.frontier.v1beta1.GetGroupRequest
@@ -6199,7 +6191,7 @@ export type GetGroupRequest = Message<"raystack.frontier.v1beta1.GetGroupRequest
6199
6191
  * Use `create(GetGroupRequestSchema)` to create a new message.
6200
6192
  */
6201
6193
  export const GetGroupRequestSchema: GenMessage<GetGroupRequest> = /*@__PURE__*/
6202
- messageDesc(file_raystack_frontier_v1beta1_frontier, 278);
6194
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 276);
6203
6195
 
6204
6196
  /**
6205
6197
  * @generated from message raystack.frontier.v1beta1.CreateGroupResponse
@@ -6216,7 +6208,7 @@ export type CreateGroupResponse = Message<"raystack.frontier.v1beta1.CreateGroup
6216
6208
  * Use `create(CreateGroupResponseSchema)` to create a new message.
6217
6209
  */
6218
6210
  export const CreateGroupResponseSchema: GenMessage<CreateGroupResponse> = /*@__PURE__*/
6219
- messageDesc(file_raystack_frontier_v1beta1_frontier, 279);
6211
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 277);
6220
6212
 
6221
6213
  /**
6222
6214
  * @generated from message raystack.frontier.v1beta1.GetGroupResponse
@@ -6233,7 +6225,7 @@ export type GetGroupResponse = Message<"raystack.frontier.v1beta1.GetGroupRespon
6233
6225
  * Use `create(GetGroupResponseSchema)` to create a new message.
6234
6226
  */
6235
6227
  export const GetGroupResponseSchema: GenMessage<GetGroupResponse> = /*@__PURE__*/
6236
- messageDesc(file_raystack_frontier_v1beta1_frontier, 280);
6228
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 278);
6237
6229
 
6238
6230
  /**
6239
6231
  * @generated from message raystack.frontier.v1beta1.UpdateGroupResponse
@@ -6250,7 +6242,7 @@ export type UpdateGroupResponse = Message<"raystack.frontier.v1beta1.UpdateGroup
6250
6242
  * Use `create(UpdateGroupResponseSchema)` to create a new message.
6251
6243
  */
6252
6244
  export const UpdateGroupResponseSchema: GenMessage<UpdateGroupResponse> = /*@__PURE__*/
6253
- messageDesc(file_raystack_frontier_v1beta1_frontier, 281);
6245
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 279);
6254
6246
 
6255
6247
  /**
6256
6248
  * @generated from message raystack.frontier.v1beta1.UpdateGroupRequest
@@ -6277,7 +6269,7 @@ export type UpdateGroupRequest = Message<"raystack.frontier.v1beta1.UpdateGroupR
6277
6269
  * Use `create(UpdateGroupRequestSchema)` to create a new message.
6278
6270
  */
6279
6271
  export const UpdateGroupRequestSchema: GenMessage<UpdateGroupRequest> = /*@__PURE__*/
6280
- messageDesc(file_raystack_frontier_v1beta1_frontier, 282);
6272
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 280);
6281
6273
 
6282
6274
  /**
6283
6275
  * @generated from message raystack.frontier.v1beta1.ListGroupUsersRequest
@@ -6304,7 +6296,7 @@ export type ListGroupUsersRequest = Message<"raystack.frontier.v1beta1.ListGroup
6304
6296
  * Use `create(ListGroupUsersRequestSchema)` to create a new message.
6305
6297
  */
6306
6298
  export const ListGroupUsersRequestSchema: GenMessage<ListGroupUsersRequest> = /*@__PURE__*/
6307
- messageDesc(file_raystack_frontier_v1beta1_frontier, 283);
6299
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 281);
6308
6300
 
6309
6301
  /**
6310
6302
  * @generated from message raystack.frontier.v1beta1.ListGroupUsersResponse
@@ -6326,7 +6318,7 @@ export type ListGroupUsersResponse = Message<"raystack.frontier.v1beta1.ListGrou
6326
6318
  * Use `create(ListGroupUsersResponseSchema)` to create a new message.
6327
6319
  */
6328
6320
  export const ListGroupUsersResponseSchema: GenMessage<ListGroupUsersResponse> = /*@__PURE__*/
6329
- messageDesc(file_raystack_frontier_v1beta1_frontier, 284);
6321
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 282);
6330
6322
 
6331
6323
  /**
6332
6324
  * @generated from message raystack.frontier.v1beta1.ListGroupUsersResponse.RolePair
@@ -6348,7 +6340,7 @@ export type ListGroupUsersResponse_RolePair = Message<"raystack.frontier.v1beta1
6348
6340
  * Use `create(ListGroupUsersResponse_RolePairSchema)` to create a new message.
6349
6341
  */
6350
6342
  export const ListGroupUsersResponse_RolePairSchema: GenMessage<ListGroupUsersResponse_RolePair> = /*@__PURE__*/
6351
- messageDesc(file_raystack_frontier_v1beta1_frontier, 284, 0);
6343
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 282, 0);
6352
6344
 
6353
6345
  /**
6354
6346
  * @generated from message raystack.frontier.v1beta1.EnableGroupRequest
@@ -6370,7 +6362,7 @@ export type EnableGroupRequest = Message<"raystack.frontier.v1beta1.EnableGroupR
6370
6362
  * Use `create(EnableGroupRequestSchema)` to create a new message.
6371
6363
  */
6372
6364
  export const EnableGroupRequestSchema: GenMessage<EnableGroupRequest> = /*@__PURE__*/
6373
- messageDesc(file_raystack_frontier_v1beta1_frontier, 285);
6365
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 283);
6374
6366
 
6375
6367
  /**
6376
6368
  * @generated from message raystack.frontier.v1beta1.EnableGroupResponse
@@ -6383,7 +6375,7 @@ export type EnableGroupResponse = Message<"raystack.frontier.v1beta1.EnableGroup
6383
6375
  * Use `create(EnableGroupResponseSchema)` to create a new message.
6384
6376
  */
6385
6377
  export const EnableGroupResponseSchema: GenMessage<EnableGroupResponse> = /*@__PURE__*/
6386
- messageDesc(file_raystack_frontier_v1beta1_frontier, 286);
6378
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 284);
6387
6379
 
6388
6380
  /**
6389
6381
  * @generated from message raystack.frontier.v1beta1.DisableGroupRequest
@@ -6405,7 +6397,7 @@ export type DisableGroupRequest = Message<"raystack.frontier.v1beta1.DisableGrou
6405
6397
  * Use `create(DisableGroupRequestSchema)` to create a new message.
6406
6398
  */
6407
6399
  export const DisableGroupRequestSchema: GenMessage<DisableGroupRequest> = /*@__PURE__*/
6408
- messageDesc(file_raystack_frontier_v1beta1_frontier, 287);
6400
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 285);
6409
6401
 
6410
6402
  /**
6411
6403
  * @generated from message raystack.frontier.v1beta1.DisableGroupResponse
@@ -6418,7 +6410,7 @@ export type DisableGroupResponse = Message<"raystack.frontier.v1beta1.DisableGro
6418
6410
  * Use `create(DisableGroupResponseSchema)` to create a new message.
6419
6411
  */
6420
6412
  export const DisableGroupResponseSchema: GenMessage<DisableGroupResponse> = /*@__PURE__*/
6421
- messageDesc(file_raystack_frontier_v1beta1_frontier, 288);
6413
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 286);
6422
6414
 
6423
6415
  /**
6424
6416
  * @generated from message raystack.frontier.v1beta1.DeleteGroupRequest
@@ -6440,7 +6432,7 @@ export type DeleteGroupRequest = Message<"raystack.frontier.v1beta1.DeleteGroupR
6440
6432
  * Use `create(DeleteGroupRequestSchema)` to create a new message.
6441
6433
  */
6442
6434
  export const DeleteGroupRequestSchema: GenMessage<DeleteGroupRequest> = /*@__PURE__*/
6443
- messageDesc(file_raystack_frontier_v1beta1_frontier, 289);
6435
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 287);
6444
6436
 
6445
6437
  /**
6446
6438
  * @generated from message raystack.frontier.v1beta1.DeleteGroupResponse
@@ -6453,7 +6445,7 @@ export type DeleteGroupResponse = Message<"raystack.frontier.v1beta1.DeleteGroup
6453
6445
  * Use `create(DeleteGroupResponseSchema)` to create a new message.
6454
6446
  */
6455
6447
  export const DeleteGroupResponseSchema: GenMessage<DeleteGroupResponse> = /*@__PURE__*/
6456
- messageDesc(file_raystack_frontier_v1beta1_frontier, 290);
6448
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 288);
6457
6449
 
6458
6450
  /**
6459
6451
  * @generated from message raystack.frontier.v1beta1.AddGroupUsersRequest
@@ -6480,7 +6472,7 @@ export type AddGroupUsersRequest = Message<"raystack.frontier.v1beta1.AddGroupUs
6480
6472
  * Use `create(AddGroupUsersRequestSchema)` to create a new message.
6481
6473
  */
6482
6474
  export const AddGroupUsersRequestSchema: GenMessage<AddGroupUsersRequest> = /*@__PURE__*/
6483
- messageDesc(file_raystack_frontier_v1beta1_frontier, 291);
6475
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 289);
6484
6476
 
6485
6477
  /**
6486
6478
  * @generated from message raystack.frontier.v1beta1.AddGroupUsersResponse
@@ -6493,7 +6485,7 @@ export type AddGroupUsersResponse = Message<"raystack.frontier.v1beta1.AddGroupU
6493
6485
  * Use `create(AddGroupUsersResponseSchema)` to create a new message.
6494
6486
  */
6495
6487
  export const AddGroupUsersResponseSchema: GenMessage<AddGroupUsersResponse> = /*@__PURE__*/
6496
- messageDesc(file_raystack_frontier_v1beta1_frontier, 292);
6488
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 290);
6497
6489
 
6498
6490
  /**
6499
6491
  * @generated from message raystack.frontier.v1beta1.RemoveGroupUserRequest
@@ -6520,7 +6512,7 @@ export type RemoveGroupUserRequest = Message<"raystack.frontier.v1beta1.RemoveGr
6520
6512
  * Use `create(RemoveGroupUserRequestSchema)` to create a new message.
6521
6513
  */
6522
6514
  export const RemoveGroupUserRequestSchema: GenMessage<RemoveGroupUserRequest> = /*@__PURE__*/
6523
- messageDesc(file_raystack_frontier_v1beta1_frontier, 293);
6515
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 291);
6524
6516
 
6525
6517
  /**
6526
6518
  * @generated from message raystack.frontier.v1beta1.RemoveGroupUserResponse
@@ -6533,7 +6525,7 @@ export type RemoveGroupUserResponse = Message<"raystack.frontier.v1beta1.RemoveG
6533
6525
  * Use `create(RemoveGroupUserResponseSchema)` to create a new message.
6534
6526
  */
6535
6527
  export const RemoveGroupUserResponseSchema: GenMessage<RemoveGroupUserResponse> = /*@__PURE__*/
6536
- messageDesc(file_raystack_frontier_v1beta1_frontier, 294);
6528
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 292);
6537
6529
 
6538
6530
  /**
6539
6531
  * @generated from message raystack.frontier.v1beta1.DeleteRelationRequest
@@ -6564,7 +6556,7 @@ export type DeleteRelationRequest = Message<"raystack.frontier.v1beta1.DeleteRel
6564
6556
  * Use `create(DeleteRelationRequestSchema)` to create a new message.
6565
6557
  */
6566
6558
  export const DeleteRelationRequestSchema: GenMessage<DeleteRelationRequest> = /*@__PURE__*/
6567
- messageDesc(file_raystack_frontier_v1beta1_frontier, 295);
6559
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 293);
6568
6560
 
6569
6561
  /**
6570
6562
  * @generated from message raystack.frontier.v1beta1.DeleteRelationResponse
@@ -6577,7 +6569,7 @@ export type DeleteRelationResponse = Message<"raystack.frontier.v1beta1.DeleteRe
6577
6569
  * Use `create(DeleteRelationResponseSchema)` to create a new message.
6578
6570
  */
6579
6571
  export const DeleteRelationResponseSchema: GenMessage<DeleteRelationResponse> = /*@__PURE__*/
6580
- messageDesc(file_raystack_frontier_v1beta1_frontier, 296);
6572
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 294);
6581
6573
 
6582
6574
  /**
6583
6575
  * @generated from message raystack.frontier.v1beta1.ListProjectResourcesRequest
@@ -6599,7 +6591,7 @@ export type ListProjectResourcesRequest = Message<"raystack.frontier.v1beta1.Lis
6599
6591
  * Use `create(ListProjectResourcesRequestSchema)` to create a new message.
6600
6592
  */
6601
6593
  export const ListProjectResourcesRequestSchema: GenMessage<ListProjectResourcesRequest> = /*@__PURE__*/
6602
- messageDesc(file_raystack_frontier_v1beta1_frontier, 297);
6594
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 295);
6603
6595
 
6604
6596
  /**
6605
6597
  * @generated from message raystack.frontier.v1beta1.ListProjectResourcesResponse
@@ -6616,7 +6608,7 @@ export type ListProjectResourcesResponse = Message<"raystack.frontier.v1beta1.Li
6616
6608
  * Use `create(ListProjectResourcesResponseSchema)` to create a new message.
6617
6609
  */
6618
6610
  export const ListProjectResourcesResponseSchema: GenMessage<ListProjectResourcesResponse> = /*@__PURE__*/
6619
- messageDesc(file_raystack_frontier_v1beta1_frontier, 298);
6611
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 296);
6620
6612
 
6621
6613
  /**
6622
6614
  * @generated from message raystack.frontier.v1beta1.ResourceRequestBody
@@ -6655,7 +6647,7 @@ export type ResourceRequestBody = Message<"raystack.frontier.v1beta1.ResourceReq
6655
6647
  * Use `create(ResourceRequestBodySchema)` to create a new message.
6656
6648
  */
6657
6649
  export const ResourceRequestBodySchema: GenMessage<ResourceRequestBody> = /*@__PURE__*/
6658
- messageDesc(file_raystack_frontier_v1beta1_frontier, 299);
6650
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 297);
6659
6651
 
6660
6652
  /**
6661
6653
  * @generated from message raystack.frontier.v1beta1.CreateProjectResourceRequest
@@ -6684,7 +6676,7 @@ export type CreateProjectResourceRequest = Message<"raystack.frontier.v1beta1.Cr
6684
6676
  * Use `create(CreateProjectResourceRequestSchema)` to create a new message.
6685
6677
  */
6686
6678
  export const CreateProjectResourceRequestSchema: GenMessage<CreateProjectResourceRequest> = /*@__PURE__*/
6687
- messageDesc(file_raystack_frontier_v1beta1_frontier, 300);
6679
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 298);
6688
6680
 
6689
6681
  /**
6690
6682
  * @generated from message raystack.frontier.v1beta1.CreateProjectResourceResponse
@@ -6701,7 +6693,7 @@ export type CreateProjectResourceResponse = Message<"raystack.frontier.v1beta1.C
6701
6693
  * Use `create(CreateProjectResourceResponseSchema)` to create a new message.
6702
6694
  */
6703
6695
  export const CreateProjectResourceResponseSchema: GenMessage<CreateProjectResourceResponse> = /*@__PURE__*/
6704
- messageDesc(file_raystack_frontier_v1beta1_frontier, 301);
6696
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 299);
6705
6697
 
6706
6698
  /**
6707
6699
  * @generated from message raystack.frontier.v1beta1.GetProjectResourceRequest
@@ -6723,7 +6715,7 @@ export type GetProjectResourceRequest = Message<"raystack.frontier.v1beta1.GetPr
6723
6715
  * Use `create(GetProjectResourceRequestSchema)` to create a new message.
6724
6716
  */
6725
6717
  export const GetProjectResourceRequestSchema: GenMessage<GetProjectResourceRequest> = /*@__PURE__*/
6726
- messageDesc(file_raystack_frontier_v1beta1_frontier, 302);
6718
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 300);
6727
6719
 
6728
6720
  /**
6729
6721
  * @generated from message raystack.frontier.v1beta1.GetProjectResourceResponse
@@ -6740,7 +6732,7 @@ export type GetProjectResourceResponse = Message<"raystack.frontier.v1beta1.GetP
6740
6732
  * Use `create(GetProjectResourceResponseSchema)` to create a new message.
6741
6733
  */
6742
6734
  export const GetProjectResourceResponseSchema: GenMessage<GetProjectResourceResponse> = /*@__PURE__*/
6743
- messageDesc(file_raystack_frontier_v1beta1_frontier, 303);
6735
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 301);
6744
6736
 
6745
6737
  /**
6746
6738
  * @generated from message raystack.frontier.v1beta1.UpdateProjectResourceRequest
@@ -6767,7 +6759,7 @@ export type UpdateProjectResourceRequest = Message<"raystack.frontier.v1beta1.Up
6767
6759
  * Use `create(UpdateProjectResourceRequestSchema)` to create a new message.
6768
6760
  */
6769
6761
  export const UpdateProjectResourceRequestSchema: GenMessage<UpdateProjectResourceRequest> = /*@__PURE__*/
6770
- messageDesc(file_raystack_frontier_v1beta1_frontier, 304);
6762
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 302);
6771
6763
 
6772
6764
  /**
6773
6765
  * @generated from message raystack.frontier.v1beta1.UpdateProjectResourceResponse
@@ -6784,7 +6776,7 @@ export type UpdateProjectResourceResponse = Message<"raystack.frontier.v1beta1.U
6784
6776
  * Use `create(UpdateProjectResourceResponseSchema)` to create a new message.
6785
6777
  */
6786
6778
  export const UpdateProjectResourceResponseSchema: GenMessage<UpdateProjectResourceResponse> = /*@__PURE__*/
6787
- messageDesc(file_raystack_frontier_v1beta1_frontier, 305);
6779
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 303);
6788
6780
 
6789
6781
  /**
6790
6782
  * @generated from message raystack.frontier.v1beta1.DeleteProjectResourceRequest
@@ -6806,7 +6798,7 @@ export type DeleteProjectResourceRequest = Message<"raystack.frontier.v1beta1.De
6806
6798
  * Use `create(DeleteProjectResourceRequestSchema)` to create a new message.
6807
6799
  */
6808
6800
  export const DeleteProjectResourceRequestSchema: GenMessage<DeleteProjectResourceRequest> = /*@__PURE__*/
6809
- messageDesc(file_raystack_frontier_v1beta1_frontier, 306);
6801
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 304);
6810
6802
 
6811
6803
  /**
6812
6804
  * @generated from message raystack.frontier.v1beta1.DeleteProjectResourceResponse
@@ -6819,7 +6811,7 @@ export type DeleteProjectResourceResponse = Message<"raystack.frontier.v1beta1.D
6819
6811
  * Use `create(DeleteProjectResourceResponseSchema)` to create a new message.
6820
6812
  */
6821
6813
  export const DeleteProjectResourceResponseSchema: GenMessage<DeleteProjectResourceResponse> = /*@__PURE__*/
6822
- messageDesc(file_raystack_frontier_v1beta1_frontier, 307);
6814
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 305);
6823
6815
 
6824
6816
  /**
6825
6817
  * @generated from message raystack.frontier.v1beta1.CheckResourcePermissionRequest
@@ -6853,7 +6845,7 @@ export type CheckResourcePermissionRequest = Message<"raystack.frontier.v1beta1.
6853
6845
  * Use `create(CheckResourcePermissionRequestSchema)` to create a new message.
6854
6846
  */
6855
6847
  export const CheckResourcePermissionRequestSchema: GenMessage<CheckResourcePermissionRequest> = /*@__PURE__*/
6856
- messageDesc(file_raystack_frontier_v1beta1_frontier, 308);
6848
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 306);
6857
6849
 
6858
6850
  /**
6859
6851
  * @generated from message raystack.frontier.v1beta1.CheckResourcePermissionResponse
@@ -6870,7 +6862,7 @@ export type CheckResourcePermissionResponse = Message<"raystack.frontier.v1beta1
6870
6862
  * Use `create(CheckResourcePermissionResponseSchema)` to create a new message.
6871
6863
  */
6872
6864
  export const CheckResourcePermissionResponseSchema: GenMessage<CheckResourcePermissionResponse> = /*@__PURE__*/
6873
- messageDesc(file_raystack_frontier_v1beta1_frontier, 309);
6865
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 307);
6874
6866
 
6875
6867
  /**
6876
6868
  * @generated from message raystack.frontier.v1beta1.BatchCheckPermissionRequest
@@ -6887,7 +6879,7 @@ export type BatchCheckPermissionRequest = Message<"raystack.frontier.v1beta1.Bat
6887
6879
  * Use `create(BatchCheckPermissionRequestSchema)` to create a new message.
6888
6880
  */
6889
6881
  export const BatchCheckPermissionRequestSchema: GenMessage<BatchCheckPermissionRequest> = /*@__PURE__*/
6890
- messageDesc(file_raystack_frontier_v1beta1_frontier, 310);
6882
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 308);
6891
6883
 
6892
6884
  /**
6893
6885
  * @generated from message raystack.frontier.v1beta1.BatchCheckPermissionBody
@@ -6909,7 +6901,7 @@ export type BatchCheckPermissionBody = Message<"raystack.frontier.v1beta1.BatchC
6909
6901
  * Use `create(BatchCheckPermissionBodySchema)` to create a new message.
6910
6902
  */
6911
6903
  export const BatchCheckPermissionBodySchema: GenMessage<BatchCheckPermissionBody> = /*@__PURE__*/
6912
- messageDesc(file_raystack_frontier_v1beta1_frontier, 311);
6904
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 309);
6913
6905
 
6914
6906
  /**
6915
6907
  * @generated from message raystack.frontier.v1beta1.BatchCheckPermissionResponse
@@ -6926,7 +6918,7 @@ export type BatchCheckPermissionResponse = Message<"raystack.frontier.v1beta1.Ba
6926
6918
  * Use `create(BatchCheckPermissionResponseSchema)` to create a new message.
6927
6919
  */
6928
6920
  export const BatchCheckPermissionResponseSchema: GenMessage<BatchCheckPermissionResponse> = /*@__PURE__*/
6929
- messageDesc(file_raystack_frontier_v1beta1_frontier, 312);
6921
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 310);
6930
6922
 
6931
6923
  /**
6932
6924
  * @generated from message raystack.frontier.v1beta1.BatchCheckPermissionResponsePair
@@ -6948,7 +6940,7 @@ export type BatchCheckPermissionResponsePair = Message<"raystack.frontier.v1beta
6948
6940
  * Use `create(BatchCheckPermissionResponsePairSchema)` to create a new message.
6949
6941
  */
6950
6942
  export const BatchCheckPermissionResponsePairSchema: GenMessage<BatchCheckPermissionResponsePair> = /*@__PURE__*/
6951
- messageDesc(file_raystack_frontier_v1beta1_frontier, 313);
6943
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 311);
6952
6944
 
6953
6945
  /**
6954
6946
  * @generated from message raystack.frontier.v1beta1.MetaSchemaRequestBody
@@ -6970,7 +6962,7 @@ export type MetaSchemaRequestBody = Message<"raystack.frontier.v1beta1.MetaSchem
6970
6962
  * Use `create(MetaSchemaRequestBodySchema)` to create a new message.
6971
6963
  */
6972
6964
  export const MetaSchemaRequestBodySchema: GenMessage<MetaSchemaRequestBody> = /*@__PURE__*/
6973
- messageDesc(file_raystack_frontier_v1beta1_frontier, 314);
6965
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 312);
6974
6966
 
6975
6967
  /**
6976
6968
  * @generated from message raystack.frontier.v1beta1.CreateMetaSchemaRequest
@@ -6987,7 +6979,7 @@ export type CreateMetaSchemaRequest = Message<"raystack.frontier.v1beta1.CreateM
6987
6979
  * Use `create(CreateMetaSchemaRequestSchema)` to create a new message.
6988
6980
  */
6989
6981
  export const CreateMetaSchemaRequestSchema: GenMessage<CreateMetaSchemaRequest> = /*@__PURE__*/
6990
- messageDesc(file_raystack_frontier_v1beta1_frontier, 315);
6982
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 313);
6991
6983
 
6992
6984
  /**
6993
6985
  * @generated from message raystack.frontier.v1beta1.CreateMetaSchemaResponse
@@ -7004,7 +6996,7 @@ export type CreateMetaSchemaResponse = Message<"raystack.frontier.v1beta1.Create
7004
6996
  * Use `create(CreateMetaSchemaResponseSchema)` to create a new message.
7005
6997
  */
7006
6998
  export const CreateMetaSchemaResponseSchema: GenMessage<CreateMetaSchemaResponse> = /*@__PURE__*/
7007
- messageDesc(file_raystack_frontier_v1beta1_frontier, 316);
6999
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 314);
7008
7000
 
7009
7001
  /**
7010
7002
  * @generated from message raystack.frontier.v1beta1.GetMetaSchemaRequest
@@ -7021,7 +7013,7 @@ export type GetMetaSchemaRequest = Message<"raystack.frontier.v1beta1.GetMetaSch
7021
7013
  * Use `create(GetMetaSchemaRequestSchema)` to create a new message.
7022
7014
  */
7023
7015
  export const GetMetaSchemaRequestSchema: GenMessage<GetMetaSchemaRequest> = /*@__PURE__*/
7024
- messageDesc(file_raystack_frontier_v1beta1_frontier, 317);
7016
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 315);
7025
7017
 
7026
7018
  /**
7027
7019
  * @generated from message raystack.frontier.v1beta1.GetMetaSchemaResponse
@@ -7038,7 +7030,7 @@ export type GetMetaSchemaResponse = Message<"raystack.frontier.v1beta1.GetMetaSc
7038
7030
  * Use `create(GetMetaSchemaResponseSchema)` to create a new message.
7039
7031
  */
7040
7032
  export const GetMetaSchemaResponseSchema: GenMessage<GetMetaSchemaResponse> = /*@__PURE__*/
7041
- messageDesc(file_raystack_frontier_v1beta1_frontier, 318);
7033
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 316);
7042
7034
 
7043
7035
  /**
7044
7036
  * @generated from message raystack.frontier.v1beta1.UpdateMetaSchemaRequest
@@ -7060,7 +7052,7 @@ export type UpdateMetaSchemaRequest = Message<"raystack.frontier.v1beta1.UpdateM
7060
7052
  * Use `create(UpdateMetaSchemaRequestSchema)` to create a new message.
7061
7053
  */
7062
7054
  export const UpdateMetaSchemaRequestSchema: GenMessage<UpdateMetaSchemaRequest> = /*@__PURE__*/
7063
- messageDesc(file_raystack_frontier_v1beta1_frontier, 319);
7055
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 317);
7064
7056
 
7065
7057
  /**
7066
7058
  * @generated from message raystack.frontier.v1beta1.UpdateMetaSchemaResponse
@@ -7077,7 +7069,7 @@ export type UpdateMetaSchemaResponse = Message<"raystack.frontier.v1beta1.Update
7077
7069
  * Use `create(UpdateMetaSchemaResponseSchema)` to create a new message.
7078
7070
  */
7079
7071
  export const UpdateMetaSchemaResponseSchema: GenMessage<UpdateMetaSchemaResponse> = /*@__PURE__*/
7080
- messageDesc(file_raystack_frontier_v1beta1_frontier, 320);
7072
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 318);
7081
7073
 
7082
7074
  /**
7083
7075
  * @generated from message raystack.frontier.v1beta1.DeleteMetaSchemaRequest
@@ -7094,7 +7086,7 @@ export type DeleteMetaSchemaRequest = Message<"raystack.frontier.v1beta1.DeleteM
7094
7086
  * Use `create(DeleteMetaSchemaRequestSchema)` to create a new message.
7095
7087
  */
7096
7088
  export const DeleteMetaSchemaRequestSchema: GenMessage<DeleteMetaSchemaRequest> = /*@__PURE__*/
7097
- messageDesc(file_raystack_frontier_v1beta1_frontier, 321);
7089
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 319);
7098
7090
 
7099
7091
  /**
7100
7092
  * @generated from message raystack.frontier.v1beta1.DeleteMetaSchemaResponse
@@ -7107,7 +7099,7 @@ export type DeleteMetaSchemaResponse = Message<"raystack.frontier.v1beta1.Delete
7107
7099
  * Use `create(DeleteMetaSchemaResponseSchema)` to create a new message.
7108
7100
  */
7109
7101
  export const DeleteMetaSchemaResponseSchema: GenMessage<DeleteMetaSchemaResponse> = /*@__PURE__*/
7110
- messageDesc(file_raystack_frontier_v1beta1_frontier, 322);
7102
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 320);
7111
7103
 
7112
7104
  /**
7113
7105
  * @generated from message raystack.frontier.v1beta1.ListMetaSchemasRequest
@@ -7120,7 +7112,7 @@ export type ListMetaSchemasRequest = Message<"raystack.frontier.v1beta1.ListMeta
7120
7112
  * Use `create(ListMetaSchemasRequestSchema)` to create a new message.
7121
7113
  */
7122
7114
  export const ListMetaSchemasRequestSchema: GenMessage<ListMetaSchemasRequest> = /*@__PURE__*/
7123
- messageDesc(file_raystack_frontier_v1beta1_frontier, 323);
7115
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 321);
7124
7116
 
7125
7117
  /**
7126
7118
  * @generated from message raystack.frontier.v1beta1.ListMetaSchemasResponse
@@ -7137,142 +7129,7 @@ export type ListMetaSchemasResponse = Message<"raystack.frontier.v1beta1.ListMet
7137
7129
  * Use `create(ListMetaSchemasResponseSchema)` to create a new message.
7138
7130
  */
7139
7131
  export const ListMetaSchemasResponseSchema: GenMessage<ListMetaSchemasResponse> = /*@__PURE__*/
7140
- messageDesc(file_raystack_frontier_v1beta1_frontier, 324);
7141
-
7142
- /**
7143
- * @generated from message raystack.frontier.v1beta1.ListOrganizationAuditLogsRequest
7144
- */
7145
- export type ListOrganizationAuditLogsRequest = Message<"raystack.frontier.v1beta1.ListOrganizationAuditLogsRequest"> & {
7146
- /**
7147
- * @generated from field: string org_id = 1;
7148
- */
7149
- orgId: string;
7150
-
7151
- /**
7152
- * @generated from field: string source = 5;
7153
- */
7154
- source: string;
7155
-
7156
- /**
7157
- * @generated from field: string action = 6;
7158
- */
7159
- action: string;
7160
-
7161
- /**
7162
- * @generated from field: bool ignore_system = 7;
7163
- */
7164
- ignoreSystem: boolean;
7165
-
7166
- /**
7167
- * start_time and end_time are inclusive
7168
- *
7169
- * @generated from field: google.protobuf.Timestamp start_time = 10;
7170
- */
7171
- startTime?: Timestamp;
7172
-
7173
- /**
7174
- * @generated from field: google.protobuf.Timestamp end_time = 11;
7175
- */
7176
- endTime?: Timestamp;
7177
- };
7178
-
7179
- /**
7180
- * Describes the message raystack.frontier.v1beta1.ListOrganizationAuditLogsRequest.
7181
- * Use `create(ListOrganizationAuditLogsRequestSchema)` to create a new message.
7182
- */
7183
- export const ListOrganizationAuditLogsRequestSchema: GenMessage<ListOrganizationAuditLogsRequest> = /*@__PURE__*/
7184
- messageDesc(file_raystack_frontier_v1beta1_frontier, 325);
7185
-
7186
- /**
7187
- * @generated from message raystack.frontier.v1beta1.ListOrganizationAuditLogsResponse
7188
- */
7189
- export type ListOrganizationAuditLogsResponse = Message<"raystack.frontier.v1beta1.ListOrganizationAuditLogsResponse"> & {
7190
- /**
7191
- * @generated from field: repeated raystack.frontier.v1beta1.AuditLog logs = 1;
7192
- */
7193
- logs: AuditLog[];
7194
- };
7195
-
7196
- /**
7197
- * Describes the message raystack.frontier.v1beta1.ListOrganizationAuditLogsResponse.
7198
- * Use `create(ListOrganizationAuditLogsResponseSchema)` to create a new message.
7199
- */
7200
- export const ListOrganizationAuditLogsResponseSchema: GenMessage<ListOrganizationAuditLogsResponse> = /*@__PURE__*/
7201
- messageDesc(file_raystack_frontier_v1beta1_frontier, 326);
7202
-
7203
- /**
7204
- * @generated from message raystack.frontier.v1beta1.CreateOrganizationAuditLogsRequest
7205
- */
7206
- export type CreateOrganizationAuditLogsRequest = Message<"raystack.frontier.v1beta1.CreateOrganizationAuditLogsRequest"> & {
7207
- /**
7208
- * @generated from field: string org_id = 1;
7209
- */
7210
- orgId: string;
7211
-
7212
- /**
7213
- * @generated from field: repeated raystack.frontier.v1beta1.AuditLog logs = 2;
7214
- */
7215
- logs: AuditLog[];
7216
- };
7217
-
7218
- /**
7219
- * Describes the message raystack.frontier.v1beta1.CreateOrganizationAuditLogsRequest.
7220
- * Use `create(CreateOrganizationAuditLogsRequestSchema)` to create a new message.
7221
- */
7222
- export const CreateOrganizationAuditLogsRequestSchema: GenMessage<CreateOrganizationAuditLogsRequest> = /*@__PURE__*/
7223
- messageDesc(file_raystack_frontier_v1beta1_frontier, 327);
7224
-
7225
- /**
7226
- * @generated from message raystack.frontier.v1beta1.CreateOrganizationAuditLogsResponse
7227
- */
7228
- export type CreateOrganizationAuditLogsResponse = Message<"raystack.frontier.v1beta1.CreateOrganizationAuditLogsResponse"> & {
7229
- };
7230
-
7231
- /**
7232
- * Describes the message raystack.frontier.v1beta1.CreateOrganizationAuditLogsResponse.
7233
- * Use `create(CreateOrganizationAuditLogsResponseSchema)` to create a new message.
7234
- */
7235
- export const CreateOrganizationAuditLogsResponseSchema: GenMessage<CreateOrganizationAuditLogsResponse> = /*@__PURE__*/
7236
- messageDesc(file_raystack_frontier_v1beta1_frontier, 328);
7237
-
7238
- /**
7239
- * @generated from message raystack.frontier.v1beta1.GetOrganizationAuditLogRequest
7240
- */
7241
- export type GetOrganizationAuditLogRequest = Message<"raystack.frontier.v1beta1.GetOrganizationAuditLogRequest"> & {
7242
- /**
7243
- * @generated from field: string org_id = 1;
7244
- */
7245
- orgId: string;
7246
-
7247
- /**
7248
- * @generated from field: string id = 2;
7249
- */
7250
- id: string;
7251
- };
7252
-
7253
- /**
7254
- * Describes the message raystack.frontier.v1beta1.GetOrganizationAuditLogRequest.
7255
- * Use `create(GetOrganizationAuditLogRequestSchema)` to create a new message.
7256
- */
7257
- export const GetOrganizationAuditLogRequestSchema: GenMessage<GetOrganizationAuditLogRequest> = /*@__PURE__*/
7258
- messageDesc(file_raystack_frontier_v1beta1_frontier, 329);
7259
-
7260
- /**
7261
- * @generated from message raystack.frontier.v1beta1.GetOrganizationAuditLogResponse
7262
- */
7263
- export type GetOrganizationAuditLogResponse = Message<"raystack.frontier.v1beta1.GetOrganizationAuditLogResponse"> & {
7264
- /**
7265
- * @generated from field: raystack.frontier.v1beta1.AuditLog log = 1;
7266
- */
7267
- log?: AuditLog;
7268
- };
7269
-
7270
- /**
7271
- * Describes the message raystack.frontier.v1beta1.GetOrganizationAuditLogResponse.
7272
- * Use `create(GetOrganizationAuditLogResponseSchema)` to create a new message.
7273
- */
7274
- export const GetOrganizationAuditLogResponseSchema: GenMessage<GetOrganizationAuditLogResponse> = /*@__PURE__*/
7275
- messageDesc(file_raystack_frontier_v1beta1_frontier, 330);
7132
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 322);
7276
7133
 
7277
7134
  /**
7278
7135
  * @generated from message raystack.frontier.v1beta1.DescribePreferencesRequest
@@ -7285,7 +7142,7 @@ export type DescribePreferencesRequest = Message<"raystack.frontier.v1beta1.Desc
7285
7142
  * Use `create(DescribePreferencesRequestSchema)` to create a new message.
7286
7143
  */
7287
7144
  export const DescribePreferencesRequestSchema: GenMessage<DescribePreferencesRequest> = /*@__PURE__*/
7288
- messageDesc(file_raystack_frontier_v1beta1_frontier, 331);
7145
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 323);
7289
7146
 
7290
7147
  /**
7291
7148
  * @generated from message raystack.frontier.v1beta1.DescribePreferencesResponse
@@ -7302,7 +7159,7 @@ export type DescribePreferencesResponse = Message<"raystack.frontier.v1beta1.Des
7302
7159
  * Use `create(DescribePreferencesResponseSchema)` to create a new message.
7303
7160
  */
7304
7161
  export const DescribePreferencesResponseSchema: GenMessage<DescribePreferencesResponse> = /*@__PURE__*/
7305
- messageDesc(file_raystack_frontier_v1beta1_frontier, 332);
7162
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 324);
7306
7163
 
7307
7164
  /**
7308
7165
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationPreferencesRequest
@@ -7324,7 +7181,7 @@ export type CreateOrganizationPreferencesRequest = Message<"raystack.frontier.v1
7324
7181
  * Use `create(CreateOrganizationPreferencesRequestSchema)` to create a new message.
7325
7182
  */
7326
7183
  export const CreateOrganizationPreferencesRequestSchema: GenMessage<CreateOrganizationPreferencesRequest> = /*@__PURE__*/
7327
- messageDesc(file_raystack_frontier_v1beta1_frontier, 333);
7184
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 325);
7328
7185
 
7329
7186
  /**
7330
7187
  * @generated from message raystack.frontier.v1beta1.CreateOrganizationPreferencesResponse
@@ -7341,7 +7198,7 @@ export type CreateOrganizationPreferencesResponse = Message<"raystack.frontier.v
7341
7198
  * Use `create(CreateOrganizationPreferencesResponseSchema)` to create a new message.
7342
7199
  */
7343
7200
  export const CreateOrganizationPreferencesResponseSchema: GenMessage<CreateOrganizationPreferencesResponse> = /*@__PURE__*/
7344
- messageDesc(file_raystack_frontier_v1beta1_frontier, 334);
7201
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 326);
7345
7202
 
7346
7203
  /**
7347
7204
  * @generated from message raystack.frontier.v1beta1.ListOrganizationPreferencesRequest
@@ -7358,7 +7215,7 @@ export type ListOrganizationPreferencesRequest = Message<"raystack.frontier.v1be
7358
7215
  * Use `create(ListOrganizationPreferencesRequestSchema)` to create a new message.
7359
7216
  */
7360
7217
  export const ListOrganizationPreferencesRequestSchema: GenMessage<ListOrganizationPreferencesRequest> = /*@__PURE__*/
7361
- messageDesc(file_raystack_frontier_v1beta1_frontier, 335);
7218
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 327);
7362
7219
 
7363
7220
  /**
7364
7221
  * @generated from message raystack.frontier.v1beta1.ListOrganizationPreferencesResponse
@@ -7375,7 +7232,7 @@ export type ListOrganizationPreferencesResponse = Message<"raystack.frontier.v1b
7375
7232
  * Use `create(ListOrganizationPreferencesResponseSchema)` to create a new message.
7376
7233
  */
7377
7234
  export const ListOrganizationPreferencesResponseSchema: GenMessage<ListOrganizationPreferencesResponse> = /*@__PURE__*/
7378
- messageDesc(file_raystack_frontier_v1beta1_frontier, 336);
7235
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 328);
7379
7236
 
7380
7237
  /**
7381
7238
  * @generated from message raystack.frontier.v1beta1.CreateProjectPreferencesRequest
@@ -7397,7 +7254,7 @@ export type CreateProjectPreferencesRequest = Message<"raystack.frontier.v1beta1
7397
7254
  * Use `create(CreateProjectPreferencesRequestSchema)` to create a new message.
7398
7255
  */
7399
7256
  export const CreateProjectPreferencesRequestSchema: GenMessage<CreateProjectPreferencesRequest> = /*@__PURE__*/
7400
- messageDesc(file_raystack_frontier_v1beta1_frontier, 337);
7257
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 329);
7401
7258
 
7402
7259
  /**
7403
7260
  * @generated from message raystack.frontier.v1beta1.CreateProjectPreferencesResponse
@@ -7414,7 +7271,7 @@ export type CreateProjectPreferencesResponse = Message<"raystack.frontier.v1beta
7414
7271
  * Use `create(CreateProjectPreferencesResponseSchema)` to create a new message.
7415
7272
  */
7416
7273
  export const CreateProjectPreferencesResponseSchema: GenMessage<CreateProjectPreferencesResponse> = /*@__PURE__*/
7417
- messageDesc(file_raystack_frontier_v1beta1_frontier, 338);
7274
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 330);
7418
7275
 
7419
7276
  /**
7420
7277
  * @generated from message raystack.frontier.v1beta1.ListProjectPreferencesRequest
@@ -7431,7 +7288,7 @@ export type ListProjectPreferencesRequest = Message<"raystack.frontier.v1beta1.L
7431
7288
  * Use `create(ListProjectPreferencesRequestSchema)` to create a new message.
7432
7289
  */
7433
7290
  export const ListProjectPreferencesRequestSchema: GenMessage<ListProjectPreferencesRequest> = /*@__PURE__*/
7434
- messageDesc(file_raystack_frontier_v1beta1_frontier, 339);
7291
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 331);
7435
7292
 
7436
7293
  /**
7437
7294
  * @generated from message raystack.frontier.v1beta1.ListProjectPreferencesResponse
@@ -7448,7 +7305,7 @@ export type ListProjectPreferencesResponse = Message<"raystack.frontier.v1beta1.
7448
7305
  * Use `create(ListProjectPreferencesResponseSchema)` to create a new message.
7449
7306
  */
7450
7307
  export const ListProjectPreferencesResponseSchema: GenMessage<ListProjectPreferencesResponse> = /*@__PURE__*/
7451
- messageDesc(file_raystack_frontier_v1beta1_frontier, 340);
7308
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 332);
7452
7309
 
7453
7310
  /**
7454
7311
  * @generated from message raystack.frontier.v1beta1.CreateGroupPreferencesRequest
@@ -7470,7 +7327,7 @@ export type CreateGroupPreferencesRequest = Message<"raystack.frontier.v1beta1.C
7470
7327
  * Use `create(CreateGroupPreferencesRequestSchema)` to create a new message.
7471
7328
  */
7472
7329
  export const CreateGroupPreferencesRequestSchema: GenMessage<CreateGroupPreferencesRequest> = /*@__PURE__*/
7473
- messageDesc(file_raystack_frontier_v1beta1_frontier, 341);
7330
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 333);
7474
7331
 
7475
7332
  /**
7476
7333
  * @generated from message raystack.frontier.v1beta1.CreateGroupPreferencesResponse
@@ -7487,7 +7344,7 @@ export type CreateGroupPreferencesResponse = Message<"raystack.frontier.v1beta1.
7487
7344
  * Use `create(CreateGroupPreferencesResponseSchema)` to create a new message.
7488
7345
  */
7489
7346
  export const CreateGroupPreferencesResponseSchema: GenMessage<CreateGroupPreferencesResponse> = /*@__PURE__*/
7490
- messageDesc(file_raystack_frontier_v1beta1_frontier, 342);
7347
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 334);
7491
7348
 
7492
7349
  /**
7493
7350
  * @generated from message raystack.frontier.v1beta1.ListGroupPreferencesRequest
@@ -7504,7 +7361,7 @@ export type ListGroupPreferencesRequest = Message<"raystack.frontier.v1beta1.Lis
7504
7361
  * Use `create(ListGroupPreferencesRequestSchema)` to create a new message.
7505
7362
  */
7506
7363
  export const ListGroupPreferencesRequestSchema: GenMessage<ListGroupPreferencesRequest> = /*@__PURE__*/
7507
- messageDesc(file_raystack_frontier_v1beta1_frontier, 343);
7364
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 335);
7508
7365
 
7509
7366
  /**
7510
7367
  * @generated from message raystack.frontier.v1beta1.ListGroupPreferencesResponse
@@ -7521,7 +7378,7 @@ export type ListGroupPreferencesResponse = Message<"raystack.frontier.v1beta1.Li
7521
7378
  * Use `create(ListGroupPreferencesResponseSchema)` to create a new message.
7522
7379
  */
7523
7380
  export const ListGroupPreferencesResponseSchema: GenMessage<ListGroupPreferencesResponse> = /*@__PURE__*/
7524
- messageDesc(file_raystack_frontier_v1beta1_frontier, 344);
7381
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 336);
7525
7382
 
7526
7383
  /**
7527
7384
  * @generated from message raystack.frontier.v1beta1.CreateUserPreferencesRequest
@@ -7543,7 +7400,7 @@ export type CreateUserPreferencesRequest = Message<"raystack.frontier.v1beta1.Cr
7543
7400
  * Use `create(CreateUserPreferencesRequestSchema)` to create a new message.
7544
7401
  */
7545
7402
  export const CreateUserPreferencesRequestSchema: GenMessage<CreateUserPreferencesRequest> = /*@__PURE__*/
7546
- messageDesc(file_raystack_frontier_v1beta1_frontier, 345);
7403
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 337);
7547
7404
 
7548
7405
  /**
7549
7406
  * @generated from message raystack.frontier.v1beta1.CreateUserPreferencesResponse
@@ -7560,7 +7417,7 @@ export type CreateUserPreferencesResponse = Message<"raystack.frontier.v1beta1.C
7560
7417
  * Use `create(CreateUserPreferencesResponseSchema)` to create a new message.
7561
7418
  */
7562
7419
  export const CreateUserPreferencesResponseSchema: GenMessage<CreateUserPreferencesResponse> = /*@__PURE__*/
7563
- messageDesc(file_raystack_frontier_v1beta1_frontier, 346);
7420
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 338);
7564
7421
 
7565
7422
  /**
7566
7423
  * @generated from message raystack.frontier.v1beta1.ListUserPreferencesRequest
@@ -7577,7 +7434,7 @@ export type ListUserPreferencesRequest = Message<"raystack.frontier.v1beta1.List
7577
7434
  * Use `create(ListUserPreferencesRequestSchema)` to create a new message.
7578
7435
  */
7579
7436
  export const ListUserPreferencesRequestSchema: GenMessage<ListUserPreferencesRequest> = /*@__PURE__*/
7580
- messageDesc(file_raystack_frontier_v1beta1_frontier, 347);
7437
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 339);
7581
7438
 
7582
7439
  /**
7583
7440
  * @generated from message raystack.frontier.v1beta1.ListUserPreferencesResponse
@@ -7594,7 +7451,7 @@ export type ListUserPreferencesResponse = Message<"raystack.frontier.v1beta1.Lis
7594
7451
  * Use `create(ListUserPreferencesResponseSchema)` to create a new message.
7595
7452
  */
7596
7453
  export const ListUserPreferencesResponseSchema: GenMessage<ListUserPreferencesResponse> = /*@__PURE__*/
7597
- messageDesc(file_raystack_frontier_v1beta1_frontier, 348);
7454
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 340);
7598
7455
 
7599
7456
  /**
7600
7457
  * @generated from message raystack.frontier.v1beta1.CreateCurrentUserPreferencesRequest
@@ -7611,7 +7468,7 @@ export type CreateCurrentUserPreferencesRequest = Message<"raystack.frontier.v1b
7611
7468
  * Use `create(CreateCurrentUserPreferencesRequestSchema)` to create a new message.
7612
7469
  */
7613
7470
  export const CreateCurrentUserPreferencesRequestSchema: GenMessage<CreateCurrentUserPreferencesRequest> = /*@__PURE__*/
7614
- messageDesc(file_raystack_frontier_v1beta1_frontier, 349);
7471
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 341);
7615
7472
 
7616
7473
  /**
7617
7474
  * @generated from message raystack.frontier.v1beta1.CreateCurrentUserPreferencesResponse
@@ -7628,7 +7485,7 @@ export type CreateCurrentUserPreferencesResponse = Message<"raystack.frontier.v1
7628
7485
  * Use `create(CreateCurrentUserPreferencesResponseSchema)` to create a new message.
7629
7486
  */
7630
7487
  export const CreateCurrentUserPreferencesResponseSchema: GenMessage<CreateCurrentUserPreferencesResponse> = /*@__PURE__*/
7631
- messageDesc(file_raystack_frontier_v1beta1_frontier, 350);
7488
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 342);
7632
7489
 
7633
7490
  /**
7634
7491
  * @generated from message raystack.frontier.v1beta1.ListCurrentUserPreferencesRequest
@@ -7641,7 +7498,7 @@ export type ListCurrentUserPreferencesRequest = Message<"raystack.frontier.v1bet
7641
7498
  * Use `create(ListCurrentUserPreferencesRequestSchema)` to create a new message.
7642
7499
  */
7643
7500
  export const ListCurrentUserPreferencesRequestSchema: GenMessage<ListCurrentUserPreferencesRequest> = /*@__PURE__*/
7644
- messageDesc(file_raystack_frontier_v1beta1_frontier, 351);
7501
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 343);
7645
7502
 
7646
7503
  /**
7647
7504
  * @generated from message raystack.frontier.v1beta1.ListCurrentUserPreferencesResponse
@@ -7658,7 +7515,7 @@ export type ListCurrentUserPreferencesResponse = Message<"raystack.frontier.v1be
7658
7515
  * Use `create(ListCurrentUserPreferencesResponseSchema)` to create a new message.
7659
7516
  */
7660
7517
  export const ListCurrentUserPreferencesResponseSchema: GenMessage<ListCurrentUserPreferencesResponse> = /*@__PURE__*/
7661
- messageDesc(file_raystack_frontier_v1beta1_frontier, 352);
7518
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 344);
7662
7519
 
7663
7520
  /**
7664
7521
  * @generated from message raystack.frontier.v1beta1.BillingWebhookCallbackRequest
@@ -7680,7 +7537,7 @@ export type BillingWebhookCallbackRequest = Message<"raystack.frontier.v1beta1.B
7680
7537
  * Use `create(BillingWebhookCallbackRequestSchema)` to create a new message.
7681
7538
  */
7682
7539
  export const BillingWebhookCallbackRequestSchema: GenMessage<BillingWebhookCallbackRequest> = /*@__PURE__*/
7683
- messageDesc(file_raystack_frontier_v1beta1_frontier, 353);
7540
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 345);
7684
7541
 
7685
7542
  /**
7686
7543
  * @generated from message raystack.frontier.v1beta1.BillingWebhookCallbackResponse
@@ -7693,7 +7550,7 @@ export type BillingWebhookCallbackResponse = Message<"raystack.frontier.v1beta1.
7693
7550
  * Use `create(BillingWebhookCallbackResponseSchema)` to create a new message.
7694
7551
  */
7695
7552
  export const BillingWebhookCallbackResponseSchema: GenMessage<BillingWebhookCallbackResponse> = /*@__PURE__*/
7696
- messageDesc(file_raystack_frontier_v1beta1_frontier, 354);
7553
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 346);
7697
7554
 
7698
7555
  /**
7699
7556
  * @generated from message raystack.frontier.v1beta1.CreateProspectPublicRequest
@@ -7735,7 +7592,7 @@ export type CreateProspectPublicRequest = Message<"raystack.frontier.v1beta1.Cre
7735
7592
  * Use `create(CreateProspectPublicRequestSchema)` to create a new message.
7736
7593
  */
7737
7594
  export const CreateProspectPublicRequestSchema: GenMessage<CreateProspectPublicRequest> = /*@__PURE__*/
7738
- messageDesc(file_raystack_frontier_v1beta1_frontier, 355);
7595
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 347);
7739
7596
 
7740
7597
  /**
7741
7598
  * @generated from message raystack.frontier.v1beta1.CreateProspectPublicResponse
@@ -7748,6 +7605,182 @@ export type CreateProspectPublicResponse = Message<"raystack.frontier.v1beta1.Cr
7748
7605
  * Use `create(CreateProspectPublicResponseSchema)` to create a new message.
7749
7606
  */
7750
7607
  export const CreateProspectPublicResponseSchema: GenMessage<CreateProspectPublicResponse> = /*@__PURE__*/
7608
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 348);
7609
+
7610
+ /**
7611
+ * @generated from message raystack.frontier.v1beta1.ListSessionsRequest
7612
+ */
7613
+ export type ListSessionsRequest = Message<"raystack.frontier.v1beta1.ListSessionsRequest"> & {
7614
+ };
7615
+
7616
+ /**
7617
+ * Describes the message raystack.frontier.v1beta1.ListSessionsRequest.
7618
+ * Use `create(ListSessionsRequestSchema)` to create a new message.
7619
+ */
7620
+ export const ListSessionsRequestSchema: GenMessage<ListSessionsRequest> = /*@__PURE__*/
7621
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 349);
7622
+
7623
+ /**
7624
+ * @generated from message raystack.frontier.v1beta1.ListSessionsResponse
7625
+ */
7626
+ export type ListSessionsResponse = Message<"raystack.frontier.v1beta1.ListSessionsResponse"> & {
7627
+ /**
7628
+ * @generated from field: repeated raystack.frontier.v1beta1.Session sessions = 1;
7629
+ */
7630
+ sessions: Session[];
7631
+ };
7632
+
7633
+ /**
7634
+ * Describes the message raystack.frontier.v1beta1.ListSessionsResponse.
7635
+ * Use `create(ListSessionsResponseSchema)` to create a new message.
7636
+ */
7637
+ export const ListSessionsResponseSchema: GenMessage<ListSessionsResponse> = /*@__PURE__*/
7638
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 350);
7639
+
7640
+ /**
7641
+ * @generated from message raystack.frontier.v1beta1.RevokeSessionRequest
7642
+ */
7643
+ export type RevokeSessionRequest = Message<"raystack.frontier.v1beta1.RevokeSessionRequest"> & {
7644
+ /**
7645
+ * @generated from field: string session_id = 1;
7646
+ */
7647
+ sessionId: string;
7648
+ };
7649
+
7650
+ /**
7651
+ * Describes the message raystack.frontier.v1beta1.RevokeSessionRequest.
7652
+ * Use `create(RevokeSessionRequestSchema)` to create a new message.
7653
+ */
7654
+ export const RevokeSessionRequestSchema: GenMessage<RevokeSessionRequest> = /*@__PURE__*/
7655
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 351);
7656
+
7657
+ /**
7658
+ * @generated from message raystack.frontier.v1beta1.RevokeSessionResponse
7659
+ */
7660
+ export type RevokeSessionResponse = Message<"raystack.frontier.v1beta1.RevokeSessionResponse"> & {
7661
+ };
7662
+
7663
+ /**
7664
+ * Describes the message raystack.frontier.v1beta1.RevokeSessionResponse.
7665
+ * Use `create(RevokeSessionResponseSchema)` to create a new message.
7666
+ */
7667
+ export const RevokeSessionResponseSchema: GenMessage<RevokeSessionResponse> = /*@__PURE__*/
7668
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 352);
7669
+
7670
+ /**
7671
+ * @generated from message raystack.frontier.v1beta1.PingUserSessionRequest
7672
+ */
7673
+ export type PingUserSessionRequest = Message<"raystack.frontier.v1beta1.PingUserSessionRequest"> & {
7674
+ };
7675
+
7676
+ /**
7677
+ * Describes the message raystack.frontier.v1beta1.PingUserSessionRequest.
7678
+ * Use `create(PingUserSessionRequestSchema)` to create a new message.
7679
+ */
7680
+ export const PingUserSessionRequestSchema: GenMessage<PingUserSessionRequest> = /*@__PURE__*/
7681
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 353);
7682
+
7683
+ /**
7684
+ * @generated from message raystack.frontier.v1beta1.PingUserSessionResponse
7685
+ */
7686
+ export type PingUserSessionResponse = Message<"raystack.frontier.v1beta1.PingUserSessionResponse"> & {
7687
+ /**
7688
+ * @generated from field: raystack.frontier.v1beta1.Session.Meta metadata = 1;
7689
+ */
7690
+ metadata?: Session_Meta;
7691
+ };
7692
+
7693
+ /**
7694
+ * Describes the message raystack.frontier.v1beta1.PingUserSessionResponse.
7695
+ * Use `create(PingUserSessionResponseSchema)` to create a new message.
7696
+ */
7697
+ export const PingUserSessionResponseSchema: GenMessage<PingUserSessionResponse> = /*@__PURE__*/
7698
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 354);
7699
+
7700
+ /**
7701
+ * @generated from message raystack.frontier.v1beta1.CreateAuditRecordRequest
7702
+ */
7703
+ export type CreateAuditRecordRequest = Message<"raystack.frontier.v1beta1.CreateAuditRecordRequest"> & {
7704
+ /**
7705
+ * @generated from field: raystack.frontier.v1beta1.AuditRecordActor actor = 1;
7706
+ */
7707
+ actor?: AuditRecordActor;
7708
+
7709
+ /**
7710
+ * @generated from field: string event = 2;
7711
+ */
7712
+ event: string;
7713
+
7714
+ /**
7715
+ * Base resource on which this change happened
7716
+ *
7717
+ * @generated from field: raystack.frontier.v1beta1.AuditRecordResource resource = 3;
7718
+ */
7719
+ resource?: AuditRecordResource;
7720
+
7721
+ /**
7722
+ * Related resource info (optional)
7723
+ *
7724
+ * @generated from field: raystack.frontier.v1beta1.AuditRecordTarget target = 4;
7725
+ */
7726
+ target?: AuditRecordTarget;
7727
+
7728
+ /**
7729
+ * When the event occurred
7730
+ *
7731
+ * @generated from field: google.protobuf.Timestamp occurred_at = 5;
7732
+ */
7733
+ occurredAt?: Timestamp;
7734
+
7735
+ /**
7736
+ * @generated from field: string org_id = 6;
7737
+ */
7738
+ orgId: string;
7739
+
7740
+ /**
7741
+ * Request ID for tracing
7742
+ *
7743
+ * @generated from field: string request_id = 7;
7744
+ */
7745
+ requestId: string;
7746
+
7747
+ /**
7748
+ * Flexible metadata field for any additional data including reason, changes, etc.
7749
+ *
7750
+ * @generated from field: google.protobuf.Struct metadata = 8;
7751
+ */
7752
+ metadata?: JsonObject;
7753
+
7754
+ /**
7755
+ * Idempotency key to prevent duplicate audit records. Can be used for storing external id.
7756
+ *
7757
+ * @generated from field: string idempotency_key = 9;
7758
+ */
7759
+ idempotencyKey: string;
7760
+ };
7761
+
7762
+ /**
7763
+ * Describes the message raystack.frontier.v1beta1.CreateAuditRecordRequest.
7764
+ * Use `create(CreateAuditRecordRequestSchema)` to create a new message.
7765
+ */
7766
+ export const CreateAuditRecordRequestSchema: GenMessage<CreateAuditRecordRequest> = /*@__PURE__*/
7767
+ messageDesc(file_raystack_frontier_v1beta1_frontier, 355);
7768
+
7769
+ /**
7770
+ * @generated from message raystack.frontier.v1beta1.CreateAuditRecordResponse
7771
+ */
7772
+ export type CreateAuditRecordResponse = Message<"raystack.frontier.v1beta1.CreateAuditRecordResponse"> & {
7773
+ /**
7774
+ * @generated from field: raystack.frontier.v1beta1.AuditRecord audit_record = 1;
7775
+ */
7776
+ auditRecord?: AuditRecord;
7777
+ };
7778
+
7779
+ /**
7780
+ * Describes the message raystack.frontier.v1beta1.CreateAuditRecordResponse.
7781
+ * Use `create(CreateAuditRecordResponseSchema)` to create a new message.
7782
+ */
7783
+ export const CreateAuditRecordResponseSchema: GenMessage<CreateAuditRecordResponse> = /*@__PURE__*/
7751
7784
  messageDesc(file_raystack_frontier_v1beta1_frontier, 356);
7752
7785
 
7753
7786
  /**
@@ -8614,6 +8647,36 @@ export const FrontierService: GenService<{
8614
8647
  input: typeof GetJWKsRequestSchema;
8615
8648
  output: typeof GetJWKsResponseSchema;
8616
8649
  },
8650
+ /**
8651
+ * Returns a list of all active sessions for the current authenticated user.
8652
+ *
8653
+ * @generated from rpc raystack.frontier.v1beta1.FrontierService.ListSessions
8654
+ */
8655
+ listSessions: {
8656
+ methodKind: "unary";
8657
+ input: typeof ListSessionsRequestSchema;
8658
+ output: typeof ListSessionsResponseSchema;
8659
+ },
8660
+ /**
8661
+ * Revoke a specific session for the current authenticated user.
8662
+ *
8663
+ * @generated from rpc raystack.frontier.v1beta1.FrontierService.RevokeSession
8664
+ */
8665
+ revokeSession: {
8666
+ methodKind: "unary";
8667
+ input: typeof RevokeSessionRequestSchema;
8668
+ output: typeof RevokeSessionResponseSchema;
8669
+ },
8670
+ /**
8671
+ * Ping user current active session.
8672
+ *
8673
+ * @generated from rpc raystack.frontier.v1beta1.FrontierService.PingUserSession
8674
+ */
8675
+ pingUserSession: {
8676
+ methodKind: "unary";
8677
+ input: typeof PingUserSessionRequestSchema;
8678
+ output: typeof PingUserSessionResponseSchema;
8679
+ },
8617
8680
  /**
8618
8681
  * @generated from rpc raystack.frontier.v1beta1.FrontierService.ListAuthStrategies
8619
8682
  */
@@ -8696,32 +8759,6 @@ export const FrontierService: GenService<{
8696
8759
  input: typeof DeleteMetaSchemaRequestSchema;
8697
8760
  output: typeof DeleteMetaSchemaResponseSchema;
8698
8761
  },
8699
- /**
8700
- * Audit logs
8701
- *
8702
- * @generated from rpc raystack.frontier.v1beta1.FrontierService.ListOrganizationAuditLogs
8703
- */
8704
- listOrganizationAuditLogs: {
8705
- methodKind: "unary";
8706
- input: typeof ListOrganizationAuditLogsRequestSchema;
8707
- output: typeof ListOrganizationAuditLogsResponseSchema;
8708
- },
8709
- /**
8710
- * @generated from rpc raystack.frontier.v1beta1.FrontierService.CreateOrganizationAuditLogs
8711
- */
8712
- createOrganizationAuditLogs: {
8713
- methodKind: "unary";
8714
- input: typeof CreateOrganizationAuditLogsRequestSchema;
8715
- output: typeof CreateOrganizationAuditLogsResponseSchema;
8716
- },
8717
- /**
8718
- * @generated from rpc raystack.frontier.v1beta1.FrontierService.GetOrganizationAuditLog
8719
- */
8720
- getOrganizationAuditLog: {
8721
- methodKind: "unary";
8722
- input: typeof GetOrganizationAuditLogRequestSchema;
8723
- output: typeof GetOrganizationAuditLogResponseSchema;
8724
- },
8725
8762
  /**
8726
8763
  * DescribePreferences list down all the supported preferences of entities
8727
8764
  *
@@ -9144,6 +9181,16 @@ export const FrontierService: GenService<{
9144
9181
  input: typeof CreateProspectPublicRequestSchema;
9145
9182
  output: typeof CreateProspectPublicResponseSchema;
9146
9183
  },
9184
+ /**
9185
+ * Audit Records
9186
+ *
9187
+ * @generated from rpc raystack.frontier.v1beta1.FrontierService.CreateAuditRecord
9188
+ */
9189
+ createAuditRecord: {
9190
+ methodKind: "unary";
9191
+ input: typeof CreateAuditRecordRequestSchema;
9192
+ output: typeof CreateAuditRecordResponseSchema;
9193
+ },
9147
9194
  }> = /*@__PURE__*/
9148
9195
  serviceDesc(file_raystack_frontier_v1beta1_frontier, 0);
9149
9196