@tricoteuses/assemblee 1.0.7 → 1.1.1

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 (134) hide show
  1. package/lib/api.js +3 -9
  2. package/lib/api.mjs +4 -5
  3. package/lib/bugs/acteur-00010/plugin.test.js +3 -50
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +2 -57
  6. package/lib/bugs/acteur-00010.mjs +1 -6
  7. package/lib/bugs/agenda-00002/plugin.test.js +3 -53
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
  9. package/lib/bugs/agenda-00002.js +3 -148
  10. package/lib/bugs/agenda-00002.mjs +1 -28
  11. package/lib/bugs/agenda-00008/plugin.test.js +3 -52
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +2 -61
  14. package/lib/bugs/agenda-00008.mjs +1 -5
  15. package/lib/bugs/agenda-00011/plugin.test.js +5 -99
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
  17. package/lib/bugs/agenda-00011.js +4 -105
  18. package/lib/bugs/agenda-00011.mjs +3 -29
  19. package/lib/bugs.js +3 -164
  20. package/lib/bugs.mjs +1 -26
  21. package/lib/cleaners/actes_legislatifs.js +11 -115
  22. package/lib/cleaners/actes_legislatifs.mjs +7 -82
  23. package/lib/cleaners/acteurs.js +12 -92
  24. package/lib/cleaners/acteurs.mjs +7 -38
  25. package/lib/cleaners/amendements.js +10 -103
  26. package/lib/cleaners/amendements.mjs +4 -58
  27. package/lib/cleaners/documents.js +5 -67
  28. package/lib/cleaners/documents.mjs +1 -37
  29. package/lib/cleaners/dossiers_legislatifs.js +5 -61
  30. package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
  31. package/lib/cleaners/index.js +1 -9
  32. package/lib/cleaners/index.mjs +1 -1
  33. package/lib/cleaners/organes.js +1 -33
  34. package/lib/cleaners/organes.mjs +1 -17
  35. package/lib/cleaners/reunions.js +4 -119
  36. package/lib/cleaners/reunions.mjs +1 -64
  37. package/lib/cleaners/scrutins.js +10 -102
  38. package/lib/cleaners/scrutins.mjs +1 -48
  39. package/lib/cleaners/xml.js +8 -42
  40. package/lib/cleaners/xml.mjs +6 -8
  41. package/lib/datasets.js +14 -113
  42. package/lib/datasets.mjs +6 -46
  43. package/lib/dates.js +7 -37
  44. package/lib/dates.mjs +9 -14
  45. package/lib/dossiers_legislatifs.js +6 -68
  46. package/lib/dossiers_legislatifs.mjs +5 -36
  47. package/lib/file_systems.js +56 -139
  48. package/lib/file_systems.mjs +1 -9
  49. package/lib/git.js +4 -53
  50. package/lib/git.mjs +1 -12
  51. package/lib/index.js +1 -15
  52. package/lib/index.mjs +1 -1
  53. package/lib/inserters.js +23 -146
  54. package/lib/inserters.mjs +6 -87
  55. package/lib/loaders.js +44 -316
  56. package/lib/loaders.mjs +12 -135
  57. package/lib/organes.js +1 -7
  58. package/lib/organes.mjs +1 -4
  59. package/lib/parsers/documents.js +22 -151
  60. package/lib/parsers/documents.mjs +19 -81
  61. package/lib/parsers/index.js +1 -4
  62. package/lib/parsers/index.mjs +1 -1
  63. package/lib/parsers/recherche_amendements.js +302 -527
  64. package/lib/parsers/recherche_amendements.mjs +8 -31
  65. package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
  66. package/lib/raw_types/acteurs_et_organes.js +5 -124
  67. package/lib/raw_types/acteurs_et_organes.mjs +5 -105
  68. package/lib/raw_types/agendas.js +6 -89
  69. package/lib/raw_types/agendas.mjs +9 -65
  70. package/lib/raw_types/amendements.d.ts +2 -0
  71. package/lib/raw_types/amendements.js +10 -90
  72. package/lib/raw_types/amendements.mjs +11 -69
  73. package/lib/raw_types/dossiers_legislatifs.js +6 -96
  74. package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
  75. package/lib/raw_types/scrutins.js +6 -81
  76. package/lib/raw_types/scrutins.mjs +9 -57
  77. package/lib/scripts/bugs_helper.js +2 -181
  78. package/lib/scripts/bugs_helper.mjs +2 -39
  79. package/lib/scripts/clean_data.js +27 -143
  80. package/lib/scripts/clean_data.mjs +15 -34
  81. package/lib/scripts/clean_reorganized_data.js +76 -240
  82. package/lib/scripts/clean_reorganized_data.mjs +36 -99
  83. package/lib/scripts/diff_amendements.js +19 -79
  84. package/lib/scripts/diff_amendements.mjs +17 -35
  85. package/lib/scripts/document_dossiers_legislatifs.js +17 -142
  86. package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
  87. package/lib/scripts/get_today_reunions.js +4 -22
  88. package/lib/scripts/get_today_reunions.mjs +1 -7
  89. package/lib/scripts/merge_scrutins.js +3 -47
  90. package/lib/scripts/merge_scrutins.mjs +1 -9
  91. package/lib/scripts/parse_textes_lois.js +15 -44
  92. package/lib/scripts/parse_textes_lois.mjs +18 -19
  93. package/lib/scripts/raw_types_from_amendements.js +3 -95
  94. package/lib/scripts/raw_types_from_amendements.mjs +1 -16
  95. package/lib/scripts/reorganize_data.js +74 -294
  96. package/lib/scripts/reorganize_data.mjs +22 -133
  97. package/lib/scripts/retrieve_deputes_photos.js +6 -119
  98. package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
  99. package/lib/scripts/retrieve_documents.js +4 -192
  100. package/lib/scripts/retrieve_documents.mjs +2 -50
  101. package/lib/scripts/retrieve_open_data.js +44 -116
  102. package/lib/scripts/retrieve_open_data.mjs +14 -19
  103. package/lib/scripts/retrieve_pending_amendments.js +4 -98
  104. package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
  105. package/lib/scripts/retrieve_senateurs_photos.js +18 -114
  106. package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
  107. package/lib/scripts/retrieve_textes_lois.js +3 -122
  108. package/lib/scripts/retrieve_textes_lois.mjs +3 -21
  109. package/lib/scripts/test_load.js +2 -10
  110. package/lib/scripts/test_load.mjs +2 -1
  111. package/lib/scripts/test_load_big_files.js +2 -10
  112. package/lib/scripts/test_load_big_files.mjs +2 -1
  113. package/lib/scripts/validate_json.js +4 -119
  114. package/lib/scripts/validate_json.mjs +2 -36
  115. package/lib/shared_types/codes_actes.js +1 -24
  116. package/lib/shared_types/codes_actes.mjs +3 -10
  117. package/lib/strings.js +1 -5
  118. package/lib/strings.mjs +1 -1
  119. package/lib/types/acteurs_et_organes.js +9 -84
  120. package/lib/types/acteurs_et_organes.mjs +10 -63
  121. package/lib/types/agendas.js +8 -90
  122. package/lib/types/agendas.mjs +11 -66
  123. package/lib/types/amendements.d.ts +2 -0
  124. package/lib/types/amendements.js +12 -92
  125. package/lib/types/amendements.mjs +15 -70
  126. package/lib/types/dossiers_legislatifs.js +8 -96
  127. package/lib/types/dossiers_legislatifs.mjs +10 -72
  128. package/lib/types/legislatures.js +1 -3
  129. package/lib/types/legislatures.mjs +1 -2
  130. package/lib/types/scrutins.js +8 -82
  131. package/lib/types/scrutins.mjs +11 -58
  132. package/lib/urls.js +3 -27
  133. package/lib/urls.mjs +3 -21
  134. package/package.json +1 -1
@@ -6,98 +6,78 @@
6
6
  //
7
7
  // These functions will throw an error if the JSON doesn't
8
8
  // match the expected interface, even if the JSON is valid.
9
- export let ModePublicationDesVotes;
10
9
 
10
+ export let ModePublicationDesVotes;
11
11
  (function (ModePublicationDesVotes) {
12
12
  ModePublicationDesVotes["DecompteDissidentsPositionGroupe"] = "DecompteDissidentsPositionGroupe";
13
13
  ModePublicationDesVotes["DecompteNominatif"] = "DecompteNominatif";
14
14
  })(ModePublicationDesVotes || (ModePublicationDesVotes = {}));
15
-
16
15
  export let Code;
17
-
18
16
  (function (Code) {
19
17
  Code["Adopt\xE9"] = "adopt\xE9";
20
18
  Code["Rejet\xE9"] = "rejet\xE9";
21
19
  })(Code || (Code = {}));
22
-
23
20
  export let Libelle;
24
-
25
21
  (function (Libelle) {
26
22
  Libelle["LAssembl\xE9eNationaleAAdopt\xE9"] = "l'Assembl\xE9e nationale a adopt\xE9";
27
23
  Libelle["LAssembl\xE9eNationaleNAPasAdopt\xE9"] = "L'Assembl\xE9e nationale n'a pas adopt\xE9";
28
24
  })(Libelle || (Libelle = {}));
29
-
30
25
  export let CodeTypeVote;
31
-
32
26
  (function (CodeTypeVote) {
33
27
  CodeTypeVote["Moc"] = "MOC";
34
28
  CodeTypeVote["Sat"] = "SAT";
35
29
  CodeTypeVote["Spo"] = "SPO";
36
30
  CodeTypeVote["Sps"] = "SPS";
37
31
  })(CodeTypeVote || (CodeTypeVote = {}));
38
-
39
32
  export let LibelleTypeVote;
40
-
41
33
  (function (LibelleTypeVote) {
42
34
  LibelleTypeVote["MotionDeCensure"] = "motion de censure";
43
35
  LibelleTypeVote["ScrutinPublicOrdinaire"] = "scrutin public ordinaire";
44
36
  LibelleTypeVote["ScrutinPublicSolennel"] = "scrutin public solennel";
45
37
  LibelleTypeVote["Scrutin\xC0LaTribune"] = "scrutin \xE0 la tribune";
46
38
  })(LibelleTypeVote || (LibelleTypeVote = {}));
47
-
48
39
  export let TypeMajorite;
49
-
50
40
  (function (TypeMajorite) {
51
41
  TypeMajorite["Majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "majorit\xE9 absolue des suffrages exprim\xE9s";
52
42
  TypeMajorite["Majorit\xE9DesMembresComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composant l'Assembl\xE9e nationale";
53
43
  TypeMajorite["Majorit\xE9DesMembresComposantsComposantLAssembl\xE9e"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e";
54
44
  TypeMajorite["Majorit\xE9DesMembresComposantsComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e nationale";
55
45
  })(TypeMajorite || (TypeMajorite = {}));
56
-
57
46
  export let CausePositionVote;
58
-
59
47
  (function (CausePositionVote) {
60
48
  CausePositionVote["Mg"] = "MG";
61
49
  CausePositionVote["Pan"] = "PAN";
62
50
  CausePositionVote["Pse"] = "PSE";
63
51
  })(CausePositionVote || (CausePositionVote = {}));
52
+ export let PositionMajoritaire;
64
53
 
65
- export let PositionMajoritaire; // Converts JSON strings to/from your types
54
+ // Converts JSON strings to/from your types
66
55
  // and asserts the results of JSON.parse at runtime
67
-
68
56
  (function (PositionMajoritaire) {
69
57
  PositionMajoritaire["Abstention"] = "abstention";
70
58
  PositionMajoritaire["Contre"] = "contre";
71
59
  PositionMajoritaire["Pour"] = "pour";
72
60
  })(PositionMajoritaire || (PositionMajoritaire = {}));
73
-
74
61
  export class Convert {
75
62
  static toScrutins(json) {
76
63
  return cast(JSON.parse(json), r("Scrutins"));
77
64
  }
78
-
79
65
  static scrutinsToJson(value) {
80
66
  return JSON.stringify(uncast(value, r("Scrutins")), null, 2);
81
67
  }
82
-
83
68
  static toScrutin(json) {
84
69
  return cast(JSON.parse(json), r("Scrutin"));
85
70
  }
86
-
87
71
  static scrutinToJson(value) {
88
72
  return JSON.stringify(uncast(value, r("Scrutin")), null, 2);
89
73
  }
90
-
91
74
  }
92
-
93
75
  function invalidValue(typ, val, key = "") {
94
76
  if (key) {
95
77
  throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);
96
78
  }
97
-
98
79
  throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);
99
80
  }
100
-
101
81
  function jsonToJSProps(typ) {
102
82
  if (typ.jsonToJS === undefined) {
103
83
  const map = {};
@@ -107,10 +87,8 @@ function jsonToJSProps(typ) {
107
87
  });
108
88
  typ.jsonToJS = map;
109
89
  }
110
-
111
90
  return typ.jsonToJS;
112
91
  }
113
-
114
92
  function jsToJSONProps(typ) {
115
93
  if (typ.jsToJSON === undefined) {
116
94
  const map = {};
@@ -120,61 +98,47 @@ function jsToJSONProps(typ) {
120
98
  });
121
99
  typ.jsToJSON = map;
122
100
  }
123
-
124
101
  return typ.jsToJSON;
125
102
  }
126
-
127
103
  function transform(val, typ, getProps, key = "") {
128
104
  function transformPrimitive(typ, val) {
129
105
  if (typeof typ === typeof val) return val;
130
106
  return invalidValue(typ, val, key);
131
107
  }
132
-
133
108
  function transformUnion(typs, val) {
134
109
  // val must validate against one typ in typs
135
110
  const l = typs.length;
136
-
137
111
  for (let i = 0; i < l; i++) {
138
112
  const typ = typs[i];
139
-
140
113
  try {
141
114
  return transform(val, typ, getProps);
142
115
  } catch (_) {}
143
116
  }
144
-
145
117
  return invalidValue(typs, val);
146
118
  }
147
-
148
119
  function transformEnum(cases, val) {
149
120
  if (cases.indexOf(val) !== -1) return val;
150
121
  return invalidValue(cases, val);
151
122
  }
152
-
153
123
  function transformArray(typ, val) {
154
124
  // val must be an array with no invalid elements
155
125
  if (!Array.isArray(val)) return invalidValue("array", val);
156
126
  return val.map(el => transform(el, typ, getProps));
157
127
  }
158
-
159
128
  function transformDate(val) {
160
129
  if (val === null) {
161
130
  return null;
162
131
  }
163
-
164
132
  const d = new Date(val);
165
-
166
133
  if (isNaN(d.valueOf())) {
167
134
  return invalidValue("Date", val);
168
135
  }
169
-
170
136
  return d;
171
137
  }
172
-
173
138
  function transformObject(props, additional, val) {
174
139
  if (val === null || typeof val !== "object" || Array.isArray(val)) {
175
140
  return invalidValue("object", val);
176
141
  }
177
-
178
142
  const result = {};
179
143
  Object.getOwnPropertyNames(props).forEach(key => {
180
144
  const prop = props[key];
@@ -188,66 +152,55 @@ function transform(val, typ, getProps, key = "") {
188
152
  });
189
153
  return result;
190
154
  }
191
-
192
155
  if (typ === "any") return val;
193
-
194
156
  if (typ === null) {
195
157
  if (val === null) return val;
196
158
  return invalidValue(typ, val);
197
- } // if (typ === false) return invalidValue(typ, val)
198
-
199
-
159
+ }
160
+ // if (typ === false) return invalidValue(typ, val)
200
161
  while (typeof typ === "object" && typ.ref !== undefined) {
201
162
  typ = typeMap[typ.ref];
202
163
  }
203
-
204
164
  if (Array.isArray(typ)) return transformEnum(typ, val);
205
-
206
165
  if (typeof typ === "object") {
207
166
  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);
208
- } // Numbers can be parsed by Date but shouldn't be.
209
-
210
-
167
+ }
168
+ // Numbers can be parsed by Date but shouldn't be.
211
169
  if (typ === Date && typeof val !== "number") return transformDate(val);
212
170
  return transformPrimitive(typ, val);
213
171
  }
214
-
215
172
  function cast(val, typ) {
216
173
  return transform(val, typ, jsonToJSProps);
217
174
  }
218
-
219
175
  function uncast(val, typ) {
220
176
  return transform(val, typ, jsToJSONProps);
221
177
  }
222
-
223
178
  function a(typ) {
224
179
  return {
225
180
  arrayItems: typ
226
181
  };
227
182
  }
228
-
229
183
  function u(...typs) {
230
184
  return {
231
185
  unionMembers: typs
232
186
  };
233
187
  }
234
-
235
188
  function o(props, additional) {
236
189
  return {
237
190
  props,
238
191
  additional
239
192
  };
240
- } // function m(additional: any) {
193
+ }
194
+
195
+ // function m(additional: any) {
241
196
  // return { props: [], additional }
242
197
  // }
243
198
 
244
-
245
199
  function r(name) {
246
200
  return {
247
201
  ref: name
248
202
  };
249
203
  }
250
-
251
204
  const typeMap = {
252
205
  Scrutins: o([{
253
206
  json: "scrutins",
@@ -525,4 +478,4 @@ const typeMap = {
525
478
  CausePositionVote: ["MG", "PAN", "PSE"],
526
479
  PositionMajoritaire: ["abstention", "contre", "pour"]
527
480
  };
528
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlUHVibGljYXRpb25EZXNWb3RlcyIsIkNvZGUiLCJMaWJlbGxlIiwiQ29kZVR5cGVWb3RlIiwiTGliZWxsZVR5cGVWb3RlIiwiVHlwZU1ham9yaXRlIiwiQ2F1c2VQb3NpdGlvblZvdGUiLCJQb3NpdGlvbk1ham9yaXRhaXJlIiwiQ29udmVydCIsInRvU2NydXRpbnMiLCJqc29uIiwiY2FzdCIsIkpTT04iLCJwYXJzZSIsInIiLCJzY3J1dGluc1RvSnNvbiIsInZhbHVlIiwic3RyaW5naWZ5IiwidW5jYXN0IiwidG9TY3J1dGluIiwic2NydXRpblRvSnNvbiIsImludmFsaWRWYWx1ZSIsInR5cCIsInZhbCIsImtleSIsIkVycm9yIiwianNvblRvSlNQcm9wcyIsImpzb25Ub0pTIiwidW5kZWZpbmVkIiwibWFwIiwicHJvcHMiLCJmb3JFYWNoIiwicCIsImpzIiwianNUb0pTT05Qcm9wcyIsImpzVG9KU09OIiwidHJhbnNmb3JtIiwiZ2V0UHJvcHMiLCJ0cmFuc2Zvcm1QcmltaXRpdmUiLCJ0cmFuc2Zvcm1VbmlvbiIsInR5cHMiLCJsIiwibGVuZ3RoIiwiaSIsIl8iLCJ0cmFuc2Zvcm1FbnVtIiwiY2FzZXMiLCJpbmRleE9mIiwidHJhbnNmb3JtQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJlbCIsInRyYW5zZm9ybURhdGUiLCJkIiwiRGF0ZSIsImlzTmFOIiwidmFsdWVPZiIsInRyYW5zZm9ybU9iamVjdCIsImFkZGl0aW9uYWwiLCJyZXN1bHQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcCIsInYiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJyZWYiLCJ0eXBlTWFwIiwidW5pb25NZW1iZXJzIiwiYXJyYXlJdGVtcyIsImEiLCJ1IiwibyIsIm5hbWUiLCJTY3J1dGlucyIsIlNjcnV0aW4iLCJEZW1hbmRldXIiLCJNaXNlQXVQb2ludCIsIkR5c2ZvbmN0aW9ubmVtZW50IiwiT2JqZXQiLCJTb3J0U2NydXRpbiIsIlN5bnRoZXNlVm90ZSIsIlR5cGVWb3RlIiwiT3JnYW5lIiwiR3JvdXBlIiwiVm90ZSIsIkRlY29tcHRlTm9taW5hdGlmIiwiVm90YW50IiwiRGVjb21wdGVWb2l4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3NjcnV0aW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRvIHBhcnNlIHRoaXMgZGF0YTpcbi8vXG4vLyAgIGltcG9ydCB7IENvbnZlcnQsIFNjcnV0aW5zIH0gZnJvbSBcIi4vZmlsZVwiO1xuLy9cbi8vICAgY29uc3Qgc2NydXRpbnMgPSBDb252ZXJ0LnRvU2NydXRpbnMoanNvbik7XG4vL1xuLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIEpTT04gZG9lc24ndFxuLy8gbWF0Y2ggdGhlIGV4cGVjdGVkIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgSlNPTiBpcyB2YWxpZC5cblxuZXhwb3J0IGludGVyZmFjZSBTY3J1dGlucyB7XG4gIHNjcnV0aW5zOiBTY3J1dGluW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3J1dGluIHtcbiAgc2NoZW1hVmVyc2lvbj86IHN0cmluZ1xuICB1aWQ6IHN0cmluZ1xuICBudW1lcm86IHN0cmluZ1xuICBvcmdhbmVSZWY6IHN0cmluZ1xuICBsZWdpc2xhdHVyZTogc3RyaW5nXG4gIHNlc3Npb25SZWY6IHN0cmluZ1xuICBzZWFuY2VSZWY6IHN0cmluZ1xuICBkYXRlU2NydXRpbjogRGF0ZVxuICBxdWFudGllbWVKb3VyU2VhbmNlOiBzdHJpbmdcbiAgdHlwZVZvdGU6IFR5cGVWb3RlXG4gIHNvcnQ6IFNvcnRTY3J1dGluXG4gIHRpdHJlOiBzdHJpbmdcbiAgZGVtYW5kZXVyOiBEZW1hbmRldXJcbiAgb2JqZXQ6IE9iamV0XG4gIG1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzOiBNb2RlUHVibGljYXRpb25EZXNWb3Rlc1xuICBzeW50aGVzZVZvdGU6IFN5bnRoZXNlVm90ZVxuICB2ZW50aWxhdGlvblZvdGVzOiBPcmdhbmVcbiAgbWlzZUF1UG9pbnQ/OiBNaXNlQXVQb2ludFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbWFuZGV1ciB7XG4gIHRleHRlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlzZUF1UG9pbnQge1xuICBub25Wb3RhbnRzPzogVm90YW50W11cbiAgcG91cj86IFZvdGFudFtdXG4gIGNvbnRyZT86IFZvdGFudFtdXG4gIGFic3RlbnRpb25zPzogVm90YW50W11cbiAgbm9uVm90YW50c1ZvbG9udGFpcmVzPzogVm90YW50W11cbiAgZHlzZm9uY3Rpb25uZW1lbnQ/OiBEeXNmb25jdGlvbm5lbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5c2ZvbmN0aW9ubmVtZW50IHtcbiAgbm9uVm90YW50cz86IFZvdGFudFtdXG4gIHBvdXI/OiBWb3RhbnRbXVxuICBjb250cmU/OiBWb3RhbnRbXVxuICBhYnN0ZW50aW9ucz86IFZvdGFudFtdXG4gIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IFZvdGFudFtdXG59XG5cbmV4cG9ydCBlbnVtIE1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzIHtcbiAgRGVjb21wdGVEaXNzaWRlbnRzUG9zaXRpb25Hcm91cGUgPSBcIkRlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlXCIsXG4gIERlY29tcHRlTm9taW5hdGlmID0gXCJEZWNvbXB0ZU5vbWluYXRpZlwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9iamV0IHtcbiAgbGliZWxsZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFNjcnV0aW4ge1xuICBjb2RlOiBDb2RlXG4gIGxpYmVsbGU6IExpYmVsbGVcbn1cblxuZXhwb3J0IGVudW0gQ29kZSB7XG4gIEFkb3B0w6kgPSBcImFkb3B0w6lcIixcbiAgUmVqZXTDqSA9IFwicmVqZXTDqVwiLFxufVxuXG5leHBvcnQgZW51bSBMaWJlbGxlIHtcbiAgTEFzc2VtYmzDqWVOYXRpb25hbGVBQWRvcHTDqSA9IFwibCdBc3NlbWJsw6llIG5hdGlvbmFsZSBhIGFkb3B0w6lcIixcbiAgTEFzc2VtYmzDqWVOYXRpb25hbGVOQVBhc0Fkb3B0w6kgPSBcIkwnQXNzZW1ibMOpZSBuYXRpb25hbGUgbidhIHBhcyBhZG9wdMOpXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2VWb3RlIHtcbiAgbm9tYnJlVm90YW50czogc3RyaW5nXG4gIHN1ZmZyYWdlc0V4cHJpbWVzOiBzdHJpbmdcbiAgbmJyU3VmZnJhZ2VzUmVxdWlzOiBzdHJpbmdcbiAgYW5ub25jZTogTGliZWxsZVxuICBkZWNvbXB0ZTogRGVjb21wdGVWb2l4XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVZvdGUge1xuICBjb2RlVHlwZVZvdGU6IENvZGVUeXBlVm90ZVxuICBsaWJlbGxlVHlwZVZvdGU6IExpYmVsbGVUeXBlVm90ZVxuICB0eXBlTWFqb3JpdGU6IFR5cGVNYWpvcml0ZVxufVxuXG5leHBvcnQgZW51bSBDb2RlVHlwZVZvdGUge1xuICBNb2MgPSBcIk1PQ1wiLFxuICBTYXQgPSBcIlNBVFwiLFxuICBTcG8gPSBcIlNQT1wiLFxuICBTcHMgPSBcIlNQU1wiLFxufVxuXG5leHBvcnQgZW51bSBMaWJlbGxlVHlwZVZvdGUge1xuICBNb3Rpb25EZUNlbnN1cmUgPSBcIm1vdGlvbiBkZSBjZW5zdXJlXCIsXG4gIFNjcnV0aW5QdWJsaWNPcmRpbmFpcmUgPSBcInNjcnV0aW4gcHVibGljIG9yZGluYWlyZVwiLFxuICBTY3J1dGluUHVibGljU29sZW5uZWwgPSBcInNjcnV0aW4gcHVibGljIHNvbGVubmVsXCIsXG4gIFNjcnV0aW7DgExhVHJpYnVuZSA9IFwic2NydXRpbiDDoCBsYSB0cmlidW5lXCIsXG59XG5cbmV4cG9ydCBlbnVtIFR5cGVNYWpvcml0ZSB7XG4gIE1ham9yaXTDqUFic29sdWVEZXNTdWZmcmFnZXNFeHByaW3DqXMgPSBcIm1ham9yaXTDqSBhYnNvbHVlIGRlcyBzdWZmcmFnZXMgZXhwcmltw6lzXCIsXG4gIE1ham9yaXTDqURlc01lbWJyZXNDb21wb3NhbnRMQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCIsXG4gIE1ham9yaXTDqURlc01lbWJyZXNDb21wb3NhbnRzQ29tcG9zYW50TEFzc2VtYmzDqWUgPSBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWVcIixcbiAgTWFqb3JpdMOpRGVzTWVtYnJlc0NvbXBvc2FudHNDb21wb3NhbnRMQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudHMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbmUge1xuICBvcmdhbmVSZWY6IHN0cmluZ1xuICBncm91cGVzOiBHcm91cGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZSB7XG4gIG9yZ2FuZVJlZjogc3RyaW5nXG4gIG5vbWJyZU1lbWJyZXNHcm91cGU6IHN0cmluZ1xuICB2b3RlOiBWb3RlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZSB7XG4gIHBvc2l0aW9uTWFqb3JpdGFpcmU6IFBvc2l0aW9uTWFqb3JpdGFpcmVcbiAgZGVjb21wdGVWb2l4OiBEZWNvbXB0ZVZvaXhcbiAgZGVjb21wdGVOb21pbmF0aWY6IERlY29tcHRlTm9taW5hdGlmXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb21wdGVOb21pbmF0aWYge1xuICBub25Wb3RhbnRzPzogVm90YW50W11cbiAgcG91cj86IFZvdGFudFtdXG4gIGNvbnRyZT86IFZvdGFudFtdXG4gIGFic3RlbnRpb25zPzogVm90YW50W11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWb3RhbnQge1xuICBhY3RldXJSZWY6IHN0cmluZ1xuICBtYW5kYXRSZWY6IHN0cmluZ1xuICBjYXVzZVBvc2l0aW9uVm90ZT86IENhdXNlUG9zaXRpb25Wb3RlXG4gIHBhckRlbGVnYXRpb24/OiBib29sZWFuXG59XG5cbmV4cG9ydCBlbnVtIENhdXNlUG9zaXRpb25Wb3RlIHtcbiAgTWcgPSBcIk1HXCIsXG4gIFBhbiA9IFwiUEFOXCIsXG4gIFBzZSA9IFwiUFNFXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb21wdGVWb2l4IHtcbiAgcG91cjogc3RyaW5nXG4gIGNvbnRyZTogc3RyaW5nXG4gIG5vblZvdGFudHM/OiBzdHJpbmdcbiAgYWJzdGVudGlvbnM/OiBzdHJpbmdcbiAgbm9uVm90YW50c1ZvbG9udGFpcmVzPzogc3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIFBvc2l0aW9uTWFqb3JpdGFpcmUge1xuICBBYnN0ZW50aW9uID0gXCJhYnN0ZW50aW9uXCIsXG4gIENvbnRyZSA9IFwiY29udHJlXCIsXG4gIFBvdXIgPSBcInBvdXJcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9TY3J1dGlucyhqc29uOiBzdHJpbmcpOiBTY3J1dGlucyB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcihcIlNjcnV0aW5zXCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzY3J1dGluc1RvSnNvbih2YWx1ZTogU2NydXRpbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoXCJTY3J1dGluc1wiKSksIG51bGwsIDIpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvU2NydXRpbihqc29uOiBzdHJpbmcpOiBTY3J1dGluIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiU2NydXRpblwiKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2NydXRpblRvSnNvbih2YWx1ZTogU2NydXRpbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlNjcnV0aW5cIikpLCBudWxsLCAyKVxuICB9XG59XG5cbmZ1bmN0aW9uIGludmFsaWRWYWx1ZSh0eXA6IGFueSwgdmFsOiBhbnksIGtleTogYW55ID0gXCJcIik6IG5ldmVyIHtcbiAgaWYgKGtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYEludmFsaWQgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiLiBFeHBlY3RlZCB0eXBlICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHR5cCxcbiAgICAgICl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfWAsXG4gICAgKVxuICB9XG4gIHRocm93IEVycm9yKFxuICAgIGBJbnZhbGlkIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkodmFsKX0gZm9yIHR5cGUgJHtKU09OLnN0cmluZ2lmeSh0eXApfWAsXG4gIClcbn1cblxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNvblRvSlMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNvblRvSlMgPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTXG59XG5cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzXSA9IHsga2V5OiBwLmpzb24sIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzVG9KU09OID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTlxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsOiBhbnksIHR5cDogYW55LCBnZXRQcm9wczogYW55LCBrZXk6IGFueSA9IFwiXCIpOiBhbnkge1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVVuaW9uKHR5cHM6IGFueVtdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICBjb25zdCBsID0gdHlwcy5sZW5ndGhcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdHlwID0gdHlwc1tpXVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMpXG4gICAgICB9IGNhdGNoIChfKSB7fVxuICAgIH1cbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXM6IHN0cmluZ1tdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKGNhc2VzLCB2YWwpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1BcnJheSh0eXA6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IGJlIGFuIGFycmF5IHdpdGggbm8gaW52YWxpZCBlbGVtZW50c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKFwiYXJyYXlcIiwgdmFsKVxuICAgIHJldHVybiB2YWwubWFwKChlbCkgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGUodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpXG4gICAgaWYgKGlzTmFOKGQudmFsdWVPZigpKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIkRhdGVcIiwgdmFsKVxuICAgIH1cbiAgICByZXR1cm4gZFxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtT2JqZWN0KFxuICAgIHByb3BzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSxcbiAgICBhZGRpdGlvbmFsOiBhbnksXG4gICAgdmFsOiBhbnksXG4gICk6IGFueSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIm9iamVjdFwiLCB2YWwpXG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNba2V5XVxuICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSlcbiAgICAgICAgPyB2YWxba2V5XVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmVzdWx0W3Byb3Aua2V5XSA9IHRyYW5zZm9ybSh2LCBwcm9wLnR5cCwgZ2V0UHJvcHMsIHByb3Aua2V5KVxuICAgIH0pXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmb3JtKHZhbFtrZXldLCBhZGRpdGlvbmFsLCBnZXRQcm9wcywga2V5KVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cCA9PT0gXCJhbnlcIikgcmV0dXJuIHZhbFxuICBpZiAodHlwID09PSBudWxsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIH1cbiAgLy8gaWYgKHR5cCA9PT0gZmFsc2UpIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiICYmIHR5cC5yZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIHR5cCA9IHR5cGVNYXBbdHlwLnJlZl1cbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0eXApKSByZXR1cm4gdHJhbnNmb3JtRW51bSh0eXAsIHZhbClcbiAgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdHlwLmhhc093blByb3BlcnR5KFwidW5pb25NZW1iZXJzXCIpXG4gICAgICA/IHRyYW5zZm9ybVVuaW9uKHR5cC51bmlvbk1lbWJlcnMsIHZhbClcbiAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwiYXJyYXlJdGVtc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgOiB0eXAuaGFzT3duUHJvcGVydHkoXCJwcm9wc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1PYmplY3QoZ2V0UHJvcHModHlwKSwgdHlwLmFkZGl0aW9uYWwsIHZhbClcbiAgICAgIDogaW52YWxpZFZhbHVlKHR5cCwgdmFsKVxuICB9XG4gIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gIGlmICh0eXAgPT09IERhdGUgJiYgdHlwZW9mIHZhbCAhPT0gXCJudW1iZXJcIikgcmV0dXJuIHRyYW5zZm9ybURhdGUodmFsKVxuICByZXR1cm4gdHJhbnNmb3JtUHJpbWl0aXZlKHR5cCwgdmFsKVxufVxuXG5mdW5jdGlvbiBjYXN0PFQ+KHZhbDogYW55LCB0eXA6IGFueSk6IFQge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc29uVG9KU1Byb3BzKVxufVxuXG5mdW5jdGlvbiB1bmNhc3Q8VD4odmFsOiBULCB0eXA6IGFueSk6IGFueSB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzVG9KU09OUHJvcHMpXG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgcmV0dXJuIHsgYXJyYXlJdGVtczogdHlwIH1cbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICByZXR1cm4geyB1bmlvbk1lbWJlcnM6IHR5cHMgfVxufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gIHJldHVybiB7IHByb3BzLCBhZGRpdGlvbmFsIH1cbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgcmV0dXJuIHsgcHJvcHM6IFtdLCBhZGRpdGlvbmFsIH1cbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgcmVmOiBuYW1lIH1cbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICBTY3J1dGluczogbyhcbiAgICBbeyBqc29uOiBcInNjcnV0aW5zXCIsIGpzOiBcInNjcnV0aW5zXCIsIHR5cDogYShyKFwiU2NydXRpblwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIFNjcnV0aW46IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInNjaGVtYVZlcnNpb25cIiwganM6IFwic2NoZW1hVmVyc2lvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInVpZFwiLCBqczogXCJ1aWRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibnVtZXJvXCIsIGpzOiBcIm51bWVyb1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImxlZ2lzbGF0dXJlXCIsIGpzOiBcImxlZ2lzbGF0dXJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInNlc3Npb25SZWZcIiwganM6IFwic2Vzc2lvblJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzZWFuY2VSZWZcIiwganM6IFwic2VhbmNlUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRhdGVTY3J1dGluXCIsIGpzOiBcImRhdGVTY3J1dGluXCIsIHR5cDogRGF0ZSB9LFxuICAgICAgeyBqc29uOiBcInF1YW50aWVtZUpvdXJTZWFuY2VcIiwganM6IFwicXVhbnRpZW1lSm91clNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlVm90ZVwiLCBqczogXCJ0eXBlVm90ZVwiLCB0eXA6IHIoXCJUeXBlVm90ZVwiKSB9LFxuICAgICAgeyBqc29uOiBcInNvcnRcIiwganM6IFwic29ydFwiLCB0eXA6IHIoXCJTb3J0U2NydXRpblwiKSB9LFxuICAgICAgeyBqc29uOiBcInRpdHJlXCIsIGpzOiBcInRpdHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRlbWFuZGV1clwiLCBqczogXCJkZW1hbmRldXJcIiwgdHlwOiByKFwiRGVtYW5kZXVyXCIpIH0sXG4gICAgICB7IGpzb246IFwib2JqZXRcIiwganM6IFwib2JqZXRcIiwgdHlwOiByKFwiT2JqZXRcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICBqczogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICB0eXA6IHIoXCJNb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwic3ludGhlc2VWb3RlXCIsIGpzOiBcInN5bnRoZXNlVm90ZVwiLCB0eXA6IHIoXCJTeW50aGVzZVZvdGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJ2ZW50aWxhdGlvblZvdGVzXCIsXG4gICAgICAgIGpzOiBcInZlbnRpbGF0aW9uVm90ZXNcIixcbiAgICAgICAgdHlwOiByKFwiT3JnYW5lXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJtaXNlQXVQb2ludFwiLFxuICAgICAgICBqczogXCJtaXNlQXVQb2ludFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiTWlzZUF1UG9pbnRcIikpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBEZW1hbmRldXI6IG8oW3sganNvbjogXCJ0ZXh0ZVwiLCBqczogXCJ0ZXh0ZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9XSwgZmFsc2UpLFxuICBNaXNlQXVQb2ludDogbyhcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibm9uVm90YW50c1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb3VyXCIsXG4gICAgICAgIGpzOiBcInBvdXJcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNvbnRyZVwiLFxuICAgICAgICBqczogXCJjb250cmVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIGpzOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAganM6IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJkeXNmb25jdGlvbm5lbWVudFwiLFxuICAgICAgICBqczogXCJkeXNmb25jdGlvbm5lbWVudFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiRHlzZm9uY3Rpb25uZW1lbnRcIikpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBEeXNmb25jdGlvbm5lbWVudDogbyhcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibm9uVm90YW50c1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb3VyXCIsXG4gICAgICAgIGpzOiBcInBvdXJcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNvbnRyZVwiLFxuICAgICAgICBqczogXCJjb250cmVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIGpzOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAganM6IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBPYmpldDogbyhbeyBqc29uOiBcImxpYmVsbGVcIiwganM6IFwibGliZWxsZVwiLCB0eXA6IFwiXCIgfV0sIGZhbHNlKSxcbiAgU29ydFNjcnV0aW46IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImNvZGVcIiwganM6IFwiY29kZVwiLCB0eXA6IHIoXCJDb2RlXCIpIH0sXG4gICAgICB7IGpzb246IFwibGliZWxsZVwiLCBqczogXCJsaWJlbGxlXCIsIHR5cDogcihcIkxpYmVsbGVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBTeW50aGVzZVZvdGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm5vbWJyZVZvdGFudHNcIiwganM6IFwibm9tYnJlVm90YW50c1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzdWZmcmFnZXNFeHByaW1lc1wiLCBqczogXCJzdWZmcmFnZXNFeHByaW1lc1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJuYnJTdWZmcmFnZXNSZXF1aXNcIiwganM6IFwibmJyU3VmZnJhZ2VzUmVxdWlzXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImFubm9uY2VcIiwganM6IFwiYW5ub25jZVwiLCB0eXA6IHIoXCJMaWJlbGxlXCIpIH0sXG4gICAgICB7IGpzb246IFwiZGVjb21wdGVcIiwganM6IFwiZGVjb21wdGVcIiwgdHlwOiByKFwiRGVjb21wdGVWb2l4XCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVHlwZVZvdGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImNvZGVUeXBlVm90ZVwiLCBqczogXCJjb2RlVHlwZVZvdGVcIiwgdHlwOiByKFwiQ29kZVR5cGVWb3RlXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibGliZWxsZVR5cGVWb3RlXCIsXG4gICAgICAgIGpzOiBcImxpYmVsbGVUeXBlVm90ZVwiLFxuICAgICAgICB0eXA6IHIoXCJMaWJlbGxlVHlwZVZvdGVcIiksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcInR5cGVNYWpvcml0ZVwiLCBqczogXCJ0eXBlTWFqb3JpdGVcIiwgdHlwOiByKFwiVHlwZU1ham9yaXRlXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgT3JnYW5lOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImdyb3VwZXNcIiwganM6IFwiZ3JvdXBlc1wiLCB0eXA6IGEocihcIkdyb3VwZVwiKSkgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBHcm91cGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm9yZ2FuZVJlZlwiLCBqczogXCJvcmdhbmVSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibm9tYnJlTWVtYnJlc0dyb3VwZVwiLCBqczogXCJub21icmVNZW1icmVzR3JvdXBlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInZvdGVcIiwganM6IFwidm90ZVwiLCB0eXA6IHIoXCJWb3RlXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVm90ZTogbyhcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGpzb246IFwicG9zaXRpb25NYWpvcml0YWlyZVwiLFxuICAgICAgICBqczogXCJwb3NpdGlvbk1ham9yaXRhaXJlXCIsXG4gICAgICAgIHR5cDogcihcIlBvc2l0aW9uTWFqb3JpdGFpcmVcIiksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcImRlY29tcHRlVm9peFwiLCBqczogXCJkZWNvbXB0ZVZvaXhcIiwgdHlwOiByKFwiRGVjb21wdGVWb2l4XCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGVjb21wdGVOb21pbmF0aWZcIixcbiAgICAgICAganM6IFwiZGVjb21wdGVOb21pbmF0aWZcIixcbiAgICAgICAgdHlwOiByKFwiRGVjb21wdGVOb21pbmF0aWZcIiksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIERlY29tcHRlTm9taW5hdGlmOiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBvdXJcIixcbiAgICAgICAganM6IFwicG91clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY29udHJlXCIsXG4gICAgICAgIGpzOiBcImNvbnRyZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAganM6IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFZvdGFudDogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiYWN0ZXVyUmVmXCIsIGpzOiBcImFjdGV1clJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJtYW5kYXRSZWZcIiwganM6IFwibWFuZGF0UmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNhdXNlUG9zaXRpb25Wb3RlXCIsXG4gICAgICAgIGpzOiBcImNhdXNlUG9zaXRpb25Wb3RlXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJDYXVzZVBvc2l0aW9uVm90ZVwiKSksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcInBhckRlbGVnYXRpb25cIiwganM6IFwicGFyRGVsZWdhdGlvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBmYWxzZSkgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBEZWNvbXB0ZVZvaXg6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInBvdXJcIiwganM6IFwicG91clwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJjb250cmVcIiwganM6IFwiY29udHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNcIiwganM6IFwibm9uVm90YW50c1wiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImFic3RlbnRpb25zXCIsIGpzOiBcImFic3RlbnRpb25zXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgTW9kZVB1YmxpY2F0aW9uRGVzVm90ZXM6IFtcbiAgICBcIkRlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlXCIsXG4gICAgXCJEZWNvbXB0ZU5vbWluYXRpZlwiLFxuICBdLFxuICBDb2RlOiBbXCJhZG9wdMOpXCIsIFwicmVqZXTDqVwiXSxcbiAgTGliZWxsZTogW1xuICAgIFwibCdBc3NlbWJsw6llIG5hdGlvbmFsZSBhIGFkb3B0w6lcIixcbiAgICBcIkwnQXNzZW1ibMOpZSBuYXRpb25hbGUgbidhIHBhcyBhZG9wdMOpXCIsXG4gIF0sXG4gIENvZGVUeXBlVm90ZTogW1wiTU9DXCIsIFwiU0FUXCIsIFwiU1BPXCIsIFwiU1BTXCJdLFxuICBMaWJlbGxlVHlwZVZvdGU6IFtcbiAgICBcIm1vdGlvbiBkZSBjZW5zdXJlXCIsXG4gICAgXCJzY3J1dGluIHB1YmxpYyBvcmRpbmFpcmVcIixcbiAgICBcInNjcnV0aW4gcHVibGljIHNvbGVubmVsXCIsXG4gICAgXCJzY3J1dGluIMOgIGxhIHRyaWJ1bmVcIixcbiAgXSxcbiAgVHlwZU1ham9yaXRlOiBbXG4gICAgXCJtYWpvcml0w6kgYWJzb2x1ZSBkZXMgc3VmZnJhZ2VzIGV4cHJpbcOpc1wiLFxuICAgIFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCIsXG4gICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llXCIsXG4gICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiLFxuICBdLFxuICBDYXVzZVBvc2l0aW9uVm90ZTogW1wiTUdcIiwgXCJQQU5cIiwgXCJQU0VcIl0sXG4gIFBvc2l0aW9uTWFqb3JpdGFpcmU6IFtcImFic3RlbnRpb25cIiwgXCJjb250cmVcIiwgXCJwb3VyXCJdLFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZ0RBLFdBQVlBLHVCQUFaOztXQUFZQSx1QjtFQUFBQSx1QjtFQUFBQSx1QjtHQUFB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
481
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlUHVibGljYXRpb25EZXNWb3RlcyIsIkNvZGUiLCJMaWJlbGxlIiwiQ29kZVR5cGVWb3RlIiwiTGliZWxsZVR5cGVWb3RlIiwiVHlwZU1ham9yaXRlIiwiQ2F1c2VQb3NpdGlvblZvdGUiLCJQb3NpdGlvbk1ham9yaXRhaXJlIiwiQ29udmVydCIsInRvU2NydXRpbnMiLCJqc29uIiwiY2FzdCIsIkpTT04iLCJwYXJzZSIsInIiLCJzY3J1dGluc1RvSnNvbiIsInZhbHVlIiwic3RyaW5naWZ5IiwidW5jYXN0IiwidG9TY3J1dGluIiwic2NydXRpblRvSnNvbiIsImludmFsaWRWYWx1ZSIsInR5cCIsInZhbCIsImtleSIsIkVycm9yIiwianNvblRvSlNQcm9wcyIsImpzb25Ub0pTIiwidW5kZWZpbmVkIiwibWFwIiwicHJvcHMiLCJmb3JFYWNoIiwicCIsImpzIiwianNUb0pTT05Qcm9wcyIsImpzVG9KU09OIiwidHJhbnNmb3JtIiwiZ2V0UHJvcHMiLCJ0cmFuc2Zvcm1QcmltaXRpdmUiLCJ0cmFuc2Zvcm1VbmlvbiIsInR5cHMiLCJsIiwibGVuZ3RoIiwiaSIsIl8iLCJ0cmFuc2Zvcm1FbnVtIiwiY2FzZXMiLCJpbmRleE9mIiwidHJhbnNmb3JtQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJlbCIsInRyYW5zZm9ybURhdGUiLCJkIiwiRGF0ZSIsImlzTmFOIiwidmFsdWVPZiIsInRyYW5zZm9ybU9iamVjdCIsImFkZGl0aW9uYWwiLCJyZXN1bHQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcCIsInYiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJyZWYiLCJ0eXBlTWFwIiwidW5pb25NZW1iZXJzIiwiYXJyYXlJdGVtcyIsImEiLCJ1IiwibyIsIm5hbWUiLCJTY3J1dGlucyIsIlNjcnV0aW4iLCJEZW1hbmRldXIiLCJNaXNlQXVQb2ludCIsIkR5c2ZvbmN0aW9ubmVtZW50IiwiT2JqZXQiLCJTb3J0U2NydXRpbiIsIlN5bnRoZXNlVm90ZSIsIlR5cGVWb3RlIiwiT3JnYW5lIiwiR3JvdXBlIiwiVm90ZSIsIkRlY29tcHRlTm9taW5hdGlmIiwiVm90YW50IiwiRGVjb21wdGVWb2l4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3NjcnV0aW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRvIHBhcnNlIHRoaXMgZGF0YTpcbi8vXG4vLyAgIGltcG9ydCB7IENvbnZlcnQsIFNjcnV0aW5zIH0gZnJvbSBcIi4vZmlsZVwiO1xuLy9cbi8vICAgY29uc3Qgc2NydXRpbnMgPSBDb252ZXJ0LnRvU2NydXRpbnMoanNvbik7XG4vL1xuLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIEpTT04gZG9lc24ndFxuLy8gbWF0Y2ggdGhlIGV4cGVjdGVkIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgSlNPTiBpcyB2YWxpZC5cblxuZXhwb3J0IGludGVyZmFjZSBTY3J1dGlucyB7XG4gIHNjcnV0aW5zOiBTY3J1dGluW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3J1dGluIHtcbiAgc2NoZW1hVmVyc2lvbj86IHN0cmluZ1xuICB1aWQ6IHN0cmluZ1xuICBudW1lcm86IHN0cmluZ1xuICBvcmdhbmVSZWY6IHN0cmluZ1xuICBsZWdpc2xhdHVyZTogc3RyaW5nXG4gIHNlc3Npb25SZWY6IHN0cmluZ1xuICBzZWFuY2VSZWY6IHN0cmluZ1xuICBkYXRlU2NydXRpbjogRGF0ZVxuICBxdWFudGllbWVKb3VyU2VhbmNlOiBzdHJpbmdcbiAgdHlwZVZvdGU6IFR5cGVWb3RlXG4gIHNvcnQ6IFNvcnRTY3J1dGluXG4gIHRpdHJlOiBzdHJpbmdcbiAgZGVtYW5kZXVyOiBEZW1hbmRldXJcbiAgb2JqZXQ6IE9iamV0XG4gIG1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzOiBNb2RlUHVibGljYXRpb25EZXNWb3Rlc1xuICBzeW50aGVzZVZvdGU6IFN5bnRoZXNlVm90ZVxuICB2ZW50aWxhdGlvblZvdGVzOiBPcmdhbmVcbiAgbWlzZUF1UG9pbnQ/OiBNaXNlQXVQb2ludFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbWFuZGV1ciB7XG4gIHRleHRlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlzZUF1UG9pbnQge1xuICBub25Wb3RhbnRzPzogVm90YW50W11cbiAgcG91cj86IFZvdGFudFtdXG4gIGNvbnRyZT86IFZvdGFudFtdXG4gIGFic3RlbnRpb25zPzogVm90YW50W11cbiAgbm9uVm90YW50c1ZvbG9udGFpcmVzPzogVm90YW50W11cbiAgZHlzZm9uY3Rpb25uZW1lbnQ/OiBEeXNmb25jdGlvbm5lbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5c2ZvbmN0aW9ubmVtZW50IHtcbiAgbm9uVm90YW50cz86IFZvdGFudFtdXG4gIHBvdXI/OiBWb3RhbnRbXVxuICBjb250cmU/OiBWb3RhbnRbXVxuICBhYnN0ZW50aW9ucz86IFZvdGFudFtdXG4gIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IFZvdGFudFtdXG59XG5cbmV4cG9ydCBlbnVtIE1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzIHtcbiAgRGVjb21wdGVEaXNzaWRlbnRzUG9zaXRpb25Hcm91cGUgPSBcIkRlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlXCIsXG4gIERlY29tcHRlTm9taW5hdGlmID0gXCJEZWNvbXB0ZU5vbWluYXRpZlwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9iamV0IHtcbiAgbGliZWxsZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFNjcnV0aW4ge1xuICBjb2RlOiBDb2RlXG4gIGxpYmVsbGU6IExpYmVsbGVcbn1cblxuZXhwb3J0IGVudW0gQ29kZSB7XG4gIEFkb3B0w6kgPSBcImFkb3B0w6lcIixcbiAgUmVqZXTDqSA9IFwicmVqZXTDqVwiLFxufVxuXG5leHBvcnQgZW51bSBMaWJlbGxlIHtcbiAgTEFzc2VtYmzDqWVOYXRpb25hbGVBQWRvcHTDqSA9IFwibCdBc3NlbWJsw6llIG5hdGlvbmFsZSBhIGFkb3B0w6lcIixcbiAgTEFzc2VtYmzDqWVOYXRpb25hbGVOQVBhc0Fkb3B0w6kgPSBcIkwnQXNzZW1ibMOpZSBuYXRpb25hbGUgbidhIHBhcyBhZG9wdMOpXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2VWb3RlIHtcbiAgbm9tYnJlVm90YW50czogc3RyaW5nXG4gIHN1ZmZyYWdlc0V4cHJpbWVzOiBzdHJpbmdcbiAgbmJyU3VmZnJhZ2VzUmVxdWlzOiBzdHJpbmdcbiAgYW5ub25jZTogTGliZWxsZVxuICBkZWNvbXB0ZTogRGVjb21wdGVWb2l4XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVZvdGUge1xuICBjb2RlVHlwZVZvdGU6IENvZGVUeXBlVm90ZVxuICBsaWJlbGxlVHlwZVZvdGU6IExpYmVsbGVUeXBlVm90ZVxuICB0eXBlTWFqb3JpdGU6IFR5cGVNYWpvcml0ZVxufVxuXG5leHBvcnQgZW51bSBDb2RlVHlwZVZvdGUge1xuICBNb2MgPSBcIk1PQ1wiLFxuICBTYXQgPSBcIlNBVFwiLFxuICBTcG8gPSBcIlNQT1wiLFxuICBTcHMgPSBcIlNQU1wiLFxufVxuXG5leHBvcnQgZW51bSBMaWJlbGxlVHlwZVZvdGUge1xuICBNb3Rpb25EZUNlbnN1cmUgPSBcIm1vdGlvbiBkZSBjZW5zdXJlXCIsXG4gIFNjcnV0aW5QdWJsaWNPcmRpbmFpcmUgPSBcInNjcnV0aW4gcHVibGljIG9yZGluYWlyZVwiLFxuICBTY3J1dGluUHVibGljU29sZW5uZWwgPSBcInNjcnV0aW4gcHVibGljIHNvbGVubmVsXCIsXG4gIFNjcnV0aW7DgExhVHJpYnVuZSA9IFwic2NydXRpbiDDoCBsYSB0cmlidW5lXCIsXG59XG5cbmV4cG9ydCBlbnVtIFR5cGVNYWpvcml0ZSB7XG4gIE1ham9yaXTDqUFic29sdWVEZXNTdWZmcmFnZXNFeHByaW3DqXMgPSBcIm1ham9yaXTDqSBhYnNvbHVlIGRlcyBzdWZmcmFnZXMgZXhwcmltw6lzXCIsXG4gIE1ham9yaXTDqURlc01lbWJyZXNDb21wb3NhbnRMQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCIsXG4gIE1ham9yaXTDqURlc01lbWJyZXNDb21wb3NhbnRzQ29tcG9zYW50TEFzc2VtYmzDqWUgPSBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWVcIixcbiAgTWFqb3JpdMOpRGVzTWVtYnJlc0NvbXBvc2FudHNDb21wb3NhbnRMQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudHMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbmUge1xuICBvcmdhbmVSZWY6IHN0cmluZ1xuICBncm91cGVzOiBHcm91cGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZSB7XG4gIG9yZ2FuZVJlZjogc3RyaW5nXG4gIG5vbWJyZU1lbWJyZXNHcm91cGU6IHN0cmluZ1xuICB2b3RlOiBWb3RlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZSB7XG4gIHBvc2l0aW9uTWFqb3JpdGFpcmU6IFBvc2l0aW9uTWFqb3JpdGFpcmVcbiAgZGVjb21wdGVWb2l4OiBEZWNvbXB0ZVZvaXhcbiAgZGVjb21wdGVOb21pbmF0aWY6IERlY29tcHRlTm9taW5hdGlmXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb21wdGVOb21pbmF0aWYge1xuICBub25Wb3RhbnRzPzogVm90YW50W11cbiAgcG91cj86IFZvdGFudFtdXG4gIGNvbnRyZT86IFZvdGFudFtdXG4gIGFic3RlbnRpb25zPzogVm90YW50W11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWb3RhbnQge1xuICBhY3RldXJSZWY6IHN0cmluZ1xuICBtYW5kYXRSZWY6IHN0cmluZ1xuICBjYXVzZVBvc2l0aW9uVm90ZT86IENhdXNlUG9zaXRpb25Wb3RlXG4gIHBhckRlbGVnYXRpb24/OiBib29sZWFuXG59XG5cbmV4cG9ydCBlbnVtIENhdXNlUG9zaXRpb25Wb3RlIHtcbiAgTWcgPSBcIk1HXCIsXG4gIFBhbiA9IFwiUEFOXCIsXG4gIFBzZSA9IFwiUFNFXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb21wdGVWb2l4IHtcbiAgcG91cjogc3RyaW5nXG4gIGNvbnRyZTogc3RyaW5nXG4gIG5vblZvdGFudHM/OiBzdHJpbmdcbiAgYWJzdGVudGlvbnM/OiBzdHJpbmdcbiAgbm9uVm90YW50c1ZvbG9udGFpcmVzPzogc3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIFBvc2l0aW9uTWFqb3JpdGFpcmUge1xuICBBYnN0ZW50aW9uID0gXCJhYnN0ZW50aW9uXCIsXG4gIENvbnRyZSA9IFwiY29udHJlXCIsXG4gIFBvdXIgPSBcInBvdXJcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9TY3J1dGlucyhqc29uOiBzdHJpbmcpOiBTY3J1dGlucyB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcihcIlNjcnV0aW5zXCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzY3J1dGluc1RvSnNvbih2YWx1ZTogU2NydXRpbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoXCJTY3J1dGluc1wiKSksIG51bGwsIDIpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvU2NydXRpbihqc29uOiBzdHJpbmcpOiBTY3J1dGluIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiU2NydXRpblwiKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2NydXRpblRvSnNvbih2YWx1ZTogU2NydXRpbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlNjcnV0aW5cIikpLCBudWxsLCAyKVxuICB9XG59XG5cbmZ1bmN0aW9uIGludmFsaWRWYWx1ZSh0eXA6IGFueSwgdmFsOiBhbnksIGtleTogYW55ID0gXCJcIik6IG5ldmVyIHtcbiAgaWYgKGtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYEludmFsaWQgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiLiBFeHBlY3RlZCB0eXBlICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHR5cCxcbiAgICAgICl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfWAsXG4gICAgKVxuICB9XG4gIHRocm93IEVycm9yKFxuICAgIGBJbnZhbGlkIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkodmFsKX0gZm9yIHR5cGUgJHtKU09OLnN0cmluZ2lmeSh0eXApfWAsXG4gIClcbn1cblxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNvblRvSlMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNvblRvSlMgPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTXG59XG5cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzXSA9IHsga2V5OiBwLmpzb24sIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzVG9KU09OID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTlxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsOiBhbnksIHR5cDogYW55LCBnZXRQcm9wczogYW55LCBrZXk6IGFueSA9IFwiXCIpOiBhbnkge1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVVuaW9uKHR5cHM6IGFueVtdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICBjb25zdCBsID0gdHlwcy5sZW5ndGhcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdHlwID0gdHlwc1tpXVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMpXG4gICAgICB9IGNhdGNoIChfKSB7fVxuICAgIH1cbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXM6IHN0cmluZ1tdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKGNhc2VzLCB2YWwpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1BcnJheSh0eXA6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IGJlIGFuIGFycmF5IHdpdGggbm8gaW52YWxpZCBlbGVtZW50c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKFwiYXJyYXlcIiwgdmFsKVxuICAgIHJldHVybiB2YWwubWFwKChlbCkgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGUodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpXG4gICAgaWYgKGlzTmFOKGQudmFsdWVPZigpKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIkRhdGVcIiwgdmFsKVxuICAgIH1cbiAgICByZXR1cm4gZFxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtT2JqZWN0KFxuICAgIHByb3BzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSxcbiAgICBhZGRpdGlvbmFsOiBhbnksXG4gICAgdmFsOiBhbnksXG4gICk6IGFueSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIm9iamVjdFwiLCB2YWwpXG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNba2V5XVxuICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSlcbiAgICAgICAgPyB2YWxba2V5XVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmVzdWx0W3Byb3Aua2V5XSA9IHRyYW5zZm9ybSh2LCBwcm9wLnR5cCwgZ2V0UHJvcHMsIHByb3Aua2V5KVxuICAgIH0pXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmb3JtKHZhbFtrZXldLCBhZGRpdGlvbmFsLCBnZXRQcm9wcywga2V5KVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cCA9PT0gXCJhbnlcIikgcmV0dXJuIHZhbFxuICBpZiAodHlwID09PSBudWxsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIH1cbiAgLy8gaWYgKHR5cCA9PT0gZmFsc2UpIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiICYmIHR5cC5yZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIHR5cCA9IHR5cGVNYXBbdHlwLnJlZl1cbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0eXApKSByZXR1cm4gdHJhbnNmb3JtRW51bSh0eXAsIHZhbClcbiAgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdHlwLmhhc093blByb3BlcnR5KFwidW5pb25NZW1iZXJzXCIpXG4gICAgICA/IHRyYW5zZm9ybVVuaW9uKHR5cC51bmlvbk1lbWJlcnMsIHZhbClcbiAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwiYXJyYXlJdGVtc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgOiB0eXAuaGFzT3duUHJvcGVydHkoXCJwcm9wc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1PYmplY3QoZ2V0UHJvcHModHlwKSwgdHlwLmFkZGl0aW9uYWwsIHZhbClcbiAgICAgIDogaW52YWxpZFZhbHVlKHR5cCwgdmFsKVxuICB9XG4gIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gIGlmICh0eXAgPT09IERhdGUgJiYgdHlwZW9mIHZhbCAhPT0gXCJudW1iZXJcIikgcmV0dXJuIHRyYW5zZm9ybURhdGUodmFsKVxuICByZXR1cm4gdHJhbnNmb3JtUHJpbWl0aXZlKHR5cCwgdmFsKVxufVxuXG5mdW5jdGlvbiBjYXN0PFQ+KHZhbDogYW55LCB0eXA6IGFueSk6IFQge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc29uVG9KU1Byb3BzKVxufVxuXG5mdW5jdGlvbiB1bmNhc3Q8VD4odmFsOiBULCB0eXA6IGFueSk6IGFueSB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzVG9KU09OUHJvcHMpXG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgcmV0dXJuIHsgYXJyYXlJdGVtczogdHlwIH1cbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICByZXR1cm4geyB1bmlvbk1lbWJlcnM6IHR5cHMgfVxufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gIHJldHVybiB7IHByb3BzLCBhZGRpdGlvbmFsIH1cbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgcmV0dXJuIHsgcHJvcHM6IFtdLCBhZGRpdGlvbmFsIH1cbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgcmVmOiBuYW1lIH1cbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICBTY3J1dGluczogbyhcbiAgICBbeyBqc29uOiBcInNjcnV0aW5zXCIsIGpzOiBcInNjcnV0aW5zXCIsIHR5cDogYShyKFwiU2NydXRpblwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIFNjcnV0aW46IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInNjaGVtYVZlcnNpb25cIiwganM6IFwic2NoZW1hVmVyc2lvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInVpZFwiLCBqczogXCJ1aWRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibnVtZXJvXCIsIGpzOiBcIm51bWVyb1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImxlZ2lzbGF0dXJlXCIsIGpzOiBcImxlZ2lzbGF0dXJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInNlc3Npb25SZWZcIiwganM6IFwic2Vzc2lvblJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzZWFuY2VSZWZcIiwganM6IFwic2VhbmNlUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRhdGVTY3J1dGluXCIsIGpzOiBcImRhdGVTY3J1dGluXCIsIHR5cDogRGF0ZSB9LFxuICAgICAgeyBqc29uOiBcInF1YW50aWVtZUpvdXJTZWFuY2VcIiwganM6IFwicXVhbnRpZW1lSm91clNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlVm90ZVwiLCBqczogXCJ0eXBlVm90ZVwiLCB0eXA6IHIoXCJUeXBlVm90ZVwiKSB9LFxuICAgICAgeyBqc29uOiBcInNvcnRcIiwganM6IFwic29ydFwiLCB0eXA6IHIoXCJTb3J0U2NydXRpblwiKSB9LFxuICAgICAgeyBqc29uOiBcInRpdHJlXCIsIGpzOiBcInRpdHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRlbWFuZGV1clwiLCBqczogXCJkZW1hbmRldXJcIiwgdHlwOiByKFwiRGVtYW5kZXVyXCIpIH0sXG4gICAgICB7IGpzb246IFwib2JqZXRcIiwganM6IFwib2JqZXRcIiwgdHlwOiByKFwiT2JqZXRcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICBqczogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICB0eXA6IHIoXCJNb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwic3ludGhlc2VWb3RlXCIsIGpzOiBcInN5bnRoZXNlVm90ZVwiLCB0eXA6IHIoXCJTeW50aGVzZVZvdGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJ2ZW50aWxhdGlvblZvdGVzXCIsXG4gICAgICAgIGpzOiBcInZlbnRpbGF0aW9uVm90ZXNcIixcbiAgICAgICAgdHlwOiByKFwiT3JnYW5lXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJtaXNlQXVQb2ludFwiLFxuICAgICAgICBqczogXCJtaXNlQXVQb2ludFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiTWlzZUF1UG9pbnRcIikpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBEZW1hbmRldXI6IG8oW3sganNvbjogXCJ0ZXh0ZVwiLCBqczogXCJ0ZXh0ZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9XSwgZmFsc2UpLFxuICBNaXNlQXVQb2ludDogbyhcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibm9uVm90YW50c1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb3VyXCIsXG4gICAgICAgIGpzOiBcInBvdXJcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNvbnRyZVwiLFxuICAgICAgICBqczogXCJjb250cmVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIGpzOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAganM6IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJkeXNmb25jdGlvbm5lbWVudFwiLFxuICAgICAgICBqczogXCJkeXNmb25jdGlvbm5lbWVudFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiRHlzZm9uY3Rpb25uZW1lbnRcIikpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBEeXNmb25jdGlvbm5lbWVudDogbyhcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibm9uVm90YW50c1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb3VyXCIsXG4gICAgICAgIGpzOiBcInBvdXJcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNvbnRyZVwiLFxuICAgICAgICBqczogXCJjb250cmVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIGpzOiBcImFic3RlbnRpb25zXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAganM6IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBPYmpldDogbyhbeyBqc29uOiBcImxpYmVsbGVcIiwganM6IFwibGliZWxsZVwiLCB0eXA6IFwiXCIgfV0sIGZhbHNlKSxcbiAgU29ydFNjcnV0aW46IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImNvZGVcIiwganM6IFwiY29kZVwiLCB0eXA6IHIoXCJDb2RlXCIpIH0sXG4gICAgICB7IGpzb246IFwibGliZWxsZVwiLCBqczogXCJsaWJlbGxlXCIsIHR5cDogcihcIkxpYmVsbGVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBTeW50aGVzZVZvdGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm5vbWJyZVZvdGFudHNcIiwganM6IFwibm9tYnJlVm90YW50c1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzdWZmcmFnZXNFeHByaW1lc1wiLCBqczogXCJzdWZmcmFnZXNFeHByaW1lc1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJuYnJTdWZmcmFnZXNSZXF1aXNcIiwganM6IFwibmJyU3VmZnJhZ2VzUmVxdWlzXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImFubm9uY2VcIiwganM6IFwiYW5ub25jZVwiLCB0eXA6IHIoXCJMaWJlbGxlXCIpIH0sXG4gICAgICB7IGpzb246IFwiZGVjb21wdGVcIiwganM6IFwiZGVjb21wdGVcIiwgdHlwOiByKFwiRGVjb21wdGVWb2l4XCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVHlwZVZvdGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImNvZGVUeXBlVm90ZVwiLCBqczogXCJjb2RlVHlwZVZvdGVcIiwgdHlwOiByKFwiQ29kZVR5cGVWb3RlXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibGliZWxsZVR5cGVWb3RlXCIsXG4gICAgICAgIGpzOiBcImxpYmVsbGVUeXBlVm90ZVwiLFxuICAgICAgICB0eXA6IHIoXCJMaWJlbGxlVHlwZVZvdGVcIiksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcInR5cGVNYWpvcml0ZVwiLCBqczogXCJ0eXBlTWFqb3JpdGVcIiwgdHlwOiByKFwiVHlwZU1ham9yaXRlXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgT3JnYW5lOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImdyb3VwZXNcIiwganM6IFwiZ3JvdXBlc1wiLCB0eXA6IGEocihcIkdyb3VwZVwiKSkgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBHcm91cGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm9yZ2FuZVJlZlwiLCBqczogXCJvcmdhbmVSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibm9tYnJlTWVtYnJlc0dyb3VwZVwiLCBqczogXCJub21icmVNZW1icmVzR3JvdXBlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInZvdGVcIiwganM6IFwidm90ZVwiLCB0eXA6IHIoXCJWb3RlXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVm90ZTogbyhcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGpzb246IFwicG9zaXRpb25NYWpvcml0YWlyZVwiLFxuICAgICAgICBqczogXCJwb3NpdGlvbk1ham9yaXRhaXJlXCIsXG4gICAgICAgIHR5cDogcihcIlBvc2l0aW9uTWFqb3JpdGFpcmVcIiksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcImRlY29tcHRlVm9peFwiLCBqczogXCJkZWNvbXB0ZVZvaXhcIiwgdHlwOiByKFwiRGVjb21wdGVWb2l4XCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiZGVjb21wdGVOb21pbmF0aWZcIixcbiAgICAgICAganM6IFwiZGVjb21wdGVOb21pbmF0aWZcIixcbiAgICAgICAgdHlwOiByKFwiRGVjb21wdGVOb21pbmF0aWZcIiksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIERlY29tcHRlTm9taW5hdGlmOiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBvdXJcIixcbiAgICAgICAganM6IFwicG91clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY29udHJlXCIsXG4gICAgICAgIGpzOiBcImNvbnRyZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAganM6IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFZvdGFudDogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiYWN0ZXVyUmVmXCIsIGpzOiBcImFjdGV1clJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJtYW5kYXRSZWZcIiwganM6IFwibWFuZGF0UmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImNhdXNlUG9zaXRpb25Wb3RlXCIsXG4gICAgICAgIGpzOiBcImNhdXNlUG9zaXRpb25Wb3RlXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJDYXVzZVBvc2l0aW9uVm90ZVwiKSksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcInBhckRlbGVnYXRpb25cIiwganM6IFwicGFyRGVsZWdhdGlvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBmYWxzZSkgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBEZWNvbXB0ZVZvaXg6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInBvdXJcIiwganM6IFwicG91clwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJjb250cmVcIiwganM6IFwiY29udHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm5vblZvdGFudHNcIiwganM6IFwibm9uVm90YW50c1wiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImFic3RlbnRpb25zXCIsIGpzOiBcImFic3RlbnRpb25zXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibm9uVm90YW50c1ZvbG9udGFpcmVzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgTW9kZVB1YmxpY2F0aW9uRGVzVm90ZXM6IFtcbiAgICBcIkRlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlXCIsXG4gICAgXCJEZWNvbXB0ZU5vbWluYXRpZlwiLFxuICBdLFxuICBDb2RlOiBbXCJhZG9wdMOpXCIsIFwicmVqZXTDqVwiXSxcbiAgTGliZWxsZTogW1xuICAgIFwibCdBc3NlbWJsw6llIG5hdGlvbmFsZSBhIGFkb3B0w6lcIixcbiAgICBcIkwnQXNzZW1ibMOpZSBuYXRpb25hbGUgbidhIHBhcyBhZG9wdMOpXCIsXG4gIF0sXG4gIENvZGVUeXBlVm90ZTogW1wiTU9DXCIsIFwiU0FUXCIsIFwiU1BPXCIsIFwiU1BTXCJdLFxuICBMaWJlbGxlVHlwZVZvdGU6IFtcbiAgICBcIm1vdGlvbiBkZSBjZW5zdXJlXCIsXG4gICAgXCJzY3J1dGluIHB1YmxpYyBvcmRpbmFpcmVcIixcbiAgICBcInNjcnV0aW4gcHVibGljIHNvbGVubmVsXCIsXG4gICAgXCJzY3J1dGluIMOgIGxhIHRyaWJ1bmVcIixcbiAgXSxcbiAgVHlwZU1ham9yaXRlOiBbXG4gICAgXCJtYWpvcml0w6kgYWJzb2x1ZSBkZXMgc3VmZnJhZ2VzIGV4cHJpbcOpc1wiLFxuICAgIFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCIsXG4gICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llXCIsXG4gICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiLFxuICBdLFxuICBDYXVzZVBvc2l0aW9uVm90ZTogW1wiTUdcIiwgXCJQQU5cIiwgXCJQU0VcIl0sXG4gIFBvc2l0aW9uTWFqb3JpdGFpcmU6IFtcImFic3RlbnRpb25cIiwgXCJjb250cmVcIiwgXCJwb3VyXCJdLFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWdEQSxXQUFZQSx1QkFBdUI7QUFHbEMsV0FIV0EsdUJBQXVCO0VBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QjtBQUFBLEdBQXZCQSx1QkFBdUIsS0FBdkJBLHVCQUF1QjtBQWNuQyxXQUFZQyxJQUFJO0FBR2YsV0FIV0EsSUFBSTtFQUFKQSxJQUFJO0VBQUpBLElBQUk7QUFBQSxHQUFKQSxJQUFJLEtBQUpBLElBQUk7QUFLaEIsV0FBWUMsT0FBTztBQUdsQixXQUhXQSxPQUFPO0VBQVBBLE9BQU87RUFBUEEsT0FBTztBQUFBLEdBQVBBLE9BQU8sS0FBUEEsT0FBTztBQW1CbkIsV0FBWUMsWUFBWTtBQUt2QixXQUxXQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7QUFBQSxHQUFaQSxZQUFZLEtBQVpBLFlBQVk7QUFPeEIsV0FBWUMsZUFBZTtBQUsxQixXQUxXQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7QUFBQSxHQUFmQSxlQUFlLEtBQWZBLGVBQWU7QUFPM0IsV0FBWUMsWUFBWTtBQUt2QixXQUxXQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7QUFBQSxHQUFaQSxZQUFZLEtBQVpBLFlBQVk7QUFzQ3hCLFdBQVlDLGlCQUFpQjtBQUk1QixXQUpXQSxpQkFBaUI7RUFBakJBLGlCQUFpQjtFQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUI7QUFBQSxHQUFqQkEsaUJBQWlCLEtBQWpCQSxpQkFBaUI7QUFjN0IsV0FBWUMsbUJBQW1COztBQU0vQjtBQUNBO0FBQUEsV0FQWUEsbUJBQW1CO0VBQW5CQSxtQkFBbUI7RUFBbkJBLG1CQUFtQjtFQUFuQkEsbUJBQW1CO0FBQUEsR0FBbkJBLG1CQUFtQixLQUFuQkEsbUJBQW1CO0FBUS9CLE9BQU8sTUFBTUMsT0FBTyxDQUFDO0VBQ25CLE9BQWNDLFVBQVUsQ0FBQ0MsSUFBWSxFQUFZO0lBQy9DLE9BQU9DLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUNILElBQUksQ0FBQyxFQUFFSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7RUFDOUM7RUFFQSxPQUFjQyxjQUFjLENBQUNDLEtBQWUsRUFBVTtJQUNwRCxPQUFPSixJQUFJLENBQUNLLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDRixLQUFLLEVBQUVGLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7RUFDOUQ7RUFFQSxPQUFjSyxTQUFTLENBQUNULElBQVksRUFBVztJQUM3QyxPQUFPQyxJQUFJLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxJQUFJLENBQUMsRUFBRUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBY00sYUFBYSxDQUFDSixLQUFjLEVBQVU7SUFDbEQsT0FBT0osSUFBSSxDQUFDSyxTQUFTLENBQUNDLE1BQU0sQ0FBQ0YsS0FBSyxFQUFFRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQzdEO0FBQ0Y7QUFFQSxTQUFTTyxZQUFZLENBQUNDLEdBQVEsRUFBRUMsR0FBUSxFQUFFQyxHQUFRLEdBQUcsRUFBRSxFQUFTO0VBQzlELElBQUlBLEdBQUcsRUFBRTtJQUNQLE1BQU1DLEtBQUssQ0FDUiwwQkFBeUJELEdBQUksb0JBQW1CWixJQUFJLENBQUNLLFNBQVMsQ0FDN0RLLEdBQUcsQ0FDSCxZQUFXVixJQUFJLENBQUNLLFNBQVMsQ0FBQ00sR0FBRyxDQUFFLEVBQUMsQ0FDbkM7RUFDSDtFQUNBLE1BQU1FLEtBQUssQ0FDUixpQkFBZ0JiLElBQUksQ0FBQ0ssU0FBUyxDQUFDTSxHQUFHLENBQUUsYUFBWVgsSUFBSSxDQUFDSyxTQUFTLENBQUNLLEdBQUcsQ0FBRSxFQUFDLENBQ3ZFO0FBQ0g7QUFFQSxTQUFTSSxhQUFhLENBQUNKLEdBQVEsRUFBTztFQUNwQyxJQUFJQSxHQUFHLENBQUNLLFFBQVEsS0FBS0MsU0FBUyxFQUFFO0lBQzlCLE1BQU1DLEdBQVEsR0FBRyxDQUFDLENBQUM7SUFDbkJQLEdBQUcsQ0FBQ1EsS0FBSyxDQUFDQyxPQUFPLENBQUVDLENBQU0sSUFBTUgsR0FBRyxDQUFDRyxDQUFDLENBQUN0QixJQUFJLENBQUMsR0FBRztNQUFFYyxHQUFHLEVBQUVRLENBQUMsQ0FBQ0MsRUFBRTtNQUFFWCxHQUFHLEVBQUVVLENBQUMsQ0FBQ1Y7SUFBSSxDQUFFLENBQUM7SUFDeEVBLEdBQUcsQ0FBQ0ssUUFBUSxHQUFHRSxHQUFHO0VBQ3BCO0VBQ0EsT0FBT1AsR0FBRyxDQUFDSyxRQUFRO0FBQ3JCO0FBRUEsU0FBU08sYUFBYSxDQUFDWixHQUFRLEVBQU87RUFDcEMsSUFBSUEsR0FBRyxDQUFDYSxRQUFRLEtBQUtQLFNBQVMsRUFBRTtJQUM5QixNQUFNQyxHQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ25CUCxHQUFHLENBQUNRLEtBQUssQ0FBQ0MsT0FBTyxDQUFFQyxDQUFNLElBQU1ILEdBQUcsQ0FBQ0csQ0FBQyxDQUFDQyxFQUFFLENBQUMsR0FBRztNQUFFVCxHQUFHLEVBQUVRLENBQUMsQ0FBQ3RCLElBQUk7TUFBRVksR0FBRyxFQUFFVSxDQUFDLENBQUNWO0lBQUksQ0FBRSxDQUFDO0lBQ3hFQSxHQUFHLENBQUNhLFFBQVEsR0FBR04sR0FBRztFQUNwQjtFQUNBLE9BQU9QLEdBQUcsQ0FBQ2EsUUFBUTtBQUNyQjtBQUVBLFNBQVNDLFNBQVMsQ0FBQ2IsR0FBUSxFQUFFRCxHQUFRLEVBQUVlLFFBQWEsRUFBRWIsR0FBUSxHQUFHLEVBQUUsRUFBTztFQUN4RSxTQUFTYyxrQkFBa0IsQ0FBQ2hCLEdBQVcsRUFBRUMsR0FBUSxFQUFPO0lBQ3RELElBQUksT0FBT0QsR0FBRyxLQUFLLE9BQU9DLEdBQUcsRUFBRSxPQUFPQSxHQUFHO0lBQ3pDLE9BQU9GLFlBQVksQ0FBQ0MsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUNwQztFQUVBLFNBQVNlLGNBQWMsQ0FBQ0MsSUFBVyxFQUFFakIsR0FBUSxFQUFPO0lBQ2xEO0lBQ0EsTUFBTWtCLENBQUMsR0FBR0QsSUFBSSxDQUFDRSxNQUFNO0lBQ3JCLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRixDQUFDLEVBQUVFLENBQUMsRUFBRSxFQUFFO01BQzFCLE1BQU1yQixHQUFHLEdBQUdrQixJQUFJLENBQUNHLENBQUMsQ0FBQztNQUNuQixJQUFJO1FBQ0YsT0FBT1AsU0FBUyxDQUFDYixHQUFHLEVBQUVELEdBQUcsRUFBRWUsUUFBUSxDQUFDO01BQ3RDLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUUsQ0FBQztJQUNmO0lBQ0EsT0FBT3ZCLFlBQVksQ0FBQ21CLElBQUksRUFBRWpCLEdBQUcsQ0FBQztFQUNoQztFQUVBLFNBQVNzQixhQUFhLENBQUNDLEtBQWUsRUFBRXZCLEdBQVEsRUFBTztJQUNyRCxJQUFJdUIsS0FBSyxDQUFDQyxPQUFPLENBQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPQSxHQUFHO0lBQ3pDLE9BQU9GLFlBQVksQ0FBQ3lCLEtBQUssRUFBRXZCLEdBQUcsQ0FBQztFQUNqQztFQUVBLFNBQVN5QixjQUFjLENBQUMxQixHQUFRLEVBQUVDLEdBQVEsRUFBTztJQUMvQztJQUNBLElBQUksQ0FBQzBCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDM0IsR0FBRyxDQUFDLEVBQUUsT0FBT0YsWUFBWSxDQUFDLE9BQU8sRUFBRUUsR0FBRyxDQUFDO0lBQzFELE9BQU9BLEdBQUcsQ0FBQ00sR0FBRyxDQUFFc0IsRUFBRSxJQUFLZixTQUFTLENBQUNlLEVBQUUsRUFBRTdCLEdBQUcsRUFBRWUsUUFBUSxDQUFDLENBQUM7RUFDdEQ7RUFFQSxTQUFTZSxhQUFhLENBQUM3QixHQUFRLEVBQU87SUFDcEMsSUFBSUEsR0FBRyxLQUFLLElBQUksRUFBRTtNQUNoQixPQUFPLElBQUk7SUFDYjtJQUNBLE1BQU04QixDQUFDLEdBQUcsSUFBSUMsSUFBSSxDQUFDL0IsR0FBRyxDQUFDO0lBQ3ZCLElBQUlnQyxLQUFLLENBQUNGLENBQUMsQ0FBQ0csT0FBTyxFQUFFLENBQUMsRUFBRTtNQUN0QixPQUFPbkMsWUFBWSxDQUFDLE1BQU0sRUFBRUUsR0FBRyxDQUFDO0lBQ2xDO0lBQ0EsT0FBTzhCLENBQUM7RUFDVjtFQUVBLFNBQVNJLGVBQWUsQ0FDdEIzQixLQUEyQixFQUMzQjRCLFVBQWUsRUFDZm5DLEdBQVEsRUFDSDtJQUNMLElBQUlBLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBSTBCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDM0IsR0FBRyxDQUFDLEVBQUU7TUFDakUsT0FBT0YsWUFBWSxDQUFDLFFBQVEsRUFBRUUsR0FBRyxDQUFDO0lBQ3BDO0lBQ0EsTUFBTW9DLE1BQVcsR0FBRyxDQUFDLENBQUM7SUFDdEJDLE1BQU0sQ0FBQ0MsbUJBQW1CLENBQUMvQixLQUFLLENBQUMsQ0FBQ0MsT0FBTyxDQUFFUCxHQUFHLElBQUs7TUFDakQsTUFBTXNDLElBQUksR0FBR2hDLEtBQUssQ0FBQ04sR0FBRyxDQUFDO01BQ3ZCLE1BQU11QyxDQUFDLEdBQUdILE1BQU0sQ0FBQ0ksU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQzNDLEdBQUcsRUFBRUMsR0FBRyxDQUFDLEdBQ3BERCxHQUFHLENBQUNDLEdBQUcsQ0FBQyxHQUNSSSxTQUFTO01BQ2IrQixNQUFNLENBQUNHLElBQUksQ0FBQ3RDLEdBQUcsQ0FBQyxHQUFHWSxTQUFTLENBQUMyQixDQUFDLEVBQUVELElBQUksQ0FBQ3hDLEdBQUcsRUFBRWUsUUFBUSxFQUFFeUIsSUFBSSxDQUFDdEMsR0FBRyxDQUFDO0lBQy9ELENBQUMsQ0FBQztJQUNGb0MsTUFBTSxDQUFDQyxtQkFBbUIsQ0FBQ3RDLEdBQUcsQ0FBQyxDQUFDUSxPQUFPLENBQUVQLEdBQUcsSUFBSztNQUMvQyxJQUFJLENBQUNvQyxNQUFNLENBQUNJLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNwQyxLQUFLLEVBQUVOLEdBQUcsQ0FBQyxFQUFFO1FBQ3JEbUMsTUFBTSxDQUFDbkMsR0FBRyxDQUFDLEdBQUdZLFNBQVMsQ0FBQ2IsR0FBRyxDQUFDQyxHQUFHLENBQUMsRUFBRWtDLFVBQVUsRUFBRXJCLFFBQVEsRUFBRWIsR0FBRyxDQUFDO01BQzlEO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT21DLE1BQU07RUFDZjtFQUVBLElBQUlyQyxHQUFHLEtBQUssS0FBSyxFQUFFLE9BQU9DLEdBQUc7RUFDN0IsSUFBSUQsR0FBRyxLQUFLLElBQUksRUFBRTtJQUNoQixJQUFJQyxHQUFHLEtBQUssSUFBSSxFQUFFLE9BQU9BLEdBQUc7SUFDNUIsT0FBT0YsWUFBWSxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUMvQjtFQUNBO0VBQ0EsT0FBTyxPQUFPRCxHQUFHLEtBQUssUUFBUSxJQUFJQSxHQUFHLENBQUM2QyxHQUFHLEtBQUt2QyxTQUFTLEVBQUU7SUFDdkROLEdBQUcsR0FBRzhDLE9BQU8sQ0FBQzlDLEdBQUcsQ0FBQzZDLEdBQUcsQ0FBQztFQUN4QjtFQUNBLElBQUlsQixLQUFLLENBQUNDLE9BQU8sQ0FBQzVCLEdBQUcsQ0FBQyxFQUFFLE9BQU91QixhQUFhLENBQUN2QixHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUN0RCxJQUFJLE9BQU9ELEdBQUcsS0FBSyxRQUFRLEVBQUU7SUFDM0IsT0FBT0EsR0FBRyxDQUFDMkMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUNyQzFCLGNBQWMsQ0FBQ2pCLEdBQUcsQ0FBQytDLFlBQVksRUFBRTlDLEdBQUcsQ0FBQyxHQUNyQ0QsR0FBRyxDQUFDMkMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUNoQ2pCLGNBQWMsQ0FBQzFCLEdBQUcsQ0FBQ2dELFVBQVUsRUFBRS9DLEdBQUcsQ0FBQyxHQUNuQ0QsR0FBRyxDQUFDMkMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUMzQlIsZUFBZSxDQUFDcEIsUUFBUSxDQUFDZixHQUFHLENBQUMsRUFBRUEsR0FBRyxDQUFDb0MsVUFBVSxFQUFFbkMsR0FBRyxDQUFDLEdBQ25ERixZQUFZLENBQUNDLEdBQUcsRUFBRUMsR0FBRyxDQUFDO0VBQzVCO0VBQ0E7RUFDQSxJQUFJRCxHQUFHLEtBQUtnQyxJQUFJLElBQUksT0FBTy9CLEdBQUcsS0FBSyxRQUFRLEVBQUUsT0FBTzZCLGFBQWEsQ0FBQzdCLEdBQUcsQ0FBQztFQUN0RSxPQUFPZSxrQkFBa0IsQ0FBQ2hCLEdBQUcsRUFBRUMsR0FBRyxDQUFDO0FBQ3JDO0FBRUEsU0FBU1osSUFBSSxDQUFJWSxHQUFRLEVBQUVELEdBQVEsRUFBSztFQUN0QyxPQUFPYyxTQUFTLENBQUNiLEdBQUcsRUFBRUQsR0FBRyxFQUFFSSxhQUFhLENBQUM7QUFDM0M7QUFFQSxTQUFTUixNQUFNLENBQUlLLEdBQU0sRUFBRUQsR0FBUSxFQUFPO0VBQ3hDLE9BQU9jLFNBQVMsQ0FBQ2IsR0FBRyxFQUFFRCxHQUFHLEVBQUVZLGFBQWEsQ0FBQztBQUMzQztBQUVBLFNBQVNxQyxDQUFDLENBQUNqRCxHQUFRLEVBQUU7RUFDbkIsT0FBTztJQUFFZ0QsVUFBVSxFQUFFaEQ7RUFBSSxDQUFDO0FBQzVCO0FBRUEsU0FBU2tELENBQUMsQ0FBQyxHQUFHaEMsSUFBVyxFQUFFO0VBQ3pCLE9BQU87SUFBRTZCLFlBQVksRUFBRTdCO0VBQUssQ0FBQztBQUMvQjtBQUVBLFNBQVNpQyxDQUFDLENBQUMzQyxLQUFZLEVBQUU0QixVQUFlLEVBQUU7RUFDeEMsT0FBTztJQUFFNUIsS0FBSztJQUFFNEI7RUFBVyxDQUFDO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTNUMsQ0FBQyxDQUFDNEQsSUFBWSxFQUFFO0VBQ3ZCLE9BQU87SUFBRVAsR0FBRyxFQUFFTztFQUFLLENBQUM7QUFDdEI7QUFFQSxNQUFNTixPQUFZLEdBQUc7RUFDbkJPLFFBQVEsRUFBRUYsQ0FBQyxDQUNULENBQUM7SUFBRS9ELElBQUksRUFBRSxVQUFVO0lBQUV1QixFQUFFLEVBQUUsVUFBVTtJQUFFWCxHQUFHLEVBQUVpRCxDQUFDLENBQUN6RCxDQUFDLENBQUMsU0FBUyxDQUFDO0VBQUUsQ0FBQyxDQUFDLEVBQzVELEtBQUssQ0FDTjtFQUNEOEQsT0FBTyxFQUFFSCxDQUFDLENBQ1IsQ0FDRTtJQUFFL0QsSUFBSSxFQUFFLGVBQWU7SUFBRXVCLEVBQUUsRUFBRSxlQUFlO0lBQUVYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRSxFQUFFO0VBQUUsQ0FBQyxFQUNyRTtJQUFFbEIsSUFBSSxFQUFFLEtBQUs7SUFBRXVCLEVBQUUsRUFBRSxLQUFLO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDbkM7SUFBRVosSUFBSSxFQUFFLFFBQVE7SUFBRXVCLEVBQUUsRUFBRSxRQUFRO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDekM7SUFBRVosSUFBSSxFQUFFLFdBQVc7SUFBRXVCLEVBQUUsRUFBRSxXQUFXO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDL0M7SUFBRVosSUFBSSxFQUFFLGFBQWE7SUFBRXVCLEVBQUUsRUFBRSxhQUFhO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDbkQ7SUFBRVosSUFBSSxFQUFFLFlBQVk7SUFBRXVCLEVBQUUsRUFBRSxZQUFZO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDakQ7SUFBRVosSUFBSSxFQUFFLFdBQVc7SUFBRXVCLEVBQUUsRUFBRSxXQUFXO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDL0M7SUFBRVosSUFBSSxFQUFFLGFBQWE7SUFBRXVCLEVBQUUsRUFBRSxhQUFhO0lBQUVYLEdBQUcsRUFBRWdDO0VBQUssQ0FBQyxFQUNyRDtJQUFFNUMsSUFBSSxFQUFFLHFCQUFxQjtJQUFFdUIsRUFBRSxFQUFFLHFCQUFxQjtJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQ25FO0lBQUVaLElBQUksRUFBRSxVQUFVO0lBQUV1QixFQUFFLEVBQUUsVUFBVTtJQUFFWCxHQUFHLEVBQUVSLENBQUMsQ0FBQyxVQUFVO0VBQUUsQ0FBQyxFQUN4RDtJQUFFSixJQUFJLEVBQUUsTUFBTTtJQUFFdUIsRUFBRSxFQUFFLE1BQU07SUFBRVgsR0FBRyxFQUFFUixDQUFDLENBQUMsYUFBYTtFQUFFLENBQUMsRUFDbkQ7SUFBRUosSUFBSSxFQUFFLE9BQU87SUFBRXVCLEVBQUUsRUFBRSxPQUFPO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDdkM7SUFBRVosSUFBSSxFQUFFLFdBQVc7SUFBRXVCLEVBQUUsRUFBRSxXQUFXO0lBQUVYLEdBQUcsRUFBRVIsQ0FBQyxDQUFDLFdBQVc7RUFBRSxDQUFDLEVBQzNEO0lBQUVKLElBQUksRUFBRSxPQUFPO0lBQUV1QixFQUFFLEVBQUUsT0FBTztJQUFFWCxHQUFHLEVBQUVSLENBQUMsQ0FBQyxPQUFPO0VBQUUsQ0FBQyxFQUMvQztJQUNFSixJQUFJLEVBQUUseUJBQXlCO0lBQy9CdUIsRUFBRSxFQUFFLHlCQUF5QjtJQUM3QlgsR0FBRyxFQUFFUixDQUFDLENBQUMseUJBQXlCO0VBQ2xDLENBQUMsRUFDRDtJQUFFSixJQUFJLEVBQUUsY0FBYztJQUFFdUIsRUFBRSxFQUFFLGNBQWM7SUFBRVgsR0FBRyxFQUFFUixDQUFDLENBQUMsY0FBYztFQUFFLENBQUMsRUFDcEU7SUFDRUosSUFBSSxFQUFFLGtCQUFrQjtJQUN4QnVCLEVBQUUsRUFBRSxrQkFBa0I7SUFDdEJYLEdBQUcsRUFBRVIsQ0FBQyxDQUFDLFFBQVE7RUFDakIsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxhQUFhO0lBQ25CdUIsRUFBRSxFQUFFLGFBQWE7SUFDakJYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRWQsQ0FBQyxDQUFDLGFBQWEsQ0FBQztFQUNwQyxDQUFDLENBQ0YsRUFDRCxLQUFLLENBQ047RUFDRCtELFNBQVMsRUFBRUosQ0FBQyxDQUFDLENBQUM7SUFBRS9ELElBQUksRUFBRSxPQUFPO0lBQUV1QixFQUFFLEVBQUUsT0FBTztJQUFFWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUsRUFBRTtFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztFQUM1RWtELFdBQVcsRUFBRUwsQ0FBQyxDQUNaLENBQ0U7SUFDRS9ELElBQUksRUFBRSxZQUFZO0lBQ2xCdUIsRUFBRSxFQUFFLFlBQVk7SUFDaEJYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRTJDLENBQUMsQ0FBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQyxDQUFDLEVBQ0Q7SUFDRUosSUFBSSxFQUFFLE1BQU07SUFDWnVCLEVBQUUsRUFBRSxNQUFNO0lBQ1ZYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRTJDLENBQUMsQ0FBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQyxDQUFDLEVBQ0Q7SUFDRUosSUFBSSxFQUFFLFFBQVE7SUFDZHVCLEVBQUUsRUFBRSxRQUFRO0lBQ1pYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRTJDLENBQUMsQ0FBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQyxDQUFDLEVBQ0Q7SUFDRUosSUFBSSxFQUFFLGFBQWE7SUFDbkJ1QixFQUFFLEVBQUUsYUFBYTtJQUNqQlgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFMkMsQ0FBQyxDQUFDekQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ2xDLENBQUMsRUFDRDtJQUNFSixJQUFJLEVBQUUsdUJBQXVCO0lBQzdCdUIsRUFBRSxFQUFFLHVCQUF1QjtJQUMzQlgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFMkMsQ0FBQyxDQUFDekQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ2xDLENBQUMsRUFDRDtJQUNFSixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCdUIsRUFBRSxFQUFFLG1CQUFtQjtJQUN2QlgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFZCxDQUFDLENBQUMsbUJBQW1CLENBQUM7RUFDMUMsQ0FBQyxDQUNGLEVBQ0QsS0FBSyxDQUNOO0VBQ0RpRSxpQkFBaUIsRUFBRU4sQ0FBQyxDQUNsQixDQUNFO0lBQ0UvRCxJQUFJLEVBQUUsWUFBWTtJQUNsQnVCLEVBQUUsRUFBRSxZQUFZO0lBQ2hCWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUyQyxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEMsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxNQUFNO0lBQ1p1QixFQUFFLEVBQUUsTUFBTTtJQUNWWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUyQyxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEMsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxRQUFRO0lBQ2R1QixFQUFFLEVBQUUsUUFBUTtJQUNaWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUyQyxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEMsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxhQUFhO0lBQ25CdUIsRUFBRSxFQUFFLGFBQWE7SUFDakJYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRTJDLENBQUMsQ0FBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQyxDQUFDLEVBQ0Q7SUFDRUosSUFBSSxFQUFFLHVCQUF1QjtJQUM3QnVCLEVBQUUsRUFBRSx1QkFBdUI7SUFDM0JYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRTJDLENBQUMsQ0FBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQyxDQUFDLENBQ0YsRUFDRCxLQUFLLENBQ047RUFDRGtFLEtBQUssRUFBRVAsQ0FBQyxDQUFDLENBQUM7SUFBRS9ELElBQUksRUFBRSxTQUFTO0lBQUV1QixFQUFFLEVBQUUsU0FBUztJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7RUFDOUQyRCxXQUFXLEVBQUVSLENBQUMsQ0FDWixDQUNFO0lBQUUvRCxJQUFJLEVBQUUsTUFBTTtJQUFFdUIsRUFBRSxFQUFFLE1BQU07SUFBRVgsR0FBRyxFQUFFUixDQUFDLENBQUMsTUFBTTtFQUFFLENBQUMsRUFDNUM7SUFBRUosSUFBSSxFQUFFLFNBQVM7SUFBRXVCLEVBQUUsRUFBRSxTQUFTO0lBQUVYLEdBQUcsRUFBRVIsQ0FBQyxDQUFDLFNBQVM7RUFBRSxDQUFDLENBQ3RELEVBQ0QsS0FBSyxDQUNOO0VBQ0RvRSxZQUFZLEVBQUVULENBQUMsQ0FDYixDQUNFO0lBQUUvRCxJQUFJLEVBQUUsZUFBZTtJQUFFdUIsRUFBRSxFQUFFLGVBQWU7SUFBRVgsR0FBRyxFQUFFO0VBQUcsQ0FBQyxFQUN2RDtJQUFFWixJQUFJLEVBQUUsbUJBQW1CO0lBQUV1QixFQUFFLEVBQUUsbUJBQW1CO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDL0Q7SUFBRVosSUFBSSxFQUFFLG9CQUFvQjtJQUFFdUIsRUFBRSxFQUFFLG9CQUFvQjtJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQ2pFO0lBQUVaLElBQUksRUFBRSxTQUFTO0lBQUV1QixFQUFFLEVBQUUsU0FBUztJQUFFWCxHQUFHLEVBQUVSLENBQUMsQ0FBQyxTQUFTO0VBQUUsQ0FBQyxFQUNyRDtJQUFFSixJQUFJLEVBQUUsVUFBVTtJQUFFdUIsRUFBRSxFQUFFLFVBQVU7SUFBRVgsR0FBRyxFQUFFUixDQUFDLENBQUMsY0FBYztFQUFFLENBQUMsQ0FDN0QsRUFDRCxLQUFLLENBQ047RUFDRHFFLFFBQVEsRUFBRVYsQ0FBQyxDQUNULENBQ0U7SUFBRS9ELElBQUksRUFBRSxjQUFjO0lBQUV1QixFQUFFLEVBQUUsY0FBYztJQUFFWCxHQUFHLEVBQUVSLENBQUMsQ0FBQyxjQUFjO0VBQUUsQ0FBQyxFQUNwRTtJQUNFSixJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCdUIsRUFBRSxFQUFFLGlCQUFpQjtJQUNyQlgsR0FBRyxFQUFFUixDQUFDLENBQUMsaUJBQWlCO0VBQzFCLENBQUMsRUFDRDtJQUFFSixJQUFJLEVBQUUsY0FBYztJQUFFdUIsRUFBRSxFQUFFLGNBQWM7SUFBRVgsR0FBRyxFQUFFUixDQUFDLENBQUMsY0FBYztFQUFFLENBQUMsQ0FDckUsRUFDRCxLQUFLLENBQ047RUFDRHNFLE1BQU0sRUFBRVgsQ0FBQyxDQUNQLENBQ0U7SUFBRS9ELElBQUksRUFBRSxXQUFXO0lBQUV1QixFQUFFLEVBQUUsV0FBVztJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQy9DO0lBQUVaLElBQUksRUFBRSxTQUFTO0lBQUV1QixFQUFFLEVBQUUsU0FBUztJQUFFWCxHQUFHLEVBQUVpRCxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDO0VBQUUsQ0FBQyxDQUN4RCxFQUNELEtBQUssQ0FDTjtFQUNEdUUsTUFBTSxFQUFFWixDQUFDLENBQ1AsQ0FDRTtJQUFFL0QsSUFBSSxFQUFFLFdBQVc7SUFBRXVCLEVBQUUsRUFBRSxXQUFXO0lBQUVYLEdBQUcsRUFBRTtFQUFHLENBQUMsRUFDL0M7SUFBRVosSUFBSSxFQUFFLHFCQUFxQjtJQUFFdUIsRUFBRSxFQUFFLHFCQUFxQjtJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQ25FO0lBQUVaLElBQUksRUFBRSxNQUFNO0lBQUV1QixFQUFFLEVBQUUsTUFBTTtJQUFFWCxHQUFHLEVBQUVSLENBQUMsQ0FBQyxNQUFNO0VBQUUsQ0FBQyxDQUM3QyxFQUNELEtBQUssQ0FDTjtFQUNEd0UsSUFBSSxFQUFFYixDQUFDLENBQ0wsQ0FDRTtJQUNFL0QsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQnVCLEVBQUUsRUFBRSxxQkFBcUI7SUFDekJYLEdBQUcsRUFBRVIsQ0FBQyxDQUFDLHFCQUFxQjtFQUM5QixDQUFDLEVBQ0Q7SUFBRUosSUFBSSxFQUFFLGNBQWM7SUFBRXVCLEVBQUUsRUFBRSxjQUFjO0lBQUVYLEdBQUcsRUFBRVIsQ0FBQyxDQUFDLGNBQWM7RUFBRSxDQUFDLEVBQ3BFO0lBQ0VKLElBQUksRUFBRSxtQkFBbUI7SUFDekJ1QixFQUFFLEVBQUUsbUJBQW1CO0lBQ3ZCWCxHQUFHLEVBQUVSLENBQUMsQ0FBQyxtQkFBbUI7RUFDNUIsQ0FBQyxDQUNGLEVBQ0QsS0FBSyxDQUNOO0VBQ0R5RSxpQkFBaUIsRUFBRWQsQ0FBQyxDQUNsQixDQUNFO0lBQ0UvRCxJQUFJLEVBQUUsWUFBWTtJQUNsQnVCLEVBQUUsRUFBRSxZQUFZO0lBQ2hCWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUyQyxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEMsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxNQUFNO0lBQ1p1QixFQUFFLEVBQUUsTUFBTTtJQUNWWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUyQyxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEMsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxRQUFRO0lBQ2R1QixFQUFFLEVBQUUsUUFBUTtJQUNaWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUyQyxDQUFDLENBQUN6RCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEMsQ0FBQyxFQUNEO0lBQ0VKLElBQUksRUFBRSxhQUFhO0lBQ25CdUIsRUFBRSxFQUFFLGFBQWE7SUFDakJYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRTJDLENBQUMsQ0FBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQyxDQUFDLENBQ0YsRUFDRCxLQUFLLENBQ047RUFDRDBFLE1BQU0sRUFBRWYsQ0FBQyxDQUNQLENBQ0U7SUFBRS9ELElBQUksRUFBRSxXQUFXO0lBQUV1QixFQUFFLEVBQUUsV0FBVztJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQy9DO0lBQUVaLElBQUksRUFBRSxXQUFXO0lBQUV1QixFQUFFLEVBQUUsV0FBVztJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQy9DO0lBQ0VaLElBQUksRUFBRSxtQkFBbUI7SUFDekJ1QixFQUFFLEVBQUUsbUJBQW1CO0lBQ3ZCWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUVkLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztFQUMxQyxDQUFDLEVBQ0Q7SUFBRUosSUFBSSxFQUFFLGVBQWU7SUFBRXVCLEVBQUUsRUFBRSxlQUFlO0lBQUVYLEdBQUcsRUFBRWtELENBQUMsQ0FBQzVDLFNBQVMsRUFBRSxLQUFLO0VBQUUsQ0FBQyxDQUN6RSxFQUNELEtBQUssQ0FDTjtFQUNENkQsWUFBWSxFQUFFaEIsQ0FBQyxDQUNiLENBQ0U7SUFBRS9ELElBQUksRUFBRSxNQUFNO0lBQUV1QixFQUFFLEVBQUUsTUFBTTtJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQ3JDO0lBQUVaLElBQUksRUFBRSxRQUFRO0lBQUV1QixFQUFFLEVBQUUsUUFBUTtJQUFFWCxHQUFHLEVBQUU7RUFBRyxDQUFDLEVBQ3pDO0lBQUVaLElBQUksRUFBRSxZQUFZO0lBQUV1QixFQUFFLEVBQUUsWUFBWTtJQUFFWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUsRUFBRTtFQUFFLENBQUMsRUFDL0Q7SUFBRWxCLElBQUksRUFBRSxhQUFhO0lBQUV1QixFQUFFLEVBQUUsYUFBYTtJQUFFWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUsRUFBRTtFQUFFLENBQUMsRUFDakU7SUFDRWxCLElBQUksRUFBRSx1QkFBdUI7SUFDN0J1QixFQUFFLEVBQUUsdUJBQXVCO0lBQzNCWCxHQUFHLEVBQUVrRCxDQUFDLENBQUM1QyxTQUFTLEVBQUUsRUFBRTtFQUN0QixDQUFDLENBQ0YsRUFDRCxLQUFLLENBQ047RUFDRDVCLHVCQUF1QixFQUFFLENBQ3ZCLGtDQUFrQyxFQUNsQyxtQkFBbUIsQ0FDcEI7RUFDREMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztFQUMxQkMsT0FBTyxFQUFFLENBQ1AsZ0NBQWdDLEVBQ2hDLHNDQUFzQyxDQUN2QztFQUNEQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7RUFDMUNDLGVBQWUsRUFBRSxDQUNmLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixDQUN2QjtFQUNEQyxZQUFZLEVBQUUsQ0FDWix5Q0FBeUMsRUFDekMsc0RBQXNELEVBQ3RELHVEQUF1RCxFQUN2RCxpRUFBaUUsQ0FDbEU7RUFDREMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztFQUN2Q0MsbUJBQW1CLEVBQUUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU07QUFDdEQsQ0FBQyJ9
package/lib/urls.js CHANGED
@@ -1,29 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.object.define-property.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.DocumentUrlFormat = void 0;
9
8
  exports.urlFromDocument = urlFromDocument;
10
9
  exports.urlFromScrutin = urlFromScrutin;
11
-
12
10
  require("core-js/modules/es.regexp.exec.js");
13
-
14
11
  require("core-js/modules/es.array.concat.js");
15
-
16
12
  require("core-js/modules/es.string.replace.js");
17
-
18
- var DocumentUrlFormat;
13
+ var DocumentUrlFormat; // The version of the document that can be parsed to extract divisions & articles
19
14
  exports.DocumentUrlFormat = DocumentUrlFormat;
20
-
21
15
  (function (DocumentUrlFormat) {
22
16
  DocumentUrlFormat["Html"] = "html";
23
17
  DocumentUrlFormat["Pdf"] = "pdf";
24
18
  DocumentUrlFormat["RawHtml"] = "raw-html";
25
19
  })(DocumentUrlFormat || (exports.DocumentUrlFormat = DocumentUrlFormat = {}));
26
-
27
20
  var documentUrlFragmentsByType = {
28
21
  ACIN: {
29
22
  directory: "projets",
@@ -136,85 +129,68 @@ var documentUrlFragmentsByType = {
136
129
  suffix: "-a0"
137
130
  }
138
131
  };
139
-
140
132
  function extensionFromDocumentUrlFormat(format) {
141
133
  switch (format) {
142
134
  case DocumentUrlFormat.Html:
143
135
  return ".asp";
144
-
145
136
  case DocumentUrlFormat.Pdf:
146
137
  return ".pdf";
147
-
148
138
  case DocumentUrlFormat.RawHtml:
149
139
  return ".asp";
150
140
  }
151
141
  }
152
-
153
142
  function urlFromDocument(document, format) {
154
143
  // Code taken from function `an_text_url` in project anpy:
155
144
  // https://github.com/regardscitoyens/anpy/blob/master/anpy/dossier_from_opendata.py
156
145
  // See http://www.assemblee-nationale.fr/opendata/Implementation_Referentiel/Identifiants_Referentiels.html
157
146
  // for a description of the format of an UID.
147
+
158
148
  var extension = extensionFromDocumentUrlFormat(format);
159
149
  var match = /^(.{4})([ANS]*)(R[0-9])([LS]*)([0-9]*)([BTACP]*)(.*)$/.exec(document.uid);
160
-
161
150
  if (match === null) {
162
151
  console.log("Unable to generate URL from document with unexpected UID: \"".concat(document.uid, "\""));
163
152
  return null;
164
153
  }
165
-
166
154
  var chambre = match[2];
167
-
168
155
  if (chambre === "SN") {
169
156
  console.log("Unable to generate URL for document in S\xE9nat. UID: \"".concat(document.uid, "\""));
170
157
  return null;
171
158
  }
172
-
173
159
  var legislature = match[5];
174
160
  var number = match[7];
175
-
176
161
  if (format === DocumentUrlFormat.RawHtml) {
177
162
  return "http://www.assemblee-nationale.fr/".concat(legislature, "/textes/").concat(number).concat(extension);
178
163
  }
179
-
180
164
  var documentType = {
181
165
  BTC: "TCOM",
182
166
  BTA: "TADO",
183
167
  TAP: "TADO"
184
168
  }[match[6]] || match[1];
185
-
186
169
  if (document.classification !== undefined && document.classification.sousType !== undefined && document.classification.sousType.code === "COMPA") {
187
170
  // Annexe au rapport : Texte comparatif COMPA
188
171
  number = number.replace(/-COMPA/, "-aCOMPA");
189
172
  }
190
-
191
173
  if (documentType == "AVCE") {
192
174
  documentType = "AVCE".concat(document.classification.famille.classe.code);
193
175
  }
194
-
195
176
  var fragments = documentUrlFragmentsByType[documentType];
196
-
197
177
  if (fragments === undefined) {
198
178
  // For example: ALCNANR5L15B0002 (allocution du président)
199
179
  console.log("Unable to generate URL from document of UID \"".concat(document.uid, "\" and type \"").concat(documentType, "\""));
200
180
  return null;
201
181
  }
202
-
203
182
  var directory = format === DocumentUrlFormat.Pdf ? "pdf/".concat(fragments.directory) : fragments.directory;
204
183
  return "http://www.assemblee-nationale.fr/".concat(legislature, "/").concat(directory, "/").concat(fragments.prefix).concat(number).concat(fragments.suffix).concat(extension);
205
184
  }
206
-
207
185
  function urlFromScrutin(scrutin) {
208
186
  // Sample UIDs: VTANR5L15V389
209
187
  var match = /^VTANR([0-9]+)L([0-9]+)V([0-9]+)$/.exec(scrutin.uid);
210
-
211
188
  if (match === null) {
212
189
  console.log("Unable to generate URL from scrutin with unexpected UID: \"".concat(scrutin.uid, "\""));
213
190
  return null;
214
191
  }
215
-
216
192
  var legislature = match[2];
217
193
  var numero = match[3];
218
194
  return "http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/".concat(legislature, "/(num)/").concat(numero);
219
195
  }
220
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFVybEZvcm1hdCIsImRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlIiwiQUNJTiIsImRpcmVjdG9yeSIsInByZWZpeCIsInN1ZmZpeCIsIkFWQ0VQUkpMT0kiLCJBVkNFTEVUVFJFIiwiQVZDRVBJT05MT0kiLCJBVklTIiwiRVRESSIsIkxFVFQiLCJQSU9OIiwiUE5SRSIsIlBOUkVBUFBBUlQzNDEiLCJQTlJFQ09NRU5RIiwiUE5SRU1PRFJFR0xUQU4iLCJQTlJFVFZYSU5TVElURVVST1AiLCJQUkpMIiwiUkFQUCIsIlJJTkYiLCJSSU9OIiwiVEFETyIsIlRDT00iLCJUQ09NQ09NRU5RIiwiVENPTU1PRFJFR0xUQU4iLCJUQ09NVFZYSU5TVElURVVST1AiLCJleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQiLCJmb3JtYXQiLCJIdG1sIiwiUGRmIiwiUmF3SHRtbCIsInVybEZyb21Eb2N1bWVudCIsImRvY3VtZW50IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJleGVjIiwidWlkIiwiY29uc29sZSIsImxvZyIsImNoYW1icmUiLCJsZWdpc2xhdHVyZSIsIm51bWJlciIsImRvY3VtZW50VHlwZSIsIkJUQyIsIkJUQSIsIlRBUCIsImNsYXNzaWZpY2F0aW9uIiwidW5kZWZpbmVkIiwic291c1R5cGUiLCJjb2RlIiwicmVwbGFjZSIsImZhbWlsbGUiLCJjbGFzc2UiLCJmcmFnbWVudHMiLCJ1cmxGcm9tU2NydXRpbiIsInNjcnV0aW4iLCJudW1lcm8iXSwic291cmNlcyI6WyIuLi9zcmMvdXJscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgZW51bSBEb2N1bWVudFVybEZvcm1hdCB7XG4gIEh0bWwgPSBcImh0bWxcIixcbiAgUGRmID0gXCJwZGZcIixcbiAgUmF3SHRtbCA9IFwicmF3LWh0bWxcIiwgLy8gVGhlIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IHRoYXQgY2FuIGJlIHBhcnNlZCB0byBleHRyYWN0IGRpdmlzaW9ucyAmIGFydGljbGVzXG59XG5cbmNvbnN0IGRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgICBwcmVmaXg6IHN0cmluZ1xuICAgIHN1ZmZpeDogc3RyaW5nXG4gIH1cbn0gPSB7XG4gIEFDSU46IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItYWlcIixcbiAgfSxcbiAgQVZDRVBSSkxPSToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRUxFVFRSRToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRVBJT05MT0k6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVklTOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIEVUREk6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItZWlcIixcbiAgfSxcbiAgTEVUVDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1sXCIsXG4gIH0sXG4gIFBJT046IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkU6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVBUFBBUlQzNDE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVDT01FTlE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVNT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb3Bvc2l0aW9uc1wiLFxuICAgIHByZWZpeDogXCJwaW9uXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBQTlJFVFZYSU5TVElURVVST1A6IHtcbiAgICBkaXJlY3Rvcnk6IFwiZXVyb3BlL3Jlc29sdXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBwZVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUFJKTDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBSQVBQOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFJJTkY6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwLWluZm9cIixcbiAgICBwcmVmaXg6IFwiaVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUklPTjoge1xuICAgIGRpcmVjdG9yeTogXCJcIixcbiAgICBwcmVmaXg6IFwiXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQURPOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhXCIsXG4gICAgcHJlZml4OiBcInRhXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQ09NOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTUNPTUVOUToge1xuICAgIGRpcmVjdG9yeTogXCJ0YS1jb21taXNzaW9uXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiLWEwXCIsXG4gIH0sXG4gIFRDT01NT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTVRWWElOU1RJVEVVUk9QOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbn1cblxuZnVuY3Rpb24gZXh0ZW5zaW9uRnJvbURvY3VtZW50VXJsRm9ybWF0KGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbDpcbiAgICAgIHJldHVybiBcIi5hc3BcIlxuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuUGRmOlxuICAgICAgcmV0dXJuIFwiLnBkZlwiXG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sOlxuICAgICAgcmV0dXJuIFwiLmFzcFwiXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Eb2N1bWVudChcbiAgZG9jdW1lbnQ6IGFueSxcbiAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdCxcbik6IHN0cmluZyB8IG51bGwge1xuICAvLyBDb2RlIHRha2VuIGZyb20gZnVuY3Rpb24gYGFuX3RleHRfdXJsYCBpbiBwcm9qZWN0IGFucHk6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdhcmRzY2l0b3llbnMvYW5weS9ibG9iL21hc3Rlci9hbnB5L2Rvc3NpZXJfZnJvbV9vcGVuZGF0YS5weVxuICAvLyBTZWUgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL29wZW5kYXRhL0ltcGxlbWVudGF0aW9uX1JlZmVyZW50aWVsL0lkZW50aWZpYW50c19SZWZlcmVudGllbHMuaHRtbFxuICAvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IG9mIGFuIFVJRC5cblxuICBjb25zdCBleHRlbnNpb24gPSBleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQoZm9ybWF0KVxuICBjb25zdCBtYXRjaCA9IC9eKC57NH0pKFtBTlNdKikoUlswLTldKShbTFNdKikoWzAtOV0qKShbQlRBQ1BdKikoLiopJC8uZXhlYyhcbiAgICBkb2N1bWVudC51aWQsXG4gIClcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IHdpdGggdW5leHBlY3RlZCBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNoYW1icmUgPSBtYXRjaFsyXVxuICBpZiAoY2hhbWJyZSA9PT0gXCJTTlwiKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmb3IgZG9jdW1lbnQgaW4gU8OpbmF0LiBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbNV1cbiAgbGV0IG51bWJlciA9IG1hdGNoWzddXG4gIGlmIChmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8ke2xlZ2lzbGF0dXJlfS90ZXh0ZXMvJHtudW1iZXJ9JHtleHRlbnNpb259YFxuICB9XG4gIGxldCBkb2N1bWVudFR5cGUgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgQlRDOiBcIlRDT01cIixcbiAgICAgICAgQlRBOiBcIlRBRE9cIixcbiAgICAgICAgVEFQOiBcIlRBRE9cIixcbiAgICAgIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIClbbWF0Y2hbNl1dIHx8IG1hdGNoWzFdXG4gIGlmIChcbiAgICBkb2N1bWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgZG9jdW1lbnQuY2xhc3NpZmljYXRpb24uc291c1R5cGUgIT09IHVuZGVmaW5lZCAmJlxuICAgIGRvY3VtZW50LmNsYXNzaWZpY2F0aW9uLnNvdXNUeXBlLmNvZGUgPT09IFwiQ09NUEFcIlxuICApIHtcbiAgICAvLyBBbm5leGUgYXUgcmFwcG9ydCA6IFRleHRlIGNvbXBhcmF0aWYgQ09NUEFcbiAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZSgvLUNPTVBBLywgXCItYUNPTVBBXCIpXG4gIH1cbiAgaWYgKGRvY3VtZW50VHlwZSA9PSBcIkFWQ0VcIikge1xuICAgIGRvY3VtZW50VHlwZSA9IGBBVkNFJHtkb2N1bWVudC5jbGFzc2lmaWNhdGlvbi5mYW1pbGxlLmNsYXNzZS5jb2RlfWBcbiAgfVxuICBjb25zdCBmcmFnbWVudHMgPSBkb2N1bWVudFVybEZyYWdtZW50c0J5VHlwZVtkb2N1bWVudFR5cGVdXG4gIGlmIChmcmFnbWVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIEZvciBleGFtcGxlOiBBTENOQU5SNUwxNUIwMDAyIChhbGxvY3V0aW9uIGR1IHByw6lzaWRlbnQpXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IG9mIFVJRCBcIiR7ZG9jdW1lbnQudWlkfVwiIGFuZCB0eXBlIFwiJHtkb2N1bWVudFR5cGV9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9XG4gICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGZcbiAgICAgID8gYHBkZi8ke2ZyYWdtZW50cy5kaXJlY3Rvcnl9YFxuICAgICAgOiBmcmFnbWVudHMuZGlyZWN0b3J5XG4gIHJldHVybiBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7bGVnaXNsYXR1cmV9LyR7ZGlyZWN0b3J5fS8ke2ZyYWdtZW50cy5wcmVmaXh9JHtudW1iZXJ9JHtmcmFnbWVudHMuc3VmZml4fSR7ZXh0ZW5zaW9ufWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21TY3J1dGluKHNjcnV0aW46IFNjcnV0aW4pIHtcbiAgLy8gU2FtcGxlIFVJRHM6IFZUQU5SNUwxNVYzODlcbiAgY29uc3QgbWF0Y2ggPSAvXlZUQU5SKFswLTldKylMKFswLTldKylWKFswLTldKykkLy5leGVjKHNjcnV0aW4udWlkKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gc2NydXRpbiB3aXRoIHVuZXhwZWN0ZWQgVUlEOiBcIiR7c2NydXRpbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbMl1cbiAgY29uc3QgbnVtZXJvID0gbWF0Y2hbM11cbiAgcmV0dXJuIGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3NjcnV0aW5zL2RldGFpbC8obGVnaXNsYXR1cmUpLyR7bGVnaXNsYXR1cmV9LyhudW0pLyR7bnVtZXJvfWBcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFWUEsaUI7OztXQUFBQSxpQjtFQUFBQSxpQjtFQUFBQSxpQjtFQUFBQSxpQjtHQUFBQSxpQixpQ0FBQUEs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
196
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFVybEZvcm1hdCIsImRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlIiwiQUNJTiIsImRpcmVjdG9yeSIsInByZWZpeCIsInN1ZmZpeCIsIkFWQ0VQUkpMT0kiLCJBVkNFTEVUVFJFIiwiQVZDRVBJT05MT0kiLCJBVklTIiwiRVRESSIsIkxFVFQiLCJQSU9OIiwiUE5SRSIsIlBOUkVBUFBBUlQzNDEiLCJQTlJFQ09NRU5RIiwiUE5SRU1PRFJFR0xUQU4iLCJQTlJFVFZYSU5TVElURVVST1AiLCJQUkpMIiwiUkFQUCIsIlJJTkYiLCJSSU9OIiwiVEFETyIsIlRDT00iLCJUQ09NQ09NRU5RIiwiVENPTU1PRFJFR0xUQU4iLCJUQ09NVFZYSU5TVElURVVST1AiLCJleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQiLCJmb3JtYXQiLCJIdG1sIiwiUGRmIiwiUmF3SHRtbCIsInVybEZyb21Eb2N1bWVudCIsImRvY3VtZW50IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJleGVjIiwidWlkIiwiY29uc29sZSIsImxvZyIsImNoYW1icmUiLCJsZWdpc2xhdHVyZSIsIm51bWJlciIsImRvY3VtZW50VHlwZSIsIkJUQyIsIkJUQSIsIlRBUCIsImNsYXNzaWZpY2F0aW9uIiwidW5kZWZpbmVkIiwic291c1R5cGUiLCJjb2RlIiwicmVwbGFjZSIsImZhbWlsbGUiLCJjbGFzc2UiLCJmcmFnbWVudHMiLCJ1cmxGcm9tU2NydXRpbiIsInNjcnV0aW4iLCJudW1lcm8iXSwic291cmNlcyI6WyIuLi9zcmMvdXJscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgZW51bSBEb2N1bWVudFVybEZvcm1hdCB7XG4gIEh0bWwgPSBcImh0bWxcIixcbiAgUGRmID0gXCJwZGZcIixcbiAgUmF3SHRtbCA9IFwicmF3LWh0bWxcIiwgLy8gVGhlIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IHRoYXQgY2FuIGJlIHBhcnNlZCB0byBleHRyYWN0IGRpdmlzaW9ucyAmIGFydGljbGVzXG59XG5cbmNvbnN0IGRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgICBwcmVmaXg6IHN0cmluZ1xuICAgIHN1ZmZpeDogc3RyaW5nXG4gIH1cbn0gPSB7XG4gIEFDSU46IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItYWlcIixcbiAgfSxcbiAgQVZDRVBSSkxPSToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRUxFVFRSRToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRVBJT05MT0k6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVklTOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIEVUREk6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItZWlcIixcbiAgfSxcbiAgTEVUVDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1sXCIsXG4gIH0sXG4gIFBJT046IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkU6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVBUFBBUlQzNDE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVDT01FTlE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVNT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb3Bvc2l0aW9uc1wiLFxuICAgIHByZWZpeDogXCJwaW9uXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBQTlJFVFZYSU5TVElURVVST1A6IHtcbiAgICBkaXJlY3Rvcnk6IFwiZXVyb3BlL3Jlc29sdXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBwZVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUFJKTDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBSQVBQOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFJJTkY6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwLWluZm9cIixcbiAgICBwcmVmaXg6IFwiaVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUklPTjoge1xuICAgIGRpcmVjdG9yeTogXCJcIixcbiAgICBwcmVmaXg6IFwiXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQURPOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhXCIsXG4gICAgcHJlZml4OiBcInRhXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQ09NOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTUNPTUVOUToge1xuICAgIGRpcmVjdG9yeTogXCJ0YS1jb21taXNzaW9uXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiLWEwXCIsXG4gIH0sXG4gIFRDT01NT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTVRWWElOU1RJVEVVUk9QOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbn1cblxuZnVuY3Rpb24gZXh0ZW5zaW9uRnJvbURvY3VtZW50VXJsRm9ybWF0KGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbDpcbiAgICAgIHJldHVybiBcIi5hc3BcIlxuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuUGRmOlxuICAgICAgcmV0dXJuIFwiLnBkZlwiXG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sOlxuICAgICAgcmV0dXJuIFwiLmFzcFwiXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Eb2N1bWVudChcbiAgZG9jdW1lbnQ6IGFueSxcbiAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdCxcbik6IHN0cmluZyB8IG51bGwge1xuICAvLyBDb2RlIHRha2VuIGZyb20gZnVuY3Rpb24gYGFuX3RleHRfdXJsYCBpbiBwcm9qZWN0IGFucHk6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdhcmRzY2l0b3llbnMvYW5weS9ibG9iL21hc3Rlci9hbnB5L2Rvc3NpZXJfZnJvbV9vcGVuZGF0YS5weVxuICAvLyBTZWUgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL29wZW5kYXRhL0ltcGxlbWVudGF0aW9uX1JlZmVyZW50aWVsL0lkZW50aWZpYW50c19SZWZlcmVudGllbHMuaHRtbFxuICAvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IG9mIGFuIFVJRC5cblxuICBjb25zdCBleHRlbnNpb24gPSBleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQoZm9ybWF0KVxuICBjb25zdCBtYXRjaCA9IC9eKC57NH0pKFtBTlNdKikoUlswLTldKShbTFNdKikoWzAtOV0qKShbQlRBQ1BdKikoLiopJC8uZXhlYyhcbiAgICBkb2N1bWVudC51aWQsXG4gIClcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IHdpdGggdW5leHBlY3RlZCBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNoYW1icmUgPSBtYXRjaFsyXVxuICBpZiAoY2hhbWJyZSA9PT0gXCJTTlwiKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmb3IgZG9jdW1lbnQgaW4gU8OpbmF0LiBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbNV1cbiAgbGV0IG51bWJlciA9IG1hdGNoWzddXG4gIGlmIChmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8ke2xlZ2lzbGF0dXJlfS90ZXh0ZXMvJHtudW1iZXJ9JHtleHRlbnNpb259YFxuICB9XG4gIGxldCBkb2N1bWVudFR5cGUgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgQlRDOiBcIlRDT01cIixcbiAgICAgICAgQlRBOiBcIlRBRE9cIixcbiAgICAgICAgVEFQOiBcIlRBRE9cIixcbiAgICAgIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIClbbWF0Y2hbNl1dIHx8IG1hdGNoWzFdXG4gIGlmIChcbiAgICBkb2N1bWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgZG9jdW1lbnQuY2xhc3NpZmljYXRpb24uc291c1R5cGUgIT09IHVuZGVmaW5lZCAmJlxuICAgIGRvY3VtZW50LmNsYXNzaWZpY2F0aW9uLnNvdXNUeXBlLmNvZGUgPT09IFwiQ09NUEFcIlxuICApIHtcbiAgICAvLyBBbm5leGUgYXUgcmFwcG9ydCA6IFRleHRlIGNvbXBhcmF0aWYgQ09NUEFcbiAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZSgvLUNPTVBBLywgXCItYUNPTVBBXCIpXG4gIH1cbiAgaWYgKGRvY3VtZW50VHlwZSA9PSBcIkFWQ0VcIikge1xuICAgIGRvY3VtZW50VHlwZSA9IGBBVkNFJHtkb2N1bWVudC5jbGFzc2lmaWNhdGlvbi5mYW1pbGxlLmNsYXNzZS5jb2RlfWBcbiAgfVxuICBjb25zdCBmcmFnbWVudHMgPSBkb2N1bWVudFVybEZyYWdtZW50c0J5VHlwZVtkb2N1bWVudFR5cGVdXG4gIGlmIChmcmFnbWVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIEZvciBleGFtcGxlOiBBTENOQU5SNUwxNUIwMDAyIChhbGxvY3V0aW9uIGR1IHByw6lzaWRlbnQpXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IG9mIFVJRCBcIiR7ZG9jdW1lbnQudWlkfVwiIGFuZCB0eXBlIFwiJHtkb2N1bWVudFR5cGV9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9XG4gICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGZcbiAgICAgID8gYHBkZi8ke2ZyYWdtZW50cy5kaXJlY3Rvcnl9YFxuICAgICAgOiBmcmFnbWVudHMuZGlyZWN0b3J5XG4gIHJldHVybiBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7bGVnaXNsYXR1cmV9LyR7ZGlyZWN0b3J5fS8ke2ZyYWdtZW50cy5wcmVmaXh9JHtudW1iZXJ9JHtmcmFnbWVudHMuc3VmZml4fSR7ZXh0ZW5zaW9ufWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21TY3J1dGluKHNjcnV0aW46IFNjcnV0aW4pIHtcbiAgLy8gU2FtcGxlIFVJRHM6IFZUQU5SNUwxNVYzODlcbiAgY29uc3QgbWF0Y2ggPSAvXlZUQU5SKFswLTldKylMKFswLTldKylWKFswLTldKykkLy5leGVjKHNjcnV0aW4udWlkKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gc2NydXRpbiB3aXRoIHVuZXhwZWN0ZWQgVUlEOiBcIiR7c2NydXRpbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbMl1cbiAgY29uc3QgbnVtZXJvID0gbWF0Y2hbM11cbiAgcmV0dXJuIGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3NjcnV0aW5zL2RldGFpbC8obGVnaXNsYXR1cmUpLyR7bGVnaXNsYXR1cmV9LyhudW0pLyR7bnVtZXJvfWBcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRVlBLGlCQUFpQixFQUdMO0FBQUE7QUFBQSxXQUhaQSxpQkFBaUI7RUFBakJBLGlCQUFpQjtFQUFqQkEsaUJBQWlC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