@tricoteuses/assemblee 1.10.4 → 2.0.0

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