@tricoteuses/assemblee 1.10.5 → 2.0.2

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 (400) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-CN7bRFdP.js +259 -0
  3. package/lib/amendements-CN7bRFdP.js.map +1 -0
  4. package/lib/amendements-Cg1lyCBp.js +735 -0
  5. package/lib/amendements-Cg1lyCBp.js.map +1 -0
  6. package/lib/api.d.ts +1 -0
  7. package/lib/api.d.ts.map +1 -0
  8. package/lib/cleaners/actes_legislatifs.d.ts +1 -0
  9. package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
  10. package/lib/cleaners/acteurs.d.ts +1 -0
  11. package/lib/cleaners/acteurs.d.ts.map +1 -0
  12. package/lib/cleaners/amendements.d.ts +1 -0
  13. package/lib/cleaners/amendements.d.ts.map +1 -0
  14. package/lib/cleaners/debats.d.ts +1 -0
  15. package/lib/cleaners/debats.d.ts.map +1 -0
  16. package/lib/cleaners/documents.d.ts +1 -0
  17. package/lib/cleaners/documents.d.ts.map +1 -0
  18. package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
  19. package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
  20. package/lib/cleaners/index.d.ts +10 -9
  21. package/lib/cleaners/index.d.ts.map +1 -0
  22. package/lib/cleaners/organes.d.ts +1 -0
  23. package/lib/cleaners/organes.d.ts.map +1 -0
  24. package/lib/cleaners/questions.d.ts +1 -0
  25. package/lib/cleaners/questions.d.ts.map +1 -0
  26. package/lib/cleaners/reunions.d.ts +1 -0
  27. package/lib/cleaners/reunions.d.ts.map +1 -0
  28. package/lib/cleaners/scrutins.d.ts +1 -0
  29. package/lib/cleaners/scrutins.d.ts.map +1 -0
  30. package/lib/cleaners/xml.d.ts +1 -0
  31. package/lib/cleaners/xml.d.ts.map +1 -0
  32. package/lib/cleaners.js +1138 -0
  33. package/lib/cleaners.js.map +1 -0
  34. package/lib/datasets.d.ts +4 -3
  35. package/lib/datasets.d.ts.map +1 -0
  36. package/lib/dates.d.ts +1 -0
  37. package/lib/dates.d.ts.map +1 -0
  38. package/lib/debats-BwZYgzXe.js +3978 -0
  39. package/lib/debats-BwZYgzXe.js.map +1 -0
  40. package/lib/dossiers_legislatifs.d.ts +3 -2
  41. package/lib/dossiers_legislatifs.d.ts.map +1 -0
  42. package/lib/file_systems.d.ts +1 -0
  43. package/lib/file_systems.d.ts.map +1 -0
  44. package/lib/git.d.ts +1 -0
  45. package/lib/git.d.ts.map +1 -0
  46. package/lib/index.d.ts +18 -22
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +1916 -285
  49. package/lib/index.js.map +1 -0
  50. package/lib/inserters.d.ts +6 -5
  51. package/lib/inserters.d.ts.map +1 -0
  52. package/lib/loaders.d.ts +13 -12
  53. package/lib/loaders.d.ts.map +1 -0
  54. package/lib/loaders.js +812 -1516
  55. package/lib/loaders.js.map +1 -0
  56. package/lib/logger.d.ts +1 -0
  57. package/lib/logger.d.ts.map +1 -0
  58. package/lib/organes.d.ts +2 -1
  59. package/lib/organes.d.ts.map +1 -0
  60. package/lib/parse-CzW8NHW5.js +2850 -0
  61. package/lib/parse-CzW8NHW5.js.map +1 -0
  62. package/lib/parsers/index.d.ts +3 -3
  63. package/lib/parsers/index.d.ts.map +1 -0
  64. package/lib/parsers/plf.d.ts +2 -0
  65. package/lib/parsers/plf.d.ts.map +1 -0
  66. package/lib/parsers/recherche_amendements.d.ts +3 -2
  67. package/lib/parsers/recherche_amendements.d.ts.map +1 -0
  68. package/lib/parsers/textes_lois.d.ts +2 -23
  69. package/lib/parsers/textes_lois.d.ts.map +1 -0
  70. package/lib/parsers.js +393 -0
  71. package/lib/parsers.js.map +1 -0
  72. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  73. package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
  74. package/lib/raw_types/agendas.d.ts +1 -0
  75. package/lib/raw_types/agendas.d.ts.map +1 -0
  76. package/lib/raw_types/amendements.d.ts +1 -0
  77. package/lib/raw_types/amendements.d.ts.map +1 -0
  78. package/lib/raw_types/debats.d.ts +3 -2
  79. package/lib/raw_types/debats.d.ts.map +1 -0
  80. package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
  81. package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
  82. package/lib/raw_types/questions.d.ts +1 -0
  83. package/lib/raw_types/questions.d.ts.map +1 -0
  84. package/lib/raw_types/scrutins.d.ts +1 -0
  85. package/lib/raw_types/scrutins.d.ts.map +1 -0
  86. package/lib/schemas/acteurs_et_organes.d.json +982 -0
  87. package/lib/schemas/acteurs_et_organes.json +1166 -0
  88. package/lib/schemas/agendas.d.json +1561 -0
  89. package/lib/schemas/agendas.json +1745 -0
  90. package/lib/schemas/amendements.d.json +1901 -0
  91. package/lib/schemas/amendements.json +2085 -0
  92. package/lib/schemas/debats.d.json +623 -0
  93. package/lib/schemas/debats.json +842 -0
  94. package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
  95. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  96. package/lib/schemas/legislatures.d.json +17 -0
  97. package/lib/schemas/legislatures.json +17 -0
  98. package/lib/schemas/questions.d.json +520 -0
  99. package/lib/schemas/questions.json +704 -0
  100. package/lib/schemas/scrutins.d.json +517 -0
  101. package/lib/schemas/scrutins.json +701 -0
  102. package/lib/scripts/add_links_to_documents.d.ts +2 -0
  103. package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
  104. package/lib/scripts/clean_reorganized_data.d.ts +1 -0
  105. package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
  106. package/lib/scripts/copy-schemas.d.ts +2 -0
  107. package/lib/scripts/copy-schemas.d.ts.map +1 -0
  108. package/lib/scripts/diff_amendements.d.ts +1 -0
  109. package/lib/scripts/diff_amendements.d.ts.map +1 -0
  110. package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
  111. package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
  112. package/lib/scripts/generate-json-schemas.d.ts +2 -0
  113. package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
  114. package/lib/scripts/get_today_reunions.d.ts +1 -0
  115. package/lib/scripts/get_today_reunions.d.ts.map +1 -0
  116. package/lib/scripts/merge_scrutins.d.ts +1 -0
  117. package/lib/scripts/merge_scrutins.d.ts.map +1 -0
  118. package/lib/scripts/process_open_dataset.d.ts +1 -0
  119. package/lib/scripts/process_open_dataset.d.ts.map +1 -0
  120. package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
  121. package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
  122. package/lib/scripts/reorganize_data.d.ts +1 -0
  123. package/lib/scripts/reorganize_data.d.ts.map +1 -0
  124. package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
  125. package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
  126. package/lib/scripts/retrieve_documents.d.ts +1 -0
  127. package/lib/scripts/retrieve_documents.d.ts.map +1 -0
  128. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  129. package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
  130. package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
  131. package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
  132. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  133. package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
  134. package/lib/scripts/shared/cli_helpers.d.ts +1 -0
  135. package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
  136. package/lib/scripts/test_iter_load.d.ts +1 -0
  137. package/lib/scripts/test_iter_load.d.ts.map +1 -0
  138. package/lib/scripts/test_load.d.ts +1 -0
  139. package/lib/scripts/test_load.d.ts.map +1 -0
  140. package/lib/scripts/test_load_big_files.d.ts +1 -0
  141. package/lib/scripts/test_load_big_files.d.ts.map +1 -0
  142. package/lib/scripts/validate_json.d.ts +1 -0
  143. package/lib/scripts/validate_json.d.ts.map +1 -0
  144. package/lib/shared_types/codes_actes.d.ts +1 -0
  145. package/lib/shared_types/codes_actes.d.ts.map +1 -0
  146. package/lib/strings.d.ts +1 -0
  147. package/lib/strings.d.ts.map +1 -0
  148. package/lib/types/acteurs_et_organes.d.ts +341 -0
  149. package/lib/types/acteurs_et_organes.d.ts.map +1 -0
  150. package/lib/types/agendas.d.ts +237 -10
  151. package/lib/types/agendas.d.ts.map +1 -0
  152. package/lib/types/amendements.d.ts +277 -1
  153. package/lib/types/amendements.d.ts.map +1 -0
  154. package/lib/types/debats.d.ts +53 -2
  155. package/lib/types/debats.d.ts.map +1 -0
  156. package/lib/types/dossiers_legislatifs.d.ts +404 -9
  157. package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
  158. package/lib/types/legislatures.d.ts +1 -0
  159. package/lib/types/legislatures.d.ts.map +1 -0
  160. package/lib/types/questions.d.ts +100 -2
  161. package/lib/types/questions.d.ts.map +1 -0
  162. package/lib/types/scrutins.d.ts +102 -0
  163. package/lib/types/scrutins.d.ts.map +1 -0
  164. package/lib/urls.d.ts +3 -2
  165. package/lib/urls.d.ts.map +1 -0
  166. package/package.json +31 -95
  167. package/lib/api.js +0 -52
  168. package/lib/api.mjs +0 -45
  169. package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
  170. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  171. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  172. package/lib/bugs/acteur-00010.d.ts +0 -7
  173. package/lib/bugs/acteur-00010.js +0 -116
  174. package/lib/bugs/acteur-00010.mjs +0 -26
  175. package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
  176. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  177. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  178. package/lib/bugs/agenda-00002.d.ts +0 -15
  179. package/lib/bugs/agenda-00002.js +0 -406
  180. package/lib/bugs/agenda-00002.mjs +0 -172
  181. package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
  182. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  183. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  184. package/lib/bugs/agenda-00008.d.ts +0 -7
  185. package/lib/bugs/agenda-00008.js +0 -123
  186. package/lib/bugs/agenda-00008.mjs +0 -26
  187. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  188. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  189. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  190. package/lib/bugs/agenda-00011.d.ts +0 -16
  191. package/lib/bugs/agenda-00011.js +0 -333
  192. package/lib/bugs/agenda-00011.mjs +0 -125
  193. package/lib/bugs.d.ts +0 -21
  194. package/lib/bugs.js +0 -452
  195. package/lib/bugs.mjs +0 -70
  196. package/lib/cleaners/actes_legislatifs.js +0 -315
  197. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  198. package/lib/cleaners/acteurs.js +0 -265
  199. package/lib/cleaners/acteurs.mjs +0 -180
  200. package/lib/cleaners/amendements.js +0 -294
  201. package/lib/cleaners/amendements.mjs +0 -227
  202. package/lib/cleaners/debats.js +0 -12
  203. package/lib/cleaners/debats.mjs +0 -5
  204. package/lib/cleaners/documents.js +0 -205
  205. package/lib/cleaners/documents.mjs +0 -133
  206. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  207. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  208. package/lib/cleaners/index.js +0 -70
  209. package/lib/cleaners/index.mjs +0 -10
  210. package/lib/cleaners/organes.js +0 -65
  211. package/lib/cleaners/organes.mjs +0 -48
  212. package/lib/cleaners/questions.js +0 -12
  213. package/lib/cleaners/questions.mjs +0 -5
  214. package/lib/cleaners/reunions.js +0 -312
  215. package/lib/cleaners/reunions.mjs +0 -255
  216. package/lib/cleaners/scrutins.js +0 -340
  217. package/lib/cleaners/scrutins.mjs +0 -221
  218. package/lib/cleaners/xml.js +0 -74
  219. package/lib/cleaners/xml.mjs +0 -59
  220. package/lib/datasets.js +0 -837
  221. package/lib/datasets.mjs +0 -755
  222. package/lib/dates.js +0 -124
  223. package/lib/dates.mjs +0 -100
  224. package/lib/dossiers_legislatifs.js +0 -346
  225. package/lib/dossiers_legislatifs.mjs +0 -208
  226. package/lib/file_systems.js +0 -162
  227. package/lib/file_systems.mjs +0 -62
  228. package/lib/git.js +0 -223
  229. package/lib/git.mjs +0 -151
  230. package/lib/index.mjs +0 -17
  231. package/lib/inserters.js +0 -521
  232. package/lib/inserters.mjs +0 -337
  233. package/lib/loaders.mjs +0 -886
  234. package/lib/logger.js +0 -35
  235. package/lib/logger.mjs +0 -26
  236. package/lib/organes.js +0 -22
  237. package/lib/organes.mjs +0 -15
  238. package/lib/parsers/documents.d.ts +0 -62
  239. package/lib/parsers/documents.js +0 -453
  240. package/lib/parsers/documents.mjs +0 -370
  241. package/lib/parsers/index.js +0 -40
  242. package/lib/parsers/index.mjs +0 -4
  243. package/lib/parsers/recherche_amendements.js +0 -403
  244. package/lib/parsers/recherche_amendements.mjs +0 -167
  245. package/lib/parsers/textes_lois.js +0 -307
  246. package/lib/parsers/textes_lois.mjs +0 -264
  247. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  248. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  249. package/lib/raw_types/agendas.js +0 -777
  250. package/lib/raw_types/agendas.mjs +0 -724
  251. package/lib/raw_types/amendements.js +0 -1052
  252. package/lib/raw_types/amendements.mjs +0 -993
  253. package/lib/raw_types/debats.js +0 -630
  254. package/lib/raw_types/debats.mjs +0 -573
  255. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  256. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  257. package/lib/raw_types/questions.js +0 -469
  258. package/lib/raw_types/questions.mjs +0 -416
  259. package/lib/raw_types/scrutins.js +0 -651
  260. package/lib/raw_types/scrutins.mjs +0 -598
  261. package/lib/schemas/acteur/Acteur.json +0 -56
  262. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  263. package/lib/schemas/acteur/AdressePostale.json +0 -75
  264. package/lib/schemas/acteur/Civ.json +0 -14
  265. package/lib/schemas/acteur/Collaborateur.json +0 -29
  266. package/lib/schemas/acteur/EtatCivil.json +0 -51
  267. package/lib/schemas/acteur/Ident.json +0 -40
  268. package/lib/schemas/acteur/Lieu.json +0 -66
  269. package/lib/schemas/acteur/Mandat.json +0 -192
  270. package/lib/schemas/acteur/Profession.json +0 -46
  271. package/lib/schemas/agenda/Agenda.json +0 -318
  272. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  273. package/lib/schemas/agenda/PointOdj.json +0 -82
  274. package/lib/schemas/amendement/Amendement.json +0 -246
  275. package/lib/schemas/amendement/Diff.json +0 -25
  276. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  277. package/lib/schemas/amendement/Identifiant.json +0 -62
  278. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  279. package/lib/schemas/amendement/Representation.json +0 -67
  280. package/lib/schemas/amendement/Total.json +0 -26
  281. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  282. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  283. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  284. package/lib/schemas/converted_from_type/debats.json +0 -682
  285. package/lib/schemas/converted_from_type/deputes.json +0 -26
  286. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  287. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  288. package/lib/schemas/converted_from_type/questions.json +0 -328
  289. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  290. package/lib/schemas/debat/Contenu.json +0 -75
  291. package/lib/schemas/debat/Debat.json +0 -40
  292. package/lib/schemas/debat/Metadonnees.json +0 -75
  293. package/lib/schemas/debat/Orateur.json +0 -60
  294. package/lib/schemas/debat/Point.json +0 -169
  295. package/lib/schemas/debat/Sommaire.json +0 -71
  296. package/lib/schemas/debat/SommaireElement.json +0 -108
  297. package/lib/schemas/debat/Texte.json +0 -34
  298. package/lib/schemas/document/CodeLibelle.json +0 -25
  299. package/lib/schemas/document/Document.json +0 -385
  300. package/lib/schemas/document/Indexation.json +0 -38
  301. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  302. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  303. package/lib/schemas/dossier/Agenda.json +0 -23
  304. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  305. package/lib/schemas/dossier/Decision.json +0 -25
  306. package/lib/schemas/dossier/Dossier.json +0 -124
  307. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  308. package/lib/schemas/dossier/EtudePlf.json +0 -105
  309. package/lib/schemas/dossier/Europe.json +0 -42
  310. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  311. package/lib/schemas/dossier/InfoJO.json +0 -23
  312. package/lib/schemas/dossier/Initiateur.json +0 -36
  313. package/lib/schemas/dossier/Motion.json +0 -27
  314. package/lib/schemas/dossier/Promulgation.json +0 -62
  315. package/lib/schemas/dossier/Rapporteur.json +0 -36
  316. package/lib/schemas/dossier/Texte.json +0 -47
  317. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  318. package/lib/schemas/organe/Organe.json +0 -136
  319. package/lib/schemas/organe/ViMoDe.json +0 -28
  320. package/lib/schemas/question/Auteur.json +0 -58
  321. package/lib/schemas/question/Cloture.json +0 -28
  322. package/lib/schemas/question/InfoJO.json +0 -40
  323. package/lib/schemas/question/MinAttribElement.json +0 -30
  324. package/lib/schemas/question/Question.json +0 -172
  325. package/lib/schemas/question/Renouvellement.json +0 -17
  326. package/lib/schemas/question/Signalement.json +0 -21
  327. package/lib/schemas/question/Texte.json +0 -24
  328. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  329. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  330. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  331. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  332. package/lib/schemas/scrutin/Scrutin.json +0 -187
  333. package/lib/schemas/scrutin/Votant.json +0 -37
  334. package/lib/scripts/bugs_helper.d.ts +0 -13
  335. package/lib/scripts/bugs_helper.js +0 -595
  336. package/lib/scripts/bugs_helper.mjs +0 -251
  337. package/lib/scripts/clean_reorganized_data.js +0 -613
  338. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  339. package/lib/scripts/diff_amendements.js +0 -249
  340. package/lib/scripts/diff_amendements.mjs +0 -202
  341. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  342. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  343. package/lib/scripts/get_today_reunions.js +0 -37
  344. package/lib/scripts/get_today_reunions.mjs +0 -31
  345. package/lib/scripts/merge_scrutins.js +0 -97
  346. package/lib/scripts/merge_scrutins.mjs +0 -47
  347. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  348. package/lib/scripts/parse_textes_lois.js +0 -171
  349. package/lib/scripts/parse_textes_lois.mjs +0 -140
  350. package/lib/scripts/process_open_dataset.js +0 -301
  351. package/lib/scripts/process_open_dataset.mjs +0 -134
  352. package/lib/scripts/raw_types_from_amendements.js +0 -135
  353. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  354. package/lib/scripts/reorganize_data.js +0 -805
  355. package/lib/scripts/reorganize_data.mjs +0 -517
  356. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  357. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  358. package/lib/scripts/retrieve_documents.js +0 -547
  359. package/lib/scripts/retrieve_documents.mjs +0 -242
  360. package/lib/scripts/retrieve_open_data.js +0 -107
  361. package/lib/scripts/retrieve_open_data.mjs +0 -26
  362. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  363. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  364. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  365. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  366. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  367. package/lib/scripts/retrieve_textes_lois.js +0 -240
  368. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  369. package/lib/scripts/shared/cli_helpers.js +0 -89
  370. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  371. package/lib/scripts/test_iter_load.js +0 -155
  372. package/lib/scripts/test_iter_load.mjs +0 -72
  373. package/lib/scripts/test_load.js +0 -26
  374. package/lib/scripts/test_load.mjs +0 -16
  375. package/lib/scripts/test_load_big_files.js +0 -26
  376. package/lib/scripts/test_load_big_files.mjs +0 -16
  377. package/lib/scripts/validate_json.js +0 -353
  378. package/lib/scripts/validate_json.mjs +0 -184
  379. package/lib/shared_types/codes_actes.js +0 -231
  380. package/lib/shared_types/codes_actes.mjs +0 -224
  381. package/lib/strings.js +0 -16
  382. package/lib/strings.mjs +0 -7
  383. package/lib/types/acteurs_et_organes.js +0 -965
  384. package/lib/types/acteurs_et_organes.mjs +0 -906
  385. package/lib/types/agendas.js +0 -628
  386. package/lib/types/agendas.mjs +0 -575
  387. package/lib/types/amendements.js +0 -899
  388. package/lib/types/amendements.mjs +0 -842
  389. package/lib/types/debats.js +0 -619
  390. package/lib/types/debats.mjs +0 -562
  391. package/lib/types/dossiers_legislatifs.js +0 -1188
  392. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  393. package/lib/types/legislatures.js +0 -17
  394. package/lib/types/legislatures.mjs +0 -10
  395. package/lib/types/questions.js +0 -454
  396. package/lib/types/questions.mjs +0 -401
  397. package/lib/types/scrutins.js +0 -556
  398. package/lib/types/scrutins.mjs +0 -503
  399. package/lib/urls.js +0 -325
  400. package/lib/urls.mjs +0 -258
@@ -1,598 +0,0 @@
1
- // To parse this data:
2
- //
3
- // import { Convert, Scrutins, ScrutinWrapper } from "./file";
4
- //
5
- // const scrutins = Convert.toScrutins(json);
6
- // const scrutinWrapper = Convert.toScrutinWrapper(json);
7
- //
8
- // These functions will throw an error if the JSON doesn't
9
- // match the expected interface, even if the JSON is valid.
10
-
11
- export let ModePublicationDesVotes = /*#__PURE__*/function (ModePublicationDesVotes) {
12
- ModePublicationDesVotes["DecompteDissidentsPositionGroupe"] = "DecompteDissidentsPositionGroupe";
13
- ModePublicationDesVotes["DecompteNominatif"] = "DecompteNominatif";
14
- return ModePublicationDesVotes;
15
- }({});
16
- export let Code = /*#__PURE__*/function (Code) {
17
- Code["Adopt\xE9"] = "adopt\xE9";
18
- Code["Rejet\xE9"] = "rejet\xE9";
19
- return Code;
20
- }({});
21
- export let Libelle = /*#__PURE__*/function (Libelle) {
22
- Libelle["LAssembl\xE9eNationaleAAdopt\xE9"] = "l'Assembl\xE9e nationale a adopt\xE9";
23
- Libelle["LAssembl\xE9eNationaleNAPasAdopt\xE9"] = "L'Assembl\xE9e nationale n'a pas adopt\xE9";
24
- Libelle["LeCongr\xE8sDuParlementAAdopt\xE9"] = "Le Congr\xE8s du Parlement a adopt\xE9";
25
- Libelle["LeCongr\xE8sDuParlementNAPasAdopt\xE9"] = "Le Congr\xE8s du Parlement n'a pas adopt\xE9";
26
- return Libelle;
27
- }({});
28
- export let CodeTypeVote = /*#__PURE__*/function (CodeTypeVote) {
29
- CodeTypeVote["Moc"] = "MOC";
30
- CodeTypeVote["Sat"] = "SAT";
31
- CodeTypeVote["Spo"] = "SPO";
32
- CodeTypeVote["Sps"] = "SPS";
33
- CodeTypeVote["Ssg"] = "SSG";
34
- return CodeTypeVote;
35
- }({});
36
- export let LibelleTypeVote = /*#__PURE__*/function (LibelleTypeVote) {
37
- LibelleTypeVote["MotionDeCensure"] = "motion de censure";
38
- LibelleTypeVote["ScrutinPublicOrdinaire"] = "scrutin public ordinaire";
39
- LibelleTypeVote["ScrutinPublicSolennel"] = "scrutin public solennel";
40
- LibelleTypeVote["Scrutin\xC0LaTribune"] = "scrutin \xE0 la tribune";
41
- LibelleTypeVote["ScrutinSolennelCongr\xE8s"] = "Scrutin solennel congr\xE8s";
42
- return LibelleTypeVote;
43
- }({});
44
- export let TypeMajorite = /*#__PURE__*/function (TypeMajorite) {
45
- TypeMajorite["Majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "Majorit\xE9 absolue des suffrages exprim\xE9s";
46
- TypeMajorite["majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "majorit\xE9 absolue des suffrages exprim\xE9s";
47
- TypeMajorite["majorit\xE9DesMembresComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composant l'Assembl\xE9e nationale";
48
- TypeMajorite["majorit\xE9DesMembresComposantsComposantLAssembl\xE9e"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e";
49
- TypeMajorite["majorit\xE9DesMembresComposantsComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e nationale";
50
- TypeMajorite["Majorit\xE9RequisePourUnCongr\xE8s"] = "Majorit\xE9 requise pour un Congr\xE8s";
51
- TypeMajorite["Majorit\xE9RequisePourUneMotionDeCensure"] = "Majorit\xE9 requise pour une motion de censure";
52
- return TypeMajorite;
53
- }({});
54
- export let CausePositionVote = /*#__PURE__*/function (CausePositionVote) {
55
- CausePositionVote["Mg"] = "MG";
56
- CausePositionVote["Pan"] = "PAN";
57
- CausePositionVote["Pse"] = "PSE";
58
- return CausePositionVote;
59
- }({});
60
- export let PositionMajoritaire = /*#__PURE__*/function (PositionMajoritaire) {
61
- PositionMajoritaire["Abstention"] = "abstention";
62
- PositionMajoritaire["Contre"] = "contre";
63
- PositionMajoritaire["Pour"] = "pour";
64
- return PositionMajoritaire;
65
- }({});
66
- export let LieuVote = /*#__PURE__*/function (LieuVote) {
67
- LieuVote["Congr\xE8s"] = "Congr\xE8s";
68
- LieuVote["H\xE9micycle"] = "H\xE9micycle";
69
- LieuVote["Salons"] = "Salons";
70
- return LieuVote;
71
- }({});
72
-
73
- // Converts JSON strings to/from your types
74
- // and asserts the results of JSON.parse at runtime
75
- export class Convert {
76
- static toScrutins(json) {
77
- return cast(JSON.parse(json), r("Scrutins"));
78
- }
79
- static scrutinsToJson(value) {
80
- return JSON.stringify(uncast(value, r("Scrutins")), null, 2);
81
- }
82
- static toScrutinWrapper(json) {
83
- return cast(JSON.parse(json), r("ScrutinWrapper"));
84
- }
85
- static scrutinWrapperToJson(value) {
86
- return JSON.stringify(uncast(value, r("ScrutinWrapper")), null, 2);
87
- }
88
- }
89
- function invalidValue(typ, val, key = '') {
90
- if (key) {
91
- throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);
92
- }
93
- throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);
94
- }
95
- function jsonToJSProps(typ) {
96
- if (typ.jsonToJS === undefined) {
97
- const map = {};
98
- typ.props.forEach(p => map[p.json] = {
99
- key: p.js,
100
- typ: p.typ
101
- });
102
- typ.jsonToJS = map;
103
- }
104
- return typ.jsonToJS;
105
- }
106
- function jsToJSONProps(typ) {
107
- if (typ.jsToJSON === undefined) {
108
- const map = {};
109
- typ.props.forEach(p => map[p.js] = {
110
- key: p.json,
111
- typ: p.typ
112
- });
113
- typ.jsToJSON = map;
114
- }
115
- return typ.jsToJSON;
116
- }
117
- function transform(val, typ, getProps, key = '') {
118
- function transformPrimitive(typ, val) {
119
- if (typeof typ === typeof val) return val;
120
- return invalidValue(typ, val, key);
121
- }
122
- function transformUnion(typs, val) {
123
- // val must validate against one typ in typs
124
- const l = typs.length;
125
- for (let i = 0; i < l; i++) {
126
- const typ = typs[i];
127
- try {
128
- return transform(val, typ, getProps);
129
- } catch (_) {}
130
- }
131
- return invalidValue(typs, val);
132
- }
133
- function transformEnum(cases, val) {
134
- if (cases.indexOf(val) !== -1) return val;
135
- return invalidValue(cases, val);
136
- }
137
- function transformArray(typ, val) {
138
- // val must be an array with no invalid elements
139
- if (!Array.isArray(val)) return invalidValue("array", val);
140
- return val.map(el => transform(el, typ, getProps));
141
- }
142
- function transformDate(val) {
143
- if (val === null) {
144
- return null;
145
- }
146
- const d = new Date(val);
147
- if (isNaN(d.valueOf())) {
148
- return invalidValue("Date", val);
149
- }
150
- return d;
151
- }
152
- function transformObject(props, additional, val) {
153
- if (val === null || typeof val !== "object" || Array.isArray(val)) {
154
- return invalidValue("object", val);
155
- }
156
- const result = {};
157
- Object.getOwnPropertyNames(props).forEach(key => {
158
- const prop = props[key];
159
- const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
160
- result[prop.key] = transform(v, prop.typ, getProps, prop.key);
161
- });
162
- Object.getOwnPropertyNames(val).forEach(key => {
163
- if (!Object.prototype.hasOwnProperty.call(props, key)) {
164
- result[key] = transform(val[key], additional, getProps, key);
165
- }
166
- });
167
- return result;
168
- }
169
- if (typ === "any") return val;
170
- if (typ === null) {
171
- if (val === null) return val;
172
- return invalidValue(typ, val);
173
- }
174
- if (typ === false) return invalidValue(typ, val);
175
- while (typeof typ === "object" && typ.ref !== undefined) {
176
- typ = typeMap[typ.ref];
177
- }
178
- if (Array.isArray(typ)) return transformEnum(typ, val);
179
- if (typeof typ === "object") {
180
- return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val);
181
- }
182
- // Numbers can be parsed by Date but shouldn't be.
183
- if (typ === Date && typeof val !== "number") return transformDate(val);
184
- return transformPrimitive(typ, val);
185
- }
186
- function cast(val, typ) {
187
- return transform(val, typ, jsonToJSProps);
188
- }
189
- function uncast(val, typ) {
190
- return transform(val, typ, jsToJSONProps);
191
- }
192
- function a(typ) {
193
- return {
194
- arrayItems: typ
195
- };
196
- }
197
- function u(...typs) {
198
- return {
199
- unionMembers: typs
200
- };
201
- }
202
- function o(props, additional) {
203
- return {
204
- props,
205
- additional
206
- };
207
- }
208
-
209
- // function m(additional: any) {
210
- // return { props: [], additional };
211
- // }
212
-
213
- function r(name) {
214
- return {
215
- ref: name
216
- };
217
- }
218
- const typeMap = {
219
- "Scrutins": o([{
220
- json: "scrutins",
221
- js: "scrutins",
222
- typ: r("ScrutinsClass")
223
- }], false),
224
- "ScrutinsClass": o([{
225
- json: "scrutin",
226
- js: "scrutin",
227
- typ: a(r("Scrutin"))
228
- }], false),
229
- "ScrutinWrapper": o([{
230
- json: "scrutin",
231
- js: "scrutin",
232
- typ: r("Scrutin")
233
- }], false),
234
- "Scrutin": o([{
235
- json: "@xmlns:xsi",
236
- js: "@xmlns:xsi",
237
- typ: ""
238
- }, {
239
- json: "uid",
240
- js: "uid",
241
- typ: ""
242
- }, {
243
- json: "numero",
244
- js: "numero",
245
- typ: ""
246
- }, {
247
- json: "organeRef",
248
- js: "organeRef",
249
- typ: ""
250
- }, {
251
- json: "legislature",
252
- js: "legislature",
253
- typ: ""
254
- }, {
255
- json: "sessionRef",
256
- js: "sessionRef",
257
- typ: ""
258
- }, {
259
- json: "seanceRef",
260
- js: "seanceRef",
261
- typ: ""
262
- }, {
263
- json: "dateScrutin",
264
- js: "dateScrutin",
265
- typ: Date
266
- }, {
267
- json: "quantiemeJourSeance",
268
- js: "quantiemeJourSeance",
269
- typ: ""
270
- }, {
271
- json: "typeVote",
272
- js: "typeVote",
273
- typ: r("TypeVote")
274
- }, {
275
- json: "sort",
276
- js: "sort",
277
- typ: r("Sort")
278
- }, {
279
- json: "titre",
280
- js: "titre",
281
- typ: ""
282
- }, {
283
- json: "demandeur",
284
- js: "demandeur",
285
- typ: r("Demandeur")
286
- }, {
287
- json: "objet",
288
- js: "objet",
289
- typ: r("Objet")
290
- }, {
291
- json: "modePublicationDesVotes",
292
- js: "modePublicationDesVotes",
293
- typ: r("ModePublicationDesVotes")
294
- }, {
295
- json: "syntheseVote",
296
- js: "syntheseVote",
297
- typ: r("SyntheseVote")
298
- }, {
299
- json: "ventilationVotes",
300
- js: "ventilationVotes",
301
- typ: r("VentilationVotes")
302
- }, {
303
- json: "miseAuPoint",
304
- js: "miseAuPoint",
305
- typ: u(r("MiseAuPoint"), null)
306
- }, {
307
- json: "lieuVote",
308
- js: "lieuVote",
309
- typ: u(undefined, r("LieuVote"))
310
- }, {
311
- json: "@xmlns",
312
- js: "@xmlns",
313
- typ: u(undefined, "")
314
- }], false),
315
- "Demandeur": o([{
316
- json: "texte",
317
- js: "texte",
318
- typ: u(null, "")
319
- }, {
320
- json: "referenceLegislative",
321
- js: "referenceLegislative",
322
- typ: null
323
- }], false),
324
- "MiseAuPoint": o([{
325
- json: "nonVotants",
326
- js: "nonVotants",
327
- typ: u(a(u(r("VotantsClass"), null)), null)
328
- }, {
329
- json: "pour",
330
- js: "pour",
331
- typ: u(undefined, u(r("VotantsClass"), null))
332
- }, {
333
- json: "contre",
334
- js: "contre",
335
- typ: u(undefined, u(r("VotantsClass"), null))
336
- }, {
337
- json: "abstentions",
338
- js: "abstentions",
339
- typ: u(a(u(r("VotantsClass"), null)), r("VotantsClass"), null)
340
- }, {
341
- json: "nonVotantsVolontaires",
342
- js: "nonVotantsVolontaires",
343
- typ: u(a(u(r("VotantsClass"), null)), r("VotantsClass"), null)
344
- }, {
345
- json: "pours",
346
- js: "pours",
347
- typ: u(undefined, u(r("VotantsClass"), null))
348
- }, {
349
- json: "contres",
350
- js: "contres",
351
- typ: u(undefined, u(r("VotantsClass"), null))
352
- }, {
353
- json: "dysfonctionnement",
354
- js: "dysfonctionnement",
355
- typ: u(undefined, r("Dysfonctionnement"))
356
- }], false),
357
- "Dysfonctionnement": o([{
358
- json: "nonVotants",
359
- js: "nonVotants",
360
- typ: u(r("VotantsClass"), null)
361
- }, {
362
- json: "pour",
363
- js: "pour",
364
- typ: u(r("VotantsClass"), null)
365
- }, {
366
- json: "contre",
367
- js: "contre",
368
- typ: u(r("VotantsClass"), null)
369
- }, {
370
- json: "abstentions",
371
- js: "abstentions",
372
- typ: u(r("VotantsClass"), null)
373
- }, {
374
- json: "nonVotantsVolontaires",
375
- js: "nonVotantsVolontaires",
376
- typ: u(r("VotantsClass"), null)
377
- }], false),
378
- "Objet": o([{
379
- json: "libelle",
380
- js: "libelle",
381
- typ: ""
382
- }, {
383
- json: "referenceLegislative",
384
- js: "referenceLegislative",
385
- typ: null
386
- }, {
387
- json: "dossierLegislatif",
388
- js: "dossierLegislatif",
389
- typ: u(undefined, null)
390
- }], false),
391
- "Sort": o([{
392
- json: "code",
393
- js: "code",
394
- typ: r("Code")
395
- }, {
396
- json: "libelle",
397
- js: "libelle",
398
- typ: r("Libelle")
399
- }], false),
400
- "SyntheseVote": o([{
401
- json: "nombreVotants",
402
- js: "nombreVotants",
403
- typ: ""
404
- }, {
405
- json: "suffragesExprimes",
406
- js: "suffragesExprimes",
407
- typ: ""
408
- }, {
409
- json: "nbrSuffragesRequis",
410
- js: "nbrSuffragesRequis",
411
- typ: ""
412
- }, {
413
- json: "annonce",
414
- js: "annonce",
415
- typ: r("Libelle")
416
- }, {
417
- json: "decompte",
418
- js: "decompte",
419
- typ: r("Decompte")
420
- }], false),
421
- "Decompte": o([{
422
- json: "pour",
423
- js: "pour",
424
- typ: ""
425
- }, {
426
- json: "contre",
427
- js: "contre",
428
- typ: ""
429
- }, {
430
- json: "abstentions",
431
- js: "abstentions",
432
- typ: ""
433
- }, {
434
- json: "nonVotants",
435
- js: "nonVotants",
436
- typ: ""
437
- }, {
438
- json: "nonVotantsVolontaires",
439
- js: "nonVotantsVolontaires",
440
- typ: u(undefined, "")
441
- }], false),
442
- "TypeVote": o([{
443
- json: "codeTypeVote",
444
- js: "codeTypeVote",
445
- typ: r("CodeTypeVote")
446
- }, {
447
- json: "libelleTypeVote",
448
- js: "libelleTypeVote",
449
- typ: r("LibelleTypeVote")
450
- }, {
451
- json: "typeMajorite",
452
- js: "typeMajorite",
453
- typ: r("TypeMajorite")
454
- }], false),
455
- "VentilationVotes": o([{
456
- json: "organe",
457
- js: "organe",
458
- typ: r("Organe")
459
- }], false),
460
- "Organe": o([{
461
- json: "organeRef",
462
- js: "organeRef",
463
- typ: ""
464
- }, {
465
- json: "groupes",
466
- js: "groupes",
467
- typ: r("Groupes")
468
- }], false),
469
- "Groupes": o([{
470
- json: "groupe",
471
- js: "groupe",
472
- typ: a(r("Groupe"))
473
- }], false),
474
- "Groupe": o([{
475
- json: "organeRef",
476
- js: "organeRef",
477
- typ: ""
478
- }, {
479
- json: "nombreMembresGroupe",
480
- js: "nombreMembresGroupe",
481
- typ: ""
482
- }, {
483
- json: "vote",
484
- js: "vote",
485
- typ: r("Vote")
486
- }], false),
487
- "Vote": o([{
488
- json: "positionMajoritaire",
489
- js: "positionMajoritaire",
490
- typ: r("PositionMajoritaire")
491
- }, {
492
- json: "decompteVoix",
493
- js: "decompteVoix",
494
- typ: r("DecompteVoix")
495
- }, {
496
- json: "decompteNominatif",
497
- js: "decompteNominatif",
498
- typ: r("DecompteNominatif")
499
- }], false),
500
- "DecompteNominatif": o([{
501
- json: "nonVotant",
502
- js: "nonVotant",
503
- typ: u(undefined, null)
504
- }, {
505
- json: "nonVotants",
506
- js: "nonVotants",
507
- typ: u(undefined, u(r("VotantsClass"), null, ""))
508
- }, {
509
- json: "pour",
510
- js: "pour",
511
- typ: u(undefined, u(r("VotantsClass"), null))
512
- }, {
513
- json: "contre",
514
- js: "contre",
515
- typ: u(undefined, u(r("VotantsClass"), null))
516
- }, {
517
- json: "abstention",
518
- js: "abstention",
519
- typ: u(undefined, u(r("VotantsClass"), null))
520
- }, {
521
- json: "abstentions",
522
- js: "abstentions",
523
- typ: u(undefined, u(r("VotantsClass"), null))
524
- }, {
525
- json: "pours",
526
- js: "pours",
527
- typ: u(undefined, u(r("VotantsClass"), null))
528
- }, {
529
- json: "contres",
530
- js: "contres",
531
- typ: u(undefined, u(r("VotantsClass"), null))
532
- }], false),
533
- "VotantsClass": o([{
534
- json: "votant",
535
- js: "votant",
536
- typ: u(a(r("Votant")), r("Votant"))
537
- }], false),
538
- "Votant": o([{
539
- json: "acteurRef",
540
- js: "acteurRef",
541
- typ: ""
542
- }, {
543
- json: "mandatRef",
544
- js: "mandatRef",
545
- typ: ""
546
- }, {
547
- json: "parDelegation",
548
- js: "parDelegation",
549
- typ: u(undefined, "")
550
- }, {
551
- json: "numPlace",
552
- js: "numPlace",
553
- typ: u(undefined, u("", null))
554
- }, {
555
- json: "causePositionVote",
556
- js: "causePositionVote",
557
- typ: u(undefined, r("CausePositionVote"))
558
- }], false),
559
- "DecompteVoix": o([{
560
- json: "pour",
561
- js: "pour",
562
- typ: ""
563
- }, {
564
- json: "contre",
565
- js: "contre",
566
- typ: ""
567
- }, {
568
- json: "abstention",
569
- js: "abstention",
570
- typ: u(undefined, "")
571
- }, {
572
- json: "nonVotant",
573
- js: "nonVotant",
574
- typ: u(undefined, u("", null))
575
- }, {
576
- json: "nonVotants",
577
- js: "nonVotants",
578
- typ: u(undefined, "")
579
- }, {
580
- json: "abstentions",
581
- js: "abstentions",
582
- typ: u(undefined, "")
583
- }, {
584
- json: "nonVotantsVolontaires",
585
- js: "nonVotantsVolontaires",
586
- typ: u(undefined, "")
587
- }], false),
588
- "ModePublicationDesVotes": ["DecompteDissidentsPositionGroupe", "DecompteNominatif"],
589
- "Code": ["adopté", "rejeté"],
590
- "Libelle": ["l'Assemblée nationale a adopté", "L'Assemblée nationale n'a pas adopté", "Le Congrès du Parlement a adopté", "Le Congrès du Parlement n'a pas adopté"],
591
- "CodeTypeVote": ["MOC", "SAT", "SPO", "SPS", "SSG"],
592
- "LibelleTypeVote": ["motion de censure", "scrutin public ordinaire", "scrutin public solennel", "scrutin à la tribune", "Scrutin solennel congrès"],
593
- "TypeMajorite": ["Majorité absolue des suffrages exprimés", "majorité absolue des suffrages exprimés", "majorité des membres composant l'Assemblée nationale", "majorité des membres composants composant l'Assemblée", "majorité des membres composants composant l'Assemblée nationale", "Majorité requise pour un Congrès", "Majorité requise pour une motion de censure"],
594
- "CausePositionVote": ["MG", "PAN", "PSE"],
595
- "PositionMajoritaire": ["abstention", "contre", "pour"],
596
- "LieuVote": ["Congrès", "Hémicycle", "Salons"]
597
- };
598
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlUHVibGljYXRpb25EZXNWb3RlcyIsIkNvZGUiLCJMaWJlbGxlIiwiQ29kZVR5cGVWb3RlIiwiTGliZWxsZVR5cGVWb3RlIiwiVHlwZU1ham9yaXRlIiwiQ2F1c2VQb3NpdGlvblZvdGUiLCJQb3NpdGlvbk1ham9yaXRhaXJlIiwiTGlldVZvdGUiLCJDb252ZXJ0IiwidG9TY3J1dGlucyIsImpzb24iLCJjYXN0IiwiSlNPTiIsInBhcnNlIiwiciIsInNjcnV0aW5zVG9Kc29uIiwidmFsdWUiLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJ0b1NjcnV0aW5XcmFwcGVyIiwic2NydXRpbldyYXBwZXJUb0pzb24iLCJpbnZhbGlkVmFsdWUiLCJ0eXAiLCJ2YWwiLCJrZXkiLCJFcnJvciIsImpzb25Ub0pTUHJvcHMiLCJqc29uVG9KUyIsInVuZGVmaW5lZCIsIm1hcCIsInByb3BzIiwiZm9yRWFjaCIsInAiLCJqcyIsImpzVG9KU09OUHJvcHMiLCJqc1RvSlNPTiIsInRyYW5zZm9ybSIsImdldFByb3BzIiwidHJhbnNmb3JtUHJpbWl0aXZlIiwidHJhbnNmb3JtVW5pb24iLCJ0eXBzIiwibCIsImxlbmd0aCIsImkiLCJfIiwidHJhbnNmb3JtRW51bSIsImNhc2VzIiwiaW5kZXhPZiIsInRyYW5zZm9ybUFycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiZWwiLCJ0cmFuc2Zvcm1EYXRlIiwiZCIsIkRhdGUiLCJpc05hTiIsInZhbHVlT2YiLCJ0cmFuc2Zvcm1PYmplY3QiLCJhZGRpdGlvbmFsIiwicmVzdWx0IiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3AiLCJ2IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVmIiwidHlwZU1hcCIsInVuaW9uTWVtYmVycyIsImFycmF5SXRlbXMiLCJhIiwidSIsIm8iLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhd190eXBlcy9zY3J1dGlucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBwYXJzZSB0aGlzIGRhdGE6XG4vL1xuLy8gICBpbXBvcnQgeyBDb252ZXJ0LCBTY3J1dGlucywgU2NydXRpbldyYXBwZXIgfSBmcm9tIFwiLi9maWxlXCI7XG4vL1xuLy8gICBjb25zdCBzY3J1dGlucyA9IENvbnZlcnQudG9TY3J1dGlucyhqc29uKTtcbi8vICAgY29uc3Qgc2NydXRpbldyYXBwZXIgPSBDb252ZXJ0LnRvU2NydXRpbldyYXBwZXIoanNvbik7XG4vL1xuLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIEpTT04gZG9lc24ndFxuLy8gbWF0Y2ggdGhlIGV4cGVjdGVkIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgSlNPTiBpcyB2YWxpZC5cblxuZXhwb3J0IGludGVyZmFjZSBTY3J1dGlucyB7XG4gICAgc2NydXRpbnM6IFNjcnV0aW5zQ2xhc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NydXRpbnNDbGFzcyB7XG4gICAgc2NydXRpbjogU2NydXRpbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcnV0aW5XcmFwcGVyIHtcbiAgc2NydXRpbjogU2NydXRpblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcnV0aW4ge1xuICAgIFwiQHhtbG5zOnhzaVwiOiAgICAgICAgICAgIHN0cmluZztcbiAgICB1aWQ6ICAgICAgICAgICAgICAgICAgICAgc3RyaW5nO1xuICAgIG51bWVybzogICAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgb3JnYW5lUmVmOiAgICAgICAgICAgICAgIHN0cmluZztcbiAgICBsZWdpc2xhdHVyZTogICAgICAgICAgICAgc3RyaW5nO1xuICAgIHNlc3Npb25SZWY6ICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgc2VhbmNlUmVmOiAgICAgICAgICAgICAgIHN0cmluZztcbiAgICBkYXRlU2NydXRpbjogICAgICAgICAgICAgRGF0ZTtcbiAgICBxdWFudGllbWVKb3VyU2VhbmNlOiAgICAgc3RyaW5nO1xuICAgIHR5cGVWb3RlOiAgICAgICAgICAgICAgICBUeXBlVm90ZTtcbiAgICBzb3J0OiAgICAgICAgICAgICAgICAgICAgU29ydDtcbiAgICB0aXRyZTogICAgICAgICAgICAgICAgICAgc3RyaW5nO1xuICAgIGRlbWFuZGV1cjogICAgICAgICAgICAgICBEZW1hbmRldXI7XG4gICAgb2JqZXQ6ICAgICAgICAgICAgICAgICAgIE9iamV0O1xuICAgIG1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzOiBNb2RlUHVibGljYXRpb25EZXNWb3RlcztcbiAgICBzeW50aGVzZVZvdGU6ICAgICAgICAgICAgU3ludGhlc2VWb3RlO1xuICAgIHZlbnRpbGF0aW9uVm90ZXM6ICAgICAgICBWZW50aWxhdGlvblZvdGVzO1xuICAgIG1pc2VBdVBvaW50OiAgICAgICAgICAgICBNaXNlQXVQb2ludCB8IG51bGw7XG4gICAgbGlldVZvdGU/OiAgICAgICAgICAgICAgIExpZXVWb3RlO1xuICAgIFwiQHhtbG5zXCI/OiAgICAgICAgICAgICAgIHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZW1hbmRldXIge1xuICAgIHRleHRlOiAgICAgICAgICAgICAgICBudWxsIHwgc3RyaW5nO1xuICAgIHJlZmVyZW5jZUxlZ2lzbGF0aXZlOiBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pc2VBdVBvaW50IHtcbiAgICBub25Wb3RhbnRzOiAgICAgICAgICAgIEFycmF5PFZvdGFudHNDbGFzcyB8IG51bGw+IHwgbnVsbDtcbiAgICBwb3VyPzogICAgICAgICAgICAgICAgIFZvdGFudHNDbGFzcyB8IG51bGw7XG4gICAgY29udHJlPzogICAgICAgICAgICAgICBWb3RhbnRzQ2xhc3MgfCBudWxsO1xuICAgIGFic3RlbnRpb25zOiAgICAgICAgICAgQXJyYXk8Vm90YW50c0NsYXNzIHwgbnVsbD4gfCBWb3RhbnRzQ2xhc3MgfCBudWxsO1xuICAgIG5vblZvdGFudHNWb2xvbnRhaXJlczogQXJyYXk8Vm90YW50c0NsYXNzIHwgbnVsbD4gfCBWb3RhbnRzQ2xhc3MgfCBudWxsO1xuICAgIHBvdXJzPzogICAgICAgICAgICAgICAgVm90YW50c0NsYXNzIHwgbnVsbDtcbiAgICBjb250cmVzPzogICAgICAgICAgICAgIFZvdGFudHNDbGFzcyB8IG51bGw7XG4gICAgZHlzZm9uY3Rpb25uZW1lbnQ/OiAgICBEeXNmb25jdGlvbm5lbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeXNmb25jdGlvbm5lbWVudCB7XG4gICAgbm9uVm90YW50czogICAgICAgICAgICBWb3RhbnRzQ2xhc3MgfCBudWxsO1xuICAgIHBvdXI6ICAgICAgICAgICAgICAgICAgVm90YW50c0NsYXNzIHwgbnVsbDtcbiAgICBjb250cmU6ICAgICAgICAgICAgICAgIFZvdGFudHNDbGFzcyB8IG51bGw7XG4gICAgYWJzdGVudGlvbnM6ICAgICAgICAgICBWb3RhbnRzQ2xhc3MgfCBudWxsO1xuICAgIG5vblZvdGFudHNWb2xvbnRhaXJlczogVm90YW50c0NsYXNzIHwgbnVsbDtcbn1cblxuZXhwb3J0IGVudW0gTW9kZVB1YmxpY2F0aW9uRGVzVm90ZXMge1xuICAgIERlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlID0gXCJEZWNvbXB0ZURpc3NpZGVudHNQb3NpdGlvbkdyb3VwZVwiLFxuICAgIERlY29tcHRlTm9taW5hdGlmID0gXCJEZWNvbXB0ZU5vbWluYXRpZlwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9iamV0IHtcbiAgICBsaWJlbGxlOiAgICAgICAgICAgICAgc3RyaW5nO1xuICAgIHJlZmVyZW5jZUxlZ2lzbGF0aXZlOiBudWxsO1xuICAgIGRvc3NpZXJMZWdpc2xhdGlmPzogbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnQge1xuICAgIGNvZGU6ICAgIENvZGU7XG4gICAgbGliZWxsZTogTGliZWxsZTtcbn1cblxuZXhwb3J0IGVudW0gQ29kZSB7XG4gICAgQWRvcHTDqSA9IFwiYWRvcHTDqVwiLFxuICAgIFJlamV0w6kgPSBcInJlamV0w6lcIixcbn1cblxuZXhwb3J0IGVudW0gTGliZWxsZSB7XG4gICAgTEFzc2VtYmzDqWVOYXRpb25hbGVBQWRvcHTDqSA9IFwibCdBc3NlbWJsw6llIG5hdGlvbmFsZSBhIGFkb3B0w6lcIixcbiAgICBMQXNzZW1ibMOpZU5hdGlvbmFsZU5BUGFzQWRvcHTDqSA9IFwiTCdBc3NlbWJsw6llIG5hdGlvbmFsZSBuJ2EgcGFzIGFkb3B0w6lcIixcbiAgICBMZUNvbmdyw6hzRHVQYXJsZW1lbnRBQWRvcHTDqSA9IFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IGEgYWRvcHTDqVwiLFxuICAgIExlQ29uZ3LDqHNEdVBhcmxlbWVudE5BUGFzQWRvcHTDqSA9IFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IG4nYSBwYXMgYWRvcHTDqVwiLFxuICB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2VWb3RlIHtcbiAgICBub21icmVWb3RhbnRzOiAgICAgIHN0cmluZztcbiAgICBzdWZmcmFnZXNFeHByaW1lczogIHN0cmluZztcbiAgICBuYnJTdWZmcmFnZXNSZXF1aXM6IHN0cmluZztcbiAgICBhbm5vbmNlOiAgICAgICAgICAgIExpYmVsbGU7XG4gICAgZGVjb21wdGU6ICAgICAgICAgICBEZWNvbXB0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWNvbXB0ZSB7XG4gICAgcG91cjogICAgICAgICAgICAgICAgICAgc3RyaW5nO1xuICAgIGNvbnRyZTogICAgICAgICAgICAgICAgIHN0cmluZztcbiAgICBhYnN0ZW50aW9uczogICAgICAgICAgICBzdHJpbmc7XG4gICAgbm9uVm90YW50czogICAgICAgICAgICAgc3RyaW5nO1xuICAgIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlVm90ZSB7XG4gICAgY29kZVR5cGVWb3RlOiAgICBDb2RlVHlwZVZvdGU7XG4gICAgbGliZWxsZVR5cGVWb3RlOiBMaWJlbGxlVHlwZVZvdGU7XG4gICAgdHlwZU1ham9yaXRlOiAgICBUeXBlTWFqb3JpdGU7XG59XG5cbmV4cG9ydCBlbnVtIENvZGVUeXBlVm90ZSB7XG4gICAgTW9jID0gXCJNT0NcIixcbiAgICBTYXQgPSBcIlNBVFwiLFxuICAgIFNwbyA9IFwiU1BPXCIsXG4gICAgU3BzID0gXCJTUFNcIixcbiAgICBTc2cgPSBcIlNTR1wiLFxufVxuXG5leHBvcnQgZW51bSBMaWJlbGxlVHlwZVZvdGUge1xuICAgIE1vdGlvbkRlQ2Vuc3VyZSA9IFwibW90aW9uIGRlIGNlbnN1cmVcIixcbiAgICBTY3J1dGluUHVibGljT3JkaW5haXJlID0gXCJzY3J1dGluIHB1YmxpYyBvcmRpbmFpcmVcIixcbiAgICBTY3J1dGluUHVibGljU29sZW5uZWwgPSBcInNjcnV0aW4gcHVibGljIHNvbGVubmVsXCIsXG4gICAgU2NydXRpbsOATGFUcmlidW5lID0gXCJzY3J1dGluIMOgIGxhIHRyaWJ1bmVcIixcbiAgICBTY3J1dGluU29sZW5uZWxDb25ncsOocyA9IFwiU2NydXRpbiBzb2xlbm5lbCBjb25ncsOoc1wiLFxufVxuXG5leHBvcnQgZW51bSBUeXBlTWFqb3JpdGUge1xuICAgIE1ham9yaXTDqUFic29sdWVEZXNTdWZmcmFnZXNFeHByaW3DqXMgPSBcIk1ham9yaXTDqSBhYnNvbHVlIGRlcyBzdWZmcmFnZXMgZXhwcmltw6lzXCIsXG4gICAgbWFqb3JpdMOpQWJzb2x1ZURlc1N1ZmZyYWdlc0V4cHJpbcOpcyA9IFwibWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgICBtYWpvcml0w6lEZXNNZW1icmVzQ29tcG9zYW50TEFzc2VtYmzDqWVOYXRpb25hbGUgPSBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnQgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiLFxuICAgIG1ham9yaXTDqURlc01lbWJyZXNDb21wb3NhbnRzQ29tcG9zYW50TEFzc2VtYmzDqWUgPSBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWVcIixcbiAgICBtYWpvcml0w6lEZXNNZW1icmVzQ29tcG9zYW50c0NvbXBvc2FudExBc3NlbWJsw6llTmF0aW9uYWxlID0gXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiLFxuICAgIE1ham9yaXTDqVJlcXVpc2VQb3VyVW5Db25ncsOocyA9IFwiTWFqb3JpdMOpIHJlcXVpc2UgcG91ciB1biBDb25ncsOoc1wiLFxuICAgIE1ham9yaXTDqVJlcXVpc2VQb3VyVW5lTW90aW9uRGVDZW5zdXJlID0gXCJNYWpvcml0w6kgcmVxdWlzZSBwb3VyIHVuZSBtb3Rpb24gZGUgY2Vuc3VyZVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlbnRpbGF0aW9uVm90ZXMge1xuICAgIG9yZ2FuZTogT3JnYW5lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuZSB7XG4gICAgb3JnYW5lUmVmOiBzdHJpbmc7XG4gICAgZ3JvdXBlczogICBHcm91cGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZXMge1xuICAgIGdyb3VwZTogR3JvdXBlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBlIHtcbiAgICBvcmdhbmVSZWY6ICAgICAgICAgICBzdHJpbmc7XG4gICAgbm9tYnJlTWVtYnJlc0dyb3VwZTogc3RyaW5nO1xuICAgIHZvdGU6ICAgICAgICAgICAgICAgIFZvdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZSB7XG4gICAgcG9zaXRpb25NYWpvcml0YWlyZTogUG9zaXRpb25NYWpvcml0YWlyZTtcbiAgICBkZWNvbXB0ZVZvaXg6ICAgICAgICBEZWNvbXB0ZVZvaXg7XG4gICAgZGVjb21wdGVOb21pbmF0aWY6ICAgRGVjb21wdGVOb21pbmF0aWY7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb21wdGVOb21pbmF0aWYge1xuICAgIG5vblZvdGFudD86ICAgbnVsbFxuICAgIG5vblZvdGFudHM/OiAgVm90YW50c0NsYXNzIHwgbnVsbCB8IHN0cmluZztcbiAgICBwb3VyPzogICAgICAgVm90YW50c0NsYXNzIHwgbnVsbDtcbiAgICBjb250cmU/OiAgICAgVm90YW50c0NsYXNzIHwgbnVsbDtcbiAgICBhYnN0ZW50aW9uPzogVm90YW50c0NsYXNzIHwgbnVsbDtcbiAgICBhYnN0ZW50aW9ucz86IFZvdGFudHNDbGFzcyB8IG51bGw7XG4gICAgcG91cnM/OiAgICAgIFZvdGFudHNDbGFzcyB8IG51bGw7XG4gICAgY29udHJlcz86ICAgIFZvdGFudHNDbGFzcyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm90YW50c0NsYXNzIHtcbiAgICB2b3RhbnQ6IFZvdGFudFtdIHwgVm90YW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZvdGFudCB7XG4gICAgYWN0ZXVyUmVmOiAgICAgIHN0cmluZztcbiAgICBtYW5kYXRSZWY6ICAgICAgc3RyaW5nO1xuICAgIHBhckRlbGVnYXRpb24/OiBzdHJpbmc7XG4gICAgbnVtUGxhY2U/OiAgICAgIHN0cmluZyB8IG51bGw7XG4gICAgY2F1c2VQb3NpdGlvblZvdGU/OiBDYXVzZVBvc2l0aW9uVm90ZTtcbn1cblxuZXhwb3J0IGVudW0gQ2F1c2VQb3NpdGlvblZvdGUge1xuICAgIE1nID0gXCJNR1wiLFxuICAgIFBhbiA9IFwiUEFOXCIsXG4gICAgUHNlID0gXCJQU0VcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWNvbXB0ZVZvaXgge1xuICAgIHBvdXI6ICAgICAgICAgICAgICAgICAgIHN0cmluZztcbiAgICBjb250cmU6ICAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgYWJzdGVudGlvbj86ICAgICAgICAgICAgc3RyaW5nO1xuICAgIG5vblZvdGFudD86ICAgICAgICAgICAgIHN0cmluZyB8IG51bGw7XG4gICAgbm9uVm90YW50cz86ICAgICAgICAgICAgc3RyaW5nO1xuICAgIGFic3RlbnRpb25zPzogICAgICAgICAgIHN0cmluZztcbiAgICBub25Wb3RhbnRzVm9sb250YWlyZXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFBvc2l0aW9uTWFqb3JpdGFpcmUge1xuICAgIEFic3RlbnRpb24gPSBcImFic3RlbnRpb25cIixcbiAgICBDb250cmUgPSBcImNvbnRyZVwiLFxuICAgIFBvdXIgPSBcInBvdXJcIixcbn1cblxuZXhwb3J0IGVudW0gTGlldVZvdGUge1xuICAgIENvbmdyw6hzID0gXCJDb25ncsOoc1wiLFxuICAgIEjDqW1pY3ljbGUgPSBcIkjDqW1pY3ljbGVcIixcbiAgICBTYWxvbnMgPSBcIlNhbG9uc1wiLFxufVxuXG4vLyBDb252ZXJ0cyBKU09OIHN0cmluZ3MgdG8vZnJvbSB5b3VyIHR5cGVzXG4vLyBhbmQgYXNzZXJ0cyB0aGUgcmVzdWx0cyBvZiBKU09OLnBhcnNlIGF0IHJ1bnRpbWVcbmV4cG9ydCBjbGFzcyBDb252ZXJ0IHtcbiAgICBwdWJsaWMgc3RhdGljIHRvU2NydXRpbnMoanNvbjogc3RyaW5nKTogU2NydXRpbnMge1xuICAgICAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiU2NydXRpbnNcIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2NydXRpbnNUb0pzb24odmFsdWU6IFNjcnV0aW5zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlNjcnV0aW5zXCIpKSwgbnVsbCwgMik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0b1NjcnV0aW5XcmFwcGVyKGpzb246IHN0cmluZyk6IFNjcnV0aW5XcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcihcIlNjcnV0aW5XcmFwcGVyXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNjcnV0aW5XcmFwcGVyVG9Kc29uKHZhbHVlOiBTY3J1dGluV3JhcHBlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoXCJTY3J1dGluV3JhcHBlclwiKSksIG51bGwsIDIpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaW52YWxpZFZhbHVlKHR5cDogYW55LCB2YWw6IGFueSwga2V5OiBhbnkgPSAnJyk6IG5ldmVyIHtcbiAgICBpZiAoa2V5KSB7XG4gICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIHZhbHVlIGZvciBrZXkgXCIke2tleX1cIi4gRXhwZWN0ZWQgdHlwZSAke0pTT04uc3RyaW5naWZ5KHR5cCl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfWApO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcihgSW52YWxpZCB2YWx1ZSAke0pTT04uc3RyaW5naWZ5KHZhbCl9IGZvciB0eXBlICR7SlNPTi5zdHJpbmdpZnkodHlwKX1gLCApO1xufVxuXG5mdW5jdGlvbiBqc29uVG9KU1Byb3BzKHR5cDogYW55KTogYW55IHtcbiAgICBpZiAodHlwLmpzb25Ub0pTID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbWFwOiBhbnkgPSB7fTtcbiAgICAgICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gbWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KTtcbiAgICAgICAgdHlwLmpzb25Ub0pTID0gbWFwO1xuICAgIH1cbiAgICByZXR1cm4gdHlwLmpzb25Ub0pTO1xufVxuXG5mdW5jdGlvbiBqc1RvSlNPTlByb3BzKHR5cDogYW55KTogYW55IHtcbiAgICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbWFwOiBhbnkgPSB7fTtcbiAgICAgICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gbWFwW3AuanNdID0geyBrZXk6IHAuanNvbiwgdHlwOiBwLnR5cCB9KTtcbiAgICAgICAgdHlwLmpzVG9KU09OID0gbWFwO1xuICAgIH1cbiAgICByZXR1cm4gdHlwLmpzVG9KU09OO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsOiBhbnksIHR5cDogYW55LCBnZXRQcm9wczogYW55LCBrZXk6IGFueSA9ICcnKTogYW55IHtcbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0eXAgPT09IHR5cGVvZiB2YWwpIHJldHVybiB2YWw7XG4gICAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtVW5pb24odHlwczogYW55W10sIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICAgICAgY29uc3QgbCA9IHR5cHMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdHlwID0gdHlwc1tpXTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMpO1xuICAgICAgICAgICAgfSBjYXRjaCAoXykge31cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtRW51bShjYXNlczogc3RyaW5nW10sIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWw7XG4gICAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUoY2FzZXMsIHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtQXJyYXkodHlwOiBhbnksIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgLy8gdmFsIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBubyBpbnZhbGlkIGVsZW1lbnRzXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKFwiYXJyYXlcIiwgdmFsKTtcbiAgICAgICAgcmV0dXJuIHZhbC5tYXAoZWwgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtRGF0ZSh2YWw6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICBpZiAoaXNOYU4oZC52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbHVlKFwiRGF0ZVwiLCB2YWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybU9iamVjdChwcm9wczogeyBbazogc3RyaW5nXTogYW55IH0sIGFkZGl0aW9uYWw6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbHVlKFwib2JqZWN0XCIsIHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvcHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSkgPyB2YWxba2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdFtwcm9wLmtleV0gPSB0cmFuc2Zvcm0odiwgcHJvcC50eXAsIGdldFByb3BzLCBwcm9wLmtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWwpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2Zvcm0odmFsW2tleV0sIGFkZGl0aW9uYWwsIGdldFByb3BzLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAodHlwID09PSBcImFueVwiKSByZXR1cm4gdmFsO1xuICAgIGlmICh0eXAgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbDtcbiAgICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXAsIHZhbCk7XG4gICAgfVxuICAgIGlmICh0eXAgPT09IGZhbHNlKSByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsKTtcbiAgICB3aGlsZSAodHlwZW9mIHR5cCA9PT0gXCJvYmplY3RcIiAmJiB0eXAucmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdHlwID0gdHlwZU1hcFt0eXAucmVmXTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkgcmV0dXJuIHRyYW5zZm9ybUVudW0odHlwLCB2YWwpO1xuICAgIGlmICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHJldHVybiB0eXAuaGFzT3duUHJvcGVydHkoXCJ1bmlvbk1lbWJlcnNcIikgPyB0cmFuc2Zvcm1Vbmlvbih0eXAudW5pb25NZW1iZXJzLCB2YWwpXG4gICAgICAgICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcImFycmF5SXRlbXNcIikgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgICAgICAgOiB0eXAuaGFzT3duUHJvcGVydHkoXCJwcm9wc1wiKSAgICAgICAgID8gdHJhbnNmb3JtT2JqZWN0KGdldFByb3BzKHR5cCksIHR5cC5hZGRpdGlvbmFsLCB2YWwpXG4gICAgICAgICAgICA6IGludmFsaWRWYWx1ZSh0eXAsIHZhbCk7XG4gICAgfVxuICAgIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gICAgaWYgKHR5cCA9PT0gRGF0ZSAmJiB0eXBlb2YgdmFsICE9PSBcIm51bWJlclwiKSByZXR1cm4gdHJhbnNmb3JtRGF0ZSh2YWwpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwLCB2YWwpO1xufVxuXG5mdW5jdGlvbiBjYXN0PFQ+KHZhbDogYW55LCB0eXA6IGFueSk6IFQge1xuICAgIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzb25Ub0pTUHJvcHMpO1xufVxuXG5mdW5jdGlvbiB1bmNhc3Q8VD4odmFsOiBULCB0eXA6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwganNUb0pTT05Qcm9wcyk7XG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgICByZXR1cm4geyBhcnJheUl0ZW1zOiB0eXAgfTtcbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICAgIHJldHVybiB7IHVuaW9uTWVtYmVyczogdHlwcyB9O1xufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gICAgcmV0dXJuIHsgcHJvcHMsIGFkZGl0aW9uYWwgfTtcbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgICByZXR1cm4geyBwcm9wczogW10sIGFkZGl0aW9uYWwgfTtcbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4geyByZWY6IG5hbWUgfTtcbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICAgIFwiU2NydXRpbnNcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJzY3J1dGluc1wiLCBqczogXCJzY3J1dGluc1wiLCB0eXA6IHIoXCJTY3J1dGluc0NsYXNzXCIpIH0sXG4gICAgXSwgZmFsc2UpLFxuICAgIFwiU2NydXRpbnNDbGFzc1wiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcInNjcnV0aW5cIiwganM6IFwic2NydXRpblwiLCB0eXA6IGEocihcIlNjcnV0aW5cIikpIH0sXG4gICAgXSwgZmFsc2UpLFxuICAgIFwiU2NydXRpbldyYXBwZXJcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJzY3J1dGluXCIsIGpzOiBcInNjcnV0aW5cIiwgdHlwOiByKFwiU2NydXRpblwiKSB9LFxuICAgIF0sIGZhbHNlKSxcbiAgICBcIlNjcnV0aW5cIjogbyhbXG4gICAgICAgIHsganNvbjogXCJAeG1sbnM6eHNpXCIsIGpzOiBcIkB4bWxuczp4c2lcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJ1aWRcIiwganM6IFwidWlkXCIsIHR5cDogXCJcIiB9LFxuICAgICAgICB7IGpzb246IFwibnVtZXJvXCIsIGpzOiBcIm51bWVyb1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcIm9yZ2FuZVJlZlwiLCBqczogXCJvcmdhbmVSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJsZWdpc2xhdHVyZVwiLCBqczogXCJsZWdpc2xhdHVyZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcInNlc3Npb25SZWZcIiwganM6IFwic2Vzc2lvblJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcInNlYW5jZVJlZlwiLCBqczogXCJzZWFuY2VSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJkYXRlU2NydXRpblwiLCBqczogXCJkYXRlU2NydXRpblwiLCB0eXA6IERhdGUgfSxcbiAgICAgICAgeyBqc29uOiBcInF1YW50aWVtZUpvdXJTZWFuY2VcIiwganM6IFwicXVhbnRpZW1lSm91clNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcInR5cGVWb3RlXCIsIGpzOiBcInR5cGVWb3RlXCIsIHR5cDogcihcIlR5cGVWb3RlXCIpIH0sXG4gICAgICAgIHsganNvbjogXCJzb3J0XCIsIGpzOiBcInNvcnRcIiwgdHlwOiByKFwiU29ydFwiKSB9LFxuICAgICAgICB7IGpzb246IFwidGl0cmVcIiwganM6IFwidGl0cmVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJkZW1hbmRldXJcIiwganM6IFwiZGVtYW5kZXVyXCIsIHR5cDogcihcIkRlbWFuZGV1clwiKSB9LFxuICAgICAgICB7IGpzb246IFwib2JqZXRcIiwganM6IFwib2JqZXRcIiwgdHlwOiByKFwiT2JqZXRcIikgfSxcbiAgICAgICAgeyBqc29uOiBcIm1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzXCIsIGpzOiBcIm1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzXCIsIHR5cDogcihcIk1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzXCIpIH0sXG4gICAgICAgIHsganNvbjogXCJzeW50aGVzZVZvdGVcIiwganM6IFwic3ludGhlc2VWb3RlXCIsIHR5cDogcihcIlN5bnRoZXNlVm90ZVwiKSB9LFxuICAgICAgICB7IGpzb246IFwidmVudGlsYXRpb25Wb3Rlc1wiLCBqczogXCJ2ZW50aWxhdGlvblZvdGVzXCIsIHR5cDogcihcIlZlbnRpbGF0aW9uVm90ZXNcIikgfSxcbiAgICAgICAgeyBqc29uOiBcIm1pc2VBdVBvaW50XCIsIGpzOiBcIm1pc2VBdVBvaW50XCIsIHR5cDogdShyKFwiTWlzZUF1UG9pbnRcIiksIG51bGwpIH0sXG4gICAgICAgIHsganNvbjogXCJsaWV1Vm90ZVwiLCBqczogXCJsaWV1Vm90ZVwiLCB0eXA6IHUodW5kZWZpbmVkLCByKFwiTGlldVZvdGVcIikpIH0sXG4gICAgICAgIHsganNvbjogXCJAeG1sbnNcIiwganM6IFwiQHhtbG5zXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgXSwgZmFsc2UpLFxuICAgIFwiRGVtYW5kZXVyXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwidGV4dGVcIiwganM6IFwidGV4dGVcIiwgdHlwOiB1KG51bGwsIFwiXCIpIH0sXG4gICAgICAgIHsganNvbjogXCJyZWZlcmVuY2VMZWdpc2xhdGl2ZVwiLCBqczogXCJyZWZlcmVuY2VMZWdpc2xhdGl2ZVwiLCB0eXA6IG51bGwgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJNaXNlQXVQb2ludFwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNcIiwganM6IFwibm9uVm90YW50c1wiLCB0eXA6IHUoYSh1KHIoXCJWb3RhbnRzQ2xhc3NcIiksIG51bGwpKSwgbnVsbCkgfSxcbiAgICAgICAgeyBqc29uOiBcInBvdXJcIiwganM6IFwicG91clwiLCB0eXA6IHUodW5kZWZpbmVkLCB1KHIoXCJWb3RhbnRzQ2xhc3NcIiksIG51bGwpKSB9LFxuICAgICAgICB7IGpzb246IFwiY29udHJlXCIsIGpzOiBcImNvbnRyZVwiLCB0eXA6IHUodW5kZWZpbmVkLCB1KHIoXCJWb3RhbnRzQ2xhc3NcIiksIG51bGwpKSB9LFxuICAgICAgICB7IGpzb246IFwiYWJzdGVudGlvbnNcIiwganM6IFwiYWJzdGVudGlvbnNcIiwgdHlwOiB1KGEodShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSksIHIoXCJWb3RhbnRzQ2xhc3NcIiksIG51bGwpIH0sXG4gICAgICAgIHsganNvbjogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIiwganM6IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsIHR5cDogdShhKHUocihcIlZvdGFudHNDbGFzc1wiKSwgbnVsbCkpLCByKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSB9LFxuICAgICAgICB7IGpzb246IFwicG91cnNcIiwganM6IFwicG91cnNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcImNvbnRyZXNcIiwganM6IFwiY29udHJlc1wiLCB0eXA6IHUodW5kZWZpbmVkLCB1KHIoXCJWb3RhbnRzQ2xhc3NcIiksIG51bGwpKSB9LFxuICAgICAgICB7IGpzb246IFwiZHlzZm9uY3Rpb25uZW1lbnRcIiwganM6IFwiZHlzZm9uY3Rpb25uZW1lbnRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkR5c2ZvbmN0aW9ubmVtZW50XCIpKSB9LFxuICAgIF0sIGZhbHNlKSxcbiAgICBcIkR5c2ZvbmN0aW9ubmVtZW50XCI6IG8oW1xuICAgICAgICB7IGpzb246IFwibm9uVm90YW50c1wiLCBqczogXCJub25Wb3RhbnRzXCIsIHR5cDogdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSB9LFxuICAgICAgICB7IGpzb246IFwicG91clwiLCBqczogXCJwb3VyXCIsIHR5cDogdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSB9LFxuICAgICAgICB7IGpzb246IFwiY29udHJlXCIsIGpzOiBcImNvbnRyZVwiLCB0eXA6IHUocihcIlZvdGFudHNDbGFzc1wiKSwgbnVsbCkgfSxcbiAgICAgICAgeyBqc29uOiBcImFic3RlbnRpb25zXCIsIGpzOiBcImFic3RlbnRpb25zXCIsIHR5cDogdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSB9LFxuICAgICAgICB7IGpzb246IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsIGpzOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLCB0eXA6IHUocihcIlZvdGFudHNDbGFzc1wiKSwgbnVsbCkgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJPYmpldFwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcImxpYmVsbGVcIiwganM6IFwibGliZWxsZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcInJlZmVyZW5jZUxlZ2lzbGF0aXZlXCIsIGpzOiBcInJlZmVyZW5jZUxlZ2lzbGF0aXZlXCIsIHR5cDogbnVsbCB9LFxuICAgICAgICB7IGpzb246IFwiZG9zc2llckxlZ2lzbGF0aWZcIiwganM6IFwiZG9zc2llckxlZ2lzbGF0aWZcIiwgdHlwOiB1KHVuZGVmaW5lZCwgbnVsbCkgfVxuICAgIF0sIGZhbHNlKSxcbiAgICBcIlNvcnRcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJjb2RlXCIsIGpzOiBcImNvZGVcIiwgdHlwOiByKFwiQ29kZVwiKSB9LFxuICAgICAgICB7IGpzb246IFwibGliZWxsZVwiLCBqczogXCJsaWJlbGxlXCIsIHR5cDogcihcIkxpYmVsbGVcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJTeW50aGVzZVZvdGVcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJub21icmVWb3RhbnRzXCIsIGpzOiBcIm5vbWJyZVZvdGFudHNcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJzdWZmcmFnZXNFeHByaW1lc1wiLCBqczogXCJzdWZmcmFnZXNFeHByaW1lc1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcIm5iclN1ZmZyYWdlc1JlcXVpc1wiLCBqczogXCJuYnJTdWZmcmFnZXNSZXF1aXNcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJhbm5vbmNlXCIsIGpzOiBcImFubm9uY2VcIiwgdHlwOiByKFwiTGliZWxsZVwiKSB9LFxuICAgICAgICB7IGpzb246IFwiZGVjb21wdGVcIiwganM6IFwiZGVjb21wdGVcIiwgdHlwOiByKFwiRGVjb21wdGVcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJEZWNvbXB0ZVwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcInBvdXJcIiwganM6IFwicG91clwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcImNvbnRyZVwiLCBqczogXCJjb250cmVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJhYnN0ZW50aW9uc1wiLCBqczogXCJhYnN0ZW50aW9uc1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNcIiwganM6IFwibm9uVm90YW50c1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLCBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJUeXBlVm90ZVwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcImNvZGVUeXBlVm90ZVwiLCBqczogXCJjb2RlVHlwZVZvdGVcIiwgdHlwOiByKFwiQ29kZVR5cGVWb3RlXCIpIH0sXG4gICAgICAgIHsganNvbjogXCJsaWJlbGxlVHlwZVZvdGVcIiwganM6IFwibGliZWxsZVR5cGVWb3RlXCIsIHR5cDogcihcIkxpYmVsbGVUeXBlVm90ZVwiKSB9LFxuICAgICAgICB7IGpzb246IFwidHlwZU1ham9yaXRlXCIsIGpzOiBcInR5cGVNYWpvcml0ZVwiLCB0eXA6IHIoXCJUeXBlTWFqb3JpdGVcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJWZW50aWxhdGlvblZvdGVzXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwib3JnYW5lXCIsIGpzOiBcIm9yZ2FuZVwiLCB0eXA6IHIoXCJPcmdhbmVcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJPcmdhbmVcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgICB7IGpzb246IFwiZ3JvdXBlc1wiLCBqczogXCJncm91cGVzXCIsIHR5cDogcihcIkdyb3VwZXNcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJHcm91cGVzXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwiZ3JvdXBlXCIsIGpzOiBcImdyb3VwZVwiLCB0eXA6IGEocihcIkdyb3VwZVwiKSkgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJHcm91cGVcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgICB7IGpzb246IFwibm9tYnJlTWVtYnJlc0dyb3VwZVwiLCBqczogXCJub21icmVNZW1icmVzR3JvdXBlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgICB7IGpzb246IFwidm90ZVwiLCBqczogXCJ2b3RlXCIsIHR5cDogcihcIlZvdGVcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJWb3RlXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwicG9zaXRpb25NYWpvcml0YWlyZVwiLCBqczogXCJwb3NpdGlvbk1ham9yaXRhaXJlXCIsIHR5cDogcihcIlBvc2l0aW9uTWFqb3JpdGFpcmVcIikgfSxcbiAgICAgICAgeyBqc29uOiBcImRlY29tcHRlVm9peFwiLCBqczogXCJkZWNvbXB0ZVZvaXhcIiwgdHlwOiByKFwiRGVjb21wdGVWb2l4XCIpIH0sXG4gICAgICAgIHsganNvbjogXCJkZWNvbXB0ZU5vbWluYXRpZlwiLCBqczogXCJkZWNvbXB0ZU5vbWluYXRpZlwiLCB0eXA6IHIoXCJEZWNvbXB0ZU5vbWluYXRpZlwiKSB9LFxuICAgIF0sIGZhbHNlKSxcbiAgICBcIkRlY29tcHRlTm9taW5hdGlmXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwibm9uVm90YW50XCIsIGpzOiBcIm5vblZvdGFudFwiLCB0eXA6IHUodW5kZWZpbmVkLCBudWxsKSB9LFxuICAgICAgICB7IGpzb246IFwibm9uVm90YW50c1wiLCBqczogXCJub25Wb3RhbnRzXCIsIHR5cDogdSh1bmRlZmluZWQsIHUocihcIlZvdGFudHNDbGFzc1wiKSwgbnVsbCwgXCJcIikpIH0sXG4gICAgICAgIHsganNvbjogXCJwb3VyXCIsIGpzOiBcInBvdXJcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcImNvbnRyZVwiLCBqczogXCJjb250cmVcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcImFic3RlbnRpb25cIiwganM6IFwiYWJzdGVudGlvblwiLCB0eXA6IHUodW5kZWZpbmVkLCB1KHIoXCJWb3RhbnRzQ2xhc3NcIiksIG51bGwpKSB9LFxuICAgICAgICB7IGpzb246IFwiYWJzdGVudGlvbnNcIiwganM6IFwiYWJzdGVudGlvbnNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcInBvdXJzXCIsIGpzOiBcInBvdXJzXCIsIHR5cDogdSh1bmRlZmluZWQsIHUocihcIlZvdGFudHNDbGFzc1wiKSwgbnVsbCkpIH0sXG4gICAgICAgIHsganNvbjogXCJjb250cmVzXCIsIGpzOiBcImNvbnRyZXNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiVm90YW50c0NsYXNzXCIpLCBudWxsKSkgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJWb3RhbnRzQ2xhc3NcIjogbyhbXG4gICAgICAgIHsganNvbjogXCJ2b3RhbnRcIiwganM6IFwidm90YW50XCIsIHR5cDogdShhKHIoXCJWb3RhbnRcIikpLCByKFwiVm90YW50XCIpKSB9LFxuICAgIF0sIGZhbHNlKSxcbiAgICBcIlZvdGFudFwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcImFjdGV1clJlZlwiLCBqczogXCJhY3RldXJSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJtYW5kYXRSZWZcIiwganM6IFwibWFuZGF0UmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgICB7IGpzb246IFwicGFyRGVsZWdhdGlvblwiLCBqczogXCJwYXJEZWxlZ2F0aW9uXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICAgIHsganNvbjogXCJudW1QbGFjZVwiLCBqczogXCJudW1QbGFjZVwiLCB0eXA6IHUodW5kZWZpbmVkLCB1KFwiXCIsIG51bGwpKSB9LFxuICAgICAgICB7IGpzb246IFwiY2F1c2VQb3NpdGlvblZvdGVcIiwganM6IFwiY2F1c2VQb3NpdGlvblZvdGVcIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkNhdXNlUG9zaXRpb25Wb3RlXCIpKSB9LFxuICAgIF0sIGZhbHNlKSxcbiAgICBcIkRlY29tcHRlVm9peFwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcInBvdXJcIiwganM6IFwicG91clwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcImNvbnRyZVwiLCBqczogXCJjb250cmVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJhYnN0ZW50aW9uXCIsIGpzOiBcImFic3RlbnRpb25cIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgICAgeyBqc29uOiBcIm5vblZvdGFudFwiLCBqczogXCJub25Wb3RhbnRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShcIlwiLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNcIiwganM6IFwibm9uVm90YW50c1wiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgICB7IGpzb246IFwiYWJzdGVudGlvbnNcIiwganM6IFwiYWJzdGVudGlvbnNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLCBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICBdLCBmYWxzZSksXG4gICAgXCJNb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiOiBbXG4gICAgICAgIFwiRGVjb21wdGVEaXNzaWRlbnRzUG9zaXRpb25Hcm91cGVcIixcbiAgICAgICAgXCJEZWNvbXB0ZU5vbWluYXRpZlwiLFxuICAgIF0sXG4gICAgXCJDb2RlXCI6IFtcbiAgICAgICAgXCJhZG9wdMOpXCIsXG4gICAgICAgIFwicmVqZXTDqVwiLFxuICAgIF0sXG4gICAgXCJMaWJlbGxlXCI6IFtcbiAgICAgICAgXCJsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlIGEgYWRvcHTDqVwiLFxuICAgICAgICBcIkwnQXNzZW1ibMOpZSBuYXRpb25hbGUgbidhIHBhcyBhZG9wdMOpXCIsXG4gICAgICAgIFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IGEgYWRvcHTDqVwiLFxuICAgICAgICBcIkxlIENvbmdyw6hzIGR1IFBhcmxlbWVudCBuJ2EgcGFzIGFkb3B0w6lcIixcbiAgICAgICAgICBdLFxuICAgIFwiQ29kZVR5cGVWb3RlXCI6IFtcbiAgICAgICAgXCJNT0NcIixcbiAgICAgICAgXCJTQVRcIixcbiAgICAgICAgXCJTUE9cIixcbiAgICAgICAgXCJTUFNcIixcbiAgICAgICAgXCJTU0dcIixcbiAgICBdLFxuICAgIFwiTGliZWxsZVR5cGVWb3RlXCI6IFtcbiAgICAgICAgXCJtb3Rpb24gZGUgY2Vuc3VyZVwiLFxuICAgICAgICBcInNjcnV0aW4gcHVibGljIG9yZGluYWlyZVwiLFxuICAgICAgICBcInNjcnV0aW4gcHVibGljIHNvbGVubmVsXCIsXG4gICAgICAgIFwic2NydXRpbiDDoCBsYSB0cmlidW5lXCIsXG4gICAgICAgIFwiU2NydXRpbiBzb2xlbm5lbCBjb25ncsOoc1wiLFxuICAgIF0sXG4gICAgXCJUeXBlTWFqb3JpdGVcIjogW1xuICAgICAgICBcIk1ham9yaXTDqSBhYnNvbHVlIGRlcyBzdWZmcmFnZXMgZXhwcmltw6lzXCIsXG4gICAgICAgIFwibWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgICAgICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbiAgICAgICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llXCIsXG4gICAgICAgIFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudHMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbiAgICAgICAgXCJNYWpvcml0w6kgcmVxdWlzZSBwb3VyIHVuIENvbmdyw6hzXCIsXG4gICAgICAgIFwiTWFqb3JpdMOpIHJlcXVpc2UgcG91ciB1bmUgbW90aW9uIGRlIGNlbnN1cmVcIixcbiAgICBdLFxuICAgIFwiQ2F1c2VQb3NpdGlvblZvdGVcIjogW1xuICAgICAgICBcIk1HXCIsXG4gICAgICAgIFwiUEFOXCIsXG4gICAgICAgIFwiUFNFXCIsXG4gICAgXSxcbiAgICBcIlBvc2l0aW9uTWFqb3JpdGFpcmVcIjogW1xuICAgICAgICBcImFic3RlbnRpb25cIixcbiAgICAgICAgXCJjb250cmVcIixcbiAgICAgICAgXCJwb3VyXCIsXG4gICAgXSxcbiAgICBcIkxpZXVWb3RlXCI6IFtcbiAgICAgICAgXCJDb25ncsOoc1wiLFxuICAgICAgICBcIkjDqW1pY3ljbGVcIixcbiAgICAgICAgXCJTYWxvbnNcIixcbiAgICBdLFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQTZEQSxXQUFZQSx1QkFBdUIsMEJBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCO0VBQUEsT0FBdkJBLHVCQUF1QjtBQUFBO0FBZ0JuQyxXQUFZQyxJQUFJLDBCQUFKQSxJQUFJO0VBQUpBLElBQUk7RUFBSkEsSUFBSTtFQUFBLE9BQUpBLElBQUk7QUFBQTtBQUtoQixXQUFZQyxPQUFPLDBCQUFQQSxPQUFPO0VBQVBBLE9BQU87RUFBUEEsT0FBTztFQUFQQSxPQUFPO0VBQVBBLE9BQU87RUFBQSxPQUFQQSxPQUFPO0FBQUE7QUE2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