@tricoteuses/senat 1.3.1 → 1.3.4

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 (254) hide show
  1. package/lib/config.d.ts +1 -0
  2. package/lib/config.js +14 -45
  3. package/lib/databases.js +86 -143
  4. package/lib/datasets.js +78 -83
  5. package/lib/index.d.ts +12 -4
  6. package/lib/index.js +42 -419
  7. package/lib/loaders.js +149 -654
  8. package/lib/model/ameli.js +83 -21
  9. package/lib/model/debats.js +0 -1
  10. package/lib/model/dosleg.d.ts +1 -1
  11. package/lib/model/dosleg.js +179 -73
  12. package/lib/model/index.d.ts +3 -3
  13. package/lib/model/index.js +12 -46
  14. package/lib/model/questions.js +68 -39
  15. package/lib/model/sens.d.ts +1 -1
  16. package/lib/model/sens.js +383 -113
  17. package/lib/model/texte.js +220 -290
  18. package/lib/model/util.js +9 -26
  19. package/lib/raw_types/ameli.js +5 -6
  20. package/lib/raw_types/debats.js +5 -6
  21. package/lib/raw_types/dosleg.js +5 -6
  22. package/lib/raw_types/questions.js +5 -6
  23. package/lib/raw_types/sens.js +5 -6
  24. package/lib/raw_types_schemats/ameli.js +1 -43
  25. package/lib/raw_types_schemats/debats.js +1 -22
  26. package/lib/raw_types_schemats/dosleg.js +1 -96
  27. package/lib/raw_types_schemats/questions.js +1 -22
  28. package/lib/raw_types_schemats/sens.js +1 -112
  29. package/lib/scripts/convert_data.js +181 -631
  30. package/lib/scripts/datautil.js +17 -60
  31. package/lib/scripts/parse_textes.js +46 -129
  32. package/lib/scripts/retrieve_documents.js +247 -513
  33. package/lib/scripts/retrieve_open_data.js +211 -368
  34. package/lib/scripts/retrieve_senateurs_photos.js +144 -239
  35. package/lib/scripts/shared/cli_helpers.js +30 -30
  36. package/lib/scripts/shared/util.js +28 -94
  37. package/lib/strings.js +20 -45
  38. package/lib/types/ameli.d.ts +1 -1
  39. package/lib/types/ameli.js +14 -25
  40. package/lib/types/debats.d.ts +1 -1
  41. package/lib/types/debats.js +3 -21
  42. package/lib/types/dosleg.d.ts +1 -1
  43. package/lib/types/dosleg.js +152 -119
  44. package/lib/types/questions.d.ts +1 -1
  45. package/lib/types/questions.js +1 -13
  46. package/lib/types/sens.d.ts +1 -1
  47. package/lib/types/sens.js +1 -13
  48. package/lib/types/sessions.js +44 -49
  49. package/lib/types/texte.js +17 -22
  50. package/lib/validators/config.js +47 -111
  51. package/lib/validators/senat.js +1 -5
  52. package/package.json +18 -40
  53. package/lib/aggregates.d.ts +0 -52
  54. package/lib/aggregates.mjs +0 -930
  55. package/lib/aggregates.ts +0 -833
  56. package/lib/config.mjs +0 -16
  57. package/lib/config.ts +0 -26
  58. package/lib/data/legislatures.json +0 -38
  59. package/lib/databases.mjs +0 -57
  60. package/lib/databases.ts +0 -71
  61. package/lib/datasets.mjs +0 -78
  62. package/lib/datasets.ts +0 -118
  63. package/lib/fields.d.ts +0 -10
  64. package/lib/fields.mjs +0 -68
  65. package/lib/fields.ts +0 -29
  66. package/lib/index.mjs +0 -4
  67. package/lib/index.ts +0 -42
  68. package/lib/inserters.d.ts +0 -98
  69. package/lib/inserters.mjs +0 -500
  70. package/lib/inserters.ts +0 -521
  71. package/lib/loaders.mjs +0 -158
  72. package/lib/loaders.ts +0 -271
  73. package/lib/model/ameli.mjs +0 -84
  74. package/lib/model/ameli.ts +0 -100
  75. package/lib/model/debats.mjs +0 -1
  76. package/lib/model/debats.ts +0 -0
  77. package/lib/model/dosleg.mjs +0 -196
  78. package/lib/model/dosleg.ts +0 -240
  79. package/lib/model/index.mjs +0 -4
  80. package/lib/model/index.ts +0 -14
  81. package/lib/model/questions.mjs +0 -71
  82. package/lib/model/questions.ts +0 -93
  83. package/lib/model/sens.mjs +0 -415
  84. package/lib/model/sens.ts +0 -516
  85. package/lib/model/texte.mjs +0 -208
  86. package/lib/model/texte.ts +0 -229
  87. package/lib/model/util.mjs +0 -19
  88. package/lib/model/util.ts +0 -32
  89. package/lib/raw_types/ameli.mjs +0 -5
  90. package/lib/raw_types/ameli.ts +0 -951
  91. package/lib/raw_types/debats.mjs +0 -5
  92. package/lib/raw_types/debats.ts +0 -222
  93. package/lib/raw_types/dosleg.mjs +0 -5
  94. package/lib/raw_types/dosleg.ts +0 -3625
  95. package/lib/raw_types/questions.mjs +0 -5
  96. package/lib/raw_types/questions.ts +0 -427
  97. package/lib/raw_types/sens.mjs +0 -5
  98. package/lib/raw_types/sens.ts +0 -4499
  99. package/lib/raw_types_kysely/ameli.d.ts +0 -6
  100. package/lib/raw_types_kysely/ameli.mjs +0 -7
  101. package/lib/raw_types_kysely/ameli.ts +0 -6
  102. package/lib/raw_types_kysely/debats.d.ts +0 -6
  103. package/lib/raw_types_kysely/debats.mjs +0 -7
  104. package/lib/raw_types_kysely/debats.ts +0 -6
  105. package/lib/raw_types_kysely/dosleg.d.ts +0 -6
  106. package/lib/raw_types_kysely/dosleg.mjs +0 -7
  107. package/lib/raw_types_kysely/dosleg.ts +0 -6
  108. package/lib/raw_types_kysely/questions.d.ts +0 -6
  109. package/lib/raw_types_kysely/questions.mjs +0 -7
  110. package/lib/raw_types_kysely/questions.ts +0 -6
  111. package/lib/raw_types_kysely/sens.d.ts +0 -6
  112. package/lib/raw_types_kysely/sens.mjs +0 -7
  113. package/lib/raw_types_kysely/sens.ts +0 -6
  114. package/lib/raw_types_kysely/texte.d.ts +0 -45
  115. package/lib/raw_types_kysely/texte.mjs +0 -7
  116. package/lib/raw_types_kysely/texte.ts +0 -53
  117. package/lib/raw_types_schemats/ameli.mjs +0 -2
  118. package/lib/raw_types_schemats/ameli.ts +0 -601
  119. package/lib/raw_types_schemats/debats.mjs +0 -2
  120. package/lib/raw_types_schemats/debats.ts +0 -145
  121. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  122. package/lib/raw_types_schemats/dosleg.ts +0 -2195
  123. package/lib/raw_types_schemats/questions.mjs +0 -2
  124. package/lib/raw_types_schemats/questions.ts +0 -251
  125. package/lib/raw_types_schemats/sens.mjs +0 -2
  126. package/lib/raw_types_schemats/sens.ts +0 -2907
  127. package/lib/scripts/convert_data.mjs +0 -181
  128. package/lib/scripts/convert_data.ts +0 -243
  129. package/lib/scripts/datautil.mjs +0 -16
  130. package/lib/scripts/datautil.ts +0 -19
  131. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  132. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  133. package/lib/scripts/parse_textes.mjs +0 -46
  134. package/lib/scripts/parse_textes.ts +0 -65
  135. package/lib/scripts/retrieve_documents.mjs +0 -249
  136. package/lib/scripts/retrieve_documents.ts +0 -298
  137. package/lib/scripts/retrieve_open_data.mjs +0 -217
  138. package/lib/scripts/retrieve_open_data.ts +0 -274
  139. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  140. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  141. package/lib/scripts/retrieve_textes.d.ts +0 -1
  142. package/lib/scripts/retrieve_textes.mjs +0 -328
  143. package/lib/scripts/retrieve_textes.ts +0 -143
  144. package/lib/scripts/shared/cli_helpers.ts +0 -36
  145. package/lib/scripts/shared/util.ts +0 -33
  146. package/lib/src/aggregates.d.ts +0 -52
  147. package/lib/src/aggregates.mjs +0 -726
  148. package/lib/src/config.d.ts +0 -2
  149. package/lib/src/config.mjs +0 -16
  150. package/lib/src/databases.d.ts +0 -18
  151. package/lib/src/databases.mjs +0 -55
  152. package/lib/src/datasets.d.ts +0 -28
  153. package/lib/src/datasets.mjs +0 -78
  154. package/lib/src/fields.d.ts +0 -10
  155. package/lib/src/fields.mjs +0 -22
  156. package/lib/src/index.d.ts +0 -8
  157. package/lib/src/index.mjs +0 -7
  158. package/lib/src/inserters.d.ts +0 -98
  159. package/lib/src/inserters.mjs +0 -360
  160. package/lib/src/loaders.d.ts +0 -36
  161. package/lib/src/loaders.mjs +0 -107
  162. package/lib/src/model/ameli.d.ts +0 -4
  163. package/lib/src/model/ameli.js +0 -57
  164. package/lib/src/model/debats.d.ts +0 -4
  165. package/lib/src/model/debats.js +0 -43
  166. package/lib/src/model/dosleg.d.ts +0 -197
  167. package/lib/src/model/dosleg.js +0 -169
  168. package/lib/src/model/index.d.ts +0 -4
  169. package/lib/src/model/index.js +0 -4
  170. package/lib/src/model/questions.d.ts +0 -89
  171. package/lib/src/model/questions.js +0 -76
  172. package/lib/src/model/sens.d.ts +0 -390
  173. package/lib/src/model/sens.js +0 -339
  174. package/lib/src/model/texte.d.ts +0 -7
  175. package/lib/src/model/texte.js +0 -183
  176. package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
  177. package/lib/src/raw_types_kysely/ameli.js +0 -5
  178. package/lib/src/raw_types_kysely/debats.d.ts +0 -207
  179. package/lib/src/raw_types_kysely/debats.js +0 -5
  180. package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
  181. package/lib/src/raw_types_kysely/dosleg.js +0 -5
  182. package/lib/src/raw_types_kysely/questions.d.ts +0 -414
  183. package/lib/src/raw_types_kysely/questions.js +0 -5
  184. package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
  185. package/lib/src/raw_types_kysely/sens.js +0 -5
  186. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  187. package/lib/src/raw_types_schemats/ameli.js +0 -2
  188. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  189. package/lib/src/raw_types_schemats/debats.js +0 -2
  190. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
  191. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  192. package/lib/src/raw_types_schemats/questions.d.ts +0 -231
  193. package/lib/src/raw_types_schemats/questions.js +0 -2
  194. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  195. package/lib/src/raw_types_schemats/sens.js +0 -2
  196. package/lib/src/scripts/convert_data.d.ts +0 -1
  197. package/lib/src/scripts/convert_data.js +0 -95
  198. package/lib/src/scripts/datautil.d.ts +0 -5
  199. package/lib/src/scripts/datautil.js +0 -16
  200. package/lib/src/scripts/parse_textes.d.ts +0 -1
  201. package/lib/src/scripts/parse_textes.js +0 -47
  202. package/lib/src/scripts/retrieve_documents.d.ts +0 -1
  203. package/lib/src/scripts/retrieve_documents.js +0 -258
  204. package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
  205. package/lib/src/scripts/retrieve_open_data.js +0 -214
  206. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
  207. package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
  208. package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
  209. package/lib/src/scripts/shared/cli_helpers.js +0 -32
  210. package/lib/src/scripts/shared/util.d.ts +0 -3
  211. package/lib/src/scripts/shared/util.js +0 -28
  212. package/lib/src/strings.d.ts +0 -1
  213. package/lib/src/strings.mjs +0 -18
  214. package/lib/src/types/ameli.d.ts +0 -10
  215. package/lib/src/types/ameli.js +0 -13
  216. package/lib/src/types/debats.d.ts +0 -4
  217. package/lib/src/types/debats.js +0 -2
  218. package/lib/src/types/dosleg.d.ts +0 -98
  219. package/lib/src/types/dosleg.js +0 -151
  220. package/lib/src/types/questions.d.ts +0 -2
  221. package/lib/src/types/questions.js +0 -1
  222. package/lib/src/types/sens.d.ts +0 -10
  223. package/lib/src/types/sens.js +0 -1
  224. package/lib/src/types/sessions.d.ts +0 -42
  225. package/lib/src/types/sessions.js +0 -43
  226. package/lib/src/types/texte.d.ts +0 -61
  227. package/lib/src/types/texte.js +0 -16
  228. package/lib/src/validators/config.d.ts +0 -1
  229. package/lib/src/validators/config.js +0 -54
  230. package/lib/src/validators/senat.d.ts +0 -0
  231. package/lib/src/validators/senat.js +0 -24
  232. package/lib/strings.mjs +0 -18
  233. package/lib/strings.ts +0 -26
  234. package/lib/types/ameli.mjs +0 -13
  235. package/lib/types/ameli.ts +0 -21
  236. package/lib/types/debats.mjs +0 -2
  237. package/lib/types/debats.ts +0 -6
  238. package/lib/types/dosleg.mjs +0 -151
  239. package/lib/types/dosleg.ts +0 -284
  240. package/lib/types/questions.mjs +0 -1
  241. package/lib/types/questions.ts +0 -3
  242. package/lib/types/sens.mjs +0 -1
  243. package/lib/types/sens.ts +0 -12
  244. package/lib/types/sessions.mjs +0 -43
  245. package/lib/types/sessions.ts +0 -42
  246. package/lib/types/texte.mjs +0 -16
  247. package/lib/types/texte.ts +0 -76
  248. package/lib/typings/windows-1252.d.js +0 -2
  249. package/lib/typings/windows-1252.d.mjs +0 -2
  250. package/lib/typings/windows-1252.d.ts +0 -11
  251. package/lib/validators/config.mjs +0 -54
  252. package/lib/validators/config.ts +0 -79
  253. package/lib/validators/senat.mjs +0 -24
  254. package/lib/validators/senat.ts +0 -26
@@ -1,177 +0,0 @@
1
- import assert from "assert"
2
- import { execSync } from "child_process"
3
- import commandLineArgs from "command-line-args"
4
- import fs from "fs-extra"
5
- // import fetch from "node-fetch"
6
- import path from "path"
7
- // import stream from "stream"
8
- // import util from "util"
9
-
10
- import { findActif as findActifSenateurs } from "../model/sens"
11
- import { slugify } from "../strings"
12
- import { Photo } from "../types/sens"
13
- import { commonOptions } from "./shared/cli_helpers"
14
-
15
- const optionsDefinitions = [
16
- ...commonOptions,
17
- {
18
- alias: "f",
19
- help: "fetch sénateurs' pictures instead of retrieving them from files",
20
- name: "fetch",
21
- type: Boolean,
22
- },
23
- ]
24
- const options = commandLineArgs(optionsDefinitions)
25
- // const pipeline = util.promisify(stream.pipeline)
26
-
27
- async function retrievePhotosSenateurs(): Promise<void> {
28
- const dataDir = options.dataDir
29
- assert(dataDir, "Missing argument: data directory")
30
-
31
- const photosDir = path.join(dataDir, "photos_senateurs")
32
- const missingPhotoFilePath = path.resolve(__dirname, "images", "transparent_155x225.jpg")
33
-
34
- const sens = await Array.fromAsync(findActifSenateurs())
35
-
36
- // Download photos.
37
- fs.ensureDirSync(photosDir)
38
- if (options.fetch) {
39
- for (const sen of sens) {
40
- const photoStem = `${slugify(sen.sennomuse, "_")}_${slugify(
41
- sen.senprenomuse,
42
- "_",
43
- )}${slugify(sen.senmat, "_")}`
44
- const photoFilename = photoStem + ".jpg"
45
- const photoFilePath = path.join(photosDir, photoFilename)
46
- const photoTempFilename = photoStem + "_temp.jpg"
47
- const photoTempFilePath = path.join(photosDir, photoTempFilename)
48
- const urlPhoto = `https://www.senat.fr/senimg/${photoFilename}`
49
- if (!options.silent) {
50
- console.log(
51
- `Loading photo ${urlPhoto} for ${sen.senprenomuse} ${sen.sennomuse}…`,
52
- )
53
- }
54
- // Fetch fails with OpenSSL error: dh key too small.
55
- // (so does "curl").
56
- // for (let retries = 0; retries < 3; retries++) {
57
- // const response = await fetch(urlPhoto)
58
- // if (response.ok) {
59
- // await pipeline(response.body, fs.createWriteStream(photoTempFilePath))
60
- // fs.renameSync(photoTempFilePath, photoFilePath)
61
- // break
62
- // }
63
- // if (retries >= 2) {
64
- // console.warn(`Fetch failed: ${urlPhoto} (${sen.senprenomuse} ${sen.sennomuse})`)
65
- // console.warn(response.status, response.statusText)
66
- // console.warn(await response.text())
67
- // if (fs.existsSync(photoFilePath)) {
68
- // console.warn(" => Reusing existing image")
69
- // } else {
70
- // console.warn(" => Using blank image")
71
- // fs.copyFileSync(missingPhotoFilePath, photoFilePath)
72
- // }
73
- // break
74
- // }
75
- // }
76
- try {
77
- execSync(`wget --quiet -O ${photoTempFilename} ${urlPhoto}`, {
78
- cwd: photosDir,
79
- env: process.env,
80
- encoding: "utf-8",
81
- // stdio: ["ignore", "ignore", "pipe"],
82
- })
83
- fs.renameSync(photoTempFilePath, photoFilePath)
84
- } catch (error) {
85
- if (typeof error === "object" && error && "status" in error && error.status === 8) {
86
- console.error(`Unable to load photo for ${sen.senprenomuse} ${sen.sennomuse}`)
87
- continue
88
- }
89
- throw error
90
- }
91
- }
92
- }
93
-
94
- // Resize photos to 155x225, because some haven't exactly this size.
95
- for (const sen of sens) {
96
- const photoStem = `${slugify(sen.sennomuse, "_")}_${slugify(
97
- sen.senprenomuse,
98
- "_",
99
- )}${slugify(sen.senmat, "_")}`
100
- const photoFilename = photoStem + ".jpg"
101
- const photoFilePath = path.join(photosDir, photoFilename)
102
- if (fs.existsSync(photoFilePath)) {
103
- if (!options.silent) {
104
- console.log(
105
- `Resizing photo ${photoStem} for ${sen.senprenomuse} ${sen.sennomuse}…`,
106
- )
107
- }
108
-
109
- execSync(
110
- `gm convert -resize 155x225! ${photoStem}.jpg ${photoStem}_155x225.jpg`,
111
- {
112
- cwd: photosDir,
113
- },
114
- )
115
- } else {
116
- if (!options.silent) {
117
- console.warn(`Missing photo for ${sen.senprenomuse} ${sen.sennomuse}: using blank image`)
118
- }
119
- fs.copyFileSync(missingPhotoFilePath, path.join(photosDir, `${photoStem}_155x225.jpg`))
120
- }
121
- }
122
-
123
- // Create a mosaic of photos.
124
- if (!options.silent) {
125
- console.log("Creating mosaic of photos…")
126
- }
127
- const photoBySenmat: { [senmat: string]: Photo } = {}
128
- const rowsFilenames: string[] = []
129
- for (
130
- let senIndex = 0, rowIndex = 0;
131
- senIndex < sens.length;
132
- senIndex += 25, rowIndex++
133
- ) {
134
- const row = sens.slice(senIndex, senIndex + 25)
135
- const photosFilenames: string[] = []
136
- for (const [columnIndex, sen] of row.entries()) {
137
- const photoStem = `${slugify(sen.sennomuse, "_")}_${slugify(
138
- sen.senprenomuse,
139
- "_",
140
- )}${slugify(sen.senmat, "_")}`
141
- const photoFilename = `${photoStem}_155x225.jpg`
142
- photosFilenames.push(photoFilename)
143
- photoBySenmat[sen.senmat] = {
144
- chemin: `photos_senateurs/${photoFilename}`,
145
- cheminMosaique: "photos_senateurs/senateurs.jpg",
146
- hauteur: 225,
147
- largeur: 155,
148
- xMosaique: columnIndex * 155,
149
- yMosaique: rowIndex * 225,
150
- }
151
- }
152
- const rowFilename = `row-${rowIndex}.jpg`
153
- execSync(`gm convert ${photosFilenames.join(" ")} +append ${rowFilename}`, {
154
- cwd: photosDir,
155
- })
156
- rowsFilenames.push(rowFilename)
157
- }
158
- execSync(`gm convert ${rowsFilenames.join(" ")} -append senateurs.jpg`, {
159
- cwd: photosDir,
160
- })
161
- for (const rowFilename of rowsFilenames) {
162
- fs.unlinkSync(path.join(photosDir, rowFilename))
163
- }
164
-
165
- if (!options.silent) {
166
- console.log("Creating JSON file containing informations on all pictures…")
167
- }
168
- const jsonFilePath = path.join(photosDir, "senateurs.json")
169
- fs.writeFileSync(jsonFilePath, JSON.stringify(photoBySenmat, null, 2))
170
- }
171
-
172
- retrievePhotosSenateurs()
173
- .then(() => process.exit(0))
174
- .catch((error) => {
175
- console.log(error)
176
- process.exit(1)
177
- })
@@ -1 +0,0 @@
1
- export {};
@@ -1,328 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- require("core-js/modules/es.symbol.to-string-tag.js");
5
- require("core-js/modules/es.array.for-each.js");
6
- require("core-js/modules/es.array.from.js");
7
- require("core-js/modules/es.array.is-array.js");
8
- require("core-js/modules/es.array.reverse.js");
9
- require("core-js/modules/es.array.slice.js");
10
- require("core-js/modules/es.json.to-string-tag.js");
11
- require("core-js/modules/es.math.to-string-tag.js");
12
- require("core-js/modules/es.object.create.js");
13
- require("core-js/modules/es.object.define-property.js");
14
- require("core-js/modules/es.object.get-prototype-of.js");
15
- require("core-js/modules/es.object.set-prototype-of.js");
16
- require("core-js/modules/es.regexp.exec.js");
17
- require("core-js/modules/web.dom-collections.for-each.js");
18
- require("core-js/modules/es.symbol.js");
19
- require("core-js/modules/es.symbol.description.js");
20
- require("core-js/modules/es.symbol.async-iterator.js");
21
- require("core-js/modules/es.symbol.iterator.js");
22
- require("core-js/modules/es.array.concat.js");
23
- require("core-js/modules/es.array.iterator.js");
24
- require("core-js/modules/es.array.join.js");
25
- require("core-js/modules/es.date.to-string.js");
26
- require("core-js/modules/es.function.name.js");
27
- require("core-js/modules/es.object.to-string.js");
28
- require("core-js/modules/es.promise.js");
29
- require("core-js/modules/es.regexp.to-string.js");
30
- require("core-js/modules/es.string.iterator.js");
31
- require("core-js/modules/web.dom-collections.iterator.js");
32
- require("core-js/modules/web.url.js");
33
- require("core-js/modules/web.url.to-json.js");
34
- require("core-js/modules/web.url-search-params.js");
35
- var _assert = _interopRequireDefault(require("assert"));
36
- var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
37
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
38
- var _path = _interopRequireDefault(require("path"));
39
- var _dosleg = require("../model/dosleg");
40
- var _datautil = require("./datautil");
41
- var _cli_helpers = require("./shared/cli_helpers");
42
- var _util = require("./shared/util");
43
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
44
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
45
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
46
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
47
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
48
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
49
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
50
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
51
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
52
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
53
- function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
54
- function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, "return": function _return(r) { var n = this.s["return"]; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, "throw": function _throw(r) { var n = this.s["return"]; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); }
55
- var optionsDefinitions = [].concat(_toConsumableArray(_cli_helpers.commonOptions), [{
56
- help: "sessions of texts to retrieve; leave empty for all",
57
- multiple: true,
58
- name: "sessions",
59
- type: String
60
- }, {
61
- help: "parse and convert documents into JSON (textes only for now)",
62
- name: "parseDocuments",
63
- type: Boolean
64
- }]);
65
- var options = (0, _commandLineArgs["default"])(optionsDefinitions);
66
- var SENAT_TEXTE_BASE_URL = "https://www.senat.fr/akomantoso/";
67
- var SENAT_RAPPORT_BASE_URL = "https://www.senat.fr/rap/";
68
- function retrieveDocument(_x) {
69
- return _retrieveDocument.apply(this, arguments);
70
- }
71
- function _retrieveDocument() {
72
- _retrieveDocument = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(documentUrl) {
73
- var response;
74
- return _regeneratorRuntime().wrap(function _callee$(_context) {
75
- while (1) switch (_context.prev = _context.next) {
76
- case 0:
77
- if (!options.silent) {
78
- console.log("Retrieving document ".concat(documentUrl, "\u2026"));
79
- }
80
- _context.prev = 1;
81
- _context.next = 4;
82
- return (0, _util.fetchWithRetry)(documentUrl);
83
- case 4:
84
- response = _context.sent;
85
- if (response.ok) {
86
- _context.next = 8;
87
- break;
88
- }
89
- if (response.status === 404) {
90
- console.warn("Texte ".concat(documentUrl, " not found"));
91
- } else {
92
- console.error("An error occurred while retrieving texte ".concat(documentUrl, ": ").concat(response.status));
93
- }
94
- return _context.abrupt("return", null);
95
- case 8:
96
- _context.next = 10;
97
- return response.text();
98
- case 10:
99
- return _context.abrupt("return", _context.sent);
100
- case 13:
101
- _context.prev = 13;
102
- _context.t0 = _context["catch"](1);
103
- console.error(_context.t0.message);
104
- return _context.abrupt("return", null);
105
- case 17:
106
- case "end":
107
- return _context.stop();
108
- }
109
- }, _callee, null, [[1, 13]]);
110
- }));
111
- return _retrieveDocument.apply(this, arguments);
112
- }
113
- function retrieveTextes(_x2) {
114
- return _retrieveTextes.apply(this, arguments);
115
- }
116
- function _retrieveTextes() {
117
- _retrieveTextes = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(dataDir) {
118
- var textesDir, retrievedTextesCount, texteUrlsNotFoundOrError, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, texte, texteName, texteXmlUrl, texteXmlAbsoluteUrl, texteXml, _texte$session, texteDir;
119
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
120
- while (1) switch (_context2.prev = _context2.next) {
121
- case 0:
122
- textesDir = _path["default"].join(dataDir, "leg");
123
- _fsExtra["default"].ensureDirSync(textesDir);
124
- retrievedTextesCount = 0;
125
- texteUrlsNotFoundOrError = [];
126
- _iteratorAbruptCompletion = false;
127
- _didIteratorError = false;
128
- _context2.prev = 6;
129
- _iterator = _asyncIterator((0, _dosleg.findSenatTexteUrls)(options.sessions));
130
- case 8:
131
- _context2.next = 10;
132
- return _iterator.next();
133
- case 10:
134
- if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
135
- _context2.next = 22;
136
- break;
137
- }
138
- texte = _step.value;
139
- texteName = _path["default"].parse(texte.url).name;
140
- texteXmlUrl = "".concat(texteName, ".akn.xml");
141
- texteXmlAbsoluteUrl = new URL(texteXmlUrl, SENAT_TEXTE_BASE_URL).toString();
142
- _context2.next = 17;
143
- return retrieveDocument(texteXmlAbsoluteUrl);
144
- case 17:
145
- texteXml = _context2.sent;
146
- if (texteXml) {
147
- if (options.parseDocuments) {
148
- //const parsedTexte = await parseTexte(texteXml)
149
- }
150
- texteDir = _path["default"].join(textesDir, "".concat((_texte$session = texte.session) !== null && _texte$session !== void 0 ? _texte$session : _datautil.UNDEFINED_SESSION), texteName);
151
- (0, _util.ensureAndClearDir)(texteDir);
152
- _fsExtra["default"].writeFileSync(_path["default"].join(texteDir, texteXmlUrl), texteXml);
153
- retrievedTextesCount++;
154
- } else {
155
- texteUrlsNotFoundOrError.push(texteXmlAbsoluteUrl);
156
- }
157
- case 19:
158
- _iteratorAbruptCompletion = false;
159
- _context2.next = 8;
160
- break;
161
- case 22:
162
- _context2.next = 28;
163
- break;
164
- case 24:
165
- _context2.prev = 24;
166
- _context2.t0 = _context2["catch"](6);
167
- _didIteratorError = true;
168
- _iteratorError = _context2.t0;
169
- case 28:
170
- _context2.prev = 28;
171
- _context2.prev = 29;
172
- if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
173
- _context2.next = 33;
174
- break;
175
- }
176
- _context2.next = 33;
177
- return _iterator["return"]();
178
- case 33:
179
- _context2.prev = 33;
180
- if (!_didIteratorError) {
181
- _context2.next = 36;
182
- break;
183
- }
184
- throw _iteratorError;
185
- case 36:
186
- return _context2.finish(33);
187
- case 37:
188
- return _context2.finish(28);
189
- case 38:
190
- if (options.verbose) {
191
- console.log("".concat(retrievedTextesCount, " textes retrieved"));
192
- console.log("".concat(texteUrlsNotFoundOrError.length, " textes failed with URLs ").concat(texteUrlsNotFoundOrError.join(", ")));
193
- }
194
- // TODO retrieve other formats (html/pdf) ?
195
- case 39:
196
- case "end":
197
- return _context2.stop();
198
- }
199
- }, _callee2, null, [[6, 24, 28, 38], [29,, 33, 37]]);
200
- }));
201
- return _retrieveTextes.apply(this, arguments);
202
- }
203
- function retrieveRapports(_x3) {
204
- return _retrieveRapports.apply(this, arguments);
205
- }
206
- function _retrieveRapports() {
207
- _retrieveRapports = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(dataDir) {
208
- var rapportsDir, retrievedRapportsCount, rapportUrlsNotFoundOrError, _iteratorAbruptCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, rapport, rapportUrl, parsedRapportUrl, rapportUrlBase, rapportName, rapportAbsoluteUrl, rapportContent, _rapport$session, rapportDir;
209
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
210
- while (1) switch (_context3.prev = _context3.next) {
211
- case 0:
212
- rapportsDir = _path["default"].join(dataDir, "rap");
213
- _fsExtra["default"].ensureDirSync(rapportsDir);
214
- retrievedRapportsCount = 0;
215
- rapportUrlsNotFoundOrError = [];
216
- _iteratorAbruptCompletion2 = false;
217
- _didIteratorError2 = false;
218
- _context3.prev = 6;
219
- _iterator2 = _asyncIterator((0, _dosleg.findSenatRapportUrls)(options.sessions));
220
- case 8:
221
- _context3.next = 10;
222
- return _iterator2.next();
223
- case 10:
224
- if (!(_iteratorAbruptCompletion2 = !(_step2 = _context3.sent).done)) {
225
- _context3.next = 25;
226
- break;
227
- }
228
- rapport = _step2.value;
229
- rapportUrl = rapport.url;
230
- parsedRapportUrl = _path["default"].parse(rapport.url);
231
- rapportUrlBase = parsedRapportUrl.base;
232
- rapportName = parsedRapportUrl.name;
233
- if (parsedRapportUrl.ext === ".html") {
234
- rapportUrlBase = "".concat(rapportName, "_mono.html");
235
- rapportUrl = _path["default"].format({
236
- dir: parsedRapportUrl.dir,
237
- base: rapportUrlBase
238
- });
239
- }
240
- rapportAbsoluteUrl = new URL(rapportUrl, SENAT_RAPPORT_BASE_URL).toString();
241
- _context3.next = 20;
242
- return retrieveDocument(rapportAbsoluteUrl);
243
- case 20:
244
- rapportContent = _context3.sent;
245
- if (rapportContent) {
246
- rapportDir = _path["default"].join(rapportsDir, "".concat((_rapport$session = rapport.session) !== null && _rapport$session !== void 0 ? _rapport$session : _datautil.UNDEFINED_SESSION), rapportName);
247
- (0, _util.ensureAndClearDir)(rapportDir);
248
- _fsExtra["default"].writeFileSync(_path["default"].join(rapportDir, rapportUrlBase), rapportContent);
249
- retrievedRapportsCount++;
250
- } else {
251
- rapportUrlsNotFoundOrError.push(rapportAbsoluteUrl);
252
- }
253
- case 22:
254
- _iteratorAbruptCompletion2 = false;
255
- _context3.next = 8;
256
- break;
257
- case 25:
258
- _context3.next = 31;
259
- break;
260
- case 27:
261
- _context3.prev = 27;
262
- _context3.t0 = _context3["catch"](6);
263
- _didIteratorError2 = true;
264
- _iteratorError2 = _context3.t0;
265
- case 31:
266
- _context3.prev = 31;
267
- _context3.prev = 32;
268
- if (!(_iteratorAbruptCompletion2 && _iterator2["return"] != null)) {
269
- _context3.next = 36;
270
- break;
271
- }
272
- _context3.next = 36;
273
- return _iterator2["return"]();
274
- case 36:
275
- _context3.prev = 36;
276
- if (!_didIteratorError2) {
277
- _context3.next = 39;
278
- break;
279
- }
280
- throw _iteratorError2;
281
- case 39:
282
- return _context3.finish(36);
283
- case 40:
284
- return _context3.finish(31);
285
- case 41:
286
- if (options.verbose) {
287
- console.log("".concat(retrievedRapportsCount, " rapports retrieved"));
288
- console.log("".concat(rapportUrlsNotFoundOrError.length, " rapports failed with URLs ").concat(rapportUrlsNotFoundOrError.join(", ")));
289
- }
290
- case 42:
291
- case "end":
292
- return _context3.stop();
293
- }
294
- }, _callee3, null, [[6, 27, 31, 41], [32,, 36, 40]]);
295
- }));
296
- return _retrieveRapports.apply(this, arguments);
297
- }
298
- function main() {
299
- return _main.apply(this, arguments);
300
- }
301
- function _main() {
302
- _main = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
303
- var dataDir;
304
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
305
- while (1) switch (_context4.prev = _context4.next) {
306
- case 0:
307
- dataDir = options.dataDir;
308
- (0, _assert["default"])(dataDir, "Missing argument: data directory");
309
- _context4.next = 4;
310
- return retrieveTextes(dataDir);
311
- case 4:
312
- _context4.next = 6;
313
- return retrieveRapports(dataDir);
314
- case 6:
315
- case "end":
316
- return _context4.stop();
317
- }
318
- }, _callee4);
319
- }));
320
- return _main.apply(this, arguments);
321
- }
322
- main().then(function () {
323
- return process.exit(0);
324
- })["catch"](function (error) {
325
- console.log(error);
326
- process.exit(1);
327
- });
328
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kb3NsZWciLCJfZGF0YXV0aWwiLCJfY2xpX2hlbHBlcnMiLCJfdXRpbCIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXNBcnJheSIsIl9hc3luY0l0ZXJhdG9yIiwiQXN5bmNGcm9tU3luY0l0ZXJhdG9yIiwiQXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29udGludWF0aW9uIiwicmVqZWN0IiwiX3JldHVybiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNvbmNhdCIsImNvbW1vbk9wdGlvbnMiLCJoZWxwIiwibXVsdGlwbGUiLCJTdHJpbmciLCJCb29sZWFuIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsIlNFTkFUX1RFWFRFX0JBU0VfVVJMIiwiU0VOQVRfUkFQUE9SVF9CQVNFX1VSTCIsInJldHJpZXZlRG9jdW1lbnQiLCJfeCIsIl9yZXRyaWV2ZURvY3VtZW50IiwiX2NhbGxlZSIsImRvY3VtZW50VXJsIiwicmVzcG9uc2UiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImZldGNoV2l0aFJldHJ5Iiwib2siLCJzdGF0dXMiLCJ3YXJuIiwiZXJyb3IiLCJ0ZXh0IiwidDAiLCJtZXNzYWdlIiwicmV0cmlldmVUZXh0ZXMiLCJfeDIiLCJfcmV0cmlldmVUZXh0ZXMiLCJfY2FsbGVlMiIsImRhdGFEaXIiLCJ0ZXh0ZXNEaXIiLCJyZXRyaWV2ZWRUZXh0ZXNDb3VudCIsInRleHRlVXJsc05vdEZvdW5kT3JFcnJvciIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb24iLCJfZGlkSXRlcmF0b3JFcnJvciIsIl9pdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJ0ZXh0ZSIsInRleHRlTmFtZSIsInRleHRlWG1sVXJsIiwidGV4dGVYbWxBYnNvbHV0ZVVybCIsInRleHRlWG1sIiwiX3RleHRlJHNlc3Npb24iLCJ0ZXh0ZURpciIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhdGgiLCJqb2luIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiZmluZFNlbmF0VGV4dGVVcmxzIiwic2Vzc2lvbnMiLCJwYXJzZSIsInVybCIsIlVSTCIsInBhcnNlRG9jdW1lbnRzIiwic2Vzc2lvbiIsIlVOREVGSU5FRF9TRVNTSU9OIiwiZW5zdXJlQW5kQ2xlYXJEaXIiLCJ3cml0ZUZpbGVTeW5jIiwidmVyYm9zZSIsInJldHJpZXZlUmFwcG9ydHMiLCJfeDMiLCJfcmV0cmlldmVSYXBwb3J0cyIsIl9jYWxsZWUzIiwicmFwcG9ydHNEaXIiLCJyZXRyaWV2ZWRSYXBwb3J0c0NvdW50IiwicmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uMiIsIl9kaWRJdGVyYXRvckVycm9yMiIsIl9pdGVyYXRvckVycm9yMiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJyYXBwb3J0IiwicmFwcG9ydFVybCIsInBhcnNlZFJhcHBvcnRVcmwiLCJyYXBwb3J0VXJsQmFzZSIsInJhcHBvcnROYW1lIiwicmFwcG9ydEFic29sdXRlVXJsIiwicmFwcG9ydENvbnRlbnQiLCJfcmFwcG9ydCRzZXNzaW9uIiwicmFwcG9ydERpciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImZpbmRTZW5hdFJhcHBvcnRVcmxzIiwiYmFzZSIsImV4dCIsImZvcm1hdCIsImRpciIsIm1haW4iLCJfbWFpbiIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiYXNzZXJ0IiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV90ZXh0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBmaW5kU2VuYXRSYXBwb3J0VXJscywgZmluZFNlbmF0VGV4dGVVcmxzIH0gZnJvbSBcIi4uL21vZGVsL2Rvc2xlZ1wiXG5pbXBvcnQgeyBVTkRFRklORURfU0VTU0lPTiB9IGZyb20gXCIuL2RhdGF1dGlsXCJcbmltcG9ydCB7IGNvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuaW1wb3J0IHsgZW5zdXJlQW5kQ2xlYXJEaXIsIGZldGNoV2l0aFJldHJ5IH0gZnJvbSBcIi4vc2hhcmVkL3V0aWxcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIC4uLmNvbW1vbk9wdGlvbnMsXG4gIHtcbiAgICBoZWxwOiBcInNlc3Npb25zIG9mIHRleHRzIHRvIHJldHJpZXZlOyBsZWF2ZSBlbXB0eSBmb3IgYWxsXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJzZXNzaW9uc1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGhlbHA6IFwicGFyc2UgYW5kIGNvbnZlcnQgZG9jdW1lbnRzIGludG8gSlNPTiAodGV4dGVzIG9ubHkgZm9yIG5vdylcIixcbiAgICBuYW1lOiBcInBhcnNlRG9jdW1lbnRzXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5jb25zdCBTRU5BVF9URVhURV9CQVNFX1VSTCA9IFwiaHR0cHM6Ly93d3cuc2VuYXQuZnIvYWtvbWFudG9zby9cIlxuY29uc3QgU0VOQVRfUkFQUE9SVF9CQVNFX1VSTCA9IFwiaHR0cHM6Ly93d3cuc2VuYXQuZnIvcmFwL1wiXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlRG9jdW1lbnQgKGRvY3VtZW50VXJsOiBzdHJpbmcpIHtcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGRvY3VtZW50ICR7ZG9jdW1lbnRVcmx94oCmYClcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhSZXRyeShkb2N1bWVudFVybClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUZXh0ZSAke2RvY3VtZW50VXJsfSBub3QgZm91bmRgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmV0cmlldmluZyB0ZXh0ZSAke2RvY3VtZW50VXJsfTogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlVGV4dGVzIChkYXRhRGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgdGV4dGVzRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIFwibGVnXCIpXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVzRGlyKVxuXG4gIGxldCByZXRyaWV2ZWRUZXh0ZXNDb3VudCA9IDBcbiAgY29uc3QgdGV4dGVVcmxzTm90Rm91bmRPckVycm9yID0gW11cblxuICBmb3IgYXdhaXQgKGNvbnN0IHRleHRlIG9mIGZpbmRTZW5hdFRleHRlVXJscyhvcHRpb25zLnNlc3Npb25zKSkge1xuICAgIGNvbnN0IHRleHRlTmFtZSA9IHBhdGgucGFyc2UodGV4dGUudXJsKS5uYW1lXG4gICAgY29uc3QgdGV4dGVYbWxVcmwgPSBgJHt0ZXh0ZU5hbWV9LmFrbi54bWxgXG4gICAgY29uc3QgdGV4dGVYbWxBYnNvbHV0ZVVybCA9IG5ldyBVUkwodGV4dGVYbWxVcmwsIFNFTkFUX1RFWFRFX0JBU0VfVVJMKS50b1N0cmluZygpXG5cbiAgICBjb25zdCB0ZXh0ZVhtbCA9IGF3YWl0IHJldHJpZXZlRG9jdW1lbnQodGV4dGVYbWxBYnNvbHV0ZVVybClcblxuICAgIGlmICh0ZXh0ZVhtbCkge1xuICAgICAgaWYgKG9wdGlvbnMucGFyc2VEb2N1bWVudHMpIHtcbiAgICAgICAgLy9jb25zdCBwYXJzZWRUZXh0ZSA9IGF3YWl0IHBhcnNlVGV4dGUodGV4dGVYbWwpXG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IHRleHRlRGlyID0gcGF0aC5qb2luKHRleHRlc0RpciwgYCR7dGV4dGUuc2Vzc2lvbiA/PyBVTkRFRklORURfU0VTU0lPTn1gLCB0ZXh0ZU5hbWUpXG4gICAgICBlbnN1cmVBbmRDbGVhckRpcih0ZXh0ZURpcilcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRleHRlRGlyLCB0ZXh0ZVhtbFVybCksIHRleHRlWG1sKVxuICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0ZVVybHNOb3RGb3VuZE9yRXJyb3IucHVzaCh0ZXh0ZVhtbEFic29sdXRlVXJsKVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtyZXRyaWV2ZWRUZXh0ZXNDb3VudH0gdGV4dGVzIHJldHJpZXZlZGApXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHt0ZXh0ZVVybHNOb3RGb3VuZE9yRXJyb3IubGVuZ3RofSB0ZXh0ZXMgZmFpbGVkIHdpdGggVVJMcyAke3RleHRlVXJsc05vdEZvdW5kT3JFcnJvci5qb2luKFwiLCBcIil9YFxuICAgIClcbiAgfVxuICAvLyBUT0RPIHJldHJpZXZlIG90aGVyIGZvcm1hdHMgKGh0bWwvcGRmKSA/XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUmFwcG9ydHMgKGRhdGFEaXI6IHN0cmluZykge1xuICBjb25zdCByYXBwb3J0c0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBcInJhcFwiKVxuICBmcy5lbnN1cmVEaXJTeW5jKHJhcHBvcnRzRGlyKVxuXG4gIGxldCByZXRyaWV2ZWRSYXBwb3J0c0NvdW50ID0gMFxuICBjb25zdCByYXBwb3J0VXJsc05vdEZvdW5kT3JFcnJvciA9IFtdXG5cbiAgZm9yIGF3YWl0IChjb25zdCByYXBwb3J0IG9mIGZpbmRTZW5hdFJhcHBvcnRVcmxzKG9wdGlvbnMuc2Vzc2lvbnMpKSB7XG4gICAgbGV0IHJhcHBvcnRVcmwgPSByYXBwb3J0LnVybFxuICAgIGNvbnN0IHBhcnNlZFJhcHBvcnRVcmwgPSBwYXRoLnBhcnNlKHJhcHBvcnQudXJsKVxuICAgIGxldCByYXBwb3J0VXJsQmFzZSA9IHBhcnNlZFJhcHBvcnRVcmwuYmFzZVxuICAgIGNvbnN0IHJhcHBvcnROYW1lID0gcGFyc2VkUmFwcG9ydFVybC5uYW1lXG4gICAgaWYgKHBhcnNlZFJhcHBvcnRVcmwuZXh0ID09PSBcIi5odG1sXCIpIHtcbiAgICAgIHJhcHBvcnRVcmxCYXNlID0gYCR7cmFwcG9ydE5hbWV9X21vbm8uaHRtbGBcbiAgICAgIHJhcHBvcnRVcmwgPSBwYXRoLmZvcm1hdCh7XG4gICAgICAgIGRpcjogcGFyc2VkUmFwcG9ydFVybC5kaXIsXG4gICAgICAgIGJhc2U6IHJhcHBvcnRVcmxCYXNlLFxuICAgICAgfSlcbiAgICB9XG4gICAgY29uc3QgcmFwcG9ydEFic29sdXRlVXJsID0gbmV3IFVSTChyYXBwb3J0VXJsLCBTRU5BVF9SQVBQT1JUX0JBU0VfVVJMKS50b1N0cmluZygpXG5cbiAgICBjb25zdCByYXBwb3J0Q29udGVudCA9IGF3YWl0IHJldHJpZXZlRG9jdW1lbnQocmFwcG9ydEFic29sdXRlVXJsKVxuXG4gICAgaWYgKHJhcHBvcnRDb250ZW50KSB7XG4gICAgICBjb25zdCByYXBwb3J0RGlyID0gcGF0aC5qb2luKHJhcHBvcnRzRGlyLCBgJHtyYXBwb3J0LnNlc3Npb24gPz8gVU5ERUZJTkVEX1NFU1NJT059YCwgcmFwcG9ydE5hbWUpXG4gICAgICBlbnN1cmVBbmRDbGVhckRpcihyYXBwb3J0RGlyKVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ocmFwcG9ydERpciwgcmFwcG9ydFVybEJhc2UpLCByYXBwb3J0Q29udGVudClcbiAgICAgIHJldHJpZXZlZFJhcHBvcnRzQ291bnQrK1xuICAgIH0gZWxzZSB7XG4gICAgICByYXBwb3J0VXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHJhcHBvcnRBYnNvbHV0ZVVybClcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgY29uc29sZS5sb2coYCR7cmV0cmlldmVkUmFwcG9ydHNDb3VudH0gcmFwcG9ydHMgcmV0cmlldmVkYClcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAke3JhcHBvcnRVcmxzTm90Rm91bmRPckVycm9yLmxlbmd0aH0gcmFwcG9ydHMgZmFpbGVkIHdpdGggVVJMcyAke3JhcHBvcnRVcmxzTm90Rm91bmRPckVycm9yLmpvaW4oXCIsIFwiKX1gXG4gICAgKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgYXNzZXJ0KGRhdGFEaXIsIFwiTWlzc2luZyBhcmd1bWVudDogZGF0YSBkaXJlY3RvcnlcIilcblxuICBhd2FpdCByZXRyaWV2ZVRleHRlcyhkYXRhRGlyKVxuICBhd2FpdCByZXRyaWV2ZVJhcHBvcnRzKGRhdGFEaXIpXG59XG5cbm1haW4oKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGdCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFBaUUsU0FBQUQsdUJBQUFTLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLG9CQUFBLGtCQVBqRSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUYsQ0FBQSxTQUFBRyxDQUFBLEVBQUFILENBQUEsT0FBQUksQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEs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